From 5d663325953692c634046194bedd39b89ace41f0 Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期五, 10 一月 2025 18:55:01 +0800
Subject: [PATCH] 更新多个文件,优化逻辑和异常处理

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs                 |    8 ++
 .gitignore                                                                                                      |    1 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs                |   25 ++++++++
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs                 |   31 ++++++----
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs |   54 ++++++++++++++++-
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs                                      |   50 ++++++++--------
 6 files changed, 126 insertions(+), 43 deletions(-)

diff --git a/.gitignore b/.gitignore
index 1e65336..6dbb17b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1652,3 +1652,4 @@
 /Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/obj/Debug/net6.0/WIDESEA_WMSServer.csproj.CopyComplete
 /Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/22de66c6-d93f-400b-aaa1-cc12e218c2e7
 /Code Management/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/copilot-chat/bef6627e/sessions/36708593-3f69-4656-815a-651b3ad17c7d
+*.xml
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs
index 5c5bace..8b31e8c 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Helper/HttpHelper.cs
@@ -47,34 +47,36 @@
         {
             try
             {
-                // 灏� JSON 瀛楃涓茶浆鎹负瀛楀吀
-                var parameters = JsonConvert.DeserializeObject<Dictionary<string, object>>(requestJson);
-
-                // 鍒涘缓涓�涓柊鐨勫瓧鍏革紝鎺掗櫎 RequestTime 鍜� SessionId
-                var filteredParameters = parameters.Where(p => p.Key != "RequestTime" && p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value);
-
-                string requestKey = $"{serviceAddress}:{JsonConvert.SerializeObject(filteredParameters)}";
-
-                // 妫�鏌ヨ姹傛鏁板拰鏃堕棿闄愬埗
-                if (requestTracker.TryGetValue(requestKey, out var requestInfo))
+                if (serviceAddress.Contains("http://c24-cellmi3:12020"))
                 {
-                    if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(10))
+                    // 灏� JSON 瀛楃涓茶浆鎹负瀛楀吀
+                    var parameters = JsonConvert.DeserializeObject<Dictionary<string, object>>(requestJson);
+
+                    // 鍒涘缓涓�涓柊鐨勫瓧鍏革紝鎺掗櫎 RequestTime 鍜� SessionId
+                    var filteredParameters = parameters.Where(p => p.Key != "RequestTime" && p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value);
+
+                    string requestKey = $"{serviceAddress}:{JsonConvert.SerializeObject(filteredParameters)}";
+
+                    // 妫�鏌ヨ姹傛鏁板拰鏃堕棿闄愬埗
+                    if (requestTracker.TryGetValue(requestKey, out var requestInfo))
                     {
-                        // 濡傛灉璇锋眰娆℃暟瓒呰繃闄愬埗涓旀湭瓒呰繃10鍒嗛挓锛屾姏鍑哄紓甯�
-                        throw new InvalidOperationException("璇锋眰娆℃暟宸茶揪鍒伴檺鍒讹紝璇风◢鍚庡啀璇曘��");
+                        if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(10))
+                        {
+                            // 濡傛灉璇锋眰娆℃暟瓒呰繃闄愬埗涓旀湭瓒呰繃10鍒嗛挓锛屾姏鍑哄紓甯�
+                            throw new InvalidOperationException("璇锋眰娆℃暟宸茶揪鍒伴檺鍒讹紝璇风◢鍚庡啀璇曘��");
+                        }
+                    }
+
+                    // 鏇存柊璇锋眰璺熻釜淇℃伅
+                    if (requestTracker.ContainsKey(requestKey))
+                    {
+                        requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
+                    }
+                    else
+                    {
+                        requestTracker[requestKey] = (1, DateTime.Now);
                     }
                 }
