From 222d2040c2a5e958b5fbd0b7047a8e802ec14288 Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 23 十一月 2024 14:42:34 +0800
Subject: [PATCH] 一大堆

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  323 ++++++++++++++++++++++++++++++-----------------------
 1 files changed, 180 insertions(+), 143 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 20a3264..8999c14 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1,33 +1,20 @@
-锘�#region << 鐗� 鏈� 娉� 閲� >>
-
-/*----------------------------------------------------------------
- * 鍛藉悕绌洪棿锛歐IDESEAWCS_TaskInfoService
- * 鍒涘缓鑰咃細鑳$搴�
- * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
- * 鐗堟湰锛歏1.0.0
- * 鎻忚堪锛�
- *
- * ----------------------------------------------------------------
- * 淇敼浜猴細
- * 淇敼鏃堕棿锛�
- * 鐗堟湰锛歏1.0.1
- * 淇敼璇存槑锛�
- *
- *----------------------------------------------------------------*/
-
-#endregion << 鐗� 鏈� 娉� 閲� >>
-
+锘�
 using AutoMapper;
 using HslCommunication;
 using Newtonsoft.Json;
 using SqlSugar;
 using System.Diagnostics.CodeAnalysis;
+using System.Threading.Tasks;
+using WIDESEAWCS_BasicInfoRepository;
+using WIDESEAWCS_BasicInfoService;
+using WIDESEAWCS_Common;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_DTO.WMS;
+using WIDESEAWCS_ISystemServices;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
@@ -36,18 +23,21 @@
 
 namespace WIDESEAWCS_TaskInfoService
 {
-    public class TaskService : ServiceBase<Dt_Task, ITaskRepository>, ITaskService
+    public partial class TaskService : ServiceBase<Dt_Task, ITaskRepository>, ITaskService
     {
         private readonly IRouterService _routerService;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
+        private readonly ISys_ConfigService _sys_ConfigService;
         private readonly IMapper _mapper;
+        private readonly IDt_StationManagerService _stationManagerService;
+        private readonly IDt_StationManagerRepository _stationManagerRepository;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
-            {
-                {nameof(Dt_Task.Grade),OrderByType.Desc },
-                {nameof(Dt_Task.CreateDate),OrderByType.Asc},
-            };
+        {
+            {nameof(Dt_Task.Grade), OrderByType.Desc },
+            {nameof(Dt_Task.CreateDate), OrderByType.Asc},
+        };
 
         public Dictionary<string, OrderByType> TaskOrderBy
         { get { return _taskOrderBy; } set { _taskOrderBy = value; } }
@@ -56,12 +46,15 @@
 
         public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
 
-        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper) : base(BaseDal)
+        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository) : base(BaseDal)
         {
             _routerService = routerService;
             _taskExecuteDetailService = taskExecuteDetailService;
             _taskExecuteDetailRepository = taskExecuteDetailRepository;
             _mapper = mapper;
+            _sys_ConfigService = sys_ConfigService;
+            _stationManagerService = stationManagerService;
+            _stationManagerRepository = stationManagerRepository;
         }
 
         /// <summary>
@@ -86,7 +79,6 @@
                     if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                     {
                         List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
-                        //鏆備笉鑰冭檻澶氳矾寰�
                         if (routers.Count > 0)
                         {
                             task.TaskState = (int)TaskOutStatusEnum.OutNew;
@@ -97,7 +89,6 @@
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                     {
                         List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
-                        //鏆備笉鑰冭檻澶氳矾寰�
                         if (routers.Count > 0)
                         {
                             task.TaskState = (int)TaskInStatusEnum.InNew;
@@ -126,58 +117,42 @@
         /// <param name="palletCode">鎵樼洏鍙�</param>
         /// <param name="sourceAddress">璧峰鍦板潃</param>
         /// <returns></returns>
-        public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress)
+        public async Task<WebResponseContent> RequestWMSTask(string palletCode, string sourceAddress)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
-                #region 鐪熷疄鏁版嵁
-                // TODO: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧�
-                //// 鍒涘缓璇锋眰瀵硅薄
-                //RequestTaskDto request = new RequestTaskDto()
-                //{
-                //    Position = sourceAddress,
-                //    PalletCode = palletCode,
-                //};
-
-                //// 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
-                //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
-
-                //// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
-                //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
-                //// 妫�鏌ョ姸鎬佸苟杩斿洖
-                //if (!content.Status)
-                //    return content;
-
-                //// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
-                //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
-
-                //// 澶勭悊浠诲姟骞惰繑鍥炵粨鏋�
-                //content = ReceiveWMSTask(new List<WMSTaskDTO> { task });
-
-                #endregion
-
-                WMSTaskDTO taskDTO = new WMSTaskDTO()
+                var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
+                if (hasTask != null)
                 {
-                    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-                    Grade = 1,
-                    PalletCode = palletCode,
-                    RoadWay = "CHSC01",
-                    SourceAddress = sourceAddress,
-                    TargetAddress = "CHSC01",
-                    TaskState = (int)TaskInStatusEnum.InNew,
-                    Id = 0,
-                    TaskType = (int)TaskInboundTypeEnum.Inbound
-                };
+                    return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
+                }
 
-                content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTask)?.ConfigValue;
+                if (wmsBase == null || requestTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddrss = wmsBase + requestTask;
+
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { Position = sourceAddress, PalletCode = palletCode }.ToJsonString());
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+                if (!content.Status)
+                {
+                    // wms澶辫触杩斿洖鍘籒G鍙d换鍔�
+                    return content;
+                }
+
+                var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                return ReceiveWMSTask(new List<WMSTaskDTO> { task });
             }
             catch (Exception ex)
             {
-                content = WebResponseContent.Instance.Error(ex.Message);
+                return WebResponseContent.Instance.Error(ex.Message);
             }
