From be484c84a25d1f6c769e7b5e958048d745942e55 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期二, 20 五月 2025 10:32:57 +0800 Subject: [PATCH] 优化出入库逻辑 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs | 156 +++++++++++++++++++++++++++++----------------------- 1 files changed, 87 insertions(+), 69 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs" index cc038e9..08bf6b2 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineExtend/ConveyorLineExtend.cs" @@ -7,10 +7,12 @@ using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_DTO.WMSInfo; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_Tasks.ConveyorLineJob; namespace WIDESEAWCS_Tasks @@ -25,61 +27,54 @@ public List<Task> ConveyorLineExtend(CommonConveyorLine conveyorLine) { List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); + List<string> strings = new List<string>() { "1003", "1006", "1007" }; + childDeviceCodes.AddRange(strings); List<Task> tasks = new List<Task>(); foreach (string childDeviceCode in childDeviceCodes) { try { ConveyorLineTaskCommandR command = conveyorLine.ReadCustomer<ConveyorLineTaskCommandR>(childDeviceCode); + _cacheService.AddOrUpdate(childDeviceCode, command); if (command != null) { - if (childDeviceCode == "101" && command.Status == (ushort)ConveyorStatus.Wait) + if (childDeviceCode == "1002" && command.Status == (ushort)ConveyorStatus.Wait) { - ConveyorLineTaskCommandW taskCommand = new ConveyorLineTaskCommandW() + RequestInbound(conveyorLine, command, childDeviceCode); + } + else if (childDeviceCode == "1004" && command.Status == (ushort)ConveyorStatus.Stored) + { + ConveyorLineInFinish(conveyorLine, command, childDeviceCode); + } + else if (childDeviceCode == "1008" && command.Status == (ushort)ConveyorStatus.Stored) + { + Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); + if (task != null) { - TaskNum = 131205, - NextAddress = 1004, - //PalletCode = "A0216", - WriterTrue=1 - }; - conveyorLine.SendCommand(taskCommand, childDeviceCode); - } - else if (childDeviceCode == "104" && command.Status == (ushort)ConveyorStatus.Stored) - { - - } - else if (childDeviceCode == "108" && command.Status == (ushort)ConveyorStatus.Stored) - { - + #region MyRegion + //List<Dt_Router> routers = _routerRepository.QueryData(x => x.StartPosi == task.TargetAddress && x.ChildPosiDeviceCode == "AGV" && x.Remark == "鏈崰鐢�"); + //if (routers != null && routers.Count > 0) + //{ + // var router = routers.FirstOrDefault(); + // if (router != null) + // { + // task.TaskState = TaskOutStatusEnum.Line_OutFinish.ObjToInt(); + // task.CurrentAddress = childDeviceCode; + // task.NextAddress = router.NextPosi; + // task.TargetAddress = task.NextAddress; + // router.Remark = "鍗犵敤"; + // _routerRepository.UpdateData(router); + // _taskService.UpdateData(task); + // } + //} + #endregion + task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt(); + WMSTaskDTO WMStask = _mapper.Map<WMSTaskDTO>(task); + _taskService.AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete); + HttpHelper.PostAsync(WMSInterfaceAddress.UpdateTaskStatus, WMStask.ToJson(), headers: new Dictionary<string, string>()); + } } } - #region MyRegion - - if (command != null && command.Status == (ushort)ConveyorStatus.Stored)//娣诲姞杈撻�佺嚎鐘舵�丆onveyorLineStatus enum - { - switch (childDeviceCode) - { - case "101": - { - RequestInbound(conveyorLine, command, childDeviceCode); - } - break; - case "104": - ConveyorLineInFinish(conveyorLine, command, childDeviceCode); - break; - //case "105": - // RequestOutbound(conveyorLine, command, childDeviceCode); - // break; - case "108": - ConveyorLineOutFinish(conveyorLine, command, childDeviceCode); - break; - //default: - // RequestInNextAddress(conveyorLine, command, childDeviceCode); - // RequestOutNextAddress(conveyorLine, command, childDeviceCode); - // break; - } - } - #endregion } catch (Exception ex) { @@ -98,15 +93,19 @@ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommandR command, string childDeviceCode) { - //Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode, command.Barcode); - Dt_Task task = _taskService.QueryConveyorLineTaskNum(conveyorLine.DeviceCode, childDeviceCode, command.TaskNum); + Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode, command.Barcode); + //Dt_Task task = _taskService.QueryConveyorLineTaskNum(conveyorLine.DeviceCode, childDeviceCode, command.TaskNum); if (task != null) { if (command.Spec > 0) { DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.Spec.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommandR.Spec)); - task.ExceptionMessage = deviceProtocolDetail?.ProtocolDetailDes; - _taskService.UpdateData(task); + string? Des = deviceProtocolDetail?.ProtocolDetailDes; + if (Des != task.ExceptionMessage) + { + task.ExceptionMessage = deviceProtocolDetail?.ProtocolDetailDes; + _taskService.UpdateData(task); + } return; } ConveyorLineDTO lineDTO = new ConveyorLineDTO() @@ -118,31 +117,50 @@ Weight = command.Weight, }; var content = _taskService.RequestWMSTask(lineDTO); - - if (content.Status) + if (!content.Status) { - task.CurrentAddress = childDeviceCode; - task.NextAddress = AppSettings.Configuration["OKAddress"]; - task.ExceptionMessage = null; - ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task); - taskCommand.WriterTrue = 1; - - if (conveyorLine.SendCommand(taskCommand, childDeviceCode)) - _taskService.UpdateTaskStatusToNext(task); + task.ExceptionMessage = content?.Message; + _taskService.UpdateData(task); + return; } - else + //if (content.Status) + //{ + task.CurrentAddress = childDeviceCode; + List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.TargetAddress); + if (routers.Count > 0) { - //if (content.Code == 404)//淇敼缁堢偣鍦板潃 - //{ - task.CurrentAddress = childDeviceCode; - task.NextAddress = AppSettings.Configuration["NGAddress"]; - task.ExceptionMessage = content.Message; - task.TaskState = (int)TaskInStatusEnum.InException; - ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task); - taskCommand.WriterTrue = 1; - if (conveyorLine.SendCommand(taskCommand, childDeviceCode)) _taskService.UpdateData(task); - //} + task.NextAddress = routers.FirstOrDefault().ChildPosi; } + //task.NextAddress = AppSettings.Configuration["OKAddress"]; + task.ExceptionMessage = null; + ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task); + taskCommand.WriterTrue = (short)command.inRead; + + if (conveyorLine.SendCommand(taskCommand, childDeviceCode)) + _taskService.UpdateTaskStatusToNext(task); + //} + //else + //{ + // //if (content.Code == 404)//淇敼缁堢偣鍦板潃 + // //{ + // task.CurrentAddress = childDeviceCode; + // task.NextAddress = AppSettings.Configuration["NGAddress"]; + // task.ExceptionMessage = content.Message; + // task.TaskState = (int)TaskInStatusEnum.InException; + // ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(task); + // taskCommand.WriterTrue = 1; + // if (conveyorLine.SendCommand(taskCommand, childDeviceCode)) _taskService.UpdateData(task); + // //} + //} + } + else + { + Dt_Task _Task = new Dt_Task(); + _Task.TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")); + _Task.CurrentAddress = childDeviceCode; + _Task.NextAddress = "1001"; + ConveyorLineTaskCommandW taskCommand = _mapper.Map<ConveyorLineTaskCommandW>(_Task); + taskCommand.WriterTrue = (short)command.inRead; } } @@ -178,7 +196,7 @@ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.Barcode, childDeviceCode); if (task != null) _taskService.UpdateTaskStatusToNext(task); - task = _taskService.QueryCompletedConveyorLineTask(command.TaskNum, childDeviceCode); + task = _taskService.QueryCompletedConveyorLineTask(command.Barcode, childDeviceCode); if (task != null && string.IsNullOrEmpty(task.TargetAddress)) { _taskService.StackerCraneRequestInbound(task); -- Gitblit v1.9.3