From 5b2265e68c0a493c52ea336f77f8dbcd7655d34a Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期五, 22 十一月 2024 10:20:59 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/BaiBuLiKu

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs                    |    2 
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs |  514 ----------------------------
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs                       |    2 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs                                   |    2 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs            |  525 +++++++++++++++++++++++++++++
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs                         |    1 
 6 files changed, 531 insertions(+), 515 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs
index a7eb02b..c80e720 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs
@@ -11,6 +11,7 @@
     {
         public List<Dt_StationManager> GetAllStationByDeviceCode(string DeviceCode)
         {
+            //todo锛� 浣跨敤缂撳瓨鍌ㄥ瓨
             return BaseDal.QueryData(x => x.stationPLC == DeviceCode).ToList();
         }
     }
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs
index 08a7d4b..e5ded63 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs
@@ -113,6 +113,7 @@
         /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
         {
+
             var taskNew = _taskService.QueryCraneConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode);
             if (taskNew == null)
             {
@@ -145,28 +146,6 @@
                 conveyorLine.SendCommand(taskCommand, childDeviceCode);
 
                 _taskService.UpdateTaskStatusToNext(inTask);
-            }
-        }
-
-        /// <summary>
-        /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        public void RequestInNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
-        {
-            //if(command)
-            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
-            if (task != null)
-            {
-                Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
-                if (newTask != null)
-                {
-                    ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask);
-                    //taskCommand.InteractiveSignal = command.InteractiveSignal;
-                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
-                }
             }
         }
 
@@ -208,497 +187,6 @@
                 _taskService.UpdateTaskStatusToNext(task);
             }
         }
-
-        /// <summary>
-        /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        public void RequestOutNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
-        {
-            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
-            if (task != null)
-            {
-                Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
-                if (newTask != null)
-                {
-                    ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask);
-                    //taskCommand.InteractiveSignal = command.InteractiveSignal;
-                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
-                }
-            }
-        }
-
-        /// <summary>
-        /// 杈撻�佺嚎鍑哄簱瀹屾垚
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        public void ConveyorLineOutFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
-        {
-            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode);
-            if (task != null)
-            {
-                conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
-                WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
-                Console.Out.WriteLine(content.Serialize());
-            }
-        }
-
-        /// <summary>
-        /// 杈撻�佺嚎浜や簰瀹屾垚
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-        /// <param name="value">鍊�</param>
-        public void ConveyorLineSendFinish(CommonConveyorLine_After conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value)
-        {
-            DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-            string[] x = devicePro.DeviceProAddress.Split('.');
-            x[x.Length - 1] = (ProtocalDetailValue + 1).ToString();
-            string DeviceProAddress = string.Join(".", x);
-            conveyorLine.Communicator.Write(DeviceProAddress, value);
-        }
     }
 }
