wanshenmean
2 天以前 05999b9c77f009ac9a7e98366bc3d23fbb8e83e7
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
@@ -1,3 +1,4 @@
using Masuit.Tools;
using Newtonsoft.Json;
using Serilog;
using WIDESEA_Core;
@@ -137,6 +138,16 @@
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="robotCrane"></param>
        /// <returns></returns>
        public Dt_RobotTask? GetRobotTask(RobotCraneDevice robotCrane)
        {
            return _robotTaskService.Repository.QueryFirst(x => x.RobotRoadway == robotCrane.DeviceCode);
        }
        /// <summary>
        /// 删除机器人任务
        /// </summary>
        /// <remarks>
@@ -199,6 +210,33 @@
                    // 发送失败,记录 Error 日志
                    QuartzLogHelper.LogError(_logger, $"下发取货指令失败,指令: {taskString},设备: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
                }
            }
        }
        public async Task SendSocketRobotNumAsync(Dt_RobotTask task, RobotSocketState state, bool isPick = true)
        {
            string taskString = string.Empty;
            if (isPick)
                // 构建指令,格式:PickTotalNum,{数量}||PutTotalNum,{数量}
                taskString = $"PickTotalNum,{task.RobotTaskTotalNum + state.RobotTaskTotalNum}";
            else
                // 构建指令,格式:PutTotalNum,{数量}||PutTotalNum,{数量}
                taskString = $"PutTotalNum,{task.RobotTaskTotalNum + state.RobotTaskTotalNum}";
            // 通过 Socket 网关发送指令到机器人客户端
            bool result = await _socketClientGateway.SendToClientAsync(state.IPAddress, taskString);
            if (result)
            {
                // 发送成功,记录 Info 日志
                QuartzLogHelper.LogInfo(_logger, $"下发总数指令成功,指令: {taskString},设备: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
                //await _robotTaskService.UpdateRobotTaskAsync(task);
            }
            else
            {
                // 发送失败,记录 Error 日志
                QuartzLogHelper.LogError(_logger, $"下发总数指令失败,指令: {taskString},设备: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
            }
        }
@@ -477,16 +515,18 @@
                    case RobotTaskTypeEnum.GroupPallet:
                        warehouseId = 1;
                        roadway = "GWSC1";
                        SourceAddress = currentTask.RobotSourceAddressLineCode;
                        TargetAddress = currentTask.RobotTargetAddressLineCode;
                        break;
                    case RobotTaskTypeEnum.ChangePallet:
                        // 换盘/拆盘场景:托盘需要入库
                        taskType = TaskTypeEnum.InEmpty.GetHashCode();  // 空托盘入库
                        PalletCode = currentTask.RobotSourceAddressPalletCode;  // 使用源地址的托盘码
                        if (isRoadway == "HWSC1")
                        if (isRoadway == "HCSC1")
                        {
                            warehouseId = 2;
                            roadway = "HWSC1";
                            roadway = "HCSC1";
                        }
                        else if (isRoadway == "GWSC1")
                        {
@@ -494,6 +534,8 @@
                            roadway = "GWSC1";
                        }
                        SourceAddress = currentTask.RobotSourceAddressLineCode;
                        TargetAddress = currentTask.RobotTargetAddressLineCode;
                        break;
                    case RobotTaskTypeEnum.SplitPallet:
                        // 换盘/拆盘场景:托盘需要入库
@@ -502,6 +544,9 @@
                        warehouseId = 3;
                        roadway = "CWSC1";
                        SourceAddress = currentTask.RobotSourceAddressLineCode;
                        TargetAddress = currentTask.RobotTargetAddressLineCode;
                        break;
                }
            }
@@ -515,10 +560,10 @@
                        taskType = TaskTypeEnum.Inbound.GetHashCode();  // 成品入库
                        PalletCode = currentTask.RobotTargetAddressPalletCode;  // 使用目标地址的托盘码
                        if (isRoadway == "HWSC1")
                        if (isRoadway == "HCSC1")
                        {
                            warehouseId = 2;
                            roadway = "HWSC1";
                            roadway = "HCSC1";
                        }
                        else if (isRoadway == "GWSC1")
                        {
@@ -639,7 +684,7 @@
                        // 电池条码:如果状态中有条码列表,取对应位置的条码;否则为空
                        //CellBarcode = state.CellBarcode?.Count > 0 ? state.CellBarcode[x - 1] : ""
                        CellBarcode = state.CellBarcode[idx].ToString()
                        CellBarcode = !state.CellBarcode.IsNullOrEmpty() ? state.CellBarcode[idx].ToString() ?? string.Empty : string.Empty
                    })
                    .ToList()
            };