From 23e4f986644298cb23ac43173414b7e1404b6657 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 15 六月 2024 17:26:23 +0800
Subject: [PATCH] 任务逻辑优化

---
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendFromaddress.cs |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendFromaddress.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendFromaddress.cs"
index 4d96421..3dde5ce 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendFromaddress.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendFromaddress.cs"
@@ -27,12 +27,43 @@
                 Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(Context);
                 Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
                 RequestFromTask requestFromTask = new RequestFromTask();
-                var agv_tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && !x.agv_fromaddress.Contains("W") && string.IsNullOrEmpty(x.agv_toaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).ToList();
+                var agv_tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() /*&& !x.agv_fromaddress.Contains("W")*/ && string.IsNullOrEmpty(x.agv_toaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).ToList();
+
+                var tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_fromaddress)).ToList();//鏌ユ壘鎵�鏈夎ˉ绌烘墭浠诲姟
+
                 foreach (var agv_task in agv_tasks)
                 {
                     try
                     {
                         EmptyTray.GetEmptyTrayStation(stationinfoRepository, agv_task);
+                        #region 鏌ユ壘婊¤冻鏉′欢鐨勮ˉ绌烘墭浠诲姟
+                        var task = tasks.Where(x => x.agv_Traytype == agv_task.agv_Traytype).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
+                        if (task != null)
+                        {
+                            agv_task.agv_taskstate = AGVTaskStateEnum.Create.ToString();
+                            agv_task.EndQuantity = task.EndQuantity;
+                            agv_task.agv_toaddress = task.agv_toaddress;
+                            agvtaskRepository.Update(agv_task, x => new { x.agv_taskstate, x.EndQuantity, x.agv_toaddress }, true);
+                            agvtaskRepository.Delete(task, true);
+                            tasks.Remove(task);
+                            WriteDBLog.Success("鏇存柊鑷姩鍙栫┖鎵橀槦鍒椾换鍔�", $"浠诲姟缂栧彿锛歿agv_task.agv_tasknum},鍒犻櫎琛ョ┖鎵樹换鍔★細{task.agv_tasknum}", "WMS");
+                            continue;
+                        }
+                        #endregion
+
+                        #region 鍙犵洏鍖烘弧5涓紝涓嶄笅鍙戞娴嬩笂鏂欑殑绌烘墭璧风偣浠诲姟
+                        if (agv_task.agv_fromaddress.Contains("S"))
+                            if (stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity == 5).Any()) continue;
+                        #endregion
+
+                        #region AGV涓婃湁涓や釜绌烘墭锛屼笉涓嬪彂澶栧崗鍙栫┖鎵樹换鍔�
+                        if (agv_task.agv_fromaddress.Contains("W"))
+                        {
+                            var count = agvtaskRepository.Find(x => x.agv_taskstate != AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_toaddress)).Count();
+                            if (count >= 2) continue;
+                        }
+                        #endregion
+
                         requestFromTask.TASK_NO = agv_task.agv_tasknum;
                         requestFromTask.FROM_POSITION = agv_task.agv_fromaddress;
                         requestFromTask.Material = agv_task.agv_materielid;

--
Gitblit v1.9.3