From d8c0f4088dd1619279f6f894766a28bb0ecfe0a4 Mon Sep 17 00:00:00 2001
From: pengmn <pmn@HanInfo>
Date: 星期五, 04 七月 2025 17:21:12 +0800
Subject: [PATCH] 1

---
 HH.WCS.Mobox3.HangYang/process/TaskProcess.cs |  471 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 343 insertions(+), 128 deletions(-)

diff --git a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs
index 2996c62..cbb716f 100644
--- a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs
@@ -374,9 +374,9 @@
         }
 
         /// <summary>
-        /// 鍏ュ簱鍗曟柊澧�+        /// 鏉哀鐗╂枡涓绘暟鎹柊澧炴帴鍙�         /// </summary>
-        /// <param name="model">鍏ュ簱鍗�/param>
+        /// <param name="model">鐗╂枡涓绘暟鎹�/param>
         /// <returns></returns>
         public static Result GetMaterialData(List<MES_Material> model)
         {
@@ -385,44 +385,25 @@
             {
                 if (model == null)
                 {
-                    result.errMsg = "鍏ュ簱鍗曚笉鍙负绌哄�锛�;
+                    result.errMsg = "鐗╂枡涓绘暟鎹笉鍙负绌哄�锛�;
                     return result;
                 }
+                var materialList = new List<TN_Material>();
 
-                //foreach (var item in model.InOrderDetail)
-                //{
-                //    var itemType = WMSHelper.GetItemType(item.S_ITEM_CODE);
-                //    if (itemType == null)
-                //    {
-                //        result.errMsg = $"鏈煡璇㈠埌鐗╂枡{item.S_ITEM_CODE}鐨勭墿鏂欏睘鎬э紒";
-                //        return result;
-                //    }
-                //    item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE;
-                //}
-
-                //var groupedInOrders = model.InOrderDetail
-                //                      .GroupBy(detail => detail.S_EXT_ATTR1) // 鎸夌墿鏂欏睘鎬у垎缁�-                //                      .Select((group, index) => new InOrder
-                //                      {
-                //                          S_NO = $"{model.S_BS_NO}_{index + 1}", // 鎷兼帴鏉ユ簮鍗曞彿
-                //                          S_BS_NO = model.S_BS_NO,
-                //                          S_OP_TYPE = model.S_OP_TYPE,
-                //                          S_BS_TYPE = model.S_BS_TYPE,
-                //                          S_NOTE = model.S_NOTE,
-                //                          InOrderDetail = group.Select(detail =>
-                //                          {
-                //                              // 淇敼 group 涓殑 S_IO_NO 瀛楁涓�S_NO 鐨勫�
-                //                              detail.S_IO_NO = $"{model.S_BS_NO}_{index + 1}";
-                //                              detail.S_BS_NO = model.S_BS_NO;
-                //                              return detail;
-                //                          }).ToList() // 鍒嗙粍鍚庣殑鏄庣粏
-                //                      })
-                //                      .ToList();
-                //var res = WMSHelper.CreateOrderIn(groupedInOrders);
-                //if (res)
-                //{
-                //    result.success = true;
-                //}
+                foreach (var item in model)
+                {
+                    materialList.Add(new TN_Material
+                    {
+                        S_ITEM_CODE = item.S_ITEM_CODE,
+                        S_ITEM_NAME = item.S_ITEM_NAME,
+                        S_AREA_CODE = item.S_AREA_CODE,
+                        S_ITEM_SPEC = item.S_MATERIAL_SPEC,
+                        S_MATERIAL = item.S_MATERIAL,
+                        S_UOM = item.S_UOM,
+                        C_CLEAN = item.C_CLEAN,
+                    });
+                }
+                WMSHelper.CreateMaterialData(materialList);
                 return result;
             }
             catch (Exception ex)
@@ -433,7 +414,7 @@
                 var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚
                 if (frame != null)
                 {
-                    LogHelper.Error($"GetInboundOrder鍏ュ簱鍗曟柊澧炲嚭鐜伴敊璇紒锛�, ex);
+                    LogHelper.Error($"GetMaterialData鐗╂枡涓绘暟鎹柊澧炲嚭鐜伴敊璇紒锛�, ex);
                     LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex);
                     LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex);
                     LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex);
@@ -444,7 +425,7 @@
         }
 
         /// <summary>
