From a8f4641741af34ffbe5fd565003cc5d55bbec119 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <1247017146@qq.com>
Date: 星期五, 25 四月 2025 09:49:50 +0800
Subject: [PATCH] 添加火警任务

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs |  476 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 428 insertions(+), 48 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
index 6420913..6195eb6 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -1,24 +1,20 @@
 锘縰sing HslCommunication;
+using Mapster;
 using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEAWCS_Common;
-using WIDESEAWCS_Core.Helper;
-using WIDESEAWCS_Core;
-using WIDESEAWCS_DTO.TaskInfo;
 using System.Diagnostics.CodeAnalysis;
+using WIDESEAWCS_Common;
 using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.LogHelper;
+using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_Model.Models;
-using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob;
 
 namespace WIDESEAWCS_TaskInfoService
 {
     public partial class TaskService
     {
-
         /// <summary>
         /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
         /// </summary>
@@ -52,7 +48,6 @@
                 {
                     // wms澶辫触杩斿洖鍘籒G鍙d换鍔�
 
-
                     return content;
                 }
 
@@ -65,23 +60,105 @@
             }
         }
 
+        #region 鏍规嵁鎵樼洏鍙枫�佺珯鍙板悜WMS璇锋眰浠诲姟
+
         /// <summary>
         /// 鏍规嵁鎵樼洏鍙枫�佺珯鍙板悜WMS璇锋眰浠诲姟
         /// </summary>
         /// <param name="palletCode">鎵樼洏鍙�</param>
-        /// <param name="sourceAddress">璧峰鍦板潃</param>
+        /// <param name="stationManager">绔欏彴</param>
         /// <returns></returns>
-        public async Task<WebResponseContent> RequestTask(string palletCode, Dt_StationManager stationManager)
+        public async Task<WebResponseContent> RequestTask1(string palletCode, Dt_StationManager stationManager)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
+                StaticVariable.isLineRun = false;
                 var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
                 if (hasTask != null)
                 {
                     return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
                 }
 
+                var Station = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 6 && x.productLine == stationManager.productLine && x.stationArea == stationManager.stationArea);
+                var tasks = await BaseDal.QueryFirstAsync(x => x.TaskType == (int)TaskOutboundTypeEnum.InToOut && x.TargetAddress == stationManager.stationLocation && x.CurrentAddress == Station.stationChildCode);
+                if (tasks != null)
+                {
+                    ConsoleHelper.WriteErrorLine($"銆恵stationManager.stationChildCode}銆戝凡瀛樺湪鐩存帴鍑哄簱浠诲姟浠诲姟");
+                    return content.Error($"銆恵stationManager.stationChildCode}銆戝凡瀛樺湪鐩存帴鍑哄簱浠诲姟浠诲姟");
+                }
+
+                if (StaticVariable.isStackerRun)
+                {
+                    if (stationManager.stationType == 7)
+                    {
+                        var runTask = await BaseDal.QueryFirstAsync(x => x.CurrentAddress == Station.stationChildCode && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.TaskType == (int)TaskInboundTypeEnum.InTray);
+                        if (runTask != null)
+                        {
+                            runTask.TargetAddress = stationManager.stationLocation;
+                            runTask.NextAddress = stationManager.stationChildCode;
+                            runTask.Grade = 3;
+                            runTask.TaskType = (int)TaskOutboundTypeEnum.InToOut;
+                            runTask.TaskState = (int)TaskOutStatusEnum.OutNew;
+
+                            var config1 = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                            var wmsBase1 = config1.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                            var requestTask1 = config1.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.SetEmptyOutbyInToOutAsync)?.ConfigValue;
+                            if (wmsBase1 == null || requestTask1 == null)
+                            {
+                                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                            }
+                            var wmsIpAddrss1 = wmsBase1 + requestTask1;
+
+                            var result1 = await HttpHelper.PostAsync(wmsIpAddrss1, new { palletCode = runTask.PalletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = Station.stationChildCode }.ToJsonString());
+                            content = JsonConvert.DeserializeObject<WebResponseContent>(result1);
+                            if (content.Status)
+                            {
+                                await BaseDal.UpdateDataAsync(runTask);
+                                ConsoleHelper.WriteSuccessLine($"銆恵runTask.PalletCode}鐩存帴鍑哄簱鑷充簩灏併��");
+                                return content.OK("鎴愬姛");
+                            }
+                            else
+                                ConsoleHelper.WriteErrorLine(content.Message);
+                        }
+                        else
+                            ConsoleHelper.WriteErrorLine($"銆恵Station.stationChildCode}銆戞湭鎵惧埌绌烘墭鐩樺叆搴撲换鍔�");
+                    }
+                    else if (stationManager.stationType == 6)
+                    {
+                        var emptyStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 7 && x.productLine == stationManager.productLine && x.stationArea == stationManager.stationArea);
+                        var runTask = await BaseDal.QueryFirstAsync(x => x.NextAddress == emptyStation.stationChildCode && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.TaskType == (int)TaskInboundTypeEnum.InTray);
+                        if (runTask != null)
+                        {
+                            runTask.SourceAddress = stationManager.stationLocation;
+                            runTask.CurrentAddress = stationManager.stationChildCode;
+                            runTask.Grade = 3;
+                            runTask.TaskType = (int)TaskOutboundTypeEnum.InToOut;
+                            runTask.TaskState = (int)TaskOutStatusEnum.OutNew;
+                            runTask.PalletCode = palletCode;
+
+                            var config1 = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                            var wmsBase1 = config1.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+                            var requestTask1 = config1.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.SetEmptyOutbyInToOutOneAsync)?.ConfigValue;
+                            if (wmsBase1 == null || requestTask1 == null)
+                            {
+                                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                            }
+                            var wmsIpAddrss1 = wmsBase1 + requestTask1;
+
+                            var result1 = await HttpHelper.PostAsync(wmsIpAddrss1, new { palletCode = runTask.PalletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = emptyStation.stationChildCode }.ToJsonString());
+                            content = JsonConvert.DeserializeObject<WebResponseContent>(result1);
+                            if (content.Status)
+                            {
+                                await BaseDal.UpdateDataAsync(runTask);
+                                ConsoleHelper.WriteSuccessLine($"銆恵runTask.PalletCode}鐩存帴鍑哄簱鑷充簩灏併��");
+                                return content.OK("鎴愬姛");
+                            }
+                            else
+                                ConsoleHelper.WriteErrorLine(content.Message);
+                        }
+                    }
+                }
                 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.RequestInTask)?.ConfigValue;
