From 9bae33c85d698987a6c9cf8ba8edbe9497b101dc Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期二, 15 四月 2025 17:05:56 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhuHaiChuangZhi/GanFengLiYeNew

---
 代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs |  104 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 102 insertions(+), 2 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs"
index cc58f54..7ba609f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs"
@@ -1,10 +1,11 @@
 锘縰sing WIDESEAWCS_Common.AGVEnum;
 using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 
-namespace WIDESEAWCS_Tasks.AGVJob
+namespace WIDESEAWCS_Tasks
 {
     public class UpdateTaskAGV
     {
@@ -176,6 +177,31 @@
                                 plcClient.Communicator.Write(taskFbInteractive2, 1);
                                 //throw new Exception("浠诲姟鐘舵�佹洿鏀逛负4缁堢偣宸插畬鎴愬け璐�,浠诲姟ID:" + agvTask.agv_tasknum + DateTime.Now + ",浠诲姟鐘舵�佷笉鏄粓鐐规墽琛屼腑!");
                             }
+                            if (agvTask.TargetAddress.Contains("HXWLX"))
+                            {
+                                if (agvTask.SourceAddress.Contains("KPHLX"))
+                                {
+                                    // 绌虹洏绾胯繘鐑樼
+                                    // TODO: 璋冪敤鍒涙櫤鎺ュ彛鑾峰彇瀹屾暣鏉$爜
+                                    var materials = new List<BakingClass>
+                                    {
+                                            new BakingClass { BarCode = "1", MaterialType = "1" },
+                                    };
+                                    MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials);
+                                    if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; }
+                                }
+                                else
+                                {
+                                    // 鎻愬崌鏈鸿繘鐑樼
+                                    // TODO: 璋冪敤鍒涙櫤鎺ュ彛鑾峰彇瀹屾暣鏉$爜
+                                    var materials = new List<BakingClass>
+                                    {
+                                            new BakingClass { BarCode = "1", MaterialType = "1" },
+                                    };
+                                    MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials);
+                                    if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; }
+                                }
+                            }
 
                             //agvtask_HtyRepository.AddTaskHistory(agvTask, OperateType.Finished.ToString());
                             _taskRepository.DeleteData(agvTask);
@@ -231,7 +257,7 @@
             }
         }
 
-        public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository)
+        public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository, ITaskCZRepository _taskCZRepository, ITaskCZDetailsRepository _detailsRepository)
         {
             // 浣跨敤Interlocked.Exchange淇濊瘉鍚屼竴鏃堕棿鍙湁涓�涓嚎绋嬪彲浠ユ墽琛屼换鍔℃洿鏂�
             if (Interlocked.Exchange(ref _readUpdateAGVTaskSignalso, 1) == 0)
@@ -322,6 +348,54 @@
                                 throw new Exception($"浠诲姟鐘舵�佹洿鏀逛负4缁堢偣宸插畬鎴愬け璐�,浠诲姟ID:{taskId},褰撳墠鐘舵��:{agvTask.TaskState}");
                             }
 
+                            if (agvTask.TargetAddress.Contains("HXWLX"))
+                            {
+                                if (agvTask.SourceAddress.Contains("KPHLX"))
+                                {
+                                    // 绌虹洏绾胯繘鐑樼
+                                    // TODO: 浠诲姟鎴彇瀹屾暣鏉$爜
+                                    var materials = new List<BakingClass>();
+
+                                    MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials);
+                                    if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; }
+                                }
+                                else
+                                {
+                                    // 鎻愬崌鏈鸿繘鐑樼
+                                    // TODO: 璋冪敤鍒涙櫤鎺ュ彛鑾峰彇瀹屾暣鏉$爜
+                                    //var czTask = _taskCZRepository.QueryFirst(x => x.Id == agvTask.WMSId);
+                                    //CZTaskBarCodeDto barCodeDto = JsonConvert.DeserializeObject<CZTaskBarCodeDto>(czTask.DtCZTaskDetails);
+                                    //var materials = Enumerable.Range(0, 2)
+                                    //        .Select(i => new BakingClass
+                                    //        {
+                                    //            MaterialType = czTask.TaskProductCode,
+                                    //            BarCode = GetBarCodeByIndex(barCodeDto, i, hasDesc: !string.IsNullOrEmpty(czTask.TaskDesc))
+                                    //        })
+                                    //        .ToList();
+
+                                    var details = _detailsRepository.QueryData(x => x.TaskEndAddress == agvTask.TargetAddress && x.TaskName == agvTask.Roadway).OrderBy(x => x.CreateDate).ToList();
+
+                                    if (details.Count >= 2)
+                                    {
+                                        details = details.Take(2).ToList();
+                                    }
+
+                                    var materials = details.Select(x => new BakingClass
+                                    {
+                                        MaterialType = x.MaterialType,
+                                        BarCode = x.MaterialBarCode,
+                                    }).ToList();
+
+                                    MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials);
+                                    if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; }
+                                    else
+                                    {
+                                        // 鍒犻櫎details鏁版嵁
+                                        _detailsRepository.DeleteData(details);
+                                    }
+                                }
+                            }
+
                             // 鍒犻櫎宸插畬鎴愮殑浠诲姟
                             taskRepository.DeleteData(agvTask);
                             plcClient.Communicator.Write(taskFbInteractive2, 1);
@@ -384,5 +458,31 @@
                 }
             }
         }
+
+        // 杈呭姪鏂规硶
+        private static string GetBarCodeByIndex(CZTaskBarCodeDto dto, int index, bool hasDesc)
+        {
+            return (index, hasDesc) switch
+            {
+                (0, false) => dto.BarCode1,
+                (1, false) => dto.BarCode2,
+                (0, true) => dto.BarCode3,
+                (1, true) => dto.BarCode4,
+                _ => throw new IndexOutOfRangeException()
+            };
+        }
+    }
+
+    public class BakingFeedingClass
+    {
+        public string Devid { get; set; }
+
+        public List<BakingClass> Materials { get; set; }
+    }
+
+    public class BakingClass
+    {
+        public string MaterialType { get; set; }
+        public string BarCode { get; set; }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3