From 89943f29476e3de04c638cc7aefbdf2dd24d00c7 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期四, 17 七月 2025 17:31:18 +0800
Subject: [PATCH] 出库、绑定修改

---
 dispatch/WcsTask.cs |  593 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 356 insertions(+), 237 deletions(-)

diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs
index b1ea96d..ef7dba2 100644
--- a/dispatch/WcsTask.cs
+++ b/dispatch/WcsTask.cs
@@ -5,6 +5,7 @@
 using HH.WCS.ZhongCeJinTan.util;
 using HH.WCS.ZhongCeJinTan.wms;
 using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Ocsp;
 using S7.Net.Types;
 using System;
 using System.Collections.Generic;
@@ -13,6 +14,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using System.Web.Services.Description;
+using Top.Api;
 using static HH.WCS.ZhongCeJinTan.api.ApiModel;
 using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
 
@@ -39,72 +41,87 @@
             string Traycode = mst.S_CNTR_CODE;
             var isFu = "0";
 
-            var cntr = ContainerHelper.GetCntr(Traycode);
-
-            if (cntr!=null)
+            try
             {
-                if (cntr.N_DETAIL_COUNT>0)
+                var cntr = ContainerHelper.GetCntr(Traycode);
+
+                if (cntr != null)
                 {
-                    isFu = "1";
+                    if (cntr.N_DETAIL_COUNT > 0)
+                    {
+                        isFu = "1";
+                    }
                 }
-            }
-            var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
+                var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
 
-            
 
-            if (workFlow != null)
-            {
-                if (workFlow.INOROUT.Contains("鍏ュ簱"))
+
+                if (workFlow != null)
                 {
-                    Type = "1";
+                    if (workFlow.INOROUT.Contains("鍏ュ簱"))
+                    {
+                        Type = "1";
+                    }
+
+                    if (workFlow.INOROUT.Contains("鍑哄簱"))
+                    {
+                        Type = "2";
+                        var count = TaskHelper.GetConnectionTask(mst.S_END_LOC);
+                        if (count >= 2)
+                        {
+                            return false;
+                        }
+
+
+                    }
                 }
 
-                if (workFlow.INOROUT.Contains("鍑哄簱"))
+                if (mst.S_CNTR_CODE.Contains("KJZ"))
                 {
-                    Type = "2";
+                    TrayType = "KJZ";
                 }
-            }
 
-            if (mst.S_CNTR_CODE.Contains("KJZ"))
-            {
-                TrayType = "KJZ";
-            }
-           
-            var interact = new
-            {
-                requestPk = mst.S_CODE,//浠诲姟鍙�-                contNo = Traycode,//鎵樼洏鍙�-                contType = TrayType,//鎵樼洏绫诲瀷
-                trkType = Type,//浠诲姟绫诲瀷
-                trkPrty = mst.N_PRIORITY,//浠诲姟浼樺厛绾�-                frmPos = mst.S_START_LOC,//璧峰浣嶇疆
-                toPos = mst.S_END_LOC,//鐩殑鍦�-                isFull = isFu,//绌烘墭 婊℃墭
-                groupNo = Item?.S_ITEM_NAME,//鎼�缁勫彿
-                clientCode = "WMS",//鎿嶄綔浜�-                operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿
-            };
-            LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍦板潃淇℃伅:" + baseUrl + "receive", "绔嬪簱涓嬪彂浠诲姟");
-            LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "绔嬪簱涓嬪彂浠诲姟");
-            var result = apiHelper.Post(baseUrl + "receive", JsonConvert.SerializeObject(interact));
-            LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "绔嬪簱涓嬪彂浠诲姟");
-            if (!string.IsNullOrEmpty(result))
-            {
-                var res = JsonConvert.DeserializeObject<WcsTaskReturn>(result);
-                if (res.code == "0")
+                var interact = new
                 {
-                    TaskHelper.UpdateStatus(mst, "宸叉帹閫�);
-                    return true;
+                    requestPk = mst.S_CODE,//浠诲姟鍙�+                    contNo = Traycode,//鎵樼洏鍙�+                    contType = TrayType,//鎵樼洏绫诲瀷
+                    trkType = Type,//浠诲姟绫诲瀷
+                    trkPrty = mst.N_PRIORITY,//浠诲姟浼樺厛绾�+                    frmPos = mst.S_START_LOC,//璧峰浣嶇疆
+                    toPos = mst.S_END_LOC,//鐩殑鍦�+                    isFull = isFu,//绌烘墭 婊℃墭
+                    groupNo = Item?.S_ITEM_NAME,//鎼�缁勫彿
+                    clientCode = "WMS",//鎿嶄綔浜�+                    operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿
+                };
+                LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍦板潃淇℃伅:" + baseUrl + "receive", "绔嬪簱涓嬪彂浠诲姟");
+                LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "绔嬪簱涓嬪彂浠诲姟");
+                var result = apiHelper.Post(baseUrl + "receive", JsonConvert.SerializeObject(interact));
+                LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "绔嬪簱涓嬪彂浠诲姟");
+                if (!string.IsNullOrEmpty(result))
+                {
+                    var res = JsonConvert.DeserializeObject<WcsTaskReturn>(result);
+                    if (res.code == "0")
+                    {
+                        TaskHelper.UpdateStatus(mst, "宸叉帹閫�);
+                        return true;
+                    }
+                    else
+                    {
+                        return false;
+                    }
                 }
                 else
                 {
+                    LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅涓虹┖", "绔嬪簱涓嬪彂浠诲姟");
                     return false;
                 }
             }
