From 6c8b4c256053c61e848c3f9dd494feebf6ef0cea Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <1247017146@qq.com>
Date: 星期三, 21 五月 2025 14:25:50 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageSocketServices/SocketClientService.cs |  259 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 162 insertions(+), 97 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageSocketServices/SocketClientService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageSocketServices/SocketClientService.cs"
index 898832d..8caa053 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageSocketServices/SocketClientService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageSocketServices/SocketClientService.cs"
@@ -1,35 +1,24 @@
 锘縰sing LogLibrary.Log;
 using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
-using MimeKit;
 using Newtonsoft.Json;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
-using Org.BouncyCastle.Tls;
-using System;
 using System.Net;
 using System.Net.Sockets;
 using System.Reflection;
 using System.Text;
 using WIDESEA_Common;
 using WIDESEA_Core;
-using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
-using WIDESEA_Core.Middlewares;
 using WIDESEA_DTO.AGV;
 using WIDESEA_DTO;
-using WIDESEA_IServices;
 using WIDESEA_IStorageBasicRepository;
 using WIDESEA_IStorageSocketServices;
 using WIDESEA_IStorageTaskRepository;
-using WIDESEA_IStorageTaskServices;
 using WIDESEA_Model.Models.AGV;
 using WIDESEA_Model.Models;
 using WIDESEAWCS_BasicInfoRepository;
-//using static MailKit.Telemetry;
 using WIDESEAWCS_Model.Models;
-using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
 using WIDESEA_Core.BaseRepository;
 using AutoMapper;
 using Mapster;
@@ -55,11 +44,10 @@
         private readonly ILocationInfoRepository _locationRepository;
 
 
-        public SocketClientService(/*IDt_TaskService taskService*/IDt_TaskRepository TaskRepository, IDt_StationManagerRepository stationManagerRepository, ILogger<SocketClientService> logger)
+        public SocketClientService(IDt_TaskRepository TaskRepository, IDt_StationManagerRepository stationManagerRepository, ILogger<SocketClientService> logger)
         {
-            //_taskService = taskService;
-            BaseDal= TaskRepository;
-            _stationManagerRepository= stationManagerRepository;
+            BaseDal = TaskRepository;
+            _stationManagerRepository = stationManagerRepository;
             _logger = logger;
         }
 
@@ -153,7 +141,7 @@
                     }
                     else
                     {
-                         LogFactory.GetLog("Socket鎺ユ敹鏁版嵁").Error(true, "鏃犳晥鎶ユ枃鏍煎紡");
+                        LogFactory.GetLog("Socket鎺ユ敹鏁版嵁").Error(true, $"鏃犳晥鎶ユ枃鏍煎紡:{JsonConvert.SerializeObject(Y)}");
                     }
                 }
                 catch
@@ -172,13 +160,13 @@
                     ReceiveCommandResponse(x);
                     break;
                 case "906":
-                    AGVJobStartOrEndResponse(x.Substring(21, 1),x.Substring(22,1));
+                    AGVJobStartOrEndResponse(x.Substring(21, 1), x.Substring(22, 1));
                     break;
                 case "902":
                     DataReportResponse(x.Substring(21, 1));
                     break;
                 case "935":
-                    DeviceStationStatusInvite();
+                    DeviceStationStatusInvite(x.Substring(15, 5));
                     break;
                 case "103":
                     HOSTOutBoundTask(x);
@@ -240,7 +228,7 @@
         public void clientSend(byte[] buffer)
         {
             var Y = Encoding.UTF8.GetString(buffer);
-            LogFactory.GetLog("Socket鍙戦�佹暟鎹�").Error(true, Y);
+            LogFactory.GetLog("Socket鍙戦�佹暟鎹�").Info(true, Y);
             socket.Send(buffer);
         }
 
