From 8ae1a147aefadbb255edde088e7c12535c5f02d4 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 08 十月 2025 20:35:51 +0800
Subject: [PATCH] 完善输送线和堆垛机任务处理逻辑在CommonConveyorLine_NewCW.cs`中添加版本注释和设备属性定义,增强设备连接状态检查与命令发送逻辑。 修改 CommonConveyorLine_GWJob.cs`的任务查询逻辑,确保在特定条件下不下发新任务。在CommonConveyorLine_NewCWJob.cs中实现请求入库和出库的处理逻辑,确保任务状态更新。在 RequestInbound.cs中添加出库任务和新任务的处理逻辑,增强异常处理。 在CommonStackerCrane_NewCWJob.cs中实现堆垛机任务完成事件的处理,确保状态更新和前端通知。新增设备型号修改相关常量和 DTO 类,更新服务接口和实现逻辑,确保设备型号修改请求的正确处理。修改 Dt_TaskService.cs中的任务处理逻辑,确保出库任务的库存判断和状态更新。

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs |  120 ++++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 72 insertions(+), 48 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs
index 88575db..240cfe1 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/RequestInTaskAsync.cs
@@ -3,6 +3,9 @@
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.MOM;
 using WIDESEA_DTO.WMS;
+using WIDESEA_StorageTaskRepository;
+
+//using WIDESEAWCS_Model.Models;
 
 namespace WIDESEA_StorageTaskServices;
 
@@ -39,59 +42,67 @@
     private async Task<WebResponseContent> ProcessOCVB(DtBoxingInfo boxing, Dt_AreaInfo area, RequestTaskDto input)
     {
         WebResponseContent content = new WebResponseContent();
-        // 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁
-        var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache" && x.productLine == input.ProductionLine);
-
-        //var station = stationManagers.Select(x => x.stationChildCode).ToList();
-
-        //// 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆
-        var wcsIpAddrss = GetWCSIpAddress();
-        //if (wcsIpAddrss == null)
-        //{
-        //    throw new InvalidOperationException("WCS IP 鏈厤缃�");
-        //}
-
-        //var abc = HttpHelper.PostAsync(wcsIpAddrss, station.ToJsonString()).Result;
-        //content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
-        //var num = content.Data.ObjToInt();
-
-        //濡傛灉褰撳墠搴撳唴瀛樺湪姣斿綋鍓嶆椂闂寸殑瀵瑰簲浜х嚎鐨勬枡 鍒欏叆搴撹嚦甯告俯3
-        DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(x => x.AreaCode == "CWSC3" && x.IsFull == true && x.ProductionLine == input.ProductionLine && x.OutboundTime < DateTime.Now);
-        if (stockInfo != null)
+        try
         {
-            var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
-            var strings = config.ConfigValue.Split(',').ToList();
-            // 鍏ュ簱閫佽嚦甯告俯3
-            var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode,strings);
-            if (resultContent.Status)
+            // 鍒ゆ柇闇�涓嶉渶瑕佸幓鍖呰锛屼笉闇�瑕佸氨鍘诲父娓╀笁
+            //var stationManagers = _stationManagerRepository.QueryData(x => x.stationPLC == "1018" && x.stationArea == "Cache" && x.productLine == input.ProductionLine);
+
+            //var STATION = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position);
+
+            // 鑾峰彇WCSip鍦板潃鐩稿叧閰嶇疆
+            var wcsIpAddrss = GetWCSIpAddress();
+
+            //濡傛灉褰撳墠搴撳唴瀛樺湪姣斿綋鍓嶆椂闂寸殑瀵瑰簲浜х嚎鐨勬枡 鍒欏叆搴撹嚦甯告俯3
+            //DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(x => x.AreaCode == "CWSC3" && x.IsFull == true && x.ProductionLine == STATION.productLine && x.OutboundTime < DateTime.Now);
+            //if (stockInfo != null)
             {
-                await _boxingInfoRepository.AddDataNavAsync(boxing);
+                var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
+                var strings = config.ConfigValue.Split(',').ToList();
+                // 鍏ュ簱閫佽嚦甯告俯3
+                var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
+                if (resultContent.Status)
+                {
+                    await _boxingInfoRepository.AddDataNavAsync(boxing);
+                }
+                return resultContent;
             }
-            return resultContent;
-        }
 
-        // TODO 鍒ゆ柇鍦ㄩ�旀暟閲�
+            // TODO 鍒ゆ柇鍦ㄩ�旀暟閲�
 