-            else
+            catch (Exception)
             {
-                LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅涓虹┖", "绔嬪簱涓嬪彂浠诲姟");
-                return false;
+
+                throw;
             }
         }
 
@@ -246,10 +263,12 @@
                 {
                     result.msg = "Wcs涓嬪彂浠诲姟鎴愬姛";
                     result.code = "0";
+                    result.requestPk = model.requestPk;
                 }
                 else {
                     result.msg = "Wcs涓嬪彂浠诲姟澶辫触";
                     result.code = "1";
+                    result.requestPk = model.requestPk;
                 }
                 return result;
 
@@ -257,12 +276,13 @@
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs涓嬪彂浠诲姟寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs涓嬪彂浠诲姟寮傚父" + ex.Message, "Wcs涓嬪彂浠诲姟");
                 return result;
             }
-            return result;
+          
         }
         /// <summary>
         /// Wcs婊℃墭鍏ュ拰绌烘墭鍑�@@ -360,56 +380,63 @@
                         var endList2 = LocationHelper.GetAllLocList1(workFlow.ERRORAREA);
                         end1 = LocationHelper.FindEndcolByLoc(endList2, workFlow.ERRORAREA);
                         LogHelper.Info($"ZcWcsInWorkArea涓�浠诲姟鍏ュ紓甯稿簱鍖虹粓鐐逛俊鎭� + JsonConvert.SerializeObject(end1), "Wcs涓嬪彂浠诲姟");
+                        if (end1 == null)
+                        {
+                            LogHelper.Info($"ZcWcsInWorkArea浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�, "Wcs涓嬪彂浠诲姟");
+                            throw new Exception($"缁堢偣搴撳尯{workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�);
+                        }
                     }
                     else {
                         end1 = LocationHelper.FindEndcolByLoc(endList1, workFlow.ENDAREA);
                         LogHelper.Info($"ZcWcsInWorkArea涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end1), "Wcs涓嬪彂浠诲姟");
+                        if (end1 == null)
+                        {
+                            LogHelper.Info($"ZcWcsInWorkArea浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Wcs涓嬪彂浠诲姟");
+                            throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
+                        }
                     }
 
 
                     LogHelper.Info($"ZcWcsInWorkArea浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end1), "Wcs涓嬪彂浠诲姟");
 
-                    if (end1 == null)
-                    {
-                        LogHelper.Info($"ZcWcsInWorkArea浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Wcs涓嬪彂浠诲姟");
-                        throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
-                    }
-                    //娣诲姞鎵樼洏鐗╂枡鍏宠仈琛�                    
+                   
+
+
+                    //娣诲姞鎵樼洏 寮傚父鎵樼洏涓嶆坊鍔�+                    if (!(model.code == "1" || model.contNo == "99")) {
+
+                        //娣诲姞鎵樼洏鐗╂枡鍏宠仈琛�+
                         CntrItemRel rel = new CntrItemRel();
-                       
+
                         rel.S_CNTR_CODE = model.contNo;
                         rel.PRODUCTIONDATE = DateTime.Parse(item.wrkdatetime);
                         rel.S_ITEM_CODE = item.recipe;
                         rel.F_SUM_QTY = item.zl;
                         rel.TurnCardNum = item.tmh;
                         rel.facnm = item.facnm;
-                        rel.cdrub= item.cdrub;
+                        rel.cdrub = item.cdrub;
                         rel.mchid = item.mchid;
                         rel.wdate = item.wdate;
-                        rel.wsht = item.wsht; 
-                        rel.strbat = item.strbat; 
+                        rel.wsht = item.wsht;
+                        rel.strbat = item.strbat;
                         rel.endbat = item.endbat;
-                        rel.planno = item.planno; 
-                        rel.stage  = item.stage;
+                        rel.planno = item.planno;
+                        rel.stage = item.stage;
                         rel.grd = item.grd;
-                        
+
                         ContainerHelper.CreateCntrItem(rel);
 
 
-                    //娣诲姞鎵樼洏
-                    Container cntr1 = new Container();
-                    cntr1.S_CODE = model.contNo;
-                    cntr1.C_ENABLE = "Y";
-                    cntr1.N_DETAIL_COUNT = 1;
-                    cntr1.S_TYPE = "";
-
-                  
-                    ContainerHelper.CreateCntr(cntr1);
-                  
-
-
-
+                        Container cntr1 = new Container();
+                        cntr1.S_CODE = model.contNo;
+                        cntr1.C_ENABLE = "Y";
+                        cntr1.N_DETAIL_COUNT = 1;
+                        cntr1.S_TYPE = "";
+                        ContainerHelper.CreateCntr(cntr1);
+                    }
+                    
 
                     //璧风偣缁堢偣鏌ユ壘鎴愬姛锛屽垱寤轰綔涓� 
@@ -440,7 +467,13 @@
                         //浼樺厛绾�                         N_PRIORITY = 1,
                         //宸ヨ绫诲瀷
-                        TOOLSTYPE = ""
+                        TOOLSTYPE = "",
+                        //璧风偣搴撳尯鍚嶇О
+                        S_START_AREA_NAME = start1.S_AREA_Name,
+                        //缁堢偣搴撳尯鍚嶇О
+                        S_END_AREA_NAME= end1.S_AREA_Name,
+                        //鎺ラ┏浣嶅簱鍖哄悕绉�+                        CONNECTION_AREA = ""
                     };
 
                     //鍒涘缓浣滀笟
@@ -528,7 +561,13 @@
                         //浼樺厛绾�                         N_PRIORITY = 1,
                         //宸ヨ绫诲瀷
-                        TOOLSTYPE = ""
+                        TOOLSTYPE = "" ,
+                        //璧风偣搴撳尯鍚嶇О
+                        S_START_AREA_NAME = start.S_AREA_Name,
+                        //缁堢偣搴撳尯鍚嶇О
+                        S_END_AREA_NAME = end.S_AREA_Name,
+                        //鎺ラ┏浣嶅簱鍖哄悕绉�+                        CONNECTION_AREA = ""
                     };
 
                     //鍒涘缓浣滀笟
@@ -555,16 +594,18 @@
         }
 
 