@@ -249,7 +237,7 @@
             int sum = 0;
             try
             {
-                for (int i = 0; i < x.Length-2; i++)
+                for (int i = 0; i < x.Length - 2; i++)
                 {
                     sum += x[i];
                 }
@@ -285,7 +273,7 @@
         /// <summary>
         /// 璁惧缂栧彿
         /// </summary>
-        public const string DeviceID = "0000000001";
+        public const string DeviceID = "0013130010";
         /// <summary>
         /// 鍙戦�佷笉闇�瑕佸洖澶�
         /// </summary>
@@ -348,7 +336,7 @@
         {
             try
             {
-                string str = SendandReply + "101" + BaseDal.GetSeqNo().Result.ToString() + GetFieldsAsString(Agvstatus) + GetListStringOutStation(outStations) + "1" + GetFieldsAsString(inStation);
+                string str = SendandReply + "101" + BaseDal.GetSeqNo().Result.ToString("D5") + GetFieldsAsString(Agvstatus) + GetListStringOutStation(outStations) + "1" + GetFieldsAsString(inStation);
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -366,7 +354,7 @@
         {
             try
             {
-                string str = SendandReply + "925" + BaseDal.GetSeqNo().Result.ToString();
+                string str = SendandReply + "925" + BaseDal.GetSeqNo().Result.ToString("D5");
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -384,7 +372,7 @@
         {
             try
             {
-                string str = SendNotReply + "915" + BaseDal.GetSeqNo().Result.ToString() + Command;
+                string str = SendNotReply + "915" + BaseDal.GetSeqNo().Result.ToString("D5") + Command;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -403,7 +391,7 @@
         {
             try
             {
-                string str = SendNotReply + "913" + BaseDal.GetSeqNo().Result.ToString() + Status;
+                string str = SendNotReply + "913" + BaseDal.GetSeqNo().Result.ToString("D5") + Status;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -422,7 +410,7 @@
         {
             try
             {
-                string str = SendNotReply + "917" + BaseDal.GetSeqNo().Result.ToString() + Status;
+                string str = SendNotReply + "917" + BaseDal.GetSeqNo().Result.ToString("D5") + Status;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -444,7 +432,7 @@
         {
             try
             {
-                string str = SendandReply + "905" + BaseDal.GetSeqNo().Result.ToString() + Status + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
+                string str = SendandReply + "905" + BaseDal.GetSeqNo().Result.ToString("D5") + Status + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -467,7 +455,7 @@
         {
             try
             {
-                string str = SendNotReply + "907" + BaseDal.GetSeqNo().Result.ToString() + Status + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
+                string str = SendNotReply + "907" + BaseDal.GetSeqNo().Result.ToString("D5") + Status + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -489,7 +477,7 @@
         {
             try
             {
-                string str = SendandReply + "901" + BaseDal.GetSeqNo().Result.ToString() + "0" + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
+                string str = SendandReply + "901" + BaseDal.GetSeqNo().Result.ToString("D5") + "0" + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -507,11 +495,14 @@
         /// <param name="TaskType">浠诲姟绫诲瀷 I鍏ュ簱銆丱鍑哄簱銆丼绔欏彴鍒扮珯鍙般�丷绉诲簱</param>
         /// <param name="PallteCode">鎵樼洏鍙�</param>
         /// <returns></returns>
-        public void DeviceStationStatusReport(HOSTAGVStatus Agvstatus, List<OutStationStatus> outStations, List<InStationStatus> inStation)
+        public void DeviceStationStatusReport(HOSTAGVStatus Agvstatus, List<OutStationStatus> outStations, List<InStationStatus> inStation, string sGetSeqNo)
         {
             try
             {
-                string str = SendNotReply + "936" + BaseDal.GetSeqNo().Result.ToString() + GetFieldsAsString(Agvstatus) + GetListStringOutStation(outStations) + GetListStringInStation(inStation);
+                var agvstatus = GetFieldsAsString(Agvstatus);
+                var outstation = GetListStringOutStation(outStations);
+                var instation = GetListStringInStation(inStation);
+                string str = SendNotReply + "936" + sGetSeqNo + agvstatus + outstation + OutStationSpare2 + "2" + instation;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -532,7 +523,7 @@
         {
             try
             {
-                string str = SendandReply + "105" + BaseDal.GetSeqNo().Result.ToString() + "R" + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
+                string str = SendandReply + "105" + BaseDal.GetSeqNo().Result.ToString("D5") + "R" + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -552,7 +543,7 @@
         {
             try
             {
-                string str = SendNotReply + "985" + BaseDal.GetSeqNo().Result.ToString() + Trouble + Level + Location;
+                string str = SendNotReply + "985" + BaseDal.GetSeqNo().Result.ToString("D5") + Trouble + Level + Location;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -571,7 +562,7 @@
         {
             try
             {
-                string str = SendNotReply + "104" + BaseDal.GetSeqNo().Result.ToString() + Statues;
+                string str = SendNotReply + "104" + BaseDal.GetSeqNo().Result.ToString("D5") + Statues;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -592,7 +583,7 @@
         {
             try
             {
-                string str = SendandReply + "107" + BaseDal.GetSeqNo().Result.ToString() + "1" + JobOrderID + priority + FormLocation + ToLocation + "O" + TrayCnt + PallteCode;
+                string str = SendandReply + "107" + BaseDal.GetSeqNo().Result.ToString("D5") + "1" + JobOrderID + priority + FormLocation + ToLocation + "O" + TrayCnt + PallteCode;
                 clientSend(MakeStringToByteMsg(str));
             }
             catch (Exception ex)
@@ -608,7 +599,8 @@
         /// <param name="AgvStatus"></param>
         public void DeviceStatusReportResponse(HOSTAGVStatus AgvStatus, string X, string Y)
         {
-            string str = SendNotReply + "910" + BaseDal.GetSeqNo().Result.ToString() + "1" + GetFieldsAsString(AgvStatus) + X + Y;
+            string str = SendNotReply + "910" + BaseDal.GetSeqNo().Result.ToString("D5") + GetFieldsAsString(AgvStatus) + X + Y;
+            clientSend(MakeStringToByteMsg(str));
         }
 
         #endregion
@@ -626,12 +618,24 @@
             {
                 //OK
                 case "0":
-                    //UpdateTaskLocation(parseMessage);
-                    InsertWMSTask(parseMessage);
-                    Thread.Sleep(500);
-                    //915
-                    JobReady("0");
-                    break;
+                    var location = _locationRepository.QueryFirst(x => x.LocationCode == parseMessage.body.ToLocation);
+                    if (location == null)
+                    {
+                        return;
+                    }
+                    if (location.LocationStatus == (int)LocationEnum.Free)
+                    {
+                        InsertWMSTask(parseMessage);
+                        Thread.Sleep(500);
+                        //915
+                        JobReady("0");
+                        return;
+                    }
+                    else
+                    {
+                        //todo璐т綅鏈夎揣閲嶅鍏ュ簱
+                        return;
+                    }
                 //NG
                 case "1":
                     break;
@@ -696,7 +700,7 @@
                         {
                             JobStartOrEnd("E", task.SourceAddress, task.TargetAddress, "O", task.PalletCode);
                         }
-                       CompleteInboundTask(task);
+                        CompleteInboundTask(task);
                         break;
                     case (int)TaskOutboundTypeEnum.Outbound:
                         //鍑哄簱
@@ -742,15 +746,29 @@
                 {
                     //OK
                     case "0":
-                        var task = InsertWMSTask(parseMessage);
-                        BaseDal.AddData(task);
-                        InsertAGVTask(task);
-                        Thread.Sleep(500);
-                        //915
-                        JobReady("0");
-                        Thread.Sleep(500);
-                        //104
-                        DeviceReceiveJobResponse("0");
+                        var location = _locationRepository.QueryFirst(x => x.LocationCode == parseMessage.body.ToLocation);
+                        if (location == null)
+                        {
+                            return;
+                        }
+                        if (location.LocationStatus == (int)LocationEnum.InStock)
+                        {
+                            var task = InsertWMSTask(parseMessage);
+                            BaseDal.AddData(task);
+                            InsertAGVTask(task);
+                            Thread.Sleep(500);
+                            //915
+                            JobReady("0");
+                            Thread.Sleep(500);
+                            //104
+                            DeviceReceiveJobResponse("0");
+                        }
+                        else
+                        {
+                            //todo璐т綅鏃犺揣绌哄嚭搴�
+                            return;
+                        }
+
                         break;
                     default:
                         break;
@@ -767,44 +785,47 @@
         /// HOST璁惧鐘舵�佽幏鍙�  宸ュ簭935
         /// </summary>
         /// <param name="message"></param>
-        public void DeviceStationStatusInvite()
+        public void DeviceStationStatusInvite(string sSeqNo)
         {
             try
             {
                 //鍥炲936
-                List<Dt_StationManager> Instation = _stationManagerRepository.QueryData(x => x.stationType == 1).ToList();
-                List<Dt_StationManager> Outstation = _stationManagerRepository.QueryData(x => x.stationType == 2).ToList();
                 List<OutStationStatus> outStationStatus = new List<OutStationStatus>();
                 List<InStationStatus> inStationStatus = new List<InStationStatus>();
-                foreach (var item in Instation)
+                StationStatus stationIn = GetStationStatus("B002");
+
+                inStationStatus.Add(new InStationStatus()
                 {
-                    inStationStatus.Add(new InStationStatus()
-                    {
-                        StationName = item.stationName,
-                        StationEnable = item.stationStatus,
-                        IsDistributionTask = item.stationHasTask,
-                        PallteCode = "0000000000",
-                    });
-                }
-                foreach (var item in Outstation)
+                    StationName = "02",
+                    StationEnable = stationIn.WorkstationO == "1" ? "0" : "1",
+                    IsDistributionTask = "0",
+                    PallteCode = "0000000000",
+                });
+                inStationStatus.Add(new InStationStatus()
                 {
-                    StationStatus station = GetStationStatus(item.stationName);
-                    var taskStation = BaseDal.QueryFirst(x => x.SourceAddress == item.stationName || x.TargetAddress == item.stationName);
-                    outStationStatus.Add(new OutStationStatus()
-                    {
-                        StationName = item.stationName,
-                        StationEnable = station.StationEnable == "1" ? "0" : "1",
-                        IsDistributionTask = taskStation == null ? "0" : "1",
-                        Spare1 = "00"
-                    });
-                    //outStationStatus.Add(new OutStationStatus()
-                    //{
-                    //    StationName = item.stationName,
-                    //    StationEnable = item.stationStatus,
-                    //    IsDistributionTask = item.stationHasTask,
-                    //    Spare1 = "00"
-                    //});
-                }
+                    StationName = "01",
+                    StationEnable = stationIn.WorkstationT == "1" ? "0" : "1",
+                    IsDistributionTask = "0",
+                    PallteCode = "0000000000",
+                });
+
+                StationStatus stationOut = GetStationStatus("B001");
+                var taskOutStationO = BaseDal.QueryFirst(x => x.SourceAddress == "B001::1" || x.TargetAddress == "B001::1");
+                var taskOutStationT = BaseDal.QueryFirst(x => x.SourceAddress == "B001::2" || x.TargetAddress == "B001::2");
+                outStationStatus.Add(new OutStationStatus()
+                {
+                    StationName = "04",
+                    StationEnable = stationOut.WorkstationO == "1" ? "0" : "1",
+                    IsDistributionTask = taskOutStationO == null ? "0" : "1",
+                    Spare1 = "00"
+                });
+                outStationStatus.Add(new OutStationStatus()
+                {
+                    StationName = "03",
+                    StationEnable = stationOut.WorkstationT == "1" ? "0" : "1",
+                    IsDistributionTask = taskOutStationT == null ? "0" : "1",
+                    Spare1 = "00"
+                });
                 AGVStatusRespone status = GetAGVStatus();
                 HOSTAGVStatus AgvStatus = new HOSTAGVStatus()
                 {
@@ -812,7 +833,7 @@
                     AutoStatus = status.AutoStatus == "MaintenanceMode" ? "1" : "0",
                     Ready = status.AutoStatus == "MaintenanceMode" ? "0" : "1",
                 };
-                DeviceStationStatusReport(AgvStatus, outStationStatus, inStationStatus);
+                DeviceStationStatusReport(AgvStatus, outStationStatus, inStationStatus, sSeqNo);
             }
             catch (Exception)
             {
@@ -875,13 +896,16 @@
         /// </summary>
         public void DeviceStatusReportRequest()
         {
+            AGVStatusRespone status = GetAGVStatus();
+
             HOSTAGVStatus AgvStatus = new HOSTAGVStatus()
             {
-                RuntimeStatus = "R",
-                AutoStatus = "1",
-                Ready = "1"
+                RuntimeStatus = CapitalizeFirstLetter(status.RuntimeStatus),
+                AutoStatus = status.AutoStatus == "MaintenanceMode" ? "1" : "0",
+                Ready = status.AutoStatus == "MaintenanceMode" ? "0" : "1",
             };
             string axis = "000000";
+
             DeviceStatusReportResponse(AgvStatus, axis, axis);
         }
         #endregion
@@ -899,7 +923,6 @@
             {
                 byte[] byt = Encoding.UTF8.GetBytes(Message);  // 浣跨敤 UTF-8 閬垮厤缂栫爜闂
 
-                LogFactory.GetLog("璇锋眰鎵樼洏浠诲姟").Error(true, BitConverter.ToString(byt));
                 string checksum = GetCheckSum(byt);
 
                 string str = Message + checksum;
@@ -921,6 +944,8 @@
                 // 澶嶅埗鍘熷鏁扮粍鐨勬墍鏈夋暟鎹埌鏂版暟缁勭殑涓棿閮ㄥ垎
                 Array.Copy(buffer, 0, newArray, 1, buffer.Length);
 
+                //var parseMessage = GetParse(str);
+                LogFactory.GetLog("Socket鍙戦�佹姤鏂�").Info(true, str);
                 return newArray;
             }
             catch (Exception ex)
@@ -928,17 +953,13 @@
                 throw new Exception(ex.Message);
             }
         }
-        //public bool IsOnline()
-        //{
-
-        //}
         public string GetListStringOutStation(List<OutStationStatus> outStationStatus)
         {
             return string.Join("", outStationStatus.Select(status => $"{status.StationName}{status.StationEnable}{status.IsDistributionTask}{status.Spare1}"));
         }
         public string GetListStringInStation(List<InStationStatus> inStationStatus)
         {
-            return string.Join("", inStationStatus.Select(status => $"{status.StationName}{status.StationEnable}{status.IsDistributionTask}{status.Spare1}"));
+            return string.Join("", inStationStatus.Select(status => $"{status.StationName}{status.StationEnable}{status.IsDistributionTask}{status.IsHasPallte}{status.Spare1}{status.StationPallteCount}{status.PallteCode}{status.Spare2}"));
         }
         /// <summary>
         /// 灏嗗璞″�煎嚟鎷兼帴
@@ -1032,6 +1053,8 @@
                 }
                 else
                 {
+
+
                     Console.WriteLine("鏍¢獙澶辫触锛�");
                     return null;
                 }
@@ -1113,12 +1136,32 @@
         /// <returns></returns>
         private int InsertAGVTask(Dt_Task task)
         {
+            string SourceAddress = string.Empty;
+            string TargetAddress = string.Empty;
+            if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
+            {
+                TargetAddress = InsertHyphenEveryTwoChars(task.TargetAddress);
+            }
+            else if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+            {
+                SourceAddress = InsertHyphenEveryTwoChars(task.SourceAddress);
+            }
+            else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)
+            {
+                TargetAddress = InsertHyphenEveryTwoChars(task.TargetAddress);
+                SourceAddress = InsertHyphenEveryTwoChars(task.SourceAddress);
+            }
+            else if (task.TaskType == (int)TaskStationTypeEnum.StationToStation)
+            {
+                TargetAddress = task.TargetAddress;
+                SourceAddress = task.SourceAddress;
+            }
             task_call task_Call = new task_call()
             {
                 d_task_type = task.TaskType == (int)TaskTypeEnum.Inbound ? 1 : 2,
                 d_floor = 1,
-                d_involed1 = task.SourceAddress,
-                d_involed2 = task.TargetAddress,
+                d_involed1 = SourceAddress,
+                d_involed2 = TargetAddress,
                 d_involed5 = task.TaskNum,
             };
 
@@ -1148,7 +1191,7 @@
         }
         public AGVStatusRespone GetAGVStatus()
         {
-            string urlnew = url + "/ilns/AGV/getAgvState";
+            string urlnew = url + "/ilns/AGV/getState";
             var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { getStatus = "1" }.ToJson())).Result;
 
             return JsonConvert.DeserializeObject<AGVStatusRespone>(result.ToString());
@@ -1156,8 +1199,8 @@
 
         public StationStatus GetStationStatus(string stationName)
         {
-            string urlnew = url + "/ilns/strl/getStat";
-            var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { strlName = stationName }.ToJson())).Result;
+            string urlnew = url + "/ilns/ctrl/getState";
+            var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { ctrlName = "B001" }.ToJson())).Result;
             return JsonConvert.DeserializeObject<StationStatus>(result.ToString());
         }
         public string CapitalizeFirstLetter(string s)
@@ -1170,7 +1213,29 @@
             char firstChar = s[0];
             return char.ToUpper(firstChar).ToString();
         }
+        public string InsertHyphenEveryTwoChars(string input)
+        {
+            if (string.IsNullOrEmpty(input))
+            {
+                return input;
+            }
 
+            StringBuilder result = new StringBuilder();
+
+            for (int i = 0; i < input.Length; i += 2)
+            {
+                // 娣诲姞涓や釜瀛楃
+                result.Append(input.Substring(i, 2));
+
+                // 濡傛灉涓嶆槸鏈�鍚庝袱涓瓧绗︼紝娣诲姞涓�涓繛瀛楃
+                if (i + 2 < input.Length)
+                {
+                    result.Append('-');
+                }
+            }
+
+            return result.ToString();
+        }
         #region 澶栭儴鎺ュ彛鏂规硶
 
         public WebResponseContent CompleteInboundTask(Dt_Task task)

--
Gitblit v1.9.3