From 265fbfa342cc03991c79934b162f26c0a6699f95 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期五, 25 七月 2025 17:31:20 +0800
Subject: [PATCH] 0725

---
 dispatch/WcsTask.cs |  177 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 164 insertions(+), 13 deletions(-)

diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs
index 7ee98e1..9528c7f 100644
--- a/dispatch/WcsTask.cs
+++ b/dispatch/WcsTask.cs
@@ -53,18 +53,14 @@
                         isFu = "1";
                     }
                 }
-                var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
-
-
-
-                if (workFlow != null)
-                {
-                    if (workFlow.INOROUT.Contains("鍏ュ簱"))
+               
+                
+                    if (mst.S_TYPE.Contains("鍏ュ簱")|| mst.S_TYPE.Contains("鍥炲簱"))
                     {
                         Type = "1";
                     }
 
-                    if (workFlow.INOROUT.Contains("鍑哄簱"))
+                    if (mst.S_TYPE.Contains("鍑哄簱"))
                     {
                         Type = "2";
                         var count = TaskHelper.GetConnectionTask(mst.S_END_LOC);
@@ -75,7 +71,7 @@
 
 
                     }
-                }
+                
 
                 if (mst.S_CNTR_CODE.Contains("KJZ"))
                 {
@@ -194,10 +190,10 @@
                 stnNo = aloneWcsTask.S_START_LOC,//鎺ラ┏浣�                 reqTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿
             };
-            LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍦板潃淇℃伅:" + baseUrl + "CV-state", "绔嬪簱");
-            LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "绔嬪簱");
+            LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍦板潃淇℃伅:" + baseUrl + "CV-state", "鏄惁鏈夎揣");
+            LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "鏄惁鏈夎揣");
             var result = apiHelper.Post(baseUrl + "CV-state", JsonConvert.SerializeObject(interact));
-            LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "绔嬪簱");
+            LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "鏄惁鏈夎揣");
             if (!string.IsNullOrEmpty(result))
             {
                 var res = JsonConvert.DeserializeObject<WcsTaskReturn>(result);
@@ -212,7 +208,7 @@
             }
             else
             {
-                LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅涓虹┖", "绔嬪簱");
+                LogHelper.Info("Wcs绔嬪簱杈撻�绾挎槸鍚︽湁璐�杩斿洖淇℃伅涓虹┖", "鏄惁鏈夎揣");
                 return false;
             }
         }
@@ -693,6 +689,14 @@
                                         LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE}鐨刟gv浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
                                         throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE}鐨刟gv浠诲姟");
                                     }
+
+                                    WmsTaskAction ac7 = TaskHelper.GetActionRecord(agvTask.S_CODE, "7");
+                                    if (ac7!=null)
+                                    {
+                                        LogHelper.Info($"RFID鏍¢獙澶辫触锛宎gv浠诲姟{agvTask.S_CODE},宸茬粡鍙栨秷锛岃浜哄伐澶勭悊", "Wcs浠诲姟鎵ц閫氱煡");
+                                        throw new Exception($"RFID鏍¢獙澶辫触锛宎gv浠诲姟{agvTask.S_CODE},宸茬粡鍙栨秷锛岃浜哄伐澶勭悊");
+                                    }
+
                                     var workFlow = TaskHelper.selectWorkFlowByType(agvTask.N_TYPE.ToString(), agvTask.TOOLSTYPE);
 
                                     if (workFlow == null)
@@ -740,6 +744,112 @@
                                     throw new Exception($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触");
                                 }
                             }