-        ///// <summary>
-        /// Wcs浠诲姟鎵ц閫氱煡
-        /// </summary>
-        internal static WcsWarningReurn WcsOperateTask(WcsOperateTaskParme model) {
+       
+
+
+            ///// <summary>
+            /// Wcs浠诲姟鎵ц閫氱煡
+            /// </summary>
+            internal static WcsWarningReurn WcsOperateTask(WcsOperateTaskParme model) {
             var result = new WcsWarningReurn();
             var newDb = new SqlHelper<object>().GetInstance();
 
             try
             {
-            
                 var taskNo = "";
             
                 if (string.IsNullOrEmpty(model.requestPk))
@@ -576,7 +617,7 @@
                 {
                     taskNo = model.requestPk;
                 }
-                var transportTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == taskNo)?.First();
+                var transportTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == taskNo && e.S_SCHEDULE_TYPE.Contains("wcs"))?.First();
 
                 if (transportTask == null)
                 {
@@ -584,6 +625,13 @@
                     throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勪换鍔�);
                 }
 
+                if (transportTask.S_B_STATE == "瀹屾垚" || transportTask.S_B_STATE == "鍙栨秷")
+                {
+                    throw new Exception($"{transportTask}浠诲姟宸瞷transportTask.S_B_STATE}锛屼笉鍏佽鎿嶄綔");
+                }
+
+
+             
                 TaskHelper.WcsAddActionRecord(model.requestPk, model.noticeType, "WCS");
 
                 switch (model.noticeType)
