From 5321419f5fddb4e877fe90ccd90ebdc1a115af64 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期五, 18 七月 2025 17:29:26 +0800
Subject: [PATCH] 出库修改

---
 api/MoboxController.cs |  235 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 221 insertions(+), 14 deletions(-)

diff --git a/api/MoboxController.cs b/api/MoboxController.cs
index 08a5103..7baf13f 100644
--- a/api/MoboxController.cs
+++ b/api/MoboxController.cs
@@ -1,9 +1,13 @@
-锘縰sing HH.WCS.ZhongCeJinTan.device;
+锘縰sing HH.WCS.Mobox3.ZhongCeJinTan.dispatch;
+using HH.WCS.ZhongCeJinTan.device;
 using HH.WCS.ZhongCeJinTan.dispatch;
 using HH.WCS.ZhongCeJinTan.process;
 using HH.WCS.ZhongCeJinTan.util;
 using HH.WCS.ZhongCeJinTan.wms;
+using Newtonsoft.Json;
+using System;
 using System.Linq;
+using System.Threading.Tasks;
 using System.Web.Http;
 using static HH.WCS.ZhongCeJinTan.api.ApiModel;
 
@@ -12,7 +16,7 @@
     /// <summary>
     /// mobox璋冪敤
     /// </summary>