@@ -93,21 +170,257 @@
 
                 var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString());
                 content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
+                ConsoleHelper.WriteErrorLine($"{stationManager.stationChildCode}绔欏彴璇锋眰鍝嶅簲淇℃伅:{content.ToJsonString()}");
                 if (!content.Status)
                 {
                     // wms澶辫触杩斿洖鍘籒G鍙d换鍔�
-
-
+                    //if (stationManager.stationChildCode != stationManager.stationNGChildCode)
+                    //{
+                    //    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    //    {
+                    //        Grade = 8,
+                    //        PalletCode = palletCode,
+                    //        SourceAddress = stationManager.stationLocation,
+                    //        TargetAddress = stationManager.stationNGLocation,
+                    //        RoadWay = stationManager.Roadway,
+                    //        TaskNum = 1000,
+                    //        TaskState = (int)TaskOutStatusEnum.OutNew,
+                    //        TaskType = (int)TaskOutboundTypeEnum.InToOut
+                    //    };
+                    //}
                     return content;
                 }
 
                 var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                ConsoleHelper.WriteSuccessLine(content.Data.ToString());
                 return ReceiveByWMSTask(task);
             }
             catch (Exception ex)
             {
                 return WebResponseContent.Instance.Error(ex.Message);
+            }
+            finally
+            {
+                StaticVariable.isLineRun = true;
+            }
+        }
+
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙枫�佺珯鍙板悜WMS璇锋眰浠诲姟
+        /// </summary>
+        /// <param name="palletCode">鎵樼洏鍙�</param>
+        /// <param name="stationManager">绔欏彴</param>
+        /// <returns></returns>
+        public async Task<WebResponseContent> RequestTask(string palletCode, Dt_StationManager stationManager)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                StaticVariable.isLineRun = false;
+
+                // 妫�鏌ュ綋鍓嶆墭鐩樻槸鍚﹀瓨鍦ㄤ换鍔�
+                if (await HasTask(palletCode))
+                {
+                    return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
+                }
+
+                // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩存帴鍑哄簱浠诲姟
+                if (await HasDirectOutboundTask(stationManager))
+                {
+                    return content.Error($"銆恵stationManager.stationChildCode}銆戝凡瀛樺湪鐩存帴鍑哄簱浠诲姟浠诲姟");
+                }
+
+                if (StaticVariable.isStackerRun)
+                {
+                    if (stationManager.stationType == 7)
+                    {
+                        var result = await HandleStationType7(palletCode, stationManager);
+                        if (result != null)
+                        {
+                            return result;
+                        }
+                    }
+                    else if (stationManager.stationType == 6)
+                    {
+                        var result = await HandleStationType6(palletCode, stationManager);
+                        if (result != null)
+                        {
+                            return result;
+                        }
+                    }
+                }
+
+                // 鍙戣捣璇锋眰鑾峰彇鍏ュ簱浠诲姟
+                content = await RequestInTask(palletCode, stationManager);
+                ConsoleHelper.WriteErrorLine($"{stationManager.stationChildCode}绔欏彴璇锋眰鍝嶅簲淇℃伅:{content.ToJsonString()}");
+
+                if (!content.Status)
+                {
+                    return content;
+                }
+
+                var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                ConsoleHelper.WriteSuccessLine(content.Data.ToString());
+                return ReceiveByWMSTask(task);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+            finally
+            {
+                StaticVariable.isLineRun = true;
+            }
+        }
+
+        // 妫�鏌ュ綋鍓嶆墭鐩樻槸鍚﹀瓨鍦ㄤ换鍔�
+        private async Task<bool> HasTask(string palletCode)
+        {
+            var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
+            return hasTask != null;
+        }
+
+        // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩存帴鍑哄簱浠诲姟
+        private async Task<bool> HasDirectOutboundTask(Dt_StationManager stationManager)
+        {
+            var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 6 && x.productLine == stationManager.productLine && x.stationArea == stationManager.stationArea);
+            var tasks = await BaseDal.QueryFirstAsync(x => x.TaskType == (int)TaskOutboundTypeEnum.InToOut && x.TargetAddress == stationManager.stationLocation && x.CurrentAddress == station.stationChildCode);
+            return tasks != null;
+        }
+
+        // 澶勭悊 stationType 涓� 7 鐨勬儏鍐�
+        private async Task<WebResponseContent> HandleStationType7(string palletCode, Dt_StationManager stationManager)
+        {
+            var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 6 && x.productLine == stationManager.productLine && x.stationArea == stationManager.stationArea);
+            var runTask = await BaseDal.QueryFirstAsync(x => x.CurrentAddress == station.stationChildCode && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.TaskType == (int)TaskInboundTypeEnum.InTray);
+
+            if (runTask != null)
+            {
+                runTask.TargetAddress = stationManager.stationLocation;
+                runTask.NextAddress = stationManager.stationChildCode;
+                runTask.Grade = 3;
+                runTask.TaskType = (int)TaskOutboundTypeEnum.InToOut;
+                runTask.TaskState = (int)TaskOutStatusEnum.OutNew;
+
+                var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.SetEmptyOutbyInToOutAsync);
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = runTask.PalletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = station.stationChildCode }.ToJsonString());
+                var content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+                if (content.Status)
+                {
+                    await BaseDal.UpdateDataAsync(runTask);
+                    ConsoleHelper.WriteSuccessLine($"銆恵runTask.PalletCode}鐩存帴鍑哄簱鑷充簩灏併��");
+                    return content.OK("鎴愬姛");
+                }
+                else
+                {
+                    ConsoleHelper.WriteErrorLine(content.Message);
+                }
+            }
+            else
+            {
+                ConsoleHelper.WriteErrorLine($"銆恵station.stationChildCode}銆戞湭鎵惧埌绌烘墭鐩樺叆搴撲换鍔�");
+            }
+
+            return null;
+        }
+
+        // 澶勭悊 stationType 涓� 6 鐨勬儏鍐�
+        private async Task<WebResponseContent> HandleStationType6(string palletCode, Dt_StationManager stationManager)
+        {
+            var emptyStation = await _stationManagerRepository.QueryFirstAsync(x => x.stationType == 7 && x.productLine == stationManager.productLine && x.stationArea == stationManager.stationArea);
+            var runTask = await BaseDal.QueryFirstAsync(x => x.NextAddress == emptyStation.stationChildCode && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.TaskType == (int)TaskInboundTypeEnum.InTray);
+
+            if (runTask != null)
+            {
+                runTask.SourceAddress = stationManager.stationLocation;
+                runTask.CurrentAddress = stationManager.stationChildCode;
+                runTask.Grade = 3;
+                runTask.TaskType = (int)TaskOutboundTypeEnum.InToOut;
+                runTask.TaskState = (int)TaskOutStatusEnum.OutNew;
+                runTask.PalletCode = palletCode;
+
+                var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.SetEmptyOutbyInToOutAsync);
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = runTask.PalletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = emptyStation.stationChildCode }.ToJsonString());
+                var content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+                if (content.Status)
+                {
+                    await BaseDal.UpdateDataAsync(runTask);
+                    ConsoleHelper.WriteSuccessLine($"銆恵runTask.PalletCode}鐩存帴鍑哄簱鑷充簩灏併��");
+                    return content.OK("鎴愬姛");
+                }
+                else
+                {
+                    ConsoleHelper.WriteErrorLine(content.Message);
+                }
+            }
+
+            return null;
+        }
+
+        // 鑾峰彇 WMS 璇锋眰鍦板潃
+        private string GetWmsIpAddress(string configKey)
+        {
+            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 == configKey)?.ConfigValue;
+
+            if (wmsBase == null || requestTask == null)
+            {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
+            }
+
+            return wmsBase + requestTask;
+        }
+
+        // 鍙戣捣璇锋眰鑾峰彇鍏ュ簱浠诲姟
+        private async Task<WebResponseContent> RequestInTask(string palletCode, Dt_StationManager stationManager)
+        {
+            var wmsIpAddrss = GetWmsIpAddress(SysConfigKeyConst.RequestInTask);
+            var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletCode, EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString());
+            return JsonConvert.DeserializeObject<WebResponseContent>(result);
+        }
+
+        #endregion 鏍规嵁鎵樼洏鍙枫�佺珯鍙板悜WMS璇锋眰浠诲姟
+
+        public async Task<WebResponseContent> RequestOutTaskToBZAsync(Dt_StationManager stationManager)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                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.RequestOutTaskToBZ)?.ConfigValue;
+                if (wmsBase == null || requestTask == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddrss = wmsBase + requestTask;
+
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { Position = stationManager.stationChildCode }.ToJsonString());
+                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                if (!content.Status)
+                {
+                    //鏃犳弧瓒虫潯浠跺彲鍑哄簱鑷冲寘瑁呯殑搴撳瓨
+                    return content;
+                }
+
+                var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                ConsoleHelper.WriteSuccessLine(content.Data.ToString());
+                //_taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO })鈥�
+                content = ReceiveWMSTask(new List<WMSTaskDTO> { task });
+                //content = ReceiveByBZOtuTask(task);
+                //if (content.Status)
+                //{
+                //    //鐩稿簲鐨勫湪閫旀暟鎹�+1
+                //   // _taskNeedBarcodeRepository.UpdateData();
+                //}
+                return content;
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
             }
         }
 