+
+                            if (model.code == "2") {
+
+                                TaskHelper.Fail(transportTask);
+                                TaskProcess.OperateStatus(transportTask, 7);
+
+                                if (!WcsCancellTask(transportTask)) {
+                                    LogHelper.Info($"澶栧舰妫�祴澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"澶栧舰妫�祴澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触");
+                                }
+
+                                var work = TaskHelper.GetWmsWork(transportTask.S_OP_CODE);
+                                if (work==null)
+                                {
+                                    LogHelper.Info($"鏈煡璇㈠埌{transportTask.S_OP_CODE}瀵瑰簲鐨勪綔涓�, "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勪綔涓�);
+                                }
+
+                                var workFlow = TaskHelper.selectWorkFlowByType(work.N_TYPE.ToString(), work.TOOLSTYPE);
+
+                                if (workFlow == null)
+                                {
+                                    LogHelper.Info($"澶栧舰妫�祴澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"澶栧舰妫�祴澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�);
+                                }
+                                //鏌ユ壘缁堢偣
+                                var endList = LocationHelper.GetAllLocList1(workFlow.ERRORAREA);
+
+                                //var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY);
+                                var end = LocationHelper.FindEndcolByLoc(endList, workFlow.ERRORAREA);
+                                LogHelper.Info($"澶栧舰妫�祴澶辫触澶辫触涓嬪彂寮傚父缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Wcs浠诲姟鎵ц閫氱煡");
+
+
+                                if (end == null)
+                                {
+                                    LogHelper.Info($"澶栧舰妫�祴澶辫触澶辫触涓嬪彂浠诲姟澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�, "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"澶栧舰妫�祴澶辫触澶辫触缁堢偣搴撳尯{workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�);
+                                }
+
+                                LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
+
+
+                                var connectionLoc = LocationHelper.GetLoc(work.CONNECTION.Replace("R", "C"));
+
+                                if (connectionLoc==null)
+                                {
+                                    LogHelper.Info($"鏈煡璇㈠埌{work.CONNECTION.Replace("R", "C")}瀵瑰簲鐨勬帴椹充綅", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勫嚭搴撴帴椹充綅");
+                                }
+
+                                var connection = connectionLoc.S_CODE;
+
+                                var operation = new WmsWork
+                                {
+                                    // 浣滀笟鍙�+                                    S_CODE = TaskHelper.GenerateTaskNo(),
+                                    // 浣滀笟绫诲瀷
+                                    N_TYPE = 99,
+                                    // 浣滀笟绫诲瀷
+                                    S_TYPE = work.S_TYPE.Replace("鍏�,"鍑�),
+                                    // 璧风偣璐т綅
+                                    S_START_LOC = work.CONNECTION,
+                                    // 璧风偣搴撳尯缂栫爜
+                                    S_START_AREA = work.CONNECTION_AREA,
+                                    //璧风偣搴撳尯鍚嶇О
+                                    S_START_AREA_NAME = work.CONNECTION_AREA,
+                                    //鎺ラ┏浣�+                                    CONNECTION = connection,
+                                    //鎺ラ┏搴撳尯鍚嶇О
+                                    CONNECTION_AREA = connectionLoc.S_AREA_Name,
+                                    // 缁堢偣璐т綅
+                                    S_END_LOC = end.S_CODE,
+                                    // 缁堢偣搴撳尯缂栫爜
+                                    S_END_AREA = end.S_AREA_CODE,
+                                    //缁堢偣搴撳尯鍚嶇О
+                                    S_END_AREA_NAME = end.S_AREA_Name,
+                                    // 瀹瑰櫒缂栫爜
+                                    S_CNTR_CODE = work.S_CNTR_CODE,
+                                    // 浣滀笟瀹氫箟鍚嶇О
+                                    S_OP_DEF_NAME = workFlow.FLOWNAME,
+                                    //浼樺厛绾�+                                    N_PRIORITY = work.N_PRIORITY,
+                                    //宸ヨ绫诲瀷
+                                    TOOLSTYPE = work.TOOLSTYPE
+                                };
+
+                                //鍒涘缓浣滀笟
+                                if (WMSHelper.CreateWmsWork(operation))
+                                {
+                                    if (connection != "")
+                                    {
+                                        LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
+                                        LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
+                                        LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1);
+                                    }
+
+                                    LogHelper.Info($"寮傚父鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂");
+                                }
+                                else
+                                {
+                                    LogHelper.Info($"寮傚父鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂");
+                                    throw new Exception($"寮傚父鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触");
+                                }
+                            }
+
+
                             newDb.BeginTran();
                             var R = newDb.Insertable(RfidChek).ExecuteCommand();
                             if (R == 0)
@@ -1381,6 +1491,47 @@
                 result.msg = "鎴愬姛";
                 result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs閫氱煡纭杩斿洖" + JsonConvert.SerializeObject(result), "閫氱煡纭");
+
+                //鏌ユ壘绔嬪簱閫氱煡纭琛�+                var mst = TaskHelper.GetTask(model.requestPk);
+                if (mst==null)
+                {
+                    throw new Exception($"涓烘煡璇㈠埌浠诲姟{model.requestPk}");
+                }
+                
+                if (mst.S_TYPE.Contains("鍑哄簱"))
+                {
+                    var ac1102 = TaskHelper.GetWcsSafety(mst.S_CODE, "1102");
+                    if (ac1102 == null) {
+                        if (model.trkType == "1" && model.isAllow == "1")
+                        {
+                            //绔嬪簱閫氱煡鎴愬姛淇敼鍙傛暟
+                            LogHelper.Info($"绔嬪簱閫氱煡纭锛屽彇璐т氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰");
+                            NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1");
+                        }
+                        else
+                        {
+                            LogHelper.Info($"绔嬪簱閫氱煡纭锛屼换鍔″彿={mst.S_CODE}锛屽彇璐т氦绠′笉鍏佽锛屼笉淇敼鍙傛暟", "瀹夊叏浜や簰");
+                        }
+                    }   
+                }
+                else {
+                    var ac1104 = TaskHelper.GetWcsSafety(mst.S_CODE, "1104");
+                    if (ac1104==null)
+                    {
+                        if (model.trkType == "2" && model.isAllow == "1")
+                        {
+                            //绔嬪簱閫氱煡鎴愬姛淇敼鍙傛暟
+                            LogHelper.Info($"绔嬪簱閫氱煡纭锛屼换鍔″彿={mst.S_CODE}锛屽嵏璐т氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰");
+                            NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1");
+                        }
+                        else
+                        {
+                            LogHelper.Info($"绔嬪簱閫氱煡纭锛屼换鍔″彿={mst.S_CODE}锛屽嵏璐т氦绠′笉鍏佽锛屼笉淇敼鍙傛暟", "瀹夊叏浜や簰");
+                        }
+                    }
+                }
+
                 return result;
             }
             catch (Exception ex)

--
Gitblit v1.9.1