From 60cbd8c8e6472c129c440fe37040d1dc3e99f877 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期四, 24 七月 2025 17:28:34 +0800
Subject: [PATCH] 新增外形检测失败退库

---
 api/MoboxController.cs |  247 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 219 insertions(+), 28 deletions(-)

diff --git a/api/MoboxController.cs b/api/MoboxController.cs
index 82c18fe..227a20b 100644
--- a/api/MoboxController.cs
+++ b/api/MoboxController.cs
@@ -23,41 +23,232 @@
         //[Route("CancelTask")]
         public SimpleResult CancelTask(MoboxTaskBase model) {
             var result=new SimpleResult();
-             var task=TaskHelper.GetTask(model.TaskNo);
-            if (task != null) {
-                if (task.S_B_STATE.Trim() == "鏈墽琛�) {
-                    //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷
-                
-                    LogHelper.Info($"mobox鍙栨秷agv浠诲姟{task.S_CODE}锛�, "鍙栨秷");
-                    TaskHelper.Fail(task);
-                    TaskProcess.CacheBitCancelUpdate(task);
-                    TaskHelper.opMesTask(task, 3);
-                }
-                else if(task.S_B_STATE.Trim() != "鍙栨秷"&& task.S_B_STATE.Trim() != "瀹屾垚")  {
-                    var db = new SqlHelper<object>().GetInstance();
-                    var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First();
+            LogHelper.Info($"CancelTask鍙栨秷:鍙傛暟"+JsonConvert.SerializeObject(model), "Mobox鍙栨秷");
+            if (model==null)
+            {
+                result.resultCode = 1;
+                result.resultMsg = "鍙傛暟涓簄ull";
+                LogHelper.Info($"CancelTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                return result;
+            }
+            if (string.IsNullOrEmpty(model.TaskNo))
+            {
+                result.resultCode = 1;
+                result.resultMsg = "浠诲姟鍙蜂负绌�;
+                LogHelper.Info($"CancelTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                return result;
+            }
+            
 
-
-                    if (qhflag != null)
-                    {
-                        LogHelper.Info($"mobox鍙栨秷锛岃浠诲姟{task.S_CODE}宸茬粡鍙栬揣瀹屾垚,锛屼笉鍏佽鍙栨秷", "鍙栨秷");
-                        return result;
-                    }
-                    TaskHelper.opMesTask(task, 3);
-                    //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv
-                    TaskHelper.Fail(task);
-                    NDCApi.CancelOrder(task.S_CODE.Trim());
-                    TaskProcess.CacheBitCancelUpdate(task);
-                }
-                else {
+            var wmsTask = TaskHelper.GetTaskByNoType(model.TaskNo, "agv");
+            if (wmsTask != null) {
+                if (wmsTask.S_TYPE == "鍙栨秷" || wmsTask.S_TYPE == "瀹屾垚")
+                {
                     result.resultCode = 1;
-                    result.resultMsg = "浠诲姟宸茬粨鏉�;
+                    result.resultMsg = $"{model.TaskNo},鍙栨秷agv浠诲姟澶辫触锛屼换鍔$姸鎬亄wmsTask.S_TYPE}";
+                    LogHelper.Info($"CancelTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                    return result;
                 }
+
+                var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs");
+
+                WmsTaskAction ac6 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "6");
+                TaskProcess.OperateStatus(wmsTask, 7);
+                if (wmsTask.S_TYPE != "鏈墽琛�) {
+                    NDCApi.CancelOrder(wmsTask.S_CODE.Trim());
+
+                    LogHelper.Info($"浠诲姟{wmsTask.S_CODE}锛屽彇娑堥�鐭ュ皬杞�, "Mobox鍙栨秷");
+                }
+              
+
+                if (ac6 == null)
+                {
+                    TaskHelper.Fail(wmsTask);
+                    //鍏ュ簱鎴栬�鍥炲簱浠诲姟鍙栨秷鍒犻櫎鎵樼洏鐗╂枡
+                    if (wmsTask.S_TYPE.Contains("鍏ュ簱") || wmsTask.S_TYPE.Contains("鍥炲簱") || LocationHelper.GetErroArea(wmsTask.S_END_AREA))
+                    {
+                        ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
+                        ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
+                        ContainerHelper.delCntrLoc(wmsTask.S_CNTR_CODE);
+                    }
+                    if (!LocationHelper.GetErroArea(wmsTask.S_END_AREA))
+                    {
+                        TaskHelper.opMesTask(wmsTask, 3);
+                    }
+
+                    if (wcsTask1 != null)
+                    {
+                        TaskProcess.OperateStatus(wcsTask1, 7);
+                        TaskHelper.Fail(wcsTask1);
+                    }
+                }
+                else
+                {
+                    //鏀跺埌6寮哄埗瀹屾垚
+                    TaskHelper.End(wmsTask);
+                }
+
+                if (wcsTask1 != null)
+                {
+                    if (wmsTask.S_TYPE.Contains("鍑哄簱"))
+                    {
+                        var ac1101 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1101");
+                        var ac1102 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1102");
+                        if ((ac1101 != null))
+                        {
+                            if (ac1102 == null)
+                            {
+                                //agv鎵ц閫氱煡 wcs鍙栨秷  
+                                WcsTask.WcsCallback(wmsTask, 7, wmsTask.S_EQ_NO.ToString());
+                            }
+                        }
+                    }
+                    else
+                    {
+                        var ac1103 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1103");
+                        var ac1104 = TaskHelper.GetWcsSafety(wmsTask.S_CODE, "1104");
+
+                        if ((ac1103 != null))
+                        {
+                            if (ac1104 == null)
+                            {
+                                //agv鎵ц閫氱煡 wcs鍙栨秷  
+                                WcsTask.WcsCallback(wmsTask, 7, wmsTask.S_EQ_NO.ToString());
+                            }
+                        }
+                    }
+                }
+
+
+                if (wmsTask.S_TYPE.Contains("鍑哄簱"))
+                {
+                    //鍑哄簱鍙栨秷鍒ゆ柇鎺ラ┏浣嶆槸鍚︽湁璐э紝鏈夎揣闇�瑙g粦
+                    var wmsWork = TaskHelper.GetWmsWork(wmsTask.S_OP_CODE);
+                    if (wmsWork != null)
+                    {
+                        if (!string.IsNullOrEmpty(wmsWork.CONNECTION))
+                        {
+                            var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION, "agv", wmsTask.T_CREATE);
+                            LogHelper.Info($"鍙栨秷浠诲姟{wmsTask.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛岀涓�釜agv浠诲姟淇℃伅" + JsonConvert.SerializeObject(agvTask), "Mobox鍙栨秷");
+                            if (agvTask != null)
+                            {
+                                WmsTaskAction qh = TaskHelper.GetActionRecord(agvTask.S_CODE, "4");
+                                //宸茬粡鍙栬揣瀹屾垚
+                                if (qh != null)
+                                {
+                                    if (WcsTask.WcsCvstate(wmsTask))
+                                    {
+                                        LogHelper.Info($"Wcs绔嬪簱鎺ラ┏浣嶆湁璐э紝瑙g粦璐т綅:{wmsTask.S_END_LOC}", "Mobox鍙栨秷");
+                                        ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
+                                        ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
+                                    }
+                                }
+                            }
+                            else {
+                                WmsTaskAction ac4 = TaskHelper.GetActionRecord(wmsTask.S_CODE, "4");
+                                if (ac4 != null)
+                                {
+                                    ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
+                                    ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
+                                    ContainerHelper.delCntrLoc(wmsTask.S_CNTR_CODE);
+                                }
+                            }
+                        }
+                    }
+                }
+
+                result.resultCode = 0;
+                result.resultMsg = $"{model.TaskNo},agv浠诲姟鍙栨秷鎴愬姛";
             }
             else {
                 result.resultCode = 1;
-                result.resultMsg = "浠诲姟涓嶅瓨鍦�;
+                result.resultMsg = $"{model.TaskNo},agv浠诲姟涓嶅瓨鍦�;
             }
+
+            LogHelper.Info($"CancelTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+            return result;
+        }
+
+        [HttpPost]
+        //[Route("CancelWcsTask")]
+        public SimpleResult CancelWcsTask(MoboxTaskBase model)
+        {
+            var result = new SimpleResult();
+            
+            LogHelper.Info($"CancelWcsTask鍙栨秷:鍙傛暟" + JsonConvert.SerializeObject(model), "Mobox鍙栨秷");
+            if (model == null)
+            {
+                result.resultCode = 1;
+                result.resultMsg = "鍙傛暟涓簄ull";
+                LogHelper.Info($"CancelWcsTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                return result;
+            }
+            if (string.IsNullOrEmpty(model.TaskNo))
+            {
+                result.resultCode = 1;
+                result.resultMsg = "浠诲姟鍙蜂负绌�;
+                LogHelper.Info($"CancelWcsTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                return result;
+            }
+
+            var transportTask = TaskHelper.GetTaskByNoType(model.TaskNo,"wcs");
+            if (transportTask != null)
+            {
+                if (transportTask.S_TYPE == "鍙栨秷"|| transportTask.S_TYPE == "瀹屾垚")
+                {
+                    result.resultCode = 1;
+                    result.resultMsg = $"{model.TaskNo},閫氱煡Wcs鍙栨秷浠诲姟澶辫触锛屼换鍔$姸鎬亄transportTask.S_TYPE}";
+                    LogHelper.Info($"CancelWcsTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                    return result;
+                }
+                if (transportTask.S_TYPE == "鏈墽琛�)
+                {
+                    TaskHelper.Fail(transportTask);
+                    TaskProcess.OperateStatus(transportTask, 7);
+                    result.resultCode = 0;
+                    result.resultMsg = $"{model.TaskNo},wcs浠诲姟鍙栨秷鎴愬姛";
+                    LogHelper.Info($"CancelWcsTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                    return result;
+                }
+
+                if (WcsTask.WcsCancellTask(transportTask))
+                {
+                    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(agvTask1);
+                            NDCApi.CancelOrder(agvTask1.S_CODE.Trim());
+                            TaskProcess.CacheBitCancelUpdate(agvTask1);
+                        }
+                    }
+                    else
+                    {
+                        ContainerHelper.delCntr(transportTask.S_CNTR_CODE);
+                        ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE);
+                    }
+
+                    result.resultCode = 0;
+                    result.resultMsg = $"{model.TaskNo},wcs浠诲姟鍙栨秷鎴愬姛";
+                    LogHelper.Info($"CancelWcsTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
+                    return result;
+                }
+                else {
+                    LogHelper.Info($"閫氱煡Wcs鍙栨秷浠诲姟澶辫触", "Wcs浠诲姟鎵ц閫氱煡");
+                    result.resultCode = 1;
+                    result.resultMsg = $"{model.TaskNo},閫氱煡Wcs鍙栨秷浠诲姟澶辫触";
+                }
+            }
+            else
+            {
+                result.resultCode = 1;
+                result.resultMsg = $"{model.TaskNo},wcs浠诲姟涓嶅瓨鍦�;
+            }
+            LogHelper.Info($"CancelWcsTask杩斿洖:" + JsonConvert.SerializeObject(result), "Mobox鍙栨秷");
             return result;
         }
 

--
Gitblit v1.9.1