@@ -633,28 +681,29 @@
                                 RfidChek.S_RESULT = "RFID鏍¢獙澶辫触";
                                 if (WcsCancellTask(transportTask))
                                 {
-                                    ContainerHelper.delCntr(transportTask.S_CNTR_CODE);
-                                    ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE);
+                                   
                                     TaskHelper.Fail(transportTask);
                                     TaskProcess.OperateStatus(transportTask, 7);
+                                    
+                                    var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
 
-                                    var agvTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == transportTask.S_OP_CODE+"_1")?.First();
                                     if (agvTask == null)
                                     {
-                                        LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE+"_1"}浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
-                                        throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE + "_1"}浠诲姟");
+                                        LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE}鐨刟gv浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
+                                        throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE}鐨刟gv浠诲姟");
                                     }
                                     var workFlow = TaskHelper.selectWorkFlowByType(agvTask.N_TYPE.ToString(), agvTask.TOOLSTYPE);
-                                  
-                                        if (workFlow == null)
-                                        {
-                                            LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡");
-                                            throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�);
-                                        }
+
+                                    if (workFlow == null)
+                                    {
+                                        LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡");
+                                        throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�);
+                                    }
                                     //鏌ユ壘缁堢偣
                                     var endList = LocationHelper.GetAllLocList1(workFlow.ERRORAREA);
 
-                                    var end = LocationHelper.FindEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY);
+                                    //var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY);
+                                    var end = LocationHelper.FindEndcolByLoc(endList, workFlow.ERRORAREA);
                                     LogHelper.Info($"RFID鏍¢獙澶辫触涓嬪彂寮傚父缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Wcs浠诲姟鎵ц閫氱煡");
 
 
@@ -663,23 +712,33 @@
                                         LogHelper.Info($"RFID鏍¢獙澶辫触涓嬪彂浠诲姟澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�, "Wcs浠诲姟鎵ц閫氱煡");
                                         throw new Exception($"RFID鏍¢獙澶辫触缁堢偣搴撳尯{workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�);
                                     }
+                                    LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
                                     agvTask.S_START_LOC = agvTask.S_END_LOC;
                                     agvTask.S_START_AREA = agvTask.S_END_AREA;
+                                    agvTask.S_START_AREA_NAME = agvTask.S_END_AREA_NAME;
                                     agvTask.S_END_LOC = end.S_CODE;
                                     agvTask.S_END_AREA = end.S_AREA_CODE;
+                                    agvTask.S_END_AREA_NAME = end.S_AREA_Name;
                                     agvTask.S_TYPE = workFlow.FLOWNAME;
+
                                     newDb.BeginTran();
-                                    var I = newDb.Updateable(agvTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA,it.S_END_LOC,it.S_END_AREA,it.S_TYPE,it.S_B_STATE }).ExecuteCommand();
+                                    var I = newDb.Updateable(agvTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA, it.S_END_LOC, it.S_END_AREA, it.S_TYPE, it.S_B_STATE, it.S_START_AREA_NAME, it.S_END_AREA_NAME }).ExecuteCommand();
                                     if (I == 0)
                                     {
                                         throw new Exception("淇敼浠诲姟琛ㄥけ璐�);
                                     }
                                     newDb.CommitTran();
-                                    //鏀瑰弬鏁伴�鐭ュ皬杞� 
+                                    var agvTask1 = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
+                                    TaskHelper.opMesTask(agvTask1, 3);
+                                    ContainerHelper.delCntr(transportTask.S_CNTR_CODE);
+                                    ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE);
+                                }
+                                else {
+                                    LogHelper.Info($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触");
                                 }
                             }
-
                             newDb.BeginTran();
                             var R = newDb.Insertable(RfidChek).ExecuteCommand();
                             if (R == 0)