-#endregion
-
-
-
-#region MyRegion
-//using AutoMapper;
-//using HslCommunication;
-//using Newtonsoft.Json;
-//using Quartz;
-//using SqlSugar;
-//using System.Reflection;
-//using WIDESEAWCS_Common.TaskEnum;
-//using WIDESEAWCS_Core;
-//using WIDESEAWCS_Core.Helper;
-//using WIDESEAWCS_DTO.TaskInfo;
-//using WIDESEAWCS_ITaskInfoRepository;
-//using WIDESEAWCS_ITaskInfoService;
-//using WIDESEAWCS_Model.Models;
-//using WIDESEAWCS_QuartzJob;
-//using WIDESEAWCS_QuartzJob.DeviceBase;
-//using WIDESEAWCS_QuartzJob.DTO;
-//using WIDESEAWCS_QuartzJob.Service;
-//using WIDESEAWCS_Tasks.ConveyorLineJob;
-
-//namespace WIDESEAWCS_Tasks
-//{
-//    [DisallowConcurrentExecution]
-//    public class CommonConveyorLine_AfterJob : JobBase, IJob
-//    {
-//        private readonly List<string> _deviceCodes1 = new List<string>() { "1063", "1061", "1060" };
-//        private readonly List<string> _deviceCodes2 = new List<string>() { "1067", "1069", "1068" };
-//        private readonly string[] HCTrayCode = { "1012", "1013" };
-//        private readonly ITaskService _taskService;
-//        private readonly ITaskRepository _taskRepository;
-//        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
-//        private readonly IRouterService _routerService;
-//        private readonly IMapper _mapper;
-
-//        public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository)
-//        {
-//            _taskService = taskService;
-//            _taskExecuteDetailService = taskExecuteDetailService;
-//            _routerService = routerService;
-//            _mapper = mapper;
-//            _taskRepository = taskRepository;
-//        }
-
-//        public Task Execute(IJobExecutionContext context)
-//        {
-//            try
-//            {
-//                CommonConveyorLine_After conveyorLine = (CommonConveyorLine_After)context.JobDetail.JobDataMap.Get("JobParams");
-//                if (conveyorLine != null)
-//                {
-//                    List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
-//                    List<Task> tasks = new List<Task>();
-//                    foreach (string childDeviceCode in childDeviceCodes)
-//                    {
-//                        //Task task = Task.Run(() =>
-//                        //{
-//                        ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode);
-//                        if (command != null)
-//                        {
-//                            var structs = BitConverter.GetBytes(command.InteractiveSignal).Reverse().ToArray().ToBoolArray();
-
-//                            List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal)).ToList();
-
-//                            if (deviceProtocolDetails != null)
-//                            {
-//                                foreach (var item in deviceProtocolDetails)
-//                                {
-//                                    var outDeviceCodes = _routerService.QueryOutDeviceCodes(conveyorLine.DeviceCode);
-//                                    if (structs[item.ProtocalDetailValue.ObjToInt()] == true)
-//                                    {
-//                                        MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType);
-//                                        if (method != null)
-//                                        {
-//                                            method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() });
-//                                        }
-//                                    }
-//                                    else
-//                                    {
-//                                        //DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-//                                        //string[] x = devicePro.DeviceProAddress.Split('.');
-//                                        //x[x.Length - 1] = (item.ProtocalDetailValue.ObjToInt() + 1).ToString();
-//                                        //string DeviceProAddress = string.Join(".", x);
-//                                        //var writeRead = conveyorLine.Communicator.Read<bool>(DeviceProAddress);
-//                                        //if (writeRead)
-//                                        //{
-//                                        //    ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false);
-//                                        //}
-//                                    }
-//                                }
-//                            }
-//                        }
-//                        //});
-//                        //tasks.Add(task);
-//                    }
-//                    Task.WaitAll(tasks.ToArray());
-//                }
-//            }
-//            catch (Exception ex)
-//            {
-//                Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
-//            }
-//            finally
-//            {
-//                //WriteDebug("CommonConveyorLineJob", "test");
-//                //Console.Out.WriteLine(DateTime.Now);
-//            }
-//            return Task.CompletedTask;
-//        }
-
-//        /// <summary>
-//        /// 杈撻�佺嚎璇锋眰鍏ュ簱
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-//        public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int ProtocalDetailValue)
-//        {
-//            var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode);
-//            var Taskout = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
-//            if (Taskout != null)
-//            {
-//                // 绌烘墭鐩樹换鍔�
-//                if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray)
-//                {
-//                    if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
-//                    {
-//                        ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout);
-//                        taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                        if (command.Barcode == "")
-//                        {
-//                            taskCommand.TargetAddress = 1092;
-//                        }
-//                        conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-//                        ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-//                        _taskService.UpdateTaskStatusToNext(Taskout);
-//                    }
-//                    else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
-//                    {
-//                        if (command.Barcode == "")
-//                        {
-//                            ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout);
-//                            taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                            taskCommand.TargetAddress = 1092;
-//                            conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-//                            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-//                            _taskService.UpdateTaskStatusToNext(Taskout);
-//                        }
-//                    }
-//                }
-//                else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound)
-//                {
-//                    if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
-//                    {
-//                        ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout);
-//                        taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                        if (command.Barcode == "")
-//                        {
-//                            //todo 娌℃湁鏄庣‘寮傚父鍙o紝閫佸埌鐩爣宸烽亾鐨凬G鍙�
-//                            //taskCommand.TargetAddress = 1092;
-//                        }
-//                        conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-//                        ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-//                        _taskService.UpdateTaskStatusToNext(Taskout);
-//                    }
-//                    else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
-//                    {
-//                        if (command.Barcode == "")
-//                        {
-//                            ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout);
-//                            taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                            // todo  閫佸埌鐩爣宸烽亾鐨凬G鍙�
-//                            taskCommand.TargetAddress = 1092;
-//                            conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-//                            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-//                            _taskService.UpdateTaskStatusToNext(Taskout);
-//                        }
-//                        else
-//                        {
-//                            // todo 璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛
-//                            var x = new { taskNum = Taskout.TaskNum };
-//                            var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result;
-//                            WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-//                            if (content.Status)
-//                            {
-//                                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-//                                _taskService.UpdateTaskStatusToNext(Taskout);
-//                            }
-//                        }
-//                    }
-//                }
-//            }
-//            if (taskNew == null)
-//            {
-//                if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
-//                {
-//                    Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
-//                    if (task != null)
-//                    {
-//                        ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
-//                        taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                        conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-//                        ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-//                        _taskService.UpdateTaskStatusToNext(task);
-//                    }
-//                }
-//            }
-//        }
-
-//        //
-//        /// <summary>
-//        /// 绌烘墭鐩樺洖娴�
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        /// <param name="index">璇诲彇鐨勭涓�涓綅缃�</param>
-//        public void EmptyTrayReturn(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index)
-//        {
-//            var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.OutTray);
-//            if (tasks.Count <= index)
-//            {
-//                WMSTaskDTO taskDTO = new WMSTaskDTO()
-//                {
-//                    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-//                    Grade = 1,
-//                    PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
-//                    RoadWay = "CHSC01",
-//                    SourceAddress = "001-001-001",
-//                    TargetAddress = childDeviceCode,
-//                    TaskState = (int)TaskOutStatusEnum.OutNew,
-//                    Id = 0,
-//                    TaskType = (int)TaskOutboundTypeEnum.OutTray
-//                };
-
-//                #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;
-
-//                //// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
-//                //WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-
-//                //// 妫�鏌ョ姸鎬佸苟杩斿洖
-//                ////if (!content.Status)
-//                ////    return content;
-
-//                //// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
-//                //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
-
-//                #endregion
-
-//                var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
-//                if (content.Status)
-//                {
-//                    Console.WriteLine("绌烘墭鐩樺懠鍙垚鍔�");
-//                }
-//            }
-//        }
-
-//        ///// <summary>
-//        ///// 闄堝寲鍑哄簱
-//        ///// </summary>
-//        ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-//        //public void ChuanhuaOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index)
-//        //{
-//        //    var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.Outbound);
-//        //    if (tasks.Count <= index)
-//        //    {
-//        //        WMSTaskDTO taskDTO = new WMSTaskDTO()
-//        //        {
-//        //            TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
-//        //            Grade = 1,
-//        //            PalletCode = DateTime.Now.ToString("MMddHHmmss"),
-//        //            RoadWay = "CHSC01",
-//        //            SourceAddress = "001-001-001",
-//        //            TargetAddress = childDeviceCode,
-//        //            TaskState = (int)TaskOutStatusEnum.OutNew,
-//        //            Id = 0,
-//        //            TaskType = (int)TaskOutboundTypeEnum.Outbound,
-//        //        };
-
-//        //        var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
-//        //        if (content.Status)
-//        //        {
-//        //            Console.WriteLine("鍑哄簱鍛煎彨鎴愬姛");
-//        //        }
-//        //    }
-//        //    else
-//        //    {
-//        //        Dt_Task task = tasks[index];
-//        //        if (task != null)
-//        //        {
-//        //            ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
-//        //            taskCommand.InteractiveSignal = command.InteractiveSignal;
-//        //            conveyorLine.SendCommand(taskCommand, childDeviceCode);
-//        //        }
-//        //    }
-//        //}
-
-//        /// <summary>
-//        /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        public void RequestInNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
-//        {
-//            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
-//            if (task != null)
-//            {
-//                Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
-//                if (newTask != null)
-//                {
-//                    ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask);
-//                    taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
-//                }
-//            }
-//        }
-
-//        /// <summary>
-//        /// 杈撻�佺嚎鍏ュ簱瀹屾垚
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-//        public void ConveyorLineInFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int ProtocalDetailValue)
-//        {
-//            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
-//            if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish)
-//            {
-//                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-
-//                //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
-//                WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
-//                Console.Out.WriteLine(content.Serialize());
-//            }
-//        }
-
-//        /// <summary>
-//        /// 杈撻�佺嚎璇锋眰鍑轰俊鎭�
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        public void RequestOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
-//        {
-//            Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
-//            if (task != null)
-//            {
-//                ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
-//                taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                conveyorLine.SendCommand(taskCommand, childDeviceCode);
-
-//                _taskService.UpdateTaskStatusToNext(task);
-//            }
-//        }
-
-//        /// <summary>
-//        /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        public void RequestOutNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
-//        {
-//            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
-//            if (task != null)
-//            {
-//                Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress);
-//                if (newTask != null)
-//                {
-//                    ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask);
-//                    taskCommand.InteractiveSignal = command.InteractiveSignal;
-//                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
-//                }
-//            }
-//        }
-
-//        /// <summary>
-//        /// 杈撻�佺嚎鍑哄簱瀹屾垚
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        public void ConveyorLineOutFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode)
-//        {
-//            Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
-//            if (task != null)
-//            {
-//                conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
-//                WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
-//                Console.Out.WriteLine(content.Serialize());
-//            }
-//        }
-
-//        /// <summary>
-//        /// 杈撻�佺嚎浜や簰瀹屾垚
-//        /// </summary>
-//        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
-//        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-//        /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
-//        /// <param name="value">鍊�</param>
-//        public void ConveyorLineSendFinish(CommonConveyorLine_After conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value)
-//        {
-//            DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-//            string[] x = devicePro.DeviceProAddress.Split('.');
-//            x[x.Length - 1] = (ProtocalDetailValue + 1).ToString();
-//            string DeviceProAddress = string.Join(".", x);
-//            conveyorLine.Communicator.Write(DeviceProAddress, value);
-//        }
-//    }
-//}
 #endregion
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
index 63a5ce1..2e45146 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
@@ -21,6 +21,8 @@
     /// 浠诲姟绫诲瀷
     /// </summary>
     public string RequestType { get; set; } = string.Empty;
