刘磊
2024-11-20 7e83137988915123fcfc5294ff0980a46f9f8e17
合并
已修改5个文件
已添加1个文件
1046 ■■■■ 文件已修改
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs 514 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs 525 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
        }
    }
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 æ²¡æœ‰æ˜Žç¡®å¼‚常口,送到目标巷道的NG口
//                            //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  é€åˆ°ç›®æ ‡å··é“çš„NG口
//                            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
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
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;
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,525 @@
using 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值根据MOM下发的静置时间到当前时间的分钟数
    //    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)
    {
        // åˆ›å»ºä¸€ä¸ªWebResponseContent对象
        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);
                }
            }
            // åˆ›å»ºä¸€ä¸ªTrayCellsStatusDto对象,并赋值
            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;
            // æ·»åŠ ç»„ç›˜ä¿¡æ¯
            // å°†content.Data转换为ResultTrayCellsStatus对象
            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为null,则返回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)
    {
        // åˆ›å»ºä¸€ä¸ªProcessApplyDto对象,并赋值
        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>
    /// æ›´æ–°ä»»åŠ¡çŠ¶æ€&出库解盘
    /// </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()
}
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);