-            return content;
         }
 
         /// <summary>
@@ -189,6 +164,28 @@
         public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress)
         {
             return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
+        }
+
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
+        public Dt_Task QueryNextConveyorLineTask(string deviceNo, string currentAddress)
+        {
+            return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.NextAddress == currentAddress, TaskOrderBy);
+        }
+
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
+        /// </summary>
+        /// <param name="Barcode">鎵樼洏鍙�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
+        public Dt_Task QueryBarCodeConveyorLineTask(string Barcode, string currentAddress)
+        {
+            return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress && x.PalletCode == Barcode, TaskOrderBy);
         }
 
         /// <summary>
@@ -304,7 +301,7 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
@@ -336,7 +333,7 @@
         /// <param name="status">浠诲姟鐘舵��</param>
         public void UpdateTaskStatus(int taskNum, int status)
         {
-            Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+            var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
             if (task == null) return;
             task.TaskState = status;
             task.ModifyDate = DateTime.Now;
@@ -352,7 +349,7 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
                 return UpdateTaskStatusToNext(task);
             }
@@ -376,59 +373,71 @@
                 int oldState = task.TaskState;
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
-                    if (task.TaskState >= (int)TaskOutStatusEnum.OutFinish)
-                    {
-                        return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
-                    }
-
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
 
                     task.TaskState = nextStatus;
+
+                    if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish)
+                    {
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+                        BaseDal.DeleteData(task);
+                    }
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                 {
-                    if (task.TaskState >= (int)TaskInStatusEnum.InFinish)
-                    {
-                        return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
-                    }
-
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                     task.TaskState = nextStatus;
 
                     if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
                     {
-                        Random random = new Random();
+
+                        #region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
+                        // TODO: 璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
+                        // 鍒涘缓璇锋眰瀵硅薄
+                        var taskDto = new RequestTaskDto()
+                        {
+                            Position = task.NextAddress,
+                            PalletCode = task.PalletCode,
+                        };
+
+                        // 鑾峰彇WMSip鍦板潃
+                        var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                        var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
+                        var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.RequestLocation).FirstOrDefault()?.ConfigValue;
+                        if (wmsBasez == null || requestLocation == null)
+                        {
+                            throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                        }
+                        var wmsIpAddrss = wmsBasez + requestLocation;
+
+                        // 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
+                        var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
+                        if (abc == null)
+                            return content.Error();
+                        // 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
+                        content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
+
+                        // 妫�鏌ョ姸鎬佸苟杩斿洖
+                        if (!content.Status)
+                            return content;
+
+                        // 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
+                        var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+
                         task.CurrentAddress = task.NextAddress;
-                        task.NextAddress = $"{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}";
+                        task.NextAddress = taskResult.TargetAddress;
                         task.TargetAddress = task.NextAddress;
-
-                        #region 鐪熷疄鏁版嵁
-                        // TODO: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧�
-                        //// 鍒涘缓璇锋眰瀵硅薄
-                        //RequestTaskDto request = new RequestTaskDto()
-                        //{
-                        //    Position = task.NextAddress,
-                        //    PalletCode = task.PalletCode,
-                        //};
-
-                        //// 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
-                        //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
-
-                        //// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
-                        //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
-                        //// 妫�鏌ョ姸鎬佸苟杩斿洖
-                        //if (!content.Status)
-                        //    return content;
-
-                        //// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
-                        //WMSTaskDTO taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
-
-                        //task.CurrentAddress = task.NextAddress;
-                        //task.NextAddress = taskResult.TargetAddress;
-                        //task.TargetAddress = task.NextAddress;
                         #endregion
 
+                    }
+                    else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish)
+                    {
+
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+
+                        BaseDal.DeleteData(task);
                     }
                 }
                 else