@@ -146,6 +459,15 @@
                     task.NextAddress = stationinfo.stationChildCode;
                     task.TargetAddress = taskDTO.TargetAddress;
                 }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                {
+                    task.TaskState = (int)TaskStatus.Created;
+                    task.SourceAddress = taskDTO.SourceAddress;
+                    task.CurrentAddress = taskDTO.SourceAddress;
+                    task.NextAddress = taskDTO.TargetAddress;
+                    task.TargetAddress = taskDTO.TargetAddress;
+                }
+
                 BaseDal.AddData(task);
 
                 _taskExecuteDetailService.AddTaskExecuteDetail(task.WMSId, "鎺ユ敹WMS浠诲姟");
@@ -159,6 +481,82 @@
             return content;
         }
 
+        /// <summary>
+        /// 鎺ユ敹WMS浠诲姟淇℃伅
+        /// </summary>
+        /// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param>
+        /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+        public WebResponseContent ReceiveByBZOtuTask([NotNull] WMSTaskDTO taskDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.TaskNum || x.PalletCode == taskDTO.PalletCode) != null)
+                {
+                    return content.OK();
+                }
+                Dt_Task task = _mapper.Map<Dt_Task>(taskDTO);
+                task.Creater = "WMS";
+
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationLocation == taskDTO.TargetAddress && x.Roadway == taskDTO.RoadWay);
+                    task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                    task.CurrentAddress = stationinfo.stationChildCode;
+                    task.NextAddress = stationinfo.stationChildCode;
+                    task.SourceAddress = taskDTO.SourceAddress;
+                    task.TargetAddress = taskDTO.TargetAddress;
+                }
+                BaseDal.AddData(task);
+
+                _taskExecuteDetailService.AddTaskExecuteDetail(task.WMSId, "鎺ユ敹WMS浠诲姟");
+
+                content = WebResponseContent.Instance.OK("鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 楂樻俯鍑哄簱
+        /// </summary>
+        /// <param name="taskDTO"></param>
+        /// <returns></returns>
+        public WebResponseContent ReceiveByWMSGWTask([NotNull] WMSTaskDTO taskDTO)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                if (BaseDal.QueryFirst(x => x.TaskNum == taskDTO.TaskNum || x.PalletCode == taskDTO.PalletCode) != null)
+                {
+                    return content.OK();
+                }
+                Dt_Task task = _mapper.Map<Dt_Task>(taskDTO);
+                task.Creater = "WMS";
+
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    task.TaskState = (int)TaskOutStatusEnum.OutNew;
+                    task.CurrentAddress = taskDTO.RoadWay;
+                    task.NextAddress = "002-000-002";
+                    task.SourceAddress = taskDTO.SourceAddress;
+                    task.TargetAddress = taskDTO.TargetAddress;
+                }
+                BaseDal.AddData(task);
+
+                _taskExecuteDetailService.AddTaskExecuteDetail(task.WMSId, "鎺ユ敹WMS浠诲姟");
+
+                content = WebResponseContent.Instance.OK("鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
+            }
+            return content;
+        }
 
         /// <summary>
         /// 鎺ユ敹WMS浠诲姟淇℃伅