-
-                // 鏇存柊璇锋眰璺熻釜淇℃伅
-                if (requestTracker.ContainsKey(requestKey))
-                {
-                    requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
-                }
-                else
-                {
-                    requestTracker[requestKey] = (1, DateTime.Now);
-                }
-
                 string result = string.Empty;
                 using (HttpContent httpContent = new StringContent(requestJson))
                 {
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index 5470af5..31378ac 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -604,8 +604,12 @@
             // 灏嗕慨鏀瑰悗鐨勬暟缁剎閲嶆柊鎷兼帴鎴愬瓧绗︿覆锛屼綔涓烘柊鐨凞eviceProAddress
             string DeviceProAddress = string.Join(".", x);
 
-            // 浣跨敤conveyorLine鐨凜ommunicator瀵硅薄鐨刉rite鏂规硶锛屽皢value鍐欏叆鏂扮殑DeviceProAddress鍦板潃
-            conveyorLine.Communicator.Write(DeviceProAddress, value);
+            var writeBool = conveyorLine.Communicator.Read<bool>(DeviceProAddress);
+            if (writeBool != value)
+            {
+                // 浣跨敤conveyorLine鐨凜ommunicator瀵硅薄鐨刉rite鏂规硶锛屽皢value鍐欏叆鏂扮殑DeviceProAddress鍦板潃
+                conveyorLine.Communicator.Write(DeviceProAddress, value);
+            }
         }
 
         #region 妫�娴嬬┖鐩樺疄鐩樹换鍔�
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index 15e1663..9afc6ee 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -312,26 +312,33 @@
             }
             else
             {
-                //Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
-                if (router != null)
+                if ((task.NextAddress == ("002-021-001") || task.NextAddress == ("001-021-001")) && task.Roadway.Contains("JZ"))
                 {
-                    IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
-                    if (device != null)
+                    return task;
+                }
+                else
+                {
+                    //Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
+                    if (router != null)
                     {
-                        CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
-                        if (conveyorLine.IsOccupiedx(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
+                        IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
+                        if (device != null)
                         {
-                            return task;
+                            CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
+                            if (conveyorLine.IsOccupiedx(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
+                            {
+                                return task;
+                            }
+                        }
+                        else
+                        {
+                            _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵router.ChildPosiDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
                         }
                     }
                     else
                     {
-                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵router.ChildPosiDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
                     }
-                }
-                else
-                {
-                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
                 }
             }
             return null;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
index 1941906..d4776a2 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
@@ -100,13 +100,13 @@
             var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
             if (result.SerialNos.Count > 0)
             {
-                var stockHty = await SqlSugarHelper.DbWMS.Queryable<DtStockInfo>().IncludesAllFirstLayer().FirstAsync();
-                if (stockHty != null)
+                var stock = await SqlSugarHelper.DbWMS.Queryable<DtStockInfo>().FirstAsync(x => x.PalletCode == palletCode);
+                if (stock != null)
                 {
-                    var parameterInfo = JsonConvert.DeserializeObject<List<ParameterInfo>>(stockHty.ParameterInfos).FirstOrDefault(y => y.Description.Contains("鏃堕棿"));
+                    var parameterInfo = JsonConvert.DeserializeObject<List<ParameterInfo>>(stock.ParameterInfos).FirstOrDefault(y => y.Description.Contains("鏃堕棿"));
                     if (parameterInfo == null) throw new Exception("");
 
-                    var outHours = (DateTime.Now - (stockHty.LinedProcessFeedbackTime == null ? stockHty.ModifyDate.Value : stockHty.LinedProcessFeedbackTime.ToDateTime())).TotalHours;
+                    var outHours = (DateTime.Now - (stock.LinedProcessFeedbackTime == null ? stock.ModifyDate.Value : stock.LinedProcessFeedbackTime.ToDateTime())).TotalHours;
                     var isNG = outHours > parameterInfo.LowerSpecificationsLimit.ToDouble() && outHours < parameterInfo.UpperSpecificationsLimit.ToDouble();
 
                     var defectCode = string.Empty;
@@ -139,6 +139,52 @@
                     };
                     content = await _gingInOrOutInputService.GetOCVOutputAsync(outputDto);
                 }
+                else
+                {
+                    var stockHty = await SqlSugarHelper.DbWMS.Queryable<DtStockInfo_Hty>().Where(x => x.PalletCode == palletCode).OrderByDescending(x => x.CreateDate).FirstAsync();
+                    if (stockHty != null)
+                    {
+                        var parameterInfo = JsonConvert.DeserializeObject<List<ParameterInfo>>(stockHty.ParameterInfos).FirstOrDefault(y => y.Description.Contains("鏃堕棿"));
+                        if (parameterInfo == null) throw new Exception("");
+
+                        var outHours = (DateTime.Now - (stockHty.LinedProcessFeedbackTime == null ? "2025-01-08 15:59:34.310".ToDateTime() : stockHty.LinedProcessFeedbackTime.ToDateTime())).TotalHours;
+                        var isNG = outHours > parameterInfo.LowerSpecificationsLimit.ToDouble() && outHours < parameterInfo.UpperSpecificationsLimit.ToDouble();
+
+                        var defectCode = string.Empty;
+                        if (!isNG) defectCode = "TQCK";
+                        var outputDto = new AgingOutputDto
+                        {
+                            OpFlag = 1,
+                            Software = area.Spare3,
+                            EquipmentCode = area.Spare2,
+                            TrayBarcode = palletCode,
+                            SerialNos = result.SerialNos.Select(x => new SerialNoOutDto
+                            {
+                                SlotNo = x.PositionNo,
+                                SerialNo = x.SerialNo,
+                                SerialNoResult = true, //isNG,
+                                ParameterInfo = new List<ParameterInfoOutput> {
+                                new ParameterInfoOutput() {
+                                    Value = outHours.ToString(),
+                                    ParameterCode =parameterInfo.ParameterCode,
+                                    ParameterDesc = parameterInfo.Description,
+                                    ParameterResult  = "OK", //isNG.ToString(),
+                                    TargetValue = parameterInfo.TargetValue,
+                                    LowerLimit = parameterInfo.LowerSpecificationsLimit,
+                                    UpperLimit = parameterInfo.UpperSpecificationsLimit,
+                                    DefectCode = defectCode,
+                                    UOMCode = parameterInfo.UOMCode,
+                                }
+                            }
+                            }).ToList()
+                        };
+                        content = await _gingInOrOutInputService.GetOCVOutputAsync(outputDto);
+                    }
+                    else
+                    {
+                        content.Error("鏉�鏉�鏉�");
+                    }
+                }
             }
             else
             {
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index 1864fd5..4962235 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -186,6 +186,29 @@
             // 缁勭洏淇℃伅
             // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
             var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+
+            if (!result.Success)
+            {
+                var taskNG = new Dt_Task
+                {
+                    CurrentAddress = input.Position,
+                    Grade = 1,
+                    Roadway = input.Roadways,
+                    TargetAddress = stationManager.stationNGLocation,
+                    Dispatchertime = DateTime.Now,
+                    MaterialNo = "",
+                    NextAddress = stationManager.stationNGChildCode,
+                    OrderNo = null,
+                    PalletCode = input.PalletCode,
+                    SourceAddress = stationManager.stationLocation,
+                    TaskState = (int)TaskInStatusEnum.Line_InFinish,
+                    TaskType = (int)TaskOutboundTypeEnum.InToOut,
+                    TaskNum = await BaseDal.GetTaskNo(),
+                    Creater = "Systeam"
+                };
+                return taskNG;
+            }
+
             if (result.SerialNos.Count <= 0)
             {
                 ConsoleHelper.WriteErrorLine(result.MOMMessage);
@@ -218,7 +241,7 @@
             }
 
             // 澶勭悊寮傚父鐢佃姱鎯呭喌
-            var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList();
+            var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
             if (serialNosError.Count > 0)
             {
                 if (stationManager.stationType != 3)

--
Gitblit v1.9.3