添加任务删除功能并简化代码逻辑在 `ITaskService.cs` 中新增 `Delete` 方法以支持任务删除,并在 `TaskService.cs` 中实现该方法,适配任务并调用基类删除逻辑。同时,优化了 `RequestInbound.cs` 中的 `CreateAndSendEmptyTrayTask` 和 `RequestWmsTask` 方法,移除冗余注释和不必要的查询,提升代码可读性和维护性。
已修改3个文件
64 ■■■■ 文件已修改
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -320,5 +320,12 @@
        /// <param name="deviceNo"></param>
        /// <returns></returns>
        Dt_Task QueryOutFireAlarmTask(string deviceNo);
        /// <summary>
        /// 删除任务
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        WebResponseContent Delete(Dt_Task task);
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -935,7 +935,13 @@
            }
            return wcsBasez + address;
        }
        public WebResponseContent Delete(Dt_Task task)
        {
            var taskHty = task.Adapt<Dt_Task_Hty>();
            taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
            _taskHtyRepository.AddData(taskHty);
            return base.DeleteData(task);
        }
        #region 重写方法
        public override WebResponseContent DeleteData(object[] key)
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
@@ -1,5 +1,7 @@
using Masuit.Tools;
using Mapster;
using Masuit.Tools;
using Newtonsoft.Json;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
@@ -238,34 +240,23 @@
        {
            if (command.ConveyorLineBarcode != "NoRead")
            {
                //var config = _sys_ConfigService.GetByConfigKey("SYS_BASE", "ISFRINTRAY");
                //if (config.ConfigValue == "1")
                //{
                //    Random random = new Random();
                //    var task = new Dt_Task()
                //    {
                //        CurrentAddress = childDeviceCode,
                //        Grade = 1,
                //        NextAddress = "2066",
                //        PalletCode = command.ConveyorLineBarcode,
                //        Roadway = "FR",
                //        SourceAddress = childDeviceCode,
                //        TargetAddress = "2066",
                //        TaskNum = random.Next(1,9999),
                //        TaskType = (int)TaskInboundTypeEnum.InTray,
                //        TaskState = (int)TaskInStatusEnum.Line_InExecuting,
                //        WMSId = 0
                //    };
                //    var taskCommand = MapTaskCommand(task, command);
                //    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                //}
                //else
                //{
                var taskDTO = CreateEmptyTrayTaskDto(command.ConveyorLineBarcode, childDeviceCode);
                if (_taskRepository.QueryFirst(x => x.PalletCode == taskDTO.PalletCode) != null)
                if (_taskRepository.QueryFirst(x => x.PalletCode == command.ConveyorLineBarcode) != null)
                {
                    WriteInfo(conveyorLine.DeviceName, "当前托盘存在任务");
                    List<string> strings = new List<string>() { "1743", "1739", "1837", "1841" };
                    var taskExecuting = _taskRepository.QueryFirst(x => x.PalletCode == command.ConveyorLineBarcode && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting && strings.Contains(x.TargetAddress));
                    if (taskExecuting != null)
                    {
                        taskExecuting.ExceptionMessage = "未接收到线体完成信号系统内部自动完成";
                        _taskService.Delete(taskExecuting);
                    }
                    ConsoleHelper.WriteErrorLine($"当前托盘存在任务:【{command.ConveyorLineBarcode}】");
                    WriteInfo(conveyorLine.DeviceName, $"当前托盘存在任务{command.ConveyorLineBarcode}");
                    return;
                }
@@ -319,9 +310,6 @@
        /// </summary>
        private async void RequestWmsTask(CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, Dt_StationManager stationManager)
        {
            //var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && (x.TaskState == (int)TaskOutStatusEnum.OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutPending));
            //if (taskGW != null)
            //    _taskRepository.DeleteData(taskGW);
            if (command.ConveyorLineBarcode.IsNullOrEmpty()) return;
            var content = await _taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode);
            if (content.Status)
@@ -329,9 +317,6 @@
                var task = _taskService.QueryBarCodeConveyorLineTask(command.ConveyorLineBarcode, childDeviceCode);
                if (task != null)
                {
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTaskNum, task.TaskNum, childDeviceCode);
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, task.NextAddress, childDeviceCode);
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineBarcode, command.ConveyorLineBarcode, childDeviceCode);
                    var GWTask = _taskRepository.QueryData(x => x.Roadway.Contains("GWSC2") && x.SourceAddress == "1039" && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskInStatusEnum.Line_InFinish)).ToList();
                    if (GWTask.Count >= 2 && childDeviceCode == "1039" && task.Roadway.Contains("GWSC2"))
                    {