@@ -687,25 +746,35 @@
                                 throw new Exception("娣诲姞RFID鏍¢獙琛ㄥけ璐�);
                             }
                             newDb.CommitTran();
-
                         }
                         break;
-                    //9鍙栬揣鏃犺揣
-                    case "9":
-                        LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
-                        if (WcsCancellTask(transportTask)) {
-                            LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋transportTask.S_START_LOC}璁句负寮傚父", "Wcs浠诲姟鎵ц閫氱煡");
-                            TaskHelper.Fail(transportTask);
-                            TaskProcess.OperateStatus(transportTask, 7);
-                            LocationHelper.updateLocLock(transportTask.S_START_LOC, 4, "寮傚父閿�);
-                            var agvTask = TaskHelper.GetTask(transportTask.S_OP_CODE + "_1");
-                            if (agvTask!=null)
+                    //鍙栬揣瀹屾垚
+                    case "5":
+                        TaskHelper.UpdateStatus(transportTask, "鍙栬揣瀹屾垚");
+                        LocationHelper.UnBindingLoc(transportTask.S_START_LOC, transportTask.S_CNTR_CODE.Split(',').ToList());
+                        break;
+
+                    //7鍙栨秷
+                    case "7":
+                        LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栨秷浠诲姟鎴愬姛", "Wcs浠诲姟鎵ц閫氱煡");
+                        TaskHelper.Fail(transportTask);
+                        TaskProcess.OperateStatus(transportTask, 7);
+
+                        if (transportTask.S_TYPE.Contains("鍑哄簱"))
+                        {
+                            var agvTask1 = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
+                            if (agvTask1 != null)
                             {
-                                TaskHelper.Fail(agvTask);
-                                NDCApi.CancelOrder(agvTask.S_CODE.Trim());
-                                TaskProcess.CacheBitCancelUpdate(agvTask);
+                                TaskHelper.Fail(agvTask1);
+                                NDCApi.CancelOrder(agvTask1.S_CODE.Trim());
+                                TaskProcess.CacheBitCancelUpdate(agvTask1);
                             }
                         }
+                        else {
+                            ContainerHelper.delCntr(transportTask.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE);
+                        }
+
                         break;
                     default:
                         break;
@@ -713,14 +782,18 @@
 
                 result.msg = "閫氱煡鎴愬姛";
                 result.code = "0";
+                result.requestPk = model.requestPk;
 
             }
             catch (Exception ex)
             {
-                newDb.RollbackTran();
-                result.msg = ex.Message;
-                result.code = "1";
+               
+
                 LogHelper.Info("Wcs浠诲姟鎵ц閫氱煡寮傚父" + ex.Message, "Wcs浠诲姟鎵ц閫氱煡");
+                result.msg = "Wcs浠诲姟鎵ц閫氱煡寮傚父";
+                result.code = "1";
+                result.requestPk = model.requestPk;
+                newDb.RollbackTran();
                 return result;
             }
             return result;
@@ -772,14 +845,16 @@
                 newDb.CommitTran();
                 result.code = "0";
                 result.msg = "鎴愬姛";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs鎶ヨ涓婃姤杩斿洖"+ JsonConvert.SerializeObject(result), "鎶ヨ涓婃姤");
                 return result;
             }
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs鎶ヨ淇℃伅寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs鎶ヨ淇℃伅寮傚父" + ex.Message, "鎶ヨ涓婃姤");
                 return result;
             }
@@ -897,14 +972,16 @@
                
                 result.code = "0";
                 result.msg = "鎴愬姛";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs宸烽亾鍙敤涓婃姤杩斿洖" + JsonConvert.SerializeObject(result), "宸烽亾鍙敤涓婃姤");
                 return result;
             }
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs宸烽亾鍙敤涓婃姤寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs宸烽亾鍙敤涓婃姤寮傚父" + ex.Message, "宸烽亾鍙敤涓婃姤");
                 return result;
             }
@@ -924,113 +1001,112 @@
             string bit = "";
             var Meshod = "";
             var newDb = new SqlHelper<object>().GetInstance();