-        var needBarcode  = await SqlSugarHelper.DbWCS.Queryable<dt_needBarcode>().FirstAsync(x => x.productLine == input.ProductionLine);
-        var needCount = needBarcode.inLineNum;
-        //var count = BaseDal.QueryData(x => x.TargetAddress == stationManagers[0].Roadway).Count;
-        if (needCount < 2)
-        {
-            // 閫佽嚦鍖呰
-            List<string> strings = stationManagers.Where(x => x.stationType == 0).Select(x => x.Roadway).ToList();
-            return await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings, 3);
+            #region OCV甯告俯3鐩存帴鍘诲寘瑁呰矾寰勪笉閫氭閫昏緫涓嶉渶瑕�
+            //var needBarcode = await SqlSugarHelper.DbWCS.Queryable<dt_needBarcode>().FirstAsync(x => x.productLine == STATION.productLine && x.fromArea == "CW");
+            //var needCount =  BaseDal.QueryData(x => x.TargetAddress == needBarcode.toArea).Count();
+            //if (needCount < needBarcode.cacheNum)
+            //{
+            //    // 閫佽嚦鍖呰
+            //    List<string> strings = stationManagers.Where(x => x.stationType == 0 && x.productLine == input.ProductionLine).Select(x => x.Roadway).ToList();
+            //    var x = await SqlSugarHelper.DbWCS.Updateable<dt_needBarcode>()
+            //        .SetColumns(x => x.inLineNum == x.inLineNum + 1)
+            //        .Where(x => x.id == needBarcode.id).ExecuteCommandHasChangeAsync();
+            //    ConsoleHelper.WriteSuccessLine($"鍦ㄩ�旀暟閲忔坊鍔爗(x ? "鎴愬姛" : "澶辫触")}鏁伴噺+1,褰撳墠宸ュ簭{boxing.ProcessCode},浜х嚎{input.ProductionLine}");
+            //    LogFactory.GetLog("OCVB").InfoFormat(true, $"鍦ㄩ�旀暟閲忔坊鍔爗(x ? "鎴愬姛" : "澶辫触")}鏁伴噺+1,褰撳墠宸ュ簭{boxing.ProcessCode},浜х嚎{input.ProductionLine}", "鏃犲弬鏁�");
+            //    return await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings, 3);
+            //}
+            //else
+            //{
+            //    var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
+            //    var strings = config.ConfigValue.Split(',').ToList();
+            //    // 鍏ュ簱閫佽嚦甯告俯3
+            //    var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
+            //    if (resultContent.Status)
+            //    {
+            //        await _boxingInfoRepository.AddDataNavAsync(boxing);
+            //    }
+            //    return resultContent;
+            //}
+
+            #endregion
         }
-        else
+        catch (Exception ex)
         {
-            var config = _configService.GetByConfigKey("SYS_InStacker", "CW3InStacker");
-            var strings = config.ConfigValue.Split(',').ToList();
-            // 鍏ュ簱閫佽嚦甯告俯3
-            var resultContent = await CreateNewTask(input, input.ProductionLine, boxing.ProcessCode, strings);
-            if (resultContent.Status)
-            {
-                await _boxingInfoRepository.AddDataNavAsync(boxing);
-            }
-            return resultContent;
+            ConsoleHelper.WriteErrorLine(ex.Message);
+            LogFactory.GetLog("OCVB").InfoFormat(true, $"锛屽紓甯镐俊鎭細{ex.Message},{ex.StackTrace}", "鏃犲弬鏁�");
+            return content.Error(ex.Message);
         }
     }
 
@@ -140,9 +151,22 @@
         {
             throw new Exception("鏈壘鍒板叆搴撶珯鍙伴厤缃�");
         }
+        //List<string> strings;
+        //if (areaIn == "GWSC1")
+        //{
+        //    strings = new List<string>
+        //    {
+        //        (boxing.ProductionLine != null && boxing.ProductionLine == "ZJ-7") ? "GWSC1" : "GWSC2"
+        //    };
+        //}
+        //else
+        //{
+        //    strings = stationManagers.Roadway.Split(',').ToList();
+        //}
+
         List<string> strings = stationManagers.Roadway.Split(',').ToList();
 
-        var resultContent = await CreateNewTask(input, result.ProductionLine,boxing.ProcessCode, strings);
+        var resultContent = await CreateNewTask(input, result.ProductionLine, boxing.ProcessCode, strings);
         if (resultContent.Status)
         {
             var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
@@ -204,7 +228,7 @@
         //    NGStation = stationManagers.stationNGChildCode.Split(',').ToList();
         //}
         List<string> NGStation = stationManagers.stationNGChildCode.Split(',').ToList();
-        content = await CreateNewTask(input, input.ProductionLine,"", NGStation, 2);
+        content = await CreateNewTask(input, input.ProductionLine, "", NGStation, 2);
         return content.Error("瀛樺湪寮傚父鐢佃姱");
     }
 

--
Gitblit v1.9.3