From a6ea79849f0142b5280f0c5d4b15ecc83f0d015a Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 21 十二月 2024 09:52:27 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/BaiBuLiKu

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  240 ++++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 169 insertions(+), 71 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 64753c2..bfa2c3b 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1,6 +1,8 @@
 锘�
 using AutoMapper;
 using HslCommunication;
+using Mapster;
+using Microsoft.AspNetCore.Components.Routing;
 using Newtonsoft.Json;
 using SqlSugar;
 using System.Diagnostics.CodeAnalysis;
@@ -15,9 +17,12 @@
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_DTO.WMS;
 using WIDESEAWCS_ISystemServices;
+using WIDESEAWCS_ITaskInfo_HtyRepository;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DeviceBase;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Repository;
 using WIDESEAWCS_QuartzJob.Service;
@@ -34,6 +39,8 @@
         private readonly IDt_StationManagerService _stationManagerService;
         private readonly IDt_StationManagerRepository _stationManagerRepository;
         private readonly IRouterRepository _routerRepository;
+        private readonly ITask_HtyRepository _taskHtyRepository;
+        private readonly IDt_needBarcodeRepository _taskNeedBarcodeRepository;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
         {
@@ -48,7 +55,7 @@
 
         public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
 
-        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository) : base(BaseDal)
+        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IDt_needBarcodeRepository taskNeedBarcodeRepository) : base(BaseDal)
         {
             _routerService = routerService;
             _taskExecuteDetailService = taskExecuteDetailService;
@@ -58,6 +65,8 @@
             _stationManagerService = stationManagerService;
             _stationManagerRepository = stationManagerRepository;
             _routerRepository = routerRepository;
+            _taskHtyRepository = htyRepository;
+            _taskNeedBarcodeRepository = taskNeedBarcodeRepository;
         }
 
         /// <summary>
@@ -81,32 +90,48 @@
                     task.Creater = "WMS";
                     if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                     {
-                        List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
-                        if (routers.Count > 0)
+                        if (task.TargetAddress == "002-021-001")
                         {
                             task.TaskState = (int)TaskOutStatusEnum.OutNew;
                             task.CurrentAddress = item.SourceAddress;
-                            task.NextAddress = routers.FirstOrDefault().ChildPosi;
                         }
                         else
                         {
-                            routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
+                            List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
                             if (routers.Count > 0)
                             {
-                                task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
+                                task.TaskState = (int)TaskOutStatusEnum.OutNew;
                                 task.CurrentAddress = item.SourceAddress;
                                 task.NextAddress = routers.FirstOrDefault().ChildPosi;
+                            }
+                            else
+                            {
+                                routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
+                                if (routers.Count > 0)
+                                {
+                                    task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
+                                    task.CurrentAddress = item.SourceAddress;
+                                    task.NextAddress = routers.FirstOrDefault().ChildPosi;
+                                }
                             }
                         }
                     }
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                     {
-                        List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
-                        if (routers.Count > 0)
+                        if (task.SourceAddress == "1359-4")
                         {
                             task.TaskState = (int)TaskInStatusEnum.InNew;
                             task.CurrentAddress = item.SourceAddress;
-                            task.NextAddress = routers.FirstOrDefault().ChildPosi;
+                        }
+                        else
+                        {
+                            List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
+                            if (routers.Count > 0)
+                            {
+                                task.TaskState = (int)TaskInStatusEnum.InNew;
+                                task.CurrentAddress = item.SourceAddress;
+                                task.NextAddress = routers.FirstOrDefault().ChildPosi;
+                            }
                         }
                     }
                     tasks.Add(task);
@@ -160,7 +185,24 @@
                 }
 
                 var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
-                return ReceiveWMSTask(new List<WMSTaskDTO> { task });
+                if (task.TaskType == (int)TaskInboundTypeEnum.InNG)
+                {
+                    var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == task.SourceAddress);
+                    Dt_Task _Task = _mapper.Map<Dt_Task>(task);
+                    _Task.TaskState = (int)TaskInStatusEnum.InNew;
+                    _Task.CurrentAddress = task.SourceAddress;
+                    _Task.NextAddress = station.stationNGChildCode;
+                    _Task.TargetAddress = station.stationNGLocation;
+                    _Task.Roadway = station.Roadway;
+
+                    BaseDal.AddData(_Task);
+                    _taskExecuteDetailService.AddTaskExecuteDetail(_Task.TaskNum, "鎺ユ敹WMS浠诲姟");
+                    return content.OK();
+                }
+                else
+                {
+                    return ReceiveWMSTask(new List<WMSTaskDTO> { task });
+                }
             }
             catch (Exception ex)
             {
@@ -222,6 +264,12 @@
         {
             return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
         }
+
+        public Dt_Task QueryBarcodeTask(string barcode, string currentAddress)
+        {
+            return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.CurrentAddress == currentAddress, TaskOrderBy);
+        }
+
 
         /// <summary>
         /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏂板缓鐨勪换鍔�
@@ -291,6 +339,21 @@
                 return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
             else
                 return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy);