-            var tac = newDb.Queryable<WcsSafety>().Where(a => a.TaskNo == mst.S_CODE && a.Sign == state).ToList();
-            if (tac.Count() > 0)
-            {
-                LogHelper.Info("鏌ヨ鍒板畨鍏ㄨ姹備俊鍙疯褰曡〃宸茬粡瀛樺湪鏁版嵁,姝ゆ淇″彿涓嶄笅杈剧粰绔嬪簱", "agv鎵ц閫氱煡");
-                return true;
-            }
 
-            if (mst.S_TYPE.Contains("鍏ュ簱"))
+            try
             {
-                 Type = "2";
-                 bit = mst.S_END_LOC;
-                if (state == 1103)
+                var tac = newDb.Queryable<WcsSafety>().Where(a => a.TaskNo == mst.S_CODE && a.Sign == state).ToList();
+                if (tac.Count() > 0)
                 {
-                    Meshod = "AgvRequest";
-                    bit = mst.S_END_LOC;
-                }
-                else if (state == 7)
-                {
-                    Type = "3";
-                    Meshod = "AgvRequestCancel";
-                }
-                else if (state == 4) {
-                    //鐢宠鍑洪棬
-                    Type = "4";
-                    Meshod = "AgvRequest";
-                    bit = mst.S_END_LOC;
-                }
-                else
-                {
-                    Meshod = "Complete";
-                }
-            }
-            else if (mst.S_TYPE.Contains("鍑哄簱"))
-            {
-                Type = "1";
-                bit = mst.S_START_LOC;
-                if (state == 1101)
-                {
-                    Meshod = "AgvRequest";
-                }
-                else if (state == 7)
-                {
-                    Type = "3";
-                    Meshod = "AgvRequestCancel";
-                }
-                else if (state == 3)
-                {
-                    //鐢宠杩涢棬
-                    Type = "3";
-                    Meshod = "AgvRequest";
-                    bit = mst.S_START_LOC;
-                }
-                else
-                {
-                    Meshod = "Complete";
-                }
-            }
-            else
-            {
-                LogHelper.Info("闄や簡鍑哄叆搴撳叾浣欎笉闇�瀹夊叏璇锋眰", "agv鎵ц閫氱煡");
-                return true;
-            }
-
-
-
-            var interact = new
-            {
-                requestPk = mst.S_CODE,//浠诲姟鍙�-                trkType = Type,//浠诲姟绫诲瀷
-                method = Meshod,//API鍚嶇О
-                stnNo = bit,//鐩殑鍦扮珯鍙板彿
-                carNo = forkliftNo,// 杞﹀彿
-                clientCode = "WMS",//鎿嶄綔浜�-                operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿
-            };
-            LogHelper.Info("agv鎵ц閫氱煡 鍦板潃淇℃伅:" + baseUrl + "agvCallback", "agv鎵ц閫氱煡");
-            LogHelper.Info("agv鎵ц閫氱煡 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "agv鎵ц閫氱煡");
-            var result = apiHelper.Post(baseUrl + "agvCallback", JsonConvert.SerializeObject(interact));
-            LogHelper.Info("agv鎵ц閫氱煡 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "agv鎵ц閫氱煡");
-            if (!string.IsNullOrEmpty(result))
-            {
-                var res = JsonConvert.DeserializeObject<WcsTaskCallBack>(result);
-                if (res.code == "0")
-                {
-                    WcsSafety Sign = new WcsSafety();
-                    Sign.TaskNo = mst.S_CODE;
-                    Sign.Sign = state;
-                    newDb.BeginTran();
-                    var B = newDb.Insertable(Sign).ExecuteCommand();
-                    if (B == 0)
-                    {
-                        newDb.RollbackTran();
-                    }
-                    newDb.CommitTran();
-                    LogHelper.Info("agv鎵ц閫氱煡鎴愬姛:", "agv鎵ц閫氱煡");
+                    LogHelper.Info("鏌ヨ鍒板畨鍏ㄨ姹備俊鍙疯褰曡〃宸茬粡瀛樺湪鏁版嵁,姝ゆ淇″彿涓嶄笅杈剧粰绔嬪簱", "agv鎵ц閫氱煡");
                     return true;
                 }
+                switch (state)
+                {
+                    case 1101:
+                        Type = "1";
+                        bit = mst.S_START_LOC;
+                        Meshod = "AgvRequest";
+                        break;
+                    case 1102:
+                        Type = "1";
+                        bit = mst.S_START_LOC;
+                        Meshod = "Complete";
+                        break;
+                    case 1103:
+                        Type = "2";
+                        bit = mst.S_END_LOC;
+                        Meshod = "AgvRequest";
+                        break;
+                    case 1104:
+                        Type = "2";
+                        bit = mst.S_END_LOC;
+                        Meshod = "Complete";
+                        break;
+                    case 7:
+                        Type = "5";
+                        if (mst.S_TYPE.Contains("鍑哄簱"))
+                        {
+                            bit = mst.S_START_LOC;
+                        }
+                        else
+                        {
+                            bit = mst.S_END_LOC;
+                        }
+
+                        //閫�簱鍙栨秷鍙慳gv璧风偣
+                        if (LocationHelper.GetErroArea(mst.S_END_AREA))
+                        {
+                            bit = mst.S_START_LOC;
+                        }
+
+
+                        Meshod = "AgvRequestCancel";
+                        break;
+                }
+
+
+
+
+                var interact = new
+                {
+                    requestPk = mst.S_CODE,//浠诲姟鍙�+                    trkType = Type,//浠诲姟绫诲瀷
+                    method = Meshod,//API鍚嶇О
+                    stnNo = bit,//鐩殑鍦扮珯鍙板彿
+                    carNo = forkliftNo,// 杞﹀彿
+                    clientCode = "WMS",//鎿嶄綔浜�+                    operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿
+                };
+                LogHelper.Info("agv鎵ц閫氱煡 鍦板潃淇℃伅:" + baseUrl + "agvCallback", "agv鎵ц閫氱煡");
+                LogHelper.Info("agv鎵ц閫氱煡 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "agv鎵ц閫氱煡");
+                var result = apiHelper.Post(baseUrl + "agvCallback", JsonConvert.SerializeObject(interact));
+                LogHelper.Info("agv鎵ц閫氱煡 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "agv鎵ц閫氱煡");
+                if (!string.IsNullOrEmpty(result))
+                {
+                    var res = JsonConvert.DeserializeObject<WcsTaskCallBack>(result);
+                    if (res.code == "0")
+                    {
+                        WcsSafety Sign = new WcsSafety();
+                        Sign.TaskNo = mst.S_CODE;
+                        Sign.Sign = state;
+                        newDb.BeginTran();
+                        var B = newDb.Insertable(Sign).ExecuteCommand();
+                        if (B == 0)
+                        {
+                            newDb.RollbackTran();
+                        }
+                        newDb.CommitTran();
+                        LogHelper.Info("agv鎵ц閫氱煡鎴愬姛:", "agv鎵ц閫氱煡");
+                        return true;
+                    }
+                    else
+                    {
+                        return false;
+                    }
+                }
                 else
                 {
+                    LogHelper.Info("agv鎵ц閫氱煡鎴愬姛 杩斿洖淇℃伅涓虹┖", "agv鎵ц閫氱煡");
                     return false;
                 }
             }
-            else
+            catch (Exception)
             {
-                LogHelper.Info("agv鎵ц閫氱煡鎴愬姛 杩斿洖淇℃伅涓虹┖", "agv鎵ц閫氱煡");
-                return false;
+
+                throw;
             }
+
+           
 
         }
 
@@ -1157,41 +1233,73 @@
                             throw new Exception($"鏈煡璇㈠埌浠诲姟鍙穥model.taskNo}鐨勪换鍔�);
                         }
 
-                        if (task.S_B_STATE.Contains("瀹屾垚")|| task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触"))
+                    if (task.S_TYPE.Contains("鍑哄簱"))
+                    {
+                        //鍙栬揣鏃犺揣
+                        LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "鏀捐揣鏈夎揣");
+                        if (WcsCancellTask(task))
+                        {
+                            LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋task.S_START_LOC}璁句负寮傚父", "鏀捐揣鏈夎揣");
+                            TaskHelper.Fail(task);
+                            TaskProcess.OperateStatus(task, 7);
+                            LocationHelper.updateLocLock(task.S_START_LOC, 4, "寮傚父閿�);
+                            var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv");
+                            if (agvTask != null)
+                            {
+                                if (agvTask.S_B_STATE!="鏈墽琛�)
+                                {
+                                    NDCApi.CancelOrder(agvTask.S_CODE.Trim());
+                                }
+                                TaskHelper.Fail(agvTask);
+                                TaskProcess.CacheBitCancelUpdate(agvTask);
+                            }
+                        }
+
+                    }
+                    else {
+                        //鍗歌揣鏈夎揣
+                        if (task.S_B_STATE.Contains("瀹屾垚") || task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触"))
                         {
                             throw new Exception($"浠诲姟鍙穥model.taskNo}锛屼换鍔$姸鎬侊細{task.S_B_STATE}锛屼笉鑳芥敼閬�);
                         }
 
-                      var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
+                        var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
 
-                       var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0).OrderBy(b=>b.N_COL).First();
+                        var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_COL).First();
 
-                      LogHelper.Info($"Wcs鏀捐揣鏈夎揣瀵绘壘鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀捐揣鏈夎揣");
+                        LogHelper.Info($"Wcs鏀捐揣鏈夎揣瀵绘壘鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀捐揣鏈夎揣");
 
-                    if (end!=null)
-                    {
-                        newDb.BeginTran();
-                        endLoc.N_LOCK_STATE = 4;
-                        endLoc.S_LOCK_STATE = "寮傚父閿�;
-                        newDb.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
-                        task.S_END_LOC = end.S_CODE;
-                        newDb.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
-                        newDb.CommitTran();
-                        LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
-                        result.msg = end.S_CODE;
-                        result.code = "0";
+                        if (end != null)
+                        {
+                            newDb.BeginTran();
+                            endLoc.N_LOCK_STATE = 4;
+                            endLoc.S_LOCK_STATE = "寮傚父閿�;
+                            newDb.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
+                            task.S_END_LOC = end.S_CODE;
+                            newDb.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
+                            newDb.CommitTran();
+                            LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
+                            result.msg = end.S_CODE;
+                            result.code = "0";
+                            result.requestPk = model.requestPk;
+                        }
+                        else
+                        {
+                            throw new Exception($"鏈煡璇㈠埌搴撳尯{endLoc.S_AREA_CODE}鏈夌鍚堢殑璐т綅");
+                        }
                     }
-                    else
-                    {
-                        throw new Exception($"鏈煡璇㈠埌搴撳尯{endLoc.S_AREA_CODE}鏈夌鍚堢殑璐т綅");
-                     }
 
+                        result.msg = "Wcs鏀捐揣鏈夎揣/鍙栬揣鏃犺揣澶勭悊鎴愬姛";
+                        result.code = "0";
+                        result.requestPk = model.requestPk;
+                        return result;
                     }
                     catch (Exception ex)
                     {
                         newDb.RollbackTran();
-                        result.msg = ex.Message;
+                        result.msg = "Wcs鏀捐揣鏈夎揣寮傚父";
                         result.code = "1";
+                        result.requestPk = model.requestPk;
                         LogHelper.Info("Wcs鏀捐揣鏈夎揣寮傚父" + ex.Message, "鏀捐揣鏈夎揣");
                     return result;
                     }
@@ -1207,7 +1315,6 @@
             public static WcsWarningReurn agvResponse(agvResponseParme model) {
             var result = new WcsWarningReurn();
             var newDb = new SqlHelper<object>().GetInstance();
-
             try
             {
                 newDb.BeginTran();
@@ -1229,20 +1336,20 @@
                 newDb.CommitTran();
                 result.code = "0";
                 result.msg = "鎴愬姛";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs閫氱煡纭杩斿洖" + JsonConvert.SerializeObject(result), "閫氱煡纭");
                 return result;
             }
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs閫氱煡纭寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs閫氱煡纭寮傚父" + ex.Message, "閫氱煡纭");
                 return result;
             }
         }
-        
-
     }
     
     
@@ -1259,6 +1366,18 @@
             public string status { get; set; }
     }
 
+
+    /// <summary>
+    /// mes姹囨姤浠诲姟杩斿洖
+    /// </summary>
+    public class MesTaskReturn
+    {
+        public string code { get; set; }
+        public string msg { get; set; }
+        public bool success { get; set; }
+        public DateTime lastTime { get; set; }
+    }
+
     /// <summary>
     /// Mes鎺ュ彛杩斿洖
     /// </summary>

--
Gitblit v1.9.1