From a8be8f9371b6fc03b66d212b2902d08f93b087dd Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期三, 02 七月 2025 13:55:55 +0800 Subject: [PATCH] 新增任务查询方法并优化逻辑在 `ITaskService.cs` 中添加了新的 `QueryExecutingConveyorLineTask` 方法,支持根据托盘号和下一地址查询任务,同时调整了原有方法的参数以保留旧功能。在 `TaskService.cs` 中新增重载方法,允许根据下一地址和条形码查询任务。在 `CommonConveyorLine_GWJob.cs` 中更新了 `ConveyorLineOutFinish` 方法,简化了任务查询逻辑并删除了多余的注释代码。同时,增加了对 `taskNext` 的处理逻辑,确保在任务未找到时的相应处理,并更新在途数据的逻辑,提升数据一致性和准确性。 --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs | 124 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 123 insertions(+), 1 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs index 3aee210..3562668 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs @@ -84,5 +84,127 @@ //{ // Type type = typeof(); //} + + + // 灏佽妫�鏌ラ�昏緫 + private bool DeviceProtocolExists(int DeviceID, string DeviceChildCode, decimal DeviceProOffset) + { + return BaseDal.QueryFirst(x => x.DeviceId == DeviceID && x.DeviceChildCode == DeviceChildCode && x.DeviceProOffset == DeviceProOffset) != null; + } + + // 灏佽瀵硅薄鍒涘缓閫昏緫 + private Dt_DeviceProtocol CreateDeviceProtocol(int DeviceID, string DeviceChildCode, decimal DeviceProOffset, int additionalOffset, string dataType, int dataLength, string paramName, string DeviceProDataBlock, string DeviceProParamType) + { + decimal DeviceProOffsets = DeviceProOffset + additionalOffset; + return new Dt_DeviceProtocol + { + DeviceId = DeviceID, + DeviceChildCode = DeviceChildCode, + DeviceProDataBlock = DeviceProDataBlock, + DeviceProOffset = DeviceProOffsets, + DeviceProDataLength = dataLength, + DeviceProDataType = dataType, + DeviceProParamName = paramName, + DeviceProParamType = DeviceProParamType, + DeviceProParamDes = "1", + DeviceProRemark = "", + Creater = "admin", + CreateDate = DateTime.Now, + }; + } + + public WebResponseContent AddAfterDeviceProtocol(int DeviceID, string DeviceChildCode, decimal DeviceProOffset) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (DeviceProtocolExists(DeviceID, DeviceChildCode, DeviceProOffset)) + { + throw new InvalidOperationException("宸插瓨鍦ㄨ鑺傜偣鏄庣粏"); + } + + var protocols = new List<Dt_DeviceProtocol> + { + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 0, "int", 1, "ConveyorLineTargetAddress","DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 2, "int", 1, "ConveyorLineTaskNum", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 6, "string", 25, "ConveyorLineBarcode", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 34, "int", 1, "Reserve1", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 36, "int", 1, "Reserve2", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 38, "int", 1, "Reserve3", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 40, "byte", 1, "InteractiveSignal", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 42, "int", 1, "HasPallet", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 44, "int", 1, "ConveyorLineAlarm", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 46, "int", 1, "ResponState", "DB1000", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffset, 48, "int", 1, "Reserve5", "DB1000", "DeviceCommand") + + }; + var result = BaseDal.AddData(protocols); + return content.OK(data: result); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + + } + + public WebResponseContent AddBeforeDeviceProtocol(int DeviceID, string DeviceChildCode, decimal DeviceProOffsetRead, decimal DeviceProOffsetWrite) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (DeviceProtocolExists(DeviceID, DeviceChildCode, DeviceProOffsetRead)) + { + throw new InvalidOperationException("宸插瓨鍦ㄨ鑺傜偣鏄庣粏"); + } + + var protocols = new List<Dt_DeviceProtocol> + { + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 0, "int", 1, "InteractiveSignal","DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 2, "string", 25, "ConveyorLineBarcode", "DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 30, "dint", 1, "ConveyorLineTargetAddress", "DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 34, "dint", 1, "ConveyorLineTaskNum", "DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 38, "dint", 1, "ConveyorLineAlarm", "DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetWrite, 0, "w", 1, "WriteInteractiveSignal", "DB901", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetWrite, 2, "string", 25, "WriteConveyorLineBarcode", "DB901", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetWrite, 30, "dint", 1, "WriteConveyorLineTargetAddress", "DB901", "DeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetWrite, 34, "dint", 1, "WriteConveyorLineTaskNum", "DB901", "DeviceCommand"), + + }; + var result = BaseDal.AddData(protocols); + return content.OK(data: result); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + + public WebResponseContent AddBeforReadDeviceProtocol(int DeviceID, string DeviceChildCode, decimal DeviceProOffsetRead) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (DeviceProtocolExists(DeviceID, DeviceChildCode, DeviceProOffsetRead)) + { + throw new InvalidOperationException("宸插瓨鍦ㄨ鑺傜偣鏄庣粏"); + } + + var protocols = new List<Dt_DeviceProtocol> + { + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 0, "int", 1, "InteractiveSignal","DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 2, "string", 25, "ConveyorLineBarcode", "DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 30, "dint", 1, "ConveyorLineTargetAddress", "DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 34, "dint", 1, "ConveyorLineTaskNum", "DB900", "ReadDeviceCommand"), + CreateDeviceProtocol(DeviceID, DeviceChildCode, DeviceProOffsetRead, 38, "dint", 1, "ConveyorLineAlarm", "DB900", "ReadDeviceCommand"), + }; + var result = BaseDal.AddData(protocols); + return content.OK(data: result); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } } -} +} \ No newline at end of file -- Gitblit v1.9.3