+        }
+
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佹帓闄ょ殑浠诲姟銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑鎵�鏈変换鍔�
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="excludedTaskId">鎺掗櫎鐨勪换鍔�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns>
+        public List<Dt_Task> QueryAllOutboundTasks(string deviceNo, string currentAddress = "")
+        {
+            if (string.IsNullOrEmpty(currentAddress))
+                return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
+            else
+                return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy);
         }
 
         /// <summary>
@@ -394,7 +457,12 @@
                     {
                         task.ModifyDate = DateTime.Now;
                         task.Modifier = "System";
+
+                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+                        task_Hty.TaskId = 0;
+
                         BaseDal.DeleteData(task);
+                        _taskHtyRepository.AddData(task_Hty);
                     }
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
@@ -450,7 +518,11 @@
                         task.ModifyDate = DateTime.Now;
                         task.Modifier = "System";
 
+                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+                        task_Hty.TaskId = 0;
+
                         BaseDal.DeleteData(task);
+                        _taskHtyRepository.AddData(task_Hty);
                     }
                 }
                 else
@@ -541,57 +613,6 @@
                 var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
-                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
-                {
-                    if (!task.Roadway.Contains("GW"))
-                    {
-                        var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
-                        if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
-
-                        int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
-                        task.TaskState = nextStatus;
-                        task.CurrentAddress = task.NextAddress;
-                        task.NextAddress = routers.FirstOrDefault().ChildPosi;
-                        task.ModifyDate = DateTime.Now;
-                        task.Modifier = "System";
-                        BaseDal.UpdateData(task);
-
-                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
-                    }
-                    else
-                    {
-                        task.TaskState = (int)TaskOutStatusEnum.OutFinish;
-                        BaseDal.UpdateData(task);
-
-                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
-                    }
-
-
-                    //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
-                }
-                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
-                {
-                    //todo 鍚屾鍒癢MS
-                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
-                    task.TaskState = nextStatus;
-                    task.ModifyDate = DateTime.Now;
-                    task.Modifier = "System";
-                    BaseDal.DeleteData(task);
-                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
-                }
-                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
-                {
-                    //todo 璋冪敤WMS绉诲簱瀹屾垚
-                }
-                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
-                {
-                }
-                else
-                {
-                    throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
-                }
-
-
                 #region WMS鍚屾浠诲姟瀹屾垚
                 var keys = new Dictionary<string, object>()
                 {
@@ -614,24 +635,91 @@
                     if (content.Data.ToString() == "NG")
                     {
                         task.Remark = "NG";
-                        BaseDal.UpdateData(task);
-                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG");
+                        //BaseDal.UpdateData(task);
+                        //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG");
                     }
                 }
+                task.ExceptionMessage += "   " + content.Message;
                 #endregion
+
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
+                {
+                    if (!task.Roadway.Contains("GW"))
+                    {
+                        var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
+                        if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
+
+                        int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+                        task.TaskState = nextStatus;
+                        task.CurrentAddress = task.NextAddress;
+                        task.NextAddress = routers.FirstOrDefault().ChildPosi;
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+                        BaseDal.UpdateData(task);
+
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+                    }
+                    else
+                    {
+                        task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+                        //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙�
+                        if (task.Remark == "NG")
+                        {
+                            BaseDal.UpdateData(task);
+                        }
+                        else
+                        {
+                            BaseDal.DeleteData(task);
+                            ConsoleHelper.WriteWarningLine($"楂樻俯鍑哄簱鐩殑鍦板潃{task.TargetAddress}");
+                        }
+
+                        var taskHty = task.Adapt<Dt_Task_Hty>();
+                        _taskHtyRepository.AddData(taskHty);
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+                    }
+
+
+                    //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
+                {
+                    //todo 鍚屾鍒癢MS
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
+                    task.TaskState = nextStatus;
+                    task.ModifyDate = DateTime.Now;
+                    task.Modifier = "System";
+
+                    Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+                    task_Hty.TaskId = 0;
+
+                    BaseDal.DeleteData(task);
+                    _taskHtyRepository.AddData(task_Hty);
+                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                {
+                    //todo 璋冪敤WMS绉诲簱瀹屾垚
+                }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
+                {
+                }
+                else
+                {
+                    throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+                }
 
 
                 #region  鏇存柊浠诲姟鐘舵��
 
-                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
-                if (wmsBase == null || updateTask == null)
-                {
-                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                }
-                wmsIpAddress = wmsBase + updateTask;
+                //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
+                //if (wmsBase == null || updateTask == null)
+                //{
+                //    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                //}
+                //wmsIpAddress = wmsBase + updateTask;
 
-                result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
-                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
+                //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                 #endregion
                 //content = WebResponseContent.Instance.OK();
             }
@@ -731,5 +819,15 @@
             }
             return content;
         }
+
+        public Dt_Task QueryRelocationTask(string deviceNo)
+        {
+            return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskType == (int)TaskRelocationTypeEnum.Relocation && x.TaskState == (int)TaskStatus.Created);
+        }
+
+        public Dt_Task QueryExecutingTaskByBarcode(string barcode, string nextAddress)
+        {
+            return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3