feat(任务服务): 扩展任务更新接口以支持地址信息
修改 UpdateTaskByStatusAsync 方法,接受 UpdateTaskDto 对象而非单独参数
在 UpdateTaskDto 中添加 NextAddress 和 CurrentAddress 字段
更新相关调用以传递地址信息
调整模拟器配置端口和协议模板
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # CLAUDE.md |
| | | |
| | | This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| | | |
| | | ## é¡¹ç®æ¦è¿° |
| | | |
| | | **WIDESEA** æ¯ä¸ä¸ªå·¥ä¸ä»å¨èªå¨åç³»ç»ï¼å
å«ä¸¤ä¸ªæ ¸å¿åç³»ç»ï¼ |
| | | |
| | | - **WCS**ï¼ä»åºæ§å¶ç³»ç»ï¼ï¼ç´æ¥æ§å¶å åæºãè¾éçº¿ãæºå¨äººãç©¿æ¢è½¦çç©ç设å¤ï¼ä¸ PLC éä¿¡ |
| | | - **WMS**ï¼ä»åºç®¡çç³»ç»ï¼ï¼ç®¡çåºåãå
¥åºãåºåºä»»å¡ãçç¹çä¸å¡é»è¾ |
| | | |
| | | 两个系ç»éè¿ HTTP API 交äºï¼WMS ä¾èµ WCS å®æè®¾å¤è°åº¦ã |
| | | |
| | | ## æå»ºå½ä»¤ |
| | | |
| | | ```bash |
| | | # WCS å端ï¼ç«¯å£ 9292ï¼ |
| | | dotnet build WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln |
| | | dotnet run --project WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj |
| | | |
| | | # WMS å端ï¼ç«¯å£ 9291ï¼ |
| | | dotnet build WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln |
| | | dotnet run --project WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj |
| | | |
| | | # WCS å端 |
| | | cd WCS/WIDESEAWCS_Client && npm run serve |
| | | |
| | | # WMS å端 |
| | | cd WMS/WIDESEA_WMSClient && npm run serve |
| | | |
| | | # S7 模æå¨ |
| | | cd æµè¯å·¥å
·/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web && npm run dev |
| | | ``` |
| | | |
| | | ## æ¶ææ¦è§ |
| | | |
| | | ``` |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | â WCS (ç«¯å£ 9292) â |
| | | â âââââââââââââââ ââââââââââââââââ ââââââââââââââââââââââ â |
| | | â â Quartz â â Communicator â â Redis L1+L2 â â |
| | | â â Jobs ââ â (PLCåè®®) â â Cache â â |
| | | â âââââââââââââââ ââââââââââââââââ ââââââââââââââââââââââ â |
| | | â â â |
| | | â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â |
| | | â â TcpSocketServer (ç«¯å£ 2000) / WebSocket (ç«¯å£ 9296) â â |
| | | â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | â HTTP API |
| | | â |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | â WMS (ç«¯å£ 9291) â |
| | | â âââââââââââââââ ââââââââââââââââ ââââââââââââââââââââââ â |
| | | â â Tasks â â Stock â â Inbound/ â â |
| | | â â Service â â Service â â Outbound â â |
| | | â âââââââââââââââ ââââââââââââââââ ââââââââââââââââââââââ â |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | ``` |
| | | |
| | | ## WCS 项ç®ç»æ |
| | | |
| | | | é¡¹ç® | ç¨é | |
| | | |------|------| |
| | | | `WIDESEAWCS_Server` | 主 API å
¥å£ï¼ç«¯å£ 9292ï¼ | |
| | | | `WIDESEAWCS_Core` | æ¡æ¶ï¼æ°æ®åºãç¼åãDIãæ¥å¿ï¼ | |
| | | | `WIDESEAWCS_Common` | 常éãæä¸¾ãRedis é® | |
| | | | `WIDESEAWCS_Model` | å®ä½æ¨¡å | |
| | | | `WIDESEAWCS_DTO` | æ°æ®ä¼ è¾å¯¹è±¡ | |
| | | | `WIDESEAWCS_Communicator` | å·¥ä¸åè®®ï¼ModbusãS7ãOmron çï¼ | |
| | | | `WIDESEAWCS_Tasks` | åå°è®¾å¤æ§å¶ä½ä¸ | |
| | | | `WIDESEAWCS_QuartzJob` | Quartz.NET è°åº¦ | |
| | | |
| | | **è¯¦ç» WCS è§è**ï¼è§ `WCS/WIDESEAWCS_Server/CLAUDE.md` |
| | | |
| | | ## WMS 项ç®ç»æ |
| | | |
| | | | é¡¹ç® | ç¨é | |
| | | |------|------| |
| | | | `WIDESEA_WMSServer` | 主 API å
¥å£ï¼ç«¯å£ 9291ï¼ | |
| | | | `WIDESEA_Core` | æ¡æ¶å·¥å
· | |
| | | | `WIDESEA_Common` | 常éãæä¸¾ | |
| | | | `WIDESEA_Model` | å®ä½æ¨¡å | |
| | | | `WIDESEA_*Service` | ä¸å¡é»è¾æå¡ | |
| | | |
| | | ## å
³é®è®¾è®¡ |
| | | |
| | | - **ORM**ï¼SqlSugarï¼æ¯æå¤æ°æ®åºï¼ |
| | | - **ä¾èµæ³¨å
¥**ï¼Autofacï¼éè¿ `AutofacModuleRegister` 注å |
| | | - **ç¼å**ï¼Redis L1ï¼å
åï¼+ L2ï¼Redisï¼æ··åç¼å |
| | | - **è°åº¦**ï¼Quartz.NET |
| | | - **宿¶éä¿¡**ï¼SignalR WebSocket |
| | | - **设å¤åè®®**ï¼åå¨å¨æ°æ®åº `Dt_DeviceProtocol` 表ï¼éé
ç½®æä»¶ |
| | | |
| | | ## ææ¯æ |
| | | |
| | | - **å端**ï¼.NET 6/8ï¼ASP.NET Coreï¼C# 12 |
| | | - **å端**ï¼Vue 3ï¼Element Plusï¼Viteï¼Pinia |
| | | - **æ°æ®åº**ï¼SQL Server |
| | | - **ç¼å**ï¼Redis |
| | | |
| | | ## 注éä¸ææ¡£ (强å¶) |
| | | |
| | | - **XML ææ¡£æ³¨é**: ææ `public` ç±»ãæ¥å£ãæ¹æ³ã屿§**å¿
é¡»**å
å« XML ææ¡£æ³¨é (`/// <summary>...</summary>`)ï¼è§£éå
¶ç¨éãåæ°åè¿åå¼ã |
| | | - **è¡å
注é**: 对äºå¤æçä¸å¡é»è¾ãç®æ³å®ç°æéç´è§ç代ç åï¼**å¿
é¡»**æ·»å `//` è¡å
注éè§£éâ为ä»ä¹è¿ä¹åâã |
| | | - **TODO æ è®°**: å¦æä»£ç æªå®æææä¸´æ¶æ¹æ¡ï¼å¿
é¡»ä½¿ç¨ `// TODO: 说æ` æ è®°ã |
| | | |
| | | ## éç¨è§è |
| | | |
| | | - **弿¥ç¼ç¨**: ææ I/O æä½å¿
é¡»ä½¿ç¨ `async/await`ãåºä»£ç è¯·ä½¿ç¨ `ConfigureAwait(false)`ã |
| | | |
| | | - **å½å**: |
| | | |
| | | - æ¥å£ä»¥ "I" å¼å¤´ (ä¾å¦: `IUserService`)ã |
| | | - ç±»åãæ¹æ³åä½¿ç¨ **PascalCase**ã |
| | | - ç§æåæ®µãå±é¨åéä½¿ç¨ **camelCase**ã |
| | | |
| | | - **å½å空é´**: ä½¿ç¨ **æä»¶ä½ç¨åå½å空é´** (`namespace MyApp.Api;`)ã |
| | | |
| | | - å½éè¦å¯¹ä¸¤ä¸ªæä»¥ä¸çæ°æ®åºæ§è¡ä¿®æ¹/æ·»å æä½å¹¶ä¿è¯äºå¡ä¸è´æ§æ¶ï¼è¯·ä½¿ç¨å·¥ä½åå
管çå¨ï¼`IUnitOfWorkManage`ï¼çäºå¡æ¹æ³ï¼ |
| | | |
| | | - **åæ¥åºæ¯**ï¼è°ç¨ `BeginTran(Func<WebResponseContent> func)`ï¼ä¼ å
¥åæ¥å§æã |
| | | - **弿¥åºæ¯**ï¼è°ç¨ `BeginTranAsync(Func<Task<WebResponseContent>> funcAsync)`ï¼ä¼ å
¥å¼æ¥å§æã |
| | | |
| | | **注æ**ï¼`IUnitOfWorkManage` ééè¿ä¾èµæ³¨å
¥ï¼DIï¼è·åãè¯¥æ¹æ³ä¼èªå¨ç®¡çäºå¡çæäº¤ä¸åæ»ï¼åªéç¡®ä¿æææ°æ®åºæä½å¨ä¼ å
¥çå§æå
宿ã |
| | | |
| | | ## ð« 严ç¦äºé¡¹ |
| | | |
| | | - **严ç¦** çææ²¡ææ³¨éç代ç (å°¤å
¶æ¯å
Œ
±æ¹æ³)ã |
| | | - **严ç¦** ä½¿ç¨ `Task.Result` æ `Task.Wait()`ã |
| | | - **严ç¦** å¨å¼æ¥ä¸ä¸æä¸ä½¿ç¨ `.ToList()` (å¿
é¡»ç¨ `.ToListAsync()`)ã |
| | | - **严ç¦** ç´æ¥æ´é²å®ä½ (Entity)ï¼å¿
é¡»ä½¿ç¨ DTOã |
| | | - **严ç¦** æè· `Exception` èä¸è®°å½æ¥å¿ã |
| | |
| | | /// newStatus - æ°ç¶æï¼å¿
填项ï¼ç¨äºæå®ä»»å¡çæ°ç¶æ |
| | | /// </summary> |
| | | public int NewStatus { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// NextAddress - ä¸ä¸å°åï¼å¿
填项ï¼ç¨äºæå®ä»»å¡çä¸ä¸ä½ç½® |
| | | /// </summary> |
| | | public string? NextAddress { get; set; } |
| | | |
| | | /// <summary> |
| | | /// currentAddress - å½åå°åï¼å¿
填项ï¼ç¨äºæå®ä»»å¡çå½åä½ç½® |
| | | /// </summary> |
| | | public string? CurrentAddress { get; set; } |
| | | } |
| | | } |
| | |
| | | { |
| | | var result = _httpClientHelper.Post<WebResponseContent>( |
| | | nameof(ConfigKey.UpdateTaskByStatus), |
| | | new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus }.ToJson()); |
| | | new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson()); |
| | | |
| | | if (!result.IsSuccess || !result.Data.Status) |
| | | return WebResponseContent.Instance.Error($"è°ç¨WMSæ¥å£æ´æ°ä»»å¡ç¶æå¤±è´¥,ä»»å¡å·:ã{task.TaskNum}ã,é误信æ¯:ã{result.Data?.Message}ã"); |
| | |
| | | { |
| | | var result = _httpClientHelper.Post<WebResponseContent>( |
| | | nameof(ConfigKey.UpdateTaskByStatus), |
| | | new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus }.ToJson()); |
| | | new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson()); |
| | | |
| | | if (!result.IsSuccess || !result.Data.Status) |
| | | return WebResponseContent.Instance.Error($"è°ç¨WMSæ¥å£æ´æ°ä»»å¡ç¶æå¤±è´¥,ä»»å¡å·:ã{task.TaskNum}ã,é误信æ¯:ã{result.Data?.Message}ã"); |
| | |
| | | { |
| | | var result = _httpClientHelper.Post<WebResponseContent>( |
| | | nameof(ConfigKey.UpdateTaskByStatus), |
| | | new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus }.ToJson()); |
| | | new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson()); |
| | | |
| | | if (!result.IsSuccess || !result.Data.Status) |
| | | return WebResponseContent.Instance.Error($"è°ç¨WMSæ¥å£æ´æ°ä»»å¡ç¶æå¤±è´¥,ä»»å¡å·:ã{task.TaskNum}ã,é误信æ¯:ã{result.Data?.Message}ã"); |
| | |
| | | // åå
¥èµ·å§å°å |
| | | conveyorLine.SetValue(ConveyorLineDBNameNew.Source, short.Parse(task.SourceAddress ?? "0"), childDeviceCode); |
| | | // åå
¥ç®æ å°å |
| | | conveyorLine.SetValue(ConveyorLineDBNameNew.Target, short.Parse(task.TargetAddress ?? "0"), childDeviceCode); |
| | | conveyorLine.SetValue(ConveyorLineDBNameNew.Target, short.Parse(task.NextAddress ?? "0"), childDeviceCode); |
| | | |
| | | // æ´æ°ä»»å¡ç¶æå°ä¸ä¸é¶æ®µ |
| | | var updateResult = _taskService.UpdateTaskStatusToNext(task); |
| | |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ°ç¶æä¸è½ä¸ºç©º")] |
| | | public int NewStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// NextAddress - ä¸ä¸å°åï¼å¿
填项ï¼ç¨äºæå®ä»»å¡çä¸ä¸ä½ç½® |
| | | /// </summary> |
| | | public string? NextAddress { get; set; } |
| | | |
| | | /// <summary> |
| | | /// currentAddress - å½åå°åï¼å¿
填项ï¼ç¨äºæå®ä»»å¡çå½åä½ç½® |
| | | /// </summary> |
| | | public string? CurrentAddress { get; set; } |
| | | } |
| | | } |
| | |
| | | /// <param name="taskId"></param> |
| | | /// <param name="newStatus"></param> |
| | | /// <returns></returns> |
| | | Task<WebResponseContent> UpdateTaskByStatusAsync(int taskId, int newStatus); |
| | | Task<WebResponseContent> UpdateTaskByStatusAsync(UpdateTaskDto taskDto); |
| | | |
| | | /// <summary> |
| | | /// å åæºåæ¾è´§å®æåç©æµéç¥åæå容æå®æä¿¡å· |
| | |
| | | /// <param name="taskId"></param> |
| | | /// <param name="newStatus"></param> |
| | | /// <returns></returns> |
| | | public async Task<WebResponseContent> UpdateTaskByStatusAsync(int taskId, int newStatus) |
| | | public async Task<WebResponseContent> UpdateTaskByStatusAsync(UpdateTaskDto taskDto) |
| | | { |
| | | try |
| | | { |
| | | var tasks = await BaseDal.QueryFirstAsync(s => s.TaskNum == taskId); |
| | | if (tasks == null) |
| | | var taskInfo = await BaseDal.QueryFirstAsync(s => s.TaskNum == taskDto.Id); |
| | | if (taskInfo == null) |
| | | return WebResponseContent.Instance.Error("æªæ¾å°å¯¹åºçä»»å¡"); |
| | | |
| | | tasks.TaskStatus = newStatus; |
| | | await BaseDal.UpdateDataAsync(tasks); |
| | | taskInfo.TaskStatus = taskDto.NewStatus; |
| | | taskInfo.NextAddress = taskDto.NextAddress; |
| | | taskInfo.CurrentAddress = taskDto.CurrentAddress; |
| | | await BaseDal.UpdateDataAsync(taskInfo); |
| | | |
| | | return WebResponseContent.Instance.OK("ä¿®æ¹æå", tasks); |
| | | return WebResponseContent.Instance.OK("ä¿®æ¹æå", taskInfo); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | }; |
| | | |
| | | await _unitOfWorkManage.BeginTranAsync(async () => |
| | | return await _unitOfWorkManage.BeginTranAsync(async () => |
| | | { |
| | | // 4. ä¿åå°æ°æ®åº |
| | | var result = await BaseDal.AddDataAsync(task) > 0; |
| | |
| | | [HttpGet, HttpPost, Route("UpdateTaskByStatus"), AllowAnonymous] |
| | | public async Task<WebResponseContent?> UpdateTaskByStatusAsync([FromBody] UpdateTaskDto taskDto) |
| | | { |
| | | return await Service.UpdateTaskByStatusAsync(taskDto.Id, taskDto.NewStatus); |
| | | return await Service.UpdateTaskByStatusAsync(taskDto); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | "id": "1001", |
| | | "name": "A\u533A_\u4E00\u6CE8\u8F93\u9001\u7EBF", |
| | | "plcType": "S71500", |
| | | "port": 105, |
| | | "port": 103, |
| | | "activationKey": "", |
| | | "autoStart": false, |
| | | "protocolTemplateId": "protocol-1001", |
| | |
| | | "id": "1002", |
| | | "name": "A\u533A_\u6362\u76D8\u8F93\u9001\u7EBF", |
| | | "plcType": "S71500", |
| | | "port": 108, |
| | | "port": 104, |
| | | "activationKey": "", |
| | | "autoStart": false, |
| | | "protocolTemplateId": "protocol-1002", |
| | |
| | | "dbNumber": 50, |
| | | "offset": 18, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 22, |
| | | "direction": 2 |
| | | }, |
| | |
| | | "dbNumber": 50, |
| | | "offset": 578, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 22, |
| | | "direction": 2 |
| | | }, |
| | |
| | | "dbNumber": 50, |
| | | "offset": 1378, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 22, |
| | | "direction": 2 |
| | | }, |
| | |
| | | "dbNumber": 50, |
| | | "offset": 1618, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "length": 22, |
| | | "dataType": 0, |
| | | "length": 20, |
| | | "direction": 2 |
| | | } |
| | | ] |
| | |
| | | "dbNumber": 50, |
| | | "offset": 18, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "length": 22, |
| | | "dataType": 0, |
| | | "length": 20, |
| | | "direction": 2 |
| | | }, |
| | | { |
| | | "fieldKey": "11010_TaskNo", |
| | | "dbNumber": 50, |
| | | "offset": 400, |
| | | "offset": 360, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_Source", |
| | | "dbNumber": 50, |
| | | "offset": 402, |
| | | "offset": 362, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_Target", |
| | | "dbNumber": 50, |
| | | "offset": 404, |
| | | "offset": 364, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_BoxType", |
| | | "dbNumber": 50, |
| | | "offset": 406, |
| | | "offset": 366, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_CV_State", |
| | | "dbNumber": 50, |
| | | "offset": 407, |
| | | "offset": 367, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_CV_ERRCode", |
| | | "dbNumber": 50, |
| | | "offset": 408, |
| | | "offset": 368, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_WCS_STB", |
| | | "dbNumber": 50, |
| | | "offset": 409, |
| | | "offset": 369, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_WCS_ACK", |
| | | "dbNumber": 50, |
| | | "offset": 410, |
| | | "offset": 370, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_PLC_STB", |
| | | "dbNumber": 50, |
| | | "offset": 411, |
| | | "offset": 371, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_PLC_ACK", |
| | | "dbNumber": 50, |
| | | "offset": 412, |
| | | "offset": 372, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_PLC_REQ", |
| | | "dbNumber": 50, |
| | | "offset": 413, |
| | | "offset": 373, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_WCS_ERRCode", |
| | | "dbNumber": 50, |
| | | "offset": 414, |
| | | "offset": 374, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_WCS_Special", |
| | | "dbNumber": 50, |
| | | "offset": 415, |
| | | "offset": 375, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_Equ_Auto", |
| | | "dbNumber": 50, |
| | | "offset": 416, |
| | | "offset": 376, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_Last_pallet", |
| | | "dbNumber": 50, |
| | | "offset": 417, |
| | | "offset": 377, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11010_Barcode", |
| | | "dbNumber": 50, |
| | | "offset": 418, |
| | | "offset": 378, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "length": 22, |
| | | "dataType": 0, |
| | | "length": 20, |
| | | "direction": 2 |
| | | }, |
| | | { |
| | | "fieldKey": "11020_TaskNo", |
| | | "dbNumber": 50, |
| | | "offset": 800, |
| | | "offset": 760, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_Source", |
| | | "dbNumber": 50, |
| | | "offset": 802, |
| | | "offset": 762, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_Target", |
| | | "dbNumber": 50, |
| | | "offset": 804, |
| | | "offset": 764, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_BoxType", |
| | | "dbNumber": 50, |
| | | "offset": 806, |
| | | "offset": 766, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_CV_State", |
| | | "dbNumber": 50, |
| | | "offset": 807, |
| | | "offset": 767, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_CV_ERRCode", |
| | | "dbNumber": 50, |
| | | "offset": 808, |
| | | "offset": 768, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_WCS_STB", |
| | | "dbNumber": 50, |
| | | "offset": 809, |
| | | "offset": 769, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_WCS_ACK", |
| | | "dbNumber": 50, |
| | | "offset": 810, |
| | | "offset": 770, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_PLC_STB", |
| | | "dbNumber": 50, |
| | | "offset": 811, |
| | | "offset": 771, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_PLC_ACK", |
| | | "dbNumber": 50, |
| | | "offset": 812, |
| | | "offset": 772, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_PLC_REQ", |
| | | "dbNumber": 50, |
| | | "offset": 813, |
| | | "offset": 773, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_WCS_ERRCode", |
| | | "dbNumber": 50, |
| | | "offset": 814, |
| | | "offset": 774, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_WCS_Special", |
| | | "dbNumber": 50, |
| | | "offset": 815, |
| | | "offset": 775, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_Equ_Auto", |
| | | "dbNumber": 50, |
| | | "offset": 816, |
| | | "offset": 776, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_Last_pallet", |
| | | "dbNumber": 50, |
| | | "offset": 817, |
| | | "offset": 777, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11020_Barcode", |
| | | "dbNumber": 50, |
| | | "offset": 818, |
| | | "offset": 778, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 22, |
| | | "direction": 2 |
| | | }, |
| | | { |
| | | "fieldKey": "11026_TaskNo", |
| | | "dbNumber": 50, |
| | | "offset": 1040, |
| | | "offset": 1000, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_Source", |
| | | "dbNumber": 50, |
| | | "offset": 1042, |
| | | "offset": 1002, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_Target", |
| | | "dbNumber": 50, |
| | | "offset": 1044, |
| | | "offset": 1004, |
| | | "bit": 1, |
| | | "dataType": 1, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_BoxType", |
| | | "dbNumber": 50, |
| | | "offset": 1046, |
| | | "offset": 1006, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_CV_State", |
| | | "dbNumber": 50, |
| | | "offset": 1047, |
| | | "offset": 1007, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_CV_ERRCode", |
| | | "dbNumber": 50, |
| | | "offset": 1048, |
| | | "offset": 1008, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_WCS_STB", |
| | | "dbNumber": 50, |
| | | "offset": 1049, |
| | | "offset": 1009, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_WCS_ACK", |
| | | "dbNumber": 50, |
| | | "offset": 1050, |
| | | "offset": 1010, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_PLC_STB", |
| | | "dbNumber": 50, |
| | | "offset": 1051, |
| | | "offset": 1011, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_PLC_ACK", |
| | | "dbNumber": 50, |
| | | "offset": 1052, |
| | | "offset": 1012, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_PLC_REQ", |
| | | "dbNumber": 50, |
| | | "offset": 1053, |
| | | "offset": 1013, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_WCS_ERRCode", |
| | | "dbNumber": 50, |
| | | "offset": 1054, |
| | | "offset": 1014, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_WCS_Special", |
| | | "dbNumber": 50, |
| | | "offset": 1055, |
| | | "offset": 1015, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_Equ_Auto", |
| | | "dbNumber": 50, |
| | | "offset": 1056, |
| | | "offset": 1016, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_Last_pallet", |
| | | "dbNumber": 50, |
| | | "offset": 1057, |
| | | "offset": 1017, |
| | | "bit": 1, |
| | | "dataType": 0, |
| | | "length": 1, |
| | |
| | | { |
| | | "fieldKey": "11026_Barcode", |
| | | "dbNumber": 50, |
| | | "offset": 1058, |
| | | "offset": 1018, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 22, |
| | | "direction": 2 |
| | | } |
| | |
| | | "dbNumber": 50, |
| | | "offset": 18, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 20, |
| | | "direction": 2 |
| | | }, |
| | |
| | | "dbNumber": 50, |
| | | "offset": 338, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 20, |
| | | "direction": 2 |
| | | }, |
| | |
| | | "dbNumber": 50, |
| | | "offset": 618, |
| | | "bit": 1, |
| | | "dataType": 3, |
| | | "dataType": 0, |
| | | "length": 22, |
| | | "direction": 2 |
| | | } |