+
+    public string EquiCodeMOM { get; set; }
 }
 
 public class RequestOutTaskDto
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 54847d1..0fb68e6 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -13,7 +13,7 @@
 
 namespace WIDESEA_StorageOutTaskServices;
 
-public class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
+public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
 {
     private readonly LogFactory LogFactory = new LogFactory();
     private readonly IUnitOfWorkManage _unitOfWorkManage;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
new file mode 100644
index 0000000..58269a9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -0,0 +1,525 @@
+锘縰sing log4net.Core;
+using Mapster;
+using Masuit.Tools;
+using Masuit.Tools.Models;
+using WIDESEA_DTO.MOM;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IStorageBasicRepository;
+using WIDESEA_IStoragIntegrationServices;
+using WIDESEA_Model.Models;
+using WIDESEA_StorageBasicRepository;
+using WIDESEA_StorageTaskRepository;
+using WIDESEA_StoragIntegrationServices;
+
+namespace WIDESEA_StorageOutTaskServices;
+
+public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
+{
+
+    //#region 鍑哄簱浠诲姟瀹屾垚
+
+
+    //public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
+    //{
+    //    WebResponseContent content = new WebResponseContent();
+    //    try
+    //    {
+    //        if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+    //        {
+    //            var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
+    //                .FirstAsync(x => x.EquipmentName == task.Roadway);
+    //            var info = JsonConvert.DeserializeObject<ResponseEqptRunDto>(process.ProcessValue);
+
+    //            var agingOutputDto = MapToAgingOutputDto(stock, info);
+    //            content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
+    //            ValidateResponse(content);
+    //        }
+
+    //        // 鏇存柊搴撳瓨鐘舵�佸拰浠诲姟鐘舵��
+    //        (var loc, var tas) = UpdateStockAndTaskStatus(stock, task);
+
+    //        // 浜嬪姟澶勭悊
+    //        await _unitOfWorkManage.UseTranAsync(async () =>
+    //        {
+    //            await UpdateLocationAsync(loc);
+    //            await DeleteStockInfoAsync(stock.Id);
+    //            await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
+    //            //await DeleteTaskAsync(task.TaskId);
+    //        });
+
+    //        return content.OK("浠诲姟瀹屾垚鎴愬姛");
+    //    }
+    //    catch (Exception err)
+    //    {
+    //        LogFactory.GetLog("浠诲姟瀹屾垚").Error(true, $"绯荤粺寮傚父锛屽紓甯镐俊鎭細{err.Message}");
+    //        return content.Error(err.Message);
+    //    }
+    //}
+
+    //private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, ResponseEqptRunDto info)
+    //{
+    //    // TODO Value鍊兼牴鎹甅OM涓嬪彂鐨勯潤缃椂闂村埌褰撳墠鏃堕棿鐨勫垎閽熸暟
+    //    return new AgingOutputDto
+    //    {
+    //        OpFlag = 1,
+    //        Software = "WMS",
+    //        EquipmentCode = "24MEJQ08-1091",
+    //        TrayBarcode = stock.PalletCode,
+    //        SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto
+    //        {
+    //            SlotNo = x.OrderNo.ToInt32(),
+    //            SerialNo = x.SerialNumber,
+    //            SerialNoResult = true,
+    //            ParameterInfo = info.ParameterInfo.Select(y => new ParameterInfo()
+    //            {
+    //                LowerLomit = y.LowerControlLimit,
+    //                UpperLimit = y.UpperControlLimit,
+    //                ParameterResult = y.EquipmentAvailabilityFlag,
+    //                ParameterCode = y.ParameterCode,
+    //                ParameterDesc = y.Description,
+    //                TargetValue = y.TargetValue,
+    //                Value = (DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(),
+    //                DefectCode = y.UOMCode
+    //            }).ToList()
+    //        }).ToList()
+    //    };
+    //}
+
+    //private void ValidateResponse(WebResponseContent content)
+    //{
+    //    var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
+    //    if (!result.Success)
+    //    {
+    //        throw new Exception(result.MOMMessage);
+    //    }
+    //}
+
+    //private (DtLocationInfo, Dt_Task) UpdateStockAndTaskStatus(DtStockInfo stock, Dt_Task task)
+    //{
+    //    var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+    //    var details = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
+
+    //    location.LocationStatus = (int)LocationEnum.Free;
+    //    task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+    //    //task.CurrentAddress = task.NextAddress;
+    //    //task.NextAddress = task.TargetAddress;
+
+    //    LogFactory.GetLog("浠诲姟瀹屾垚").Info(true, "鏇存柊搴撳瓨鐘舵�佷笌浠诲姟鐘舵��");
+    //    return (location, task);
+    //}
+
+    //private async Task DeleteStockInfoAsync(int stockId)
+    //{
+    //    var isStockUpdated = await _stockInfoRepository.DeleteDataByIdAsync(stockId);
+    //    if (!isStockUpdated)
+    //    {
+    //        throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触");
+    //    }
+    //}
+
+    //private async Task UpdateLocationAsync(DtLocationInfo info)
+    //{
+    //    var isStockUpdated = await _locationRepository.UpdateDataAsync(info);
+    //    if (!isStockUpdated)
+    //    {
+    //        throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触");
+    //    }
+    //}
+
+    //private async Task DeleteStockInfoDetailsAsync(IEnumerable<DtStockInfoDetail> details)
+    //{
+    //    var ids = details.Select(x => (object)x.Id).ToArray();
+    //    var isStockDetailUpdated = await _stockInfoDetailRepository.DeleteDataByIdsAsync(ids);
+    //    if (!isStockDetailUpdated)
+    //    {
+    //        throw new Exception("搴撳瓨璇︽儏淇℃伅鏇存柊澶辫触");
+    //    }
+    //}
+
+    //private async Task DeleteTaskAsync(int taskId)
+    //{
+    //    var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(taskId);
+    //    if (!isTaskUpdated)
+    //    {
+    //        throw new Exception("浠诲姟淇℃伅鏇存柊澶辫触");
+    //    }
+    //}
+
+    //#endregion 鍑哄簱浠诲姟瀹屾垚
+
+    #region 绉诲簱浠诲姟瀹屾垚
+
+    /// <summary>
+    /// 绉诲簱浠诲姟瀹屾垚
+    /// </summary>
+    /// <param name="saveModel">浠诲姟鏁版嵁鍚堥泦</param>
+    /// <returns>杩斿洖缁撴灉闆�</returns>
+    //public async Task<WebResponseContent> CompleteTransferTaskAsync(Dt_Task task, DtStockInfo stock)
+    //{
+    //    WebResponseContent content = new WebResponseContent();
+    //    try
+    //    {
+    //        // 鏇存柊璐т綅鍜屽簱瀛樹俊鎭�
+    //        (DtStockInfo updateStock, DtLocationInfo locationInf) = UpdateStockLocation(stock, task.NextAddress);
+    //        var taskHty = CreateHistoricalTask(task);
+    //        LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "绉诲簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庡簱瀛樻暟鎹細{JsonConvert.SerializeObject(updateStock)}锛屽師鍏堣揣浣嶆暟鎹細{locationInf}");
+
+    //        // 鎵ц鏁版嵁搴撲簨鍔�
+    //        bool isResult = await ExecuteTransaction(updateStock, taskHty, locationInf, task.TaskId);
+    //        if (isResult)
+    //            content.OK("绉诲簱浠诲姟瀹屾垚鎴愬姛");
+    //        else
+    //            content.Error("绉诲簱浠诲姟瀹屾垚澶辫触");
+    //    }
+    //    catch (Exception err)
+    //    {
+    //        Console.WriteLine(err.Message.ToString());
+    //    }
+    //    return content;
+    //}
+
+    #endregion 绉诲簱浠诲姟瀹屾垚
+
+    #region 鍏ュ簱浠诲姟瀹屾垚
+
+    /// <summary>
+    /// 瀹屾垚鍏ュ簱浠诲姟
+    /// </summary>
+    /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
+    /// <returns>杩斿洖缁撴灉闆�</returns>
+    //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
+    //{
+    //    // 鍒濆鍖栧搷搴斿唴瀹�
+    //    WebResponseContent content = new WebResponseContent();
+    //    try
+    //    {
+    //        // 鑾峰彇瑁呯淇℃伅鍜岀洰鏍囦綅缃俊鎭�
+    //        var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
+    //        var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
+
+    //        // 鏇存柊鐩爣浣嶇疆鐘舵�佷负搴撳瓨涓�
+    //        locationInf.LocationStatus = (int)LocationEnum.InStock;
+
+    //        // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
+    //        var taskHty = CreateHistoricalTask(task);
+
+    //        // 鏍规嵁鏄惁鏈夌粍鐩樹俊鎭垱寤哄簱瀛樺疄渚嬫ā鍨�
+    //        DtStockInfo stock = boxing == null ? CreateEmptyPalletStock(task, locationInf) : CreateFullPalletStock(task, locationInf, boxing);
+
+    //        // 鎵ц鏁版嵁搴撲簨鍔�
+    //        bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId);
+    //        if (isResult)
+    //        {
+    //            content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
+    //        }
+    //        else
+    //        {
+    //            content.Error("鍏ュ簱浠诲姟瀹屾垚澶辫触");
+    //        }
+    //    }
+    //    catch (Exception err)
+    //    {
+    //        // 璁板綍寮傚父淇℃伅鍒版帶鍒跺彴鍜屾棩蹇�
+    //        Console.WriteLine(err.Message.ToString());
+    //        LogFactory.GetLog("浠诲姟瀹屾垚").Error(true, err);
+    //    }
+    //    return content;
+    //}
+
+    /// <summary>
+    /// 鍒涘缓绌烘墭鐩樼殑搴撳瓨瀹炰緥妯″瀷
+    /// </summary>
+    //private DtStockInfo CreateEmptyPalletStock(Dt_Task task, DtLocationInfo locationInf)
+    //{
+    //    var loation = _locationRepository.QueryFirst(x => x.RoadwayNo == task.Roadway && x.LocationCode == task.TargetAddress);
+    //    var area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId);
+    //    return new DtStockInfo()
+    //    {
+    //        PalletCode = task.PalletCode,
+    //        LocationCode = task.TargetAddress,
+    //        CreateDate = DateTime.Now,
+    //        Creater = "system",
+    //        IsFull = false,
+    //        AreaCode = area.AreaCode,
+    //        LocationId = loation.Id,
+    //        StockInfoDetails = new List<DtStockInfoDetail>()
+    //        {
+    //            new DtStockInfoDetail()
+    //            {
+    //                MaterielCode = "绌烘墭鐩�",
+    //                Id = 0,
+    //                Status = (int)StockStateEmun.宸插叆搴�
+    //            }
+    //        }
+    //    };
+    //}
+
+    /// <summary>
+    /// 鍒涘缓瀹炵洏鐨勫簱瀛樺疄渚嬫ā鍨嬪苟璋冪敤MOM鍏ュ簱
+    /// </summary>
+    //private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing)
+    //{
+    //    var loation = _locationRepository.QueryFirst(x => x.RoadwayNo == task.Roadway && x.LocationCode == task.TargetAddress);
+    //    var area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId);
+    //    var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
+    //    boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.宸插叆搴�; });
+    //    var stock = new DtStockInfo()
+    //    {
+    //        PalletCode = task.PalletCode,
+    //        LocationCode = task.TargetAddress,
+    //        CreateDate = DateTime.Now,
+    //        Creater = "system",
+    //        IsFull = boxing.IsFull,
+    //        AreaCode = area.AreaCode,
+    //        LocationId = loation.Id,
+    //        StockInfoDetails = boxDetail,
+    //    };
+
+    //    // 澶勭悊璇锋眰鍙傛暟
+    //    AgingInputDto agingInputDto = new AgingInputDto()
+    //    {
+    //        SerialNos = boxing.BoxingInfoDetails
+    //            .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
+    //            .ToList(),
+    //        TrayBarcode = task.PalletCode,
+    //        OpFlag = 1,
+    //        EquipmentCode = "24MEJQ08-1091",
+    //        Software = "WMS"
+    //    };
+    //    var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result;
+    //    var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString());
+    //    stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime;
+    //    stock.SpecialParameterDuration = respone.SpecialParameterDuration;
+    //    //2024骞�11鏈�16鏃ワ細鏂板瀛楁璁$畻搴斿嚭搴撴椂闂�
+    //    stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration));
+    //    stock.ProductionLine = respone.ProductionLine;
+
+    //    // 璁板綍鏃ュ織
+    //    LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
+
+    //    return stock;
+    //}
+
+    #endregion 鍏ュ簱浠诲姟瀹屾垚
+
+    #region 浠诲姟瀹屾垚
+
+    /// <summary>
+    /// 瀹屾垚浠诲姟
+    /// </summary>
+    /// <param name="taskNum">浠诲姟缂栧彿</param>
+    /// <returns>杩斿洖缁撴灉闆�</returns>
+    //public async Task<WebResponseContent> CompleteAsync(int taskNum)
+    //{
+    //    // 鍒濆鍖栧搷搴斿唴瀹�
+    //    WebResponseContent content = new WebResponseContent();
+
+    //    // 鎻愬彇浠诲姟鏁版嵁
+    //    LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鎻愬彇浠诲姟鏁版嵁", $"浠诲姟鍙凤細{taskNum}");
+
+    //    // 楠岃瘉浠诲姟鏄惁瀛樺湪
+    //    var task = await GetByTaskNum(taskNum);
+    //    if (task == null)
+    //    {
+    //        return content.Error("浠诲姟涓嶅瓨鍦�");
+    //    }
+    //    LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "楠岃瘉浠诲姟鏄惁瀛樺湪", JsonConvert.SerializeObject(task));
+
+    //    // 楠岃瘉搴撳瓨鏄惁瀛樺湪
+    //    var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
+
+    //    // 鏍规嵁浠诲姟绫诲瀷璋冪敤鐩稿簲鐨勫畬鎴愪换鍔℃柟娉�
+    //    switch (task.TaskType)
+    //    {
+    //        case (int)TaskInboundTypeEnum.Inbound:
+    //        case (int)TaskInboundTypeEnum.InTray:
+    //            LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟", "");
+    //            return await CompleteInboundTaskAsync(task);
+
+    //        case (int)TaskOutboundTypeEnum.OutTray:
+    //        case (int)TaskOutboundTypeEnum.Outbound:
+    //            LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", "");
+    //            return await CompleteStackTaskAsync(task, stock);
+
+    //        default:
+    //            return content.Error("浠诲姟绫诲瀷涓嶅瓨鍦�");
+    //    }
+    //}
+
+    #endregion 浠诲姟瀹屾垚
+
+    #region 璇锋眰浠诲姟鍏ュ簱
+    /// <summary>
+    /// 璇锋眰鍏ュ簱
+    /// </summary>
+    /// <param name="input">璇锋眰妯″瀷</param>
+    /// <returns>鍖呭惈浠诲姟淇℃伅鐨勫搷搴斿唴瀹�</returns>
+    public async Task<WebResponseContent> RequestInTask(RequestTaskDto input)
+    {
+        // 鍒涘缓涓�涓猈ebResponseContent瀵硅薄
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            // 璋冪敤BaseDal.QueryFirstAsync鏂规硶锛屾煡璇换鍔�
+            var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
+            if (task != null)
+            {
+                //if (task.TaskState == (int)TaskInStatusEnum.InNew)
+                {
+                    // 鍒涘缓WMS浠诲姟
+                    WMSTaskDTO taskDTO = new WMSTaskDTO()
+                    {
+                        TaskNum = task.TaskNum.Value,
+                        Grade = 1,
+                        PalletCode = task.PalletCode,
+                        RoadWay = task.Roadway,
+                        SourceAddress = task.SourceAddress,
+                        TargetAddress = task.Roadway,
+                        TaskState = task.TaskState.Value,
+                        Id = 0,
+                        TaskType = task.TaskType,
+                    };
+                    return content.OK(data: taskDTO);
+                }
+            }
+
+            // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
+            TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
+            {
+                Software = "WMS",
+                TrayBarcode = input.PalletCode,
+                //EquipmentCode = "EQ_CWJZ01"
+                EquipmentCode = input.EquiCodeMOM
+            };
+
+            // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
+            content = await GetTrayCellStatusAsync(trayCells);
+            // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content
+            if (!content.Status) return content;
+
+            // 娣诲姞缁勭洏淇℃伅
+            // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
+            var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+            if (result.SerialNos.Count <= 0)
+                return content.Error(result.MOMMessage);
+
+            Console.WriteLine(result);
+            // TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭�
+            //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
+            //if (productions.Count <= 0)
+            //    return content.Error("鏂欐灞炴�т笉瀛樺湪");
+
+            // 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭�
+
+            var boxing = await CreateBoxingInfo(result, input.PalletCode);
+            if (boxing == null) return content.Error("缁勭洏澶辫触");
+
+            // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾�
+            ProcessApplyDto process = await GetProcessApplyAsync(input, result);
+
+            // 濡傛灉process涓簄ull锛屽垯杩斿洖content
+            if (process == null) return content;
+
+            // 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇�
+            content = await _processApplyService.GetProcessApplyAsync(process);
+
+            // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null
+            if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触");
+
+            //// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴�
+            //var processResponse = await GetProcessResponseAsync(process, input.Position);
+
+            List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
+            // 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟
+            content = await CreateNewTask(input, strings);
+            if (content.Status)
+            {
+                var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
+            }
+        }
+        catch (Exception err)
+        {
+            // 濡傛灉鍙戠敓寮傚父锛屽垯璋冪敤content.Error鏂规硶锛岃褰曢敊璇俊鎭紝骞惰緭鍑洪敊璇俊鎭�
+            content.Error(err.Message);
+            Console.WriteLine(err.Message);
+        }
+
+        // 杩斿洖content
+        return content;
+    }
+
+
+    // 鑾峰彇宸ヨ壓鐢宠
+    private async Task<ProcessApplyDto> GetProcessApplyAsync(RequestTaskDto input, ResultTrayCellsStatus content)
+    {
+        // 鍒涘缓涓�涓狿rocessApplyDto瀵硅薄锛屽苟璧嬪��
+        return new ProcessApplyDto()
+        {
+            EquipmentCode = input.EquiCodeMOM,
+            Software = "WMS",
+            //WipOrderNo = result.BindCode,
+            SerialNos = content.SerialNos.Select(item => new SerialNos
+            {
+                SerialNo = item.SerialNo
+            }).ToList()
+        };
+    }
+
+    #endregion 璇锋眰浠诲姟鍏ュ簱
+
+
+
+
+    #region 浠诲姟鐘舵�佹洿鏀�
+
+    /// <summary>
+    /// 鏇存柊浠诲姟鐘舵��&鍑哄簱瑙g洏
+    /// </summary>
+    /// <param name="taskNum"></param>
+    /// <param name="taskState"></param>
+    /// <returns></returns>
+    //public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState)
+    //{
+    //    WebResponseContent content = new WebResponseContent();
+    //    try
+    //    {
+    //        var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum);
+    //        if (task == null)
+    //            return content.Error("鏈壘鍒颁换鍔�");
+
+    //        if (taskState == (int)TaskOutStatusEnum.Line_OutFinish || taskState == (int)TaskOutStatusEnum.SC_OutFinish)
+    //        {
+    //            var taskHty = CreateHistoricalTask(task);
+    //            await _unitOfWorkManage.UseTranAsync(async () =>
+    //            {
+    //                var asb = await BaseDal.DeleteDataByIdAsync(task.TaskId);
+    //                var asbHty = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
+    //                if (asb && asbHty)
+    //                    content.OK();
+    //                else
+    //                    throw new Exception();
+    //            });
+    //            content.OK();
+    //        }
+    //        else
+    //        {
+    //            task.TaskState = taskState;
+    //            var asb = await BaseDal.UpdateDataAsync(task);
+    //            if (asb)
+    //                content.OK();
+    //            else
+    //                content.Error();
+    //        }
+    //    }
+    //    catch (Exception ex)
+    //    {
+    //        content.Error(ex.Message);
+    //    }
+    //    return content;
+    //}
+
+    #endregion
+
+    //private WebResponseContent CheckInTask()
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
index c804cb4..5fff145 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
@@ -50,7 +50,7 @@
     /// </summary>
     /// <param name="input">璇锋眰鏁版嵁</param>
     /// <returns></returns>
-    [HttpPost, AllowAnonymous, Route("RequestTaskAsync")]
+    [HttpPost, AllowAnonymous, Route("RequestTask")]
     public async Task<WebResponseContent> RequestTaskAsync([FromBody] RequestTaskDto input)
     {
         return await Service.RequestTaskAsync(input);

--
Gitblit v1.9.3