-     [RoutePrefix("mobox")]
+     //[RoutePrefix("mobox")]
     public class MoboxController : System.Web.Http.ApiController
     {
         [HttpPost]
@@ -23,13 +27,27 @@
             if (task != null) {
                 if (task.S_B_STATE.Trim() == "鏈墽琛�) {
                     //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷
-                    TaskHelper.UpdateStatus(model.TaskNo, "鍙栨秷");
+                
+                    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() != "瀹屾垚")  {
-                    //if (GZRobot.CancelOrder(task.GZ_ID))
-                    //{
-                    //    result.resultMsg = "浠诲姟鍙栨秷宸茬粡鍙戦�缁欏皬杞�;
-                    //}  
+                    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();
+
+
+                    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 {
                     result.resultCode = 1;
@@ -43,12 +61,157 @@
             return result;
         }
 
+        internal static Result cancelTask1(cancleTaskParme model)
+        {
+            var result = new Result();
+            LogHelper.Info("cancelTask1鍙栨秷浠诲姟淇℃伅锛� + JsonConvert.SerializeObject(model), "鍙栨秷");
+            if (model == null)
+            {
+                result.errMsg = "鍙傛暟涓簄ull";
+                result.errCode = 1;
+                result.success = false;
+                return result;
+            }
+
+            try
+            {
+                var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv");
+
+                var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no, "wcs");
+
+                if (task != null)
+                {
+                    LogHelper.Info($"cancelTask1鍙栨秷agv浠诲姟{task.S_CODE}锛�, "鍙栨秷");
+                    if (task.S_B_STATE.Trim() == "鏈墽琛�)
+                    {
+                        //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷
+                        TaskHelper.opMesTask(task, 3);
+                        TaskHelper.Fail(task);
+                        TaskProcess.CacheBitCancelUpdate(task);
+
+                        if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱"))
+                        {
+                            ContainerHelper.delCntr(task.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
+
+                        }
+                        result.errCode = 0;
+                        result.errMsg = "鍙栨秷鎴愬姛";
+                        result.success = true;
+                    }
+                    else if (task.S_B_STATE.Trim() != "鍙栨秷" && 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();
+
+
+                        if (qhflag != null)
+                        {
+                            LogHelper.Info($"璇ヤ换鍔task.S_CODE}宸茬粡鍙栬揣瀹屾垚", "鍙栨秷");
+                            result.errCode = 1;
+                            result.errMsg = "浠诲姟宸茬粡鍙栬揣瀹屾垚锛屼笉鍏佽鍙栨秷";
+                            result.success = false;
+                            return result;
+                        }
+                        if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱"))
+                        {
+                            ContainerHelper.delCntr(task.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
+                            ContainerHelper.delCntrLoc(task.S_CNTR_CODE);
+                        }
+
+                        TaskHelper.opMesTask(task, 3);
+                        //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv
+                        TaskHelper.Fail(task);
+
+                        NDCApi.CancelOrder(task.S_CODE.Trim());
+                        TaskProcess.CacheBitCancelUpdate(task);
+
+                        result.errCode = 0;
+                        result.errMsg = "鍙栨秷鎴愬姛";
+                        result.success = true;
+                    }
+                    else
+                    {
+                        result.errCode = 1;
+                        result.errMsg = "浠诲姟宸茬粡缁撴潫";
+                        result.success = false;
+                    }
+                }
+                else
+                {
+                    result.errCode = 1;
+                    result.errMsg = $"{model.task_no}浠诲姟涓嶅瓨鍦�;
+                    result.success = false;
+                }
+
+                if (wcsTask != null)
+                {
+                    LogHelper.Info($"cancelTask1鍙栨秷Wcs浠诲姟{wcsTask.S_CODE}", "鍙栨秷");
+                    if (wcsTask.S_B_STATE.Trim() == "鏈墽琛�)
+                    {
+                        //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷
+                        if (wcsTask.S_TYPE.Contains("鍏ュ簱") || wcsTask.S_TYPE.Contains("鍥炲簱"))
+                        {
+                            ContainerHelper.delCntr(wcsTask.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(wcsTask.S_CNTR_CODE);
+                        }
+                        TaskHelper.Fail(wcsTask);
+                        TaskProcess.OperateStatus(wcsTask, 7);
+                        result.errCode = 0;
+                        result.errMsg = "鍙栨秷鎴愬姛";
+                        result.success = true;
+                        return result;
+                    }
+                    else if (wcsTask.S_B_STATE.Trim() != "鍙栨秷" && wcsTask.S_B_STATE.Trim() != "澶辫触" && wcsTask.S_B_STATE.Trim() != "瀹屾垚")
+                    {
+                        var db = new SqlHelper<object>().GetInstance();
+                        var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == wcsTask.S_CODE && a.S_ACTION == "5").First();
+
+                        LogHelper.Info($"璇ヤ换鍔wcsTask.S_CODE}鍔ㄤ綔淇℃伅" + JsonConvert.SerializeObject(qhflag), "鍙栨秷");
+                        if (qhflag != null)
+                        {
+                            LogHelper.Info($"璇ヤ换鍔wcsTask.S_CODE}宸茬粡鍙栬揣瀹屾垚", "鍙栨秷");
+                            result.errCode = 1;
+                            result.errMsg = "浠诲姟宸茬粡鍙栬揣瀹屾垚锛屼笉鍏佽鍙栨秷";
+                            result.success = false;
+                            return result;
+                        }
+
+                        if (wcsTask.S_TYPE.Contains("鍏ュ簱") || wcsTask.S_TYPE.Contains("鍥炲簱"))
+                        {
+                            ContainerHelper.delCntr(wcsTask.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(wcsTask.S_CNTR_CODE);
+                            ContainerHelper.delCntrLoc(wcsTask.S_CNTR_CODE);
+                        }
+                        WcsTask.WcsCancellTask(wcsTask);
+                        TaskHelper.Fail(wcsTask);
+                        TaskProcess.OperateStatus(wcsTask, 7);
+                        result.errCode = 0;
+                        result.errMsg = "鍙栨秷鎴愬姛";
+                        result.success = true;
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+
+                LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛� + ex.Message, "鍙栨秷");
+                result.errCode = 1;
+                result.errMsg = "鍙栨秷浠诲姟寮傚父";
+                return result;
+            }
+
+            return result;
+        }
+
 
         //浣滀笟浠诲姟寮哄埗瀹屾垚 
         [HttpPost]
-        //[Route("CompleteTask")]
         public SimpleResult CompleteTask(MoboxTaskBase model)
         {
+            LogHelper.Info("CompleteTask 鍙傛暟锛� + JsonConvert.SerializeObject(model), "寮哄埗瀹屾垚");
+
             var result = new SimpleResult();
             var task = TaskHelper.GetTask(model.TaskNo);
             if (task != null)
@@ -57,13 +220,55 @@
                 {
                     result.resultMsg = "浠诲姟鏈墽琛岋紝涓嶅厑璁稿己鍒跺畬鎴愶紒";
                 }
-           
-                else if (task.S_B_STATE.Trim() != "鏈墽琛�)
+                else if (task.S_B_STATE.Trim() != "瀹屾垚"&& task.S_B_STATE.Trim() != "鍙栨秷")
                 {
-                    //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv
-                    TaskHelper.UpdateStatus(model.TaskNo.Trim(), "瀹屾垚");
-                  
-                    
+
+
+                    if (task.S_SCHEDULE_TYPE.Contains("agv"))
+                    {
+                        //鐪嬪皬杞︽湁娌℃湁4鍙栬揣瀹屾垚
+                        WmsTaskAction ac4 = TaskHelper.GetActionRecord(task.S_CODE, "4");
+                        if (ac4 != null)
+                        {
+
+                            LogHelper.Info("CompleteTask agv浠诲姟宸茬粡鍙栬揣瀹屾垚,浠诲姟寮哄埗瀹屾垚澶勭悊", "寮哄埗瀹屾垚");
+
+
+                            TaskHelper.UpdateStatus(task, "鍗歌揣瀹屾垚");
+                            LocationHelper.UnLockLoc(task.S_END_LOC);
+                            TaskProcess.OperateStatus(task, 6);
+
+                            //濡傛灉鏄簩娈典换鍔″垯涓嬪彂绔嬪簱浠诲姟
+                            var wcsTask = TaskHelper.GetTaskByState("鏈墽琛�, "wcs", task.S_OP_CODE, "鍏ュ簱");
+                            if (wcsTask != null)
+                            {
+                                LocationHelper.LockLoc(wcsTask.S_START_LOC, "鍑哄簱閿�, 2);
+                                WcsTask.WcsTaskEntity(wcsTask);
+                            }
+                            TaskHelper.End(task);
+                        }
+                        else
+                        {
+
+                            LogHelper.Info("CompleteTask agv浠诲姟娌℃湁鍙栬揣瀹屾垚,浠诲姟鍙栨秷澶勭悊", "寮哄埗瀹屾垚");
+                            var cancle = new cancleTaskParme();
+                            cancle.task_no = task.S_CODE;
+                            TaskProcess.cancelTask1(cancle);
+                        }
+                    }
+
+
+                    if (task.S_SCHEDULE_TYPE.Contains("wcs")) {
+                        LogHelper.Info("CompleteTask wcs浠诲姟寮哄埗瀹屾垚澶勭悊", "寮哄埗瀹屾垚");
+                        LocationHelper.UnLockLoc(task.S_START_LOC);
+                        TaskProcess.OperateStatus(task, 4);
+                        LocationHelper.UnLockLoc(task.S_END_LOC);
+                        TaskProcess.OperateStatus(task, 6);
+                        TaskHelper.End(task);
+                        LocationHelper.CreateUpAndDown(task);
+                    }
+
+
                 }
                 else
                 {
@@ -76,6 +281,8 @@
                 result.resultCode = 1;
                 result.resultMsg = "浠诲姟涓嶅瓨鍦�;
             }
+
+            LogHelper.Info("CompleteTask 杩斿洖锛� + JsonConvert.SerializeObject(model), "寮哄埗瀹屾垚");
             return result;
         }
 

--
Gitblit v1.9.1