@@ -446,6 +455,21 @@
                 BaseDal.UpdateData(task);
 
                 _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�");
+
+                #region  鏇存柊浠诲姟鐘舵��
+                // 鑾峰彇WMSip鍦板潃
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
+                if (wmsBase == null || updateTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddress = wmsBase + updateTask;
+
+                var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                #endregion
 
                 content = WebResponseContent.Instance.OK();
             }
@@ -466,13 +490,13 @@
         {
             try
             {
-                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress);
+                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress);
                 if (task == null) throw new Exception($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
                 string oldCurrentPos = task.CurrentAddress;
                 string oldNextPos = task.NextAddress;
 
-                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
+                var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
                 if (!routers.Any()) throw new Exception($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
 
                 task.CurrentAddress = task.NextAddress;
@@ -501,12 +525,12 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                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)
                 {
-                    List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
+                    var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
                     if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
 
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
@@ -518,39 +542,19 @@
                     BaseDal.UpdateData(task);
 
                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
-                    //todo 鍚屾鍒癢MS
+
 
                     //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
                 {
-                    //todo
+                    //todo 鍚屾鍒癢MS
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                     task.TaskState = nextStatus;
                     task.ModifyDate = DateTime.Now;
                     task.Modifier = "System";
-                    BaseDal.UpdateData(task);
+                    BaseDal.DeleteData(task);
                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
-
-
-                    //var x = new { taskNum = taskNum };
-                    //var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result;
-                    //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
-                    //WMSTaskDTO taskDTO = new WMSTaskDTO()
-                    //{
-                    //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-                    //    Grade = 1,
-                    //    PalletCode = task.PalletCode + "S",
-                    //    RoadWay = "SC01",
-                    //    SourceAddress = task.TargetAddress,
-                    //    TargetAddress = "CLOutAreaA",
-                    //    TaskState = (int)TaskOutStatusEnum.OutNew,
-                    //    Id = 0,
-                    //    TaskType = (int)TaskOutboundTypeEnum.Outbound
-                    //};
-
-                    //content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                 {
@@ -563,6 +567,40 @@
                 {
                     throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
                 }
+
+
+                #region WMS鍚屾浠诲姟瀹屾垚
+                var keys = new Dictionary<string, object>()
+            {
+                {"taskNum", taskNum}
+            };
+                // 鑾峰彇WMSip鍦板潃
+                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+                if (wmsBase == null || completeTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddress = wmsBase + completeTask;
+
+                var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                #endregion
+
+
+                #region  鏇存柊浠诲姟鐘舵��
+
+                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);
+                #endregion
                 //content = WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
@@ -582,14 +620,14 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
                 if (task.TaskState != (int)TaskInStatusEnum.InPending && task.TaskState != (int)TaskOutStatusEnum.OutPending)
                 {
                     return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙仮澶�,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
                 }
 
-                Dt_TaskExecuteDetail taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.IsNormal, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
+                var taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.IsNormal, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
                 if (taskExecuteDetail != null)
                 {
                     task.TaskState = taskExecuteDetail.TaskState;
@@ -604,7 +642,6 @@
                     {
                         task.TaskState = (int)TaskInStatusEnum.InNew;
                     }
-                    //todo
                 }
 
                 task.ExceptionMessage = string.Empty;
@@ -629,14 +666,14 @@
         /// <returns>杩斿洖澶勭悊缁撴灉</returns>
         public WebResponseContent RollbackTaskStatusToLast(int taskNum)
         {
-            WebResponseContent content = new();
+            WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
                 int oldState = task.TaskState;
-                Dt_TaskExecuteDetail taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.TaskState < task.TaskState && x.TaskState > 0, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
+                var taskExecuteDetail = _taskExecuteDetailRepository.QueryFirst(x => x.TaskId == task.TaskId && x.TaskState < task.TaskState && x.TaskState > 0, new Dictionary<string, OrderByType> { { nameof(Dt_TaskExecuteDetail.TaskDetailId), OrderByType.Desc } });
                 if (taskExecuteDetail != null)
                 {
                     task.TaskState = taskExecuteDetail.TaskState;

--
Gitblit v1.9.3