@@ -184,7 +582,6 @@
 
                 if (!content.Status)
                 {
-
                     return content;
                 }
                 Dt_StationManager dt_Station = content.Data as Dt_StationManager;
@@ -198,7 +595,7 @@
         }
 
         /// <summary>
-        /// 鏍规嵁鎵樼洏鍙峰拰璁惧鍙锋煡璇㈠叆搴撲换鍔�
+        /// 鏍规嵁鎵樼洏鍙峰拰璁惧鍙锋煡璇换鍔�
         /// </summary>
         /// <param name="taskNum">浠诲姟鍙�</param>
         /// <param name="currentAddress">褰撳墠鍦板潃</param>
@@ -231,32 +628,8 @@
                 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)
-                //{
-                //    //todo 
-
-                //}
-                //else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
-                //{
-                //    //todo 鍚屾鍒癢MS
-
-                //    BaseDal.DeleteData(task);
-
-                //}
-                //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>()
                 {
                     {"taskNum", taskNum}
@@ -273,15 +646,18 @@
 
                 var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
                 content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-                #endregion
+
+                #endregion WMS鍚屾浠诲姟瀹屾垚
 
                 if (content.Status)
                 {
                     task.TaskState = 1;  //浠诲姟瀹屾垚
+                    var taskHty = task.Adapt<Dt_Task_Hty>();
+                    _taskHtyRepository.AddData(taskHty);
                     BaseDal.DeleteData(task);
                 }
 
-                #region  鏇存柊浠诲姟鐘舵��
+                #region 鏇存柊浠诲姟鐘舵��
 
                 //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
                 //if (wmsBase == null || updateTask == null)
@@ -292,14 +668,18 @@
 
                 //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
                 //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-                #endregion
+
+                #endregion 鏇存柊浠诲姟鐘舵��
+
                 //content = WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
             {
                 content = WebResponseContent.Instance.Error($"浠诲姟瀹屾垚寮傚父,浠诲姟鍙�:銆恵taskNum}銆�");
+                QuartzLogger.WriteLogToFile($"Info_鍒嗗浠诲姟瀹屾垚", $"浠诲姟瀹屾垚寮傚父,浠诲姟鍙�:銆恵taskNum}銆戝紓甯镐俊鎭�恵ex.StackTrace}銆憑Environment.NewLine}{Environment.NewLine}");
             }
+            QuartzLogger.WriteLogToFile($"Info_鍒嗗浠诲姟瀹屾垚", $"浠诲姟瀹屾垚,浠诲姟鍙�:銆恵taskNum}銆戣繑鍥炲弬鏁般�恵JsonConvert.SerializeObject(content)}銆憑Environment.NewLine}{Environment.NewLine}");
             return content;
         }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3