-        /// 鍏ュ簱鍗曟柊澧�+        /// 鍏ュ簱鍗曟柊澧炰互鍙婁慨鏀�         /// </summary>
         /// <param name="model">鍏ュ簱鍗�/param>
         /// <returns></returns>
@@ -467,7 +448,7 @@
                         result.errMsg = $"鏈煡璇㈠埌鐗╂枡{item.S_ITEM_CODE}鐨勭墿鏂欏睘鎬э紒";
                         return result;
                     }
-                    item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE;
+                    item.S_EXT_ATTR1 = itemType.S_AREA_CODE;
                     item.S_ITEM_NAME = itemType.S_ITEM_NAME;
                 }
 
@@ -518,9 +499,9 @@
         }
 
         /// <summary>
-        /// 鍑哄簱鍗曟柊澧�+        /// 鍑哄簱鍗曟柊澧炰互鍙婁慨鏀�         /// </summary>
-        /// <param name="model">鍏ュ簱鍗�/param>
+        /// <param name="model">鍑哄簱鍗�/param>
         /// <returns></returns>
         public static Result GetOutboundOrder(OutOrder model)
         {
@@ -542,7 +523,7 @@
                         result.errMsg = $"鏈煡璇㈠埌鐗╂枡{item.S_ITEM_CODE}鐨勭墿鏂欏睘鎬э紒";
                         return result;
                     }
-                    item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE;
+                    item.S_EXT_ATTR1 = itemType.S_AREA_CODE;
                     item.S_ITEM_NAME = itemType.S_ITEM_NAME;
                     item.C_CLEAN = itemType.C_CLEAN;
                 }
@@ -599,6 +580,85 @@
                 return result;
             }
         }
+
+        /// <summary>
+        /// 鍏ュ簱鍗曞彇娑�+        /// </summary>
+        /// <param name="model">鍏ュ簱鍗�/param>
+        /// <returns></returns>
+        public static Result CancelInboundOrder(InOrderCancel model)
+        {
+            Result result = new Result() { success = false, };
+            try
+            {
+                if (model == null || !model.OrderDetail.Any())
+                {
+                    result.errMsg = "鍏ュ簱鍗曞彇娑堜笉鍙负绌哄�锛�;
+                    return result;
+                }
+                var res = WMSHelper.CancelOrderIn(model);
+                if (res)
+                {
+                    result.success = true;
+                }
+                return result;
+            }
+            catch (Exception ex)
+            {
+                result.success = false;
+                result.errMsg = ex.Message;
+                var st = new System.Diagnostics.StackTrace(ex, true);
+                var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚
+                if (frame != null)
+                {
+                    LogHelper.Error($"CancelInboundOrder鍏ュ簱鍗曞彇娑堝嚭鐜伴敊璇紒锛�, ex);
+                    LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex);
+                    LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex);
+                    LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex);
+                }
+                return result;
+            }
+        }
+
+        /// <summary>
+        /// 鍑哄簱鍗曞彇娑�+        /// </summary>
+        /// <param name="model">鍑哄簱鍗�/param>
+        /// <returns></returns>
+        public static Result CancelOutboundOrder(OutOrderCancel model)
+        {
+            Result result = new Result() { success = false };
+            try
+            {
+                if (model == null || !model.OrderDetail.Any())
+                {
+                    result.errMsg = "鍑哄簱鍗曚笉鍙负绌哄�锛�;
+                    return result;
+                }
+                var res = WMSHelper.CancelOrderOut(model);
+                if (res)
+                {
+                    result.success = true;
+                }
+                return result;
+            }
+            catch (Exception ex)
+            {
+                result.success = false;
+                result.errMsg = ex.Message;
+                var st = new System.Diagnostics.StackTrace(ex, true);
+                var frame = st.GetFrame(0);
+                if (frame != null)
+                {
+                    LogHelper.Error($"CancelOutboundOrder鍑哄簱鍗曞彇娑堝嚭鐜伴敊璇紒", ex);
+                    LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex);
+                    LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex);
+                    LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex);
+                }
+                return result;
+            }
+        }
+
 
         ///// <summary>
         ///// 鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟
@@ -1607,6 +1667,246 @@
 
         #endregion
 
+        #region WCS璋冪敤鎺ュ彛
+
+        /// <summary>
+        /// WCS璋冪敤璁惧淇″彿鍙嶉
+        /// </summary>
+        /// <param name="model">璇锋眰鍙傛暟</param>
+        /// <returns></returns>
+        public static async Task<WcsResult> notifyDeviceSignal(List<WcsModel> model)
+        {
+            WcsResult result = new WcsResult() { code = 1, };
+            try
+            {
+                foreach (var item in model)
+                {
+                    if (string.IsNullOrEmpty(item.cntrNo))
+                    {
+                        result.msg = "鎵樼洏鍙蜂负绌猴紒";
+                        return result;
+                    }
+                    var list = WMSHelper.GetWmsTaskList("绛夊緟", item.cntrNo);
+                    if (list == null)
+                    {
+                        list = WMSHelper.GetWmsTaskList("鎵ц", item.cntrNo);
+                        if (list != null && list.S_TYPE.Contains("鍥炲簱"))
+                        {
+                            list.S_END_AREA = "TPLKQ";
+                        }
+                    }
+                    if (list == null)
+                    {
+                        result.msg = "鏈煡璇㈠埌鍦ㄧ瓑寰呬腑鐨勪綔涓氾紒";
+                        return result;
+                    }
+
+                    var inbound = new Inbound()
+                    {
+                        areaCode = list.S_END_AREA
+                    };
+                    var wh = new Warehouse(inbound);
+                    var stored = await wh.StoreItemAsync();
+                    if (stored == null)
+                    {
+                        result.msg = "绔嬪簱鍖烘湭鏌ヨ鍒板彲鐢ㄨ揣浣嶏紒";
+                        return result;
+                    }
+
+                    var startLoc = ContainerHelper.GetCntrLoc(list.S_CNTR_CODE);
+                    if (startLoc == null)
+                    {
+                        result.msg = $"鏈煡璇㈠埌鎵樼洏{list.S_CNTR_CODE}鎵�湪鐨勮揣浣嶏紒";
+                        return result;
+                    }
+                    var res = TaskProcess.HYCreateTransport(startLoc.S_LOC_CODE, stored.loationCode, list.S_B_STATE == "绛夊緟" ? "鏂欑鍏ュ簱" : "鎵樼洏鍏ュ簱", list.S_CNTR_CODE, list.S_CODE);
+                    if (!res)
+                    {
+                        result.msg = "鍏ュ簱浠诲姟鍒涘缓澶辫触锛�;
+                        return result;
+                    }
+                    WMSHelper.UpdateTaskStatus(list.S_CODE, 1);
+                    ContainerHelper.UpdateCntrAbouts(list.S_CNTR_CODE, "");
+                }
+                result.code = 0;
+                return result;
+            }
+            catch (Exception ex)
+            {
+                result.code = 2;
+                result.msg = ex.Message;
+                var st = new System.Diagnostics.StackTrace(ex, true);
+                var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚
+                if (frame != null)
+                {
+                    LogHelper.Error($"notifyDeviceSignal璁惧淇″彿鍙嶉鍑虹幇閿欒锛侊紒", ex);
+                    LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex);
+                    LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex);
+                    LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex);
+                }
+                return result;
+            }
+        }
+
+        /// <summary>
+        /// WCS璋冪敤浠诲姟鐘舵�鍙嶉
+        /// </summary>
+        /// <param name="model">璇锋眰鍙傛暟</param>
+        /// <returns></returns>
+        public static async Task<WcsResult> notifyTaskStatus(WcsTaskModel model)
+        {
+            WcsResult result = new WcsResult() { code = 1, };
+            try
+            {
+                if (model == null)
+                {
+                    result.msg = "璇锋眰鍙傛暟涓虹┖";
+                    return result;
+                }
+
+                var task = WCSHelper.GetTask(model.taskNo);
+                if (task == null)
+                {
+                    result.msg = "鏈煡璇㈠埌浠诲姟鍙�;
+                    return result;
+                } 
+
+                // 鐘舵�涓庢搷浣滅殑鏄犲皠瀛楀吀
+                var stateActions = new Dictionary<int, Action>
+                {
+                    [1] = () => WCSHelper.Begin(task),
+                    [2] = () => HandleTaskCompletion(task),
+                    [3] = () => WCSHelper.UpdateStatus(task, "寮�鍙栬揣"),
+                    [4] = () => HandlePickCompletion(task),
+                    [5] = () => WCSHelper.UpdateStatus(task, "寮�鍗歌揣"),
+                    [6] = () => HandleUnloadCompletion(task),
+                    [7] = () => HandleTaskFailure(task),
+                    [8] = () => HandleTaskCompletion(task)
+                };
+                result.code = 0;
+                return result;
+            }
+            catch (Exception ex)
+            {
+                result.code = 2;
+                result.msg = ex.Message;
+                var st = new System.Diagnostics.StackTrace(ex, true);
+                var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚
+                if (frame != null)
+                {
+                    LogHelper.Error($"notifyTaskStatus浠诲姟鐘舵�鍙嶉鍑虹幇閿欒锛侊紒", ex);
+                    LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex);
+                    LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex);
+                    LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex);
+                }
+                return result;
+            }
+        }
+
+        // 澶勭悊浠诲姟瀹屾垚閫昏緫
+        private static void HandleTaskCompletion(WCSTask task)
+        {
+            WCSHelper.End(task);
+
+            // 鏍规嵁浠诲姟绫诲瀷澶勭悊涓嶅悓鐨勫畬鎴愰�杈�+            if (Settings.CompleteTasks.taskType.Contains(task.S_TYPE))
+            {
+                WMSHelper.UpdateWmsTask(task, 2);
+                WMSHelper.UpdateDistributionCntrState(2, 3, task.S_CNTR_CODE);
+            }
+
+            if (new List<string> { "鏂欑鍏ュ簱", "鎵樼洏鍏ュ簱" }.Contains(task.S_TYPE))
+            {
+                ContainerHelper.UpdateCntrItem(task.S_CNTR_CODE);
+            }
+
+            // 澶勭悊鍖哄煙鍙樻洿
+            HandleAreaChange(task);
+        }
+
+        // 澶勭悊鍙栬揣瀹屾垚閫昏緫
+        private static void HandlePickCompletion(WCSTask task)
+        {
+            WCSHelper.UpdateStatus(task, "鍙栬揣瀹屾垚");
+            TaskProcess.OperateStatus(task, 4);
+        }
+
+        // 澶勭悊鍗歌揣瀹屾垚閫昏緫
+        private static void HandleUnloadCompletion(WCSTask task)
+        {
+            WCSHelper.UpdateStatus(task, "鍗歌揣瀹屾垚");
+            TaskProcess.OperateStatus(task, 6);
+        }
+
+        // 澶勭悊浠诲姟澶辫触閫昏緫
+        private static void HandleTaskFailure(WCSTask task)
+        {
+            TaskProcess.OperateStatus(task, 7);
+            WCSHelper.Fail(task);
+        }
+
+        // 澶勭悊鍖哄煙鍙樻洿閫昏緫
+        private static void HandleAreaChange(WCSTask task)
+        {
+            var areas = new List<string> { "TPLKQ", "LXLKQ" };
+            var area = new List<string> { "閰嶇洏鍑哄簱", "閰嶇洏缂撳瓨" };
+
+            if (areas.Contains(task.S_START_AREA) && !area.Contains(task.S_TYPE))
+            {
+                WMSHelper.DeleteChange(task);
+            }
+
+            if (areas.Contains(task.S_END_AREA))
+            {
+                WMSHelper.AddChange(task);
+            }
+        }
+
+        /// <summary>
+        /// WCS璋冪敤鐢宠缁堢偣
+        /// </summary>
+        /// <param name="model">璇锋眰鍙傛暟</param>
+        /// <returns></returns>
+        public static async Task<WcsResult> applyDest(WcsTaskEnd model)
+        {
+            WcsResult result = new WcsResult() { code = 1, };
+            try
+            {
+                if (model == null)
+                {
+                    result.msg = "璇锋眰鍙傛暟涓虹┖";
+                    return result;
+                }
+
+                var task = WCSHelper.GetTask(model.taskNo);
+                if (task == null)
+                {
+                    result.msg = "鏈煡璇㈠埌浠诲姟鍙�;
+                    return result;
+                }
+
+                result.code = 0;
+                result.data.Add(new DataModel { taskNo = task.S_CODE, cntrCode = task.S_CNTR_CODE, end = task.S_END_LOC });
+                return result;
+            }
+            catch (Exception ex)
+            {
+                result.code = 2;
+                result.msg = ex.Message;
+                var st = new System.Diagnostics.StackTrace(ex, true);
+                var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚
+                if (frame != null)
+                {
+                    LogHelper.Error($"applyDest鐢宠缁堢偣鍑虹幇閿欒锛侊紒", ex);
+                    LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex);
+                    LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex);
+                    LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex);
+                }
+                return result;
+            }
+        }
+        #endregion
+
 
 
 
@@ -1629,10 +1929,6 @@
 
             LogHelper.Error("CreateInTask鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟鍑虹幇閿欒锛� + errorDetails, ex);
         }
-
-
-
-
 
         /// <summary>
         /// 寰幆鍏ュ簱缂撳瓨鍖烘煡璇㈠悎鎵樺伐浣嶅拰鍏ュ簱鎺ラ┏浣嶆槸鍚︽湁绌鸿揣浣嶏紙鍒涘缓浠诲姟锛�@@ -1795,87 +2091,6 @@
                 return false;
             }
 
-        }
-
-        /// <summary>
-        /// WCS璋冪敤璁惧淇″彿鍙嶉
-        /// </summary>
-        /// <param name="model">璇锋眰鍙傛暟</param>
-        /// <returns></returns>
-        public static async Task<Result> notifyDeviceSignal(List<Wcsmodel> model)
-        {
-            Result result = new Result() { success = false, };
-            try
-            {
-                foreach (var item in model)
-                {
-                    if (string.IsNullOrEmpty(item.cntrNo))
-                    {
-                        result.errMsg = "鎵樼洏鍙蜂负绌猴紒";
-                        return result;
-                    }
-                    var list = WMSHelper.GetWmsTaskList("绛夊緟", item.cntrNo);
-                    if (list == null)
-                    {
-                        list = WMSHelper.GetWmsTaskList("鎵ц", item.cntrNo);
-                        if (list != null && list.S_TYPE.Contains("鍥炲簱"))
-                        {
-                            list.S_END_AREA = "TPLKQ";
-                        }
-                    }
-                    if (list == null)
-                    {
-                        result.errMsg = "鏈煡璇㈠埌鍦ㄧ瓑寰呬腑鐨勪綔涓氾紒";
-                        return result;
-                    }
-                    
-                    var inbound = new Inbound()
-                    {
-                        areaCode = list.S_END_AREA
-                    };
-                    var wh = new Warehouse(inbound);
-                    var stored = await wh.StoreItemAsync();
-                    if (stored == null)
-                    {
-                        result.errMsg = "绔嬪簱鍖烘湭鏌ヨ鍒板彲鐢ㄨ揣浣嶏紒";
-                        return result;
-                    }
-
-                    var startLoc = ContainerHelper.GetCntrLoc(list.S_CNTR_CODE);
-                    if (startLoc == null)
-                    {
-                        result.errMsg = $"鏈煡璇㈠埌鎵樼洏{list.S_CNTR_CODE}鎵�湪鐨勮揣浣嶏紒";
-                        return result;
-                    }
-                    var res = TaskProcess.HYCreateTransport(startLoc.S_LOC_CODE, stored.loationCode, list.S_B_STATE == "绛夊緟" ? "鏂欑鍏ュ簱" : "鎵樼洏鍏ュ簱", list.S_CNTR_CODE, list.S_CODE);
-                    if (!res)
-                    {
-                        result.errMsg = "鍏ュ簱浠诲姟鍒涘缓澶辫触锛�;
-                        return result;
-                    }
-                    WMSHelper.UpdateTaskStatus(list.S_CODE, 1);
-                    ContainerHelper.UpdateCntrAbouts(list.S_CNTR_CODE, "");
-                }
-
-
-                result.success = true;
-                return result;
-            }
-            catch (Exception ex)
-            {
-                result.success = false;
-                result.errMsg = ex.Message;
-                var st = new System.Diagnostics.StackTrace(ex, true);
-                var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚
-                if (frame != null)
-                {
-                    LogHelper.Error($"notifyDeviceSignalWCS璋冪敤璁惧淇″彿鍙嶉鍑虹幇閿欒锛侊紒", ex);
-                    LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex);
-                    LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex);
-                    LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex);
-                }
-                return result;
-            }
         }
 
         /// <summary>

--
Gitblit v1.9.1