From 5818ac31e7d82e611fa98c35e9a353319bebd3c3 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期日, 25 五月 2025 14:30:01 +0800
Subject: [PATCH] 主流程测试完成

---
 Admin.NET/WCS.Application/PLC/PLCService.cs      |  262 ++++++++++++++++++-------------------
 Admin.NET/WCS.Application/Util/HttpService.cs    |    5 
 Admin.NET/WCS.Application/Model/AGVModel.cs      |   21 ++
 Admin.NET/WCS.Application/OpenApi/OpenApi.cs     |   43 ++++-
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs   |    5 
 Admin.NET/WCS.Application/Util/AGVStorageUtil.cs |   67 +++++----
 6 files changed, 222 insertions(+), 181 deletions(-)

diff --git a/Admin.NET/WCS.Application/Model/AGVModel.cs b/Admin.NET/WCS.Application/Model/AGVModel.cs
index 42651d5..e6231ee 100644
--- a/Admin.NET/WCS.Application/Model/AGVModel.cs
+++ b/Admin.NET/WCS.Application/Model/AGVModel.cs
@@ -162,18 +162,29 @@
         public string ReqTime { get; set; }
         public string CurrentPositionCode { get; set; }
         /// <summary>
-        /// 鏂规硶鍚� end : 浠诲姟缁撴潫
-        /// </summary>
-        public string Method { get; set; }
-        /// <summary>
         /// 浠诲姟鍙�
         /// </summary>
-        public string TaskCode { get; set; }
+        public string robotTaskCode { get; set; }
         /// <summary>
         /// 鎵樼洏鍙�
         /// </summary>
         public string CtnrCode { get; set; }
 
+        public ExtraInfo Extra { get; set; }
+
+
+    }
+    public class ExtraInfo
+    {
+        public ExtraInfoVal Values { get; set; }
+    }
+    public class ExtraInfoVal
+    {
+        
+        /// <summary>
+        /// 鏂规硶鍚� end : 浠诲姟缁撴潫
+        /// </summary>
+        public string Method { get; set; }
     }
     public class AGVCallBackResponse
     {
diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
index ba4d4a6..e1a8e4b 100644
--- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
+++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs
@@ -418,21 +418,22 @@
     [UnitOfWork]
     public async Task<dynamic> agvCallback(AGVCallBackInput input)
     {
+        Log.Information("AGV鍙嶉浠诲姟" + input.ToJson());
         AGVCallBackResponse result = new AGVCallBackResponse()
         {
             ReqCode = input.ReqCode,
             Message = "鎴愬姛",
             Code = "0"
         };
-        if (input.TaskCode.Substring(0, 3) != "WCS" && input.TaskCode.Substring(0, 2) != "TK")
+        if (input.robotTaskCode.Substring(0, 3) != "WCS" && input.robotTaskCode.Substring(0, 2) != "TK")
             return result;
         PLCUtil modUtil = null;
         try
         {
-            var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.TaskCode);
+            var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.robotTaskCode);
             if (modTask != null)
             {
-                switch (input.Method)
+                switch (input.Extra.Values.Method)
                 {
                     case "end"://浠诲姟瀹屾垚
                         {
@@ -459,15 +460,26 @@
                                 var inputs = new TaskRequestWMS();
                                 inputs.TaskNo = modTask.TaskNo;
                                 inputs.PalletNo = modTask.PalletNo;
-                                inputs.TaskType = modTask.TaskType.ToString();
+                                inputs.TaskType = ((int)modTask.TaskType).ToString();
                                 inputs.TaskStatus = "2";
                                 var modResponseTask = httpService.RequestTask(inputs).Result;
                             }
                             
                         }
                         break;
-                    case "admin"://璧板嚭鍌ㄤ綅
+                    case "outbin"://璧板嚭鍌ㄤ綅
                         {
+                            WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
+                            {
+                                TaskNo = modTask.TaskNo,
+                                //PlcId = modDevice.PlcId,
+                                PlcName = "AGV",
+                                StartLocat = modTask.StartLocate,
+                                EndLocat = modTask.EndLocate,
+                                Status = TaskStatusEnum.Complete,
+                                InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟鍙栬揣瀹屾垚锛岃蛋鍑哄偍浣�",
+                            };
+                            await _db.Insertable(modTaskMonitor).ExecuteCommandAsync();
                             //鍙嶉WMS浠诲姟鍙栬揣瀹屾垚銆乄MS鍒ゆ柇鏄钩搴撳偍浣嶅氨鏇存柊鍌ㄤ綅鐘舵��
                             if (modTask.Origin == "WMS")
                             {
@@ -475,22 +487,22 @@
                                 var inputs = new TaskRequestWMS();
                                 inputs.TaskNo = modTask.TaskNo;
                                 inputs.PalletNo = modTask.PalletNo;
-                                inputs.TaskType = "2";
+                                inputs.TaskType = ((int)modTask.TaskType).ToString();
                                 inputs.TaskStatus = "2";
                                 var modResponseTask = httpService.RequestTaskQh(inputs).Result;
                             }
 
                         }
                         break;
-                    case "continue"://鏀捐揣鐢宠
+                    case "release"://鏀捐揣鐢宠
                         {
-                            if (modTask.EndLocate != "B010101")//9鍙峰伐浣嶅湴鍧�
+                            if (modTask.EndLocate != "B040101")//9鍙峰伐浣嶅湴鍧�
                             {
                                 result.Code = "1";
                                 result.Message = "鎵句笉鍒拌浠诲姟";
                                 return result;
                             }
-                            modTask.Status = TaskStatusEnum.Complete;
+                            //modTask.Status = TaskStatusEnum.Complete;
                             modTask.IsComple = "1";
                             await _db.Updateable(modTask).ExecuteCommandAsync();
                             WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
@@ -506,7 +518,16 @@
                             await _db.Insertable(modTaskMonitor).ExecuteCommandAsync();
                             HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
                             HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
-                            
+                            if (modTask.Origin == "WMS")
+                            {
+                                HttpService httpService = new HttpService();
+                                var inputs = new TaskRequestWMS();
+                                inputs.TaskNo = modTask.TaskNo;
+                                inputs.PalletNo = modTask.PalletNo;
+                                inputs.TaskType = ((int)modTask.TaskType).ToString();
+                                inputs.TaskStatus = "2";
+                                var modResponseTask = httpService.RequestTaskQh(inputs).Result;
+                            }
                         }
                         break;
                     case "cancel"://浠诲姟鍙栨秷
@@ -555,7 +576,7 @@
             modUtil?.Close();
         }
 
-
+        Log.Information("AGV鍙嶉浠诲姟杩斿洖" + result.ToJson());
         return result;
     }
     
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 08d9606..6784e79 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -271,6 +271,22 @@
                                     modFinshTask.Status = TaskStatusEnum.Complete;
                                     modFinshTask.FinishDate = DateTime.Now;
                                     _db.Updateable(modFinshTask).ExecuteCommand();
+                                    //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
+                                    if (modFinshTask.Origin == "WMS")
+                                    {
+                                        HttpService httpService = new HttpService();
+                                        var requestMode = new TaskRequestWMS()
+                                        {
+                                            TaskNo = modFinshTask.TaskNo,
+                                            PalletNo = modFinshTask.PalletNo,
+                                            TaskType = ((int)modFinshTask.TaskType).ToString(),
+                                            TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+                                        };
+                                        var modResponseTask = httpService.RequestTask(requestMode).Result;
+                                        modFinshTask.IsSuccess = TaskSuccessEnum.Success;
+                                        _db.Updateable(modFinshTask).ExecuteCommand();
+                                        HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
+                                    }
                                 }
                                 
                                 //鍒ゆ柇浠诲姟鏄惁鍏呯數浠诲姟,涓嬪彂寮�濮嬪厖鐢靛懡浠�
@@ -281,20 +297,7 @@
                                     plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "2");
                                 }
 
-                                //鍙嶉WMS绯荤粺 浠诲姟瀹屾垚
-                                //HttpService httpService = new HttpService();
-                                //var requestMode = new TaskRequestWMS()
-                                //{
-                                //    TaskNo = modFinshTask.TaskNo,
-                                //    PalletNo = modFinshTask.PalletNo,
-                                //    TaskType = ((int)modFinshTask.TaskType).ToString(),
-                                //    TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
-                                //};
-                                //var modResponseTask = httpService.RequestTask(requestMode).Result;
-                                //modFinshTask.IsSuccess = TaskSuccessEnum.Success;
-                                //_db.Updateable(modFinshTask).ExecuteCommand();
-                                HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>());
-                            
+                                
                             }
                         }
                     }
@@ -541,6 +544,76 @@
                     }
                     if (listResult.All(s => s.IsSucceed))
                     {
+                        if (modTask.TaskType == TaskTypeEnum.Out)
+                        {
+                            #region 杈撻�佺嚎 鍐欏叆PLC 730
+
+                            var text = "";
+                            var devStation = "";
+                            var endLocate = modTask.EndRoadway;
+                            var carcon = new carConverModel();
+                            if (carcon.conveyorBei.Keys.Contains(endLocate))
+                            {
+                                text = "杈撻�佺嚎鍖�";
+                                devStation = carcon.conveyorBei[endLocate];
+                            }
+                            else if (carcon.conveyorNan.Keys.Contains(endLocate))
+                            {
+                                text = "杈撻�佺嚎鍗�";
+                                devStation = carcon.conveyorNan[endLocate];
+                            }
+                            if (text != "")
+                            {
+                                var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text);
+                                var modConn = new PLCUtil(modPlc);
+
+                                var modDeviceConver = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation);
+                                var (plcResult, palletVal) = modConn.GetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.PlcPos);
+                                if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720)
+                                {
+                                    modConn.Close();
+                                    return;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�
+                                }
+                                var listResultcon = new List<Result>();
+
+                                //浠诲姟鍙蜂笌鎵樼洏鏉$爜
+                                var modPosConverTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "浠诲姟鍙�");
+                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString()));
+                                var modPosConverPallet = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "鎵樼洏鏉$爜");
+                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString()));
+
+                                // 璧峰宸ヤ綅銆佺洰鐨勫伐浣�
+                                var modPosConverStrLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "璧峰宸ヤ綅");
+                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum));
+                                var modPosConverEndLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "鐩殑宸ヤ綅");
+                                listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate));
+
+                                if (listResultcon.All(s => s.IsSucceed))
+                                {
+                                    var plcResult2 = modConn.SetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.WcsPos, "730");
+                                    if (!plcResult.IsSucceed)
+                                    {
+                                        modConn.Close();
+                                        return;
+                                    }
+                                    //娣诲姞浠诲姟鏄庣粏
+                                    var taskMonitor2 = new WcsTaskMonitor()
+                                    {
+                                        TaskNo = carTaskNext.TaskNo,
+                                        PlcName = modDevice.Text,
+                                        Status = TaskStatusEnum.Complete,
+                                        InteractiveMsg = $"鍐欏叆鎸囦护730锛氬伐浣嶆槸{modDeviceConver.StationNum}"
+                                    };
+                                    _db.Insertable(taskMonitor2).ExecuteCommand();
+                                }
+
+                                modConn.Close();
+                            }
+
+
+                            #endregion
+                        }
+
                         var modStart = modDevice.listStation.FirstOrDefault(s => s.Text == "鍚姩鍛戒护");
                         var result = plcConn.SetDBValue(modStart.PosType, modStart.PlcPos, "1");
                         if (result.IsSucceed)
@@ -549,75 +622,7 @@
                             carTaskNext.CarTaskNo = carTaskNo;
                             _db.Updateable(carTaskNext).ExecuteCommand();
 
-                            if (modTask.TaskType == TaskTypeEnum.Out)
-                            {
-                                #region 杈撻�佺嚎 鍐欏叆PLC 730
-
-                                var text = "";
-                                var devStation = "";
-                                var endLocate = modTask.EndRoadway;
-                                var carcon = new carConverModel();
-                                if (carcon.conveyorBei.Keys.Contains(endLocate))
-                                {
-                                    text = "杈撻�佺嚎鍖�";
-                                    devStation = carcon.conveyorBei[endLocate];
-                                }
-                                else if (carcon.conveyorNan.Keys.Contains(endLocate))
-                                {
-                                    text = "杈撻�佺嚎鍗�";
-                                    devStation = carcon.conveyorNan[endLocate];
-                                }
-                                if (text != "")
-                                {
-                                    var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text);
-                                    var modConn = new PLCUtil(modPlc);
-
-                                    var modDeviceConver = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation);
-                                    var (plcResult, palletVal) = modConn.GetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.PlcPos);
-                                    if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720)
-                                    {
-                                        modConn.Close();
-                                        return;//鏀捐揣宸ヤ綅娌℃湁璇诲彇鎴愬姛鎴栦笉鏄┖闂�
-                                    }
-                                    var listResultcon = new List<Result>();
-
-                                    //浠诲姟鍙蜂笌鎵樼洏鏉$爜
-                                    var modPosConverTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "浠诲姟鍙�");
-                                    listResultcon.Add(modConn.SetPlcDBValue(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString()));
-                                    var modPosConverPallet = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "鎵樼洏鏉$爜");
-                                    listResultcon.Add(modConn.SetPlcDBValue(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString()));
-
-                                    // 璧峰宸ヤ綅銆佺洰鐨勫伐浣�
-                                    var modPosConverStrLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "璧峰宸ヤ綅");
-                                    listResultcon.Add(modConn.SetPlcDBValue(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum));
-                                    var modPosConverEndLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "鐩殑宸ヤ綅");
-                                    listResultcon.Add(modConn.SetPlcDBValue(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate));
-
-                                    if (listResultcon.All(s => s.IsSucceed))
-                                    {
-                                        var plcResult2 = modConn.SetPlcDBValue(modDeviceConver.PosType, modDeviceConver.DbNumber, modDeviceConver.WcsPos, "730");
-                                        if (!plcResult.IsSucceed)
-                                        {
-                                            modConn.Close();
-                                            return;
-                                        }
-                                        //娣诲姞浠诲姟鏄庣粏
-                                        var taskMonitor2 = new WcsTaskMonitor()
-                                        {
-                                            TaskNo = carTaskNext.TaskNo,
-                                            PlcName = modDevice.Text,
-                                            Status = TaskStatusEnum.Complete,
-                                            InteractiveMsg = $"鍐欏叆鎸囦护730锛氬伐浣嶆槸{modDeviceConver.StationNum}"
-                                        };
-                                        _db.Insertable(taskMonitor2).ExecuteCommand();
-                                    }
-                                        
-                                    modConn.Close();
-                                }
-
-
-                                #endregion
-                            }
+                            
                              
                             //娓呴櫎灏忚溅绌洪棽鏃堕棿
                             var carTimeClear = _db.Queryable<WcsCarTime>().First(m=>m.IsDelete == false && m.CarIp == modDevice.PlcIdIP);
@@ -758,7 +763,7 @@
                         }
 
                         // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
-                        var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+                        var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
                         if (ret.IsSucceed)
                         {
                             plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
@@ -779,7 +784,7 @@
                         }
 
                         // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
-                        var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+                        var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
                         if (ret.IsSucceed)
                         {
                             plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
@@ -854,7 +859,7 @@
                         }
 
                         // 鍐欏叆杈撻�佺嚎閫�鍥炴寚浠�
-                        var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
+                        var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum);
                         if (ret.IsSucceed)
                         {
                             plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350");
@@ -899,17 +904,17 @@
                     var listResult = new List<Result>();
                     // 浠诲姟鍙枫�佷换鍔$被鍨嬨�佹墭鐩樺彿
                     var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
-                    listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskId.ToString()));
+                    listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskId.ToString()));
                     var modPosTaskType = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
                     var taskTypeStr = (int)modTask.TaskType;
-                    listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
+                    listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
                     var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鏉$爜");
-                    listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+                    listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
                     // 璧峰宸ヤ綅銆佺洰鐨勫伐浣�
                     var modPosStrLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
-                    listResult.Add(plcConn.SetPlcDBValue(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum));
+                    listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum));
                     var modPosEndLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
-                    listResult.Add(plcConn.SetPlcDBValue(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue));
+                    listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue));
 
 
                     if (listResult.All(s => s.IsSucceed))
@@ -1185,12 +1190,18 @@
                         var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos);
 
                         int taskNoVal = Convert.ToInt32(taskVal);
-                        var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskId == taskNoVal);
+                        var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskId == taskNoVal && w.TaskType == TaskTypeEnum.Out);
                         if (taskInfo == null)
                         {
                             Log.Error(string.Format("杈撻�佺嚎430:鏈壘鍒板搴旂殑浠诲姟銆�"));
                             break;
                         }
+                        // 鏀瑰彉浠诲姟鐘舵��
+                        taskInfo.Status = TaskStatusEnum.Complete;
+                        taskInfo.FinishDate = DateTime.Now;
+                        //modTask.Levels = 999;
+                        _db.Updateable(taskInfo).ExecuteCommand();
+                        HubUtil.PublicTask(taskInfo.Adapt<WcsTaskOutput>());
                         // 鎻掑叆浠诲姟鏄庣粏 
                         var modInsertTaskMonitor = new WcsTaskMonitor()
                         {
@@ -1203,7 +1214,28 @@
                             StartLocat = Convert.ToString(starVal),
                             EndLocat = modDevice.StationNum,
                         };
-
+                        if (taskInfo.Origin == "WMS")
+                        {
+                            // 鍙嶉WMS
+                            var requestMode = new TaskRequestWMS()
+                            {
+                                TaskNo = taskInfo.TaskNo,
+                                PalletNo = taskInfo.PalletNo,
+                                TaskType = ((int)taskInfo.TaskType).ToString(),
+                                TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
+                            };
+                            HttpService httpService = new HttpService();
+                            var modResponseTask = httpService.RequestTask(requestMode).Result;
+                            if (modResponseTask.StatusCode == 0)
+                            {
+                                modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
+                            }
+                            else
+                            {
+                                Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
+                            }
+                        }
+                         
                         // 鎻掑叆浜や簰鏃ュ織
                         _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
 
@@ -1250,66 +1282,30 @@
                         
 
                         int tasknoVal = Convert.ToInt32(taskVal);
-                        var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.IsDelete == false && m.TaskId == tasknoVal);
+                        var modTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.TaskId == tasknoVal);
                         if (modTask == null)
                         {
                             Log.Error(string.Format("杈撻�佺嚎440:鏈壘鍒板搴旂殑浠诲姟銆�"));
                             break;
                         }
-                        // 鏀瑰彉浠诲姟鐘舵��
-                        modTask.Status = TaskStatusEnum.Complete;
-                        modTask.FinishDate = DateTime.Now;
-                        //modTask.Levels = 999;
-                        _db.Updateable(modTask).ExecuteCommand();
-                        HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+                        
                         // 鎻掑叆浠诲姟鏄庣粏 
                         var modInsertTaskMonitor = new WcsTaskMonitor()
                         {
                             TaskNo = modTask.TaskNo,
                             PlcId = modDevice.Id,
                             PlcName = modDevice.Text,
-                            InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鍑哄簱瀹屾垚",
+                            InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鎵樼洏绂诲紑宸ヤ綅",
                             PalletNo = palletVal,
                             Status = TaskStatusEnum.Complete,
                             StartLocat = starVal.ToString(),
                             EndLocat = modDevice.StationNum,
                         };
-                        if (modTask.Origin == "WMS")
-                        {
-                            //// 鍙嶉WMS
-                            //var requestMode = new TaskRequestWMS()
-                            //{
-                            //    TaskNo = modTask.TaskNo + modTask.EndLocate,
-                            //    PalletNo = modTask.PalletNo,
-                            //    TaskType = ((int)TaskTypeEnum.Out).ToString(),
-                            //    TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
-                            //};
-                            //HttpService httpService = new HttpService();
-                            //var modResponseTask = httpService.RequestTask(requestMode).Result;
-                            //if (modResponseTask.StatusCode == 0)
-                            //{
-                            //    modInsertTaskMonitor.InteractiveMsg += "锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
-                            //}
-                            //else
-                            //{
-                            //    Log.Error(string.Format("浠诲姟鍙嶉澶辫触锛歋tatusCode锛歿0};Msg锛歿1}", modResponseTask.StatusCode, modResponseTask.Msg));
-                            //}
-                        }
-
                         // 鎻掑叆浜や簰鏃ュ織
                         _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
 
                         // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
                         HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
-                        // led鏄剧ず鍐呭
-                        var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
-
-                        ledText += $"鍑哄簱瀹屾垚\n\n";
-                        ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
-                        ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
-                        ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
-                        ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
-                        LedDisplay(ledDevice.LedIP, ledText);
                     }
                     #endregion
                 }
@@ -1376,7 +1372,7 @@
             }
         };
         var response = new HttpService().GenAgvSendTask(taskModel).Result;
-        if (response.code == "0")
+        if (response.code == "SUCCESS")
         {
             modTask.Status = TaskStatusEnum.Doing;
             _db.Updateable(modTask).ExecuteCommand();
diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 38b08f4..6464193 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -332,7 +332,7 @@
 
 
 
-                        Thread.Sleep(3000);
+                        Thread.Sleep(500);
                     }
                     catch (OperationCanceledException)
                     {
@@ -433,7 +433,8 @@
 
                             var gongwei = carcon.conveyorRuKu[endLocate];
                             //鍒ゆ柇浠诲姟
-                            var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei && m.Type == PLCTypeEnum.ConveyorLine);
+                            var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei
+                            && m.Type == PLCTypeEnum.ConveyorLine && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing));
                             if (convarTask != null)
                             {
                                 continue;//鏀捐揣宸ヤ綅鏈変换鍔�
diff --git a/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs b/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs
index b1746af..141f599 100644
--- a/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs
+++ b/Admin.NET/WCS.Application/Util/AGVStorageUtil.cs
@@ -26,47 +26,58 @@
         type2 = "";
         jiebo = "";
         var taskModle = "";//浠诲姟妯℃澘
-        var locate1 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == straLocate);      
-        var locate2 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == endLocate);
-        if (locate1 == null || locate2 == null)
+        //鍓嶇紑L绔嬪簱 鍓嶇紑B 骞冲簱  
+        var locate1q = straLocate.Substring(0,1);   
+        var locate2q = endLocate.Substring(0, 1);
+        
+        if (locate1q == null || locate2q == null)
         {
             return taskModle;
         }
-        switch (locate1.WareHouseNo)
+        switch (locate1q)
         {
-            case "W02":
-                type1 = "SITE";
-                break;
-            case "W04":
+            case "L":
                 type1 = "STORAGE";
+                break;
+            case "B":
+                type1 = "SITE";
                 break;
             default:
                 break;
         }
 
-        switch (locate2.WareHouseNo)
+        switch (locate2q)
         {
-            case "W02":
-                type2 = "SITE";
-                break;
-            case "W04":
+            case "L":
                 type2 = "STORAGE";
+                break;
+            case "B":
+                type2 = "SITE";
                 break;
             default:
                 break;
         }
-        var  AreaAll = new List<string>() { "B06", "B07" };//1002銆�1003鍏ㄩ儴鍖哄煙
-        var Area1002 = new List<string>() { "B06",""};//1002杞﹂棿鍖哄煙
-        var Area10031 = new List<string>() { ""};//1003 1妤艰溅闂村尯鍩�
+        
+        var  AreaAll = new List<string>() { "B06", "B07", "B09" };//1002銆�1003鍏ㄩ儴鍖哄煙
+        var Area1002 = new List<string>() { "B06"};//1002杞﹂棿鍖哄煙
+        var Area10031 = new List<string>() { "B09"};//1003 1妤艰溅闂村尯鍩�
         var Area10032 = new List<string>() { "B07"};//1003 2妤艰溅闂村尯鍩�
-        if (Area1002.Contains(locate2.AreaNo))
+
+        var locate1 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == straLocate);
+        var locate2 = _db.Queryable<WcsStorageLocat>().First(m => m.IsDelete == false && m.LocatNo == endLocate);
+
+        if (locate1q == "B" || locate2q == "B")
         {
-            jiebo = "1JB";//鎺ラ┏浣�
+            if (Area1002.Contains(locate2.AreaNo) || Area1002.Contains(locate1.AreaNo))
+            {
+                jiebo = "1JB";//鎺ラ┏浣�
+            }
+            if (Area10031.Contains(locate2.AreaNo) || Area10032.Contains(locate2.AreaNo) || Area10031.Contains(locate1.AreaNo) || Area10032.Contains(locate1.AreaNo))
+            {
+                jiebo = "2JB";
+            }
         }
-        if (Area10031.Contains(locate2.AreaNo) || Area10032.Contains(locate2.AreaNo))
-        {
-            jiebo = "2JB";
-        }
+        
         if (type1 == "" || type2 == "")
         {
             return taskModle;
@@ -86,21 +97,21 @@
                 break;
             case "SITE" when type2 == "SITE":
                 {
-                    if (Area10032.Contains(locate1.AreaNo) && locate2.AreaNo == "B04")
+                    if ((Area10032.Contains(locate1.AreaNo) || Area10031.Contains(locate1.AreaNo)) && locate2.AreaNo == "B04")
                     {
-                        taskModle = "CPRK";
+                        taskModle = "CPRK1003";
                     }
                     else if(Area1002.Contains(locate1.AreaNo) && locate2.AreaNo == "B04")
                     {
-                        taskModle = "CPRK2";
+                        taskModle = "CPRK1002";
                     }
-                    else if ((Area10032.Contains(locate2.AreaNo) || Area10032.Contains(locate2.AreaNo)) && !AreaAll.Contains(locate1.AreaNo))
+                    else if ((Area10032.Contains(locate2.AreaNo) || Area10031.Contains(locate2.AreaNo)) && !AreaAll.Contains(locate1.AreaNo))
                     {
-                        taskModle = "YFLSX";
+                        taskModle = "YCLSX";
                     }
                     else if (Area1002.Contains(locate2.AreaNo) && !AreaAll.Contains(locate1.AreaNo))
                     {
-                        taskModle = "YFLSX2";
+                        taskModle = "YCLSX2";
                     }
 
                 }
diff --git a/Admin.NET/WCS.Application/Util/HttpService.cs b/Admin.NET/WCS.Application/Util/HttpService.cs
index fe2a969..545364f 100644
--- a/Admin.NET/WCS.Application/Util/HttpService.cs
+++ b/Admin.NET/WCS.Application/Util/HttpService.cs
@@ -78,7 +78,8 @@
                     TaskNo = result.TaskList.TaskNo,
                     Levels = 999,
                     EndLocate = result.TaskList.EndLocate,
-                    EndRoadway = result.TaskList.EndRoadway
+                    EndRoadway = result.TaskList.EndRoadway,
+                    TaskId = FourWayCarUtil.GetTaskId()
                 };
                 
                 var endLocat2 = PLCCommon.RoadwayToStationNum(taskAdd.EndRoadway, stationNum);
@@ -350,7 +351,7 @@
         var requestId = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
         var dic = new Dictionary<string, object>()
         {
-            {"X-lr-request-id","123456879" },
+            {"X-lr-request-id",requestId },
             {"X-lr-version","4.2" },
         };
         var mod = new

--
Gitblit v1.8.0