刘磊
20 小时以前 373c52bea19dd631687453b4d6cb711ccf55b73a
同步
已修改6个文件
238 ■■■■■ 文件已修改
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IDt_StationManagerService.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs 136 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/Partial/Method.cs
@@ -21,5 +21,10 @@
            return BaseDal.QueryFirst(x => x.stationChildCode == ChildCode && x.stationArea == area && x.stationStatus == "1");
        }
        public List<Dt_StationManager> GetStationInfoByOCV(string ChildCode, int stationType)
        {
            return BaseDal.QueryData(x => x.stationChildCode == ChildCode && x.stationType == stationType && x.stationStatus == "1").ToList();
        }
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IDt_StationManagerService.cs
@@ -39,5 +39,13 @@
        /// <param name="area"></param>
        /// <returns></returns>
        Dt_StationManager GetStationInfoByChildCode(string ChildCode, string area);
        /// <summary>
        /// 根据子设备编号和站台类型 获取启用的站台
        /// </summary>
        /// <param name="ChildCode">设备PLC编号</param>
        /// <param name="sttionType">站台类型</param>
        /// <returns></returns>
        List<Dt_StationManager> GetStationInfoByOCV(string ChildCode, int sttionType);
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_CW/CommonConveyorLine_CWJob.cs
@@ -118,8 +118,8 @@
                    #region 路由方式
                    List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
                    DateTime dateTime = DateTime.Now;
                    Console.WriteLine($"循环开始时间{dateTime}");
                    //DateTime dateTime = DateTime.Now;
                    //Console.WriteLine($"循环开始时间{dateTime}");
                    foreach (string childDeviceCode in childDeviceCodes)
                    {
                        //Thread.Sleep(1000);
@@ -188,7 +188,7 @@
                    }
                    DateTime ENDdateTime = DateTime.Now;
                    Console.WriteLine($"循环结束时间{ENDdateTime}");
                    //Console.WriteLine($"循环结束时间{ENDdateTime}");
                    #endregion 路由方式
                }
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs
@@ -52,7 +52,7 @@
namespace WIDESEAWCS_Tasks
{
    //[DisallowConcurrentExecution]
    [DisallowConcurrentExecution]
    public partial class CommonConveyorLine_GWJob : JobBase, IJob
    {
        public readonly ITaskService _taskService;
@@ -69,7 +69,7 @@
        private readonly IDeviceInfoRepository _deviceInfoRepository;
        private static List<string>? userTokenIds;
        private static List<int>? userIds;
        private static List<string> childCodeList = new List<string>();
        //private static List<string> childCodeList = new List<string>();
        public CommonConveyorLine_GWJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository, ISys_ConfigService sys_ConfigService, IDt_StationManagerRepository stationManagerRepository, ICacheService cacheService, INoticeService noticeService, IDt_needBarcodeRepository needBarcodeRepository, IDeviceInfoRepository deviceInfoRepository)
        {
@@ -118,71 +118,77 @@
                    #region 路由方式
                    List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
                    //DateTime dateTime = DateTime.Now;
                    //Console.WriteLine($"循环开始时间{dateTime}");
                    foreach (string childDeviceCode in childDeviceCodes)
                    {
                        if (childCodeList.Contains(childDeviceCode))
                        //Thread.Sleep(1000);
                        //if (childCodeList.Contains(childDeviceCode))
                        //{
                        //    Console.WriteLine($"当前{childDeviceCode}执行中,已跳过");
                        //    continue;
                        //}
                        //childCodeList.Add(childDeviceCode);
                        //Console.WriteLine(childDeviceCode);
                        ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode);
                        if (command == null) continue;
                        //if (command.InteractiveSignal == 0 && command.HasPallet != 1) continue;
                        if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = "";
                        DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString());
                        if (deviceProtocolDetails != null)
                        {
                            MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType);
                            if (method != null)
                            {
                                method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
                            }
                        }
                        //if (childDeviceCode == "1670" || childDeviceCode == "1666" || childDeviceCode == "1548" || childDeviceCode == "1448")
                        //{
                        //    Platform platform = _platFormRepository.QueryFirst(x => x.DeviceCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active");
                        //    if (platform != null)
                        //    {
                        //        if (command.HasPallet != 1)
                        //        {
                        //            MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
                        //            if (method != null)
                        //            {
                        //                //var strings = platform.Location.Split(',').ToList();
                        //                int count = 1;
                        //                method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
                        //            }
                        //        }
                        //    }
                        //}
                        //childCodeList.Remove(childDeviceCode);
                        #region 调用事件总线通知前端
                        var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken");
                        if (tokenInfos == null || !tokenInfos.Any())
                        {
                            //throw new Exception(conveyorLine.DeviceName + "缓存中未找到Token缓存");
                            continue;
                        }
                        childCodeList.Add(childDeviceCode);
                        var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList();
                        var userIds = tokenInfos?.Select(x => x.UserId).ToList();
                        lock (this)
                        object obj = new
                        {
                            ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode);
                            childDeviceCode,
                            commandAfter = command,
                        };
                        _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, data = obj });
                            if (command == null) continue;
                            if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = "";
                        #endregion 调用事件总线通知前端
                            DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString());
                            if (deviceProtocolDetails != null)
                            {
                                MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType);
                                if (method != null)
                                {
                                    method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
                                }
                            }
                            if (childDeviceCode == "1670" || childDeviceCode == "1666" || childDeviceCode == "1548" || childDeviceCode == "1448")
                            {
                                Platform platform = _platFormRepository.QueryFirst(x => x.DeviceCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active");
                                if (platform != null)
                                {
                                    if (command.HasPallet != 1)
                                    {
                                        MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod);
                                        if (method != null)
                                        {
                                            //var strings = platform.Location.Split(',').ToList();
                                            int count = 1;
                                            method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
                                        }
                                    }
                                }
                            }
                            #region 调用事件总线通知前端
                            var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken");
                            if (tokenInfos == null || !tokenInfos.Any())
                            {
                                //throw new Exception(conveyorLine.DeviceName + "缓存中未找到Token缓存");
                                continue;
                            }
                            var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList();
                            var userIds = tokenInfos?.Select(x => x.UserId).ToList();
                            object obj = new
                            {
                                childDeviceCode,
                                commandAfter = command,
                            };
                            _noticeService.LineData(userIds?.FirstOrDefault(), userTokenIds, new { conveyorLine.DeviceName, data = obj });
                            #endregion 调用事件总线通知前端
                            childCodeList.Remove(childDeviceCode);
                        }
                    }
                    //DateTime ENDdateTime = DateTime.Now;
                    //Console.WriteLine($"循环结束时间{ENDdateTime}");
                    #endregion 路由方式
                }
@@ -214,7 +220,7 @@
                var log = $"时间:【{DateTime.Now}】【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】任务号:【{command.ConveyorLineTaskNum}】设备编码:【{childDeviceCode}】";
                ConsoleHelper.WriteSuccessLine(log);
                _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
                //_noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
                WriteInfo(conveyorLine.DeviceName, log);
                if (task == null)
@@ -223,12 +229,16 @@
                }
                else
                {
                    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"))
                    if (childDeviceCode == "1039")
                    {
                        ConsoleHelper.WriteErrorLine($"时间:【{DateTime.Now}】托盘号:【{command.ConveyorLineBarcode}】高温二已存在【{GWTask.Count}】个任务大于2个任务不可下发");
                        return;
                        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"))
                        {
                            ConsoleHelper.WriteErrorLine($"时间:【{DateTime.Now}】托盘号:【{command.ConveyorLineBarcode}】高温二已存在【{GWTask.Count}】个任务大于2个任务不可下发");
                            return;
                        }
                    }
                    ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
                    bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode);
@@ -419,7 +429,7 @@
            var log = $"时间:【{DateTime.Now}】【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】任务号:【{command.ConveyorLineTaskNum}】设备编码:【{childDeviceCode}】";
            ConsoleHelper.WriteSuccessLine(log);
            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
            //_noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
            WriteInfo(conveyorLine.DeviceName, log);
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
@@ -321,12 +321,16 @@
                    var task = _taskService.QueryBarCodeConveyorLineTask(command.ConveyorLineBarcode, childDeviceCode);
                    if (task != null)
                    {
                        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"))
                        if (childDeviceCode == "1039")
                        {
                            ConsoleHelper.WriteErrorLine($"托盘号:【{command.ConveyorLineBarcode}】高温二已存在【{GWTask.Count}】个任务大于2个任务不可下发");
                            return;
                            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"))
                            {
                                ConsoleHelper.WriteErrorLine($"托盘号:【{command.ConveyorLineBarcode}】高温二已存在【{GWTask.Count}】个任务大于2个任务不可下发");
                                return;
                            }
                        }
                        ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
                        //conveyorLine.SendCommand(taskCommand, childDeviceCode);
@@ -356,7 +360,7 @@
            {
                WriteInfo(conveyorLine.DeviceName, $"【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】请求点位:【{childDeviceCode}】异常信息【{ex.Message}】异常行【{ex.StackTrace}】");
            }
        }
        /// <summary>
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -86,30 +86,30 @@
        {
            if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
            {
                if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                //if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                //{
                if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")
                {
                    if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")
                    var agingOutputDto = MapToAgingOutputDto(stock);
                    content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
                    if (content.Status)
                    {
                        var agingOutputDto = MapToAgingOutputDto(stock);
                        content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
                        var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
                        if (content.Status)
                        if (!result.Success && result.MessageCode == "E10001")
                        {
                            var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
                            if (!result.Success && result.MessageCode == "E10001")
                            {
                                await HandleOutBoundError(stock, task);
                            }
                        }
                        else
                        {
                            task.Remark = "NG";
                            ConsoleHelper.WriteErrorLine("MOM通报点芯NG");
                            return content.Error("MOM通报点芯NG");
                            await HandleOutBoundError(stock, task);
                        }
                    }
                    else
                    {
                        task.Remark = "NG";
                        ConsoleHelper.WriteErrorLine("MOM通报点芯NG");
                        return content.Error("MOM通报点芯NG");
                    }
                }
                //}
            }
            if (task.Remark == "NG")
@@ -429,8 +429,8 @@
            Console.WriteLine(err.Message.ToString());
            LogFactory.GetLog("任务完成").Error(true, err);
            content.Error(err.Message);
            task.ErrorMessage= err.Message;
            task.TaskState=(int)TaskInStatusEnum.SC_InExecuting;
            task.ErrorMessage = err.Message;
            task.TaskState = (int)TaskInStatusEnum.SC_InExecuting;
            await BaseDal.Update(task);
        }
        return content;
@@ -617,12 +617,12 @@
        }
        LogFactory.GetLog("任务完成").InfoFormat(true, "验证任务是否存在", JsonConvert.SerializeObject(task));
        // 验证库存是否存在
        var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
        if (task.TaskType == (int)TaskOutboundTypeEnum.InToOut)
        {
            return await CompleteInToOutTaskAsync(task,stock);
            return await CompleteInToOutTaskAsync(task, stock);
        }
        // 根据任务类型调用相应的完成任务方法
        switch (task.TaskType)
@@ -637,7 +637,7 @@
            case (int)TaskOutboundTypeEnum.OutTray:
            case (int)TaskOutboundTypeEnum.Outbound:
            case (int)TaskOutboundTypeEnum.OutNG:
                LogFactory.GetLog("任务完成").InfoFormat(true, "出库任务", "");
                return await CompleteStackTaskAsync(task, stock);
@@ -674,7 +674,7 @@
            var stock = await QueryStockInfo(input.PalletCode);
            if (stock != null)
            {
                List<string> strings = new List<string>() { "GW","CW","FR"};
                List<string> strings = new List<string>() { "GW", "CW", "FR" };
                if (stock.AreaCode.Contains(strings))
                {
                    return content.Error($"托盘【{stock.PalletCode}】存在库存不允许入库");
@@ -865,8 +865,8 @@
                var configOne = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStacker, SysConfigConst.CHInboundEmptyProductLineOne);
                var configTwo = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStacker, SysConfigConst.CHInboundEmptyProductLineTwo);
                List<string>  productLineconfigOne = configOne.ConfigValue.Split(',').ToList();
                List<string>  productLineconfigTwo = configTwo.ConfigValue.Split(',').ToList();
                List<string> productLineconfigOne = configOne.ConfigValue.Split(',').ToList();
                List<string> productLineconfigTwo = configTwo.ConfigValue.Split(',').ToList();
                if (productLineconfigOne.Count == 0 && productLineconfigTwo.Count() == 0)
                {
@@ -885,13 +885,13 @@
                {
                    ConsoleHelper.WriteErrorLine($"未找到{result.ProductionLine}对应配置巷道");
                    return content.Error($"未找到{result.ProductionLine}对应配置巷道");
                }
                }
            }
            else
            {
                strings = stationManagers.Roadway.Split(',').ToList();
            }
            return await CreateNewTask(input, result.ProductionLine, result.ProcessCode, strings, 1);
        }
@@ -910,8 +910,8 @@
    // 获取组盘信息
    private DtBoxingInfo CreateBoxingInfo(ResultTrayCellsStatus result, string palletCode)
    {
         var boxing=_boxingInfoRepository.QueryFirst(x=>x.PalletCode == palletCode);
    {
        var boxing = _boxingInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
        if (boxing == null)
        {
            return new DtBoxingInfo
@@ -930,7 +930,8 @@
                }).ToList()
            };
        }
        else {
        else
        {
            _boxingInfoRepository.DeleteData(boxing);
            return new DtBoxingInfo
            {
@@ -948,7 +949,7 @@
                }).ToList()
            };
        }
    }
    // 获取工艺申请
@@ -1314,7 +1315,7 @@
            if (stockInfo.AreaCode.Contains("CH"))
            {
                // 创建并添加任务到数据库
                if(stockInfo.LocationInfo.RoadwayNo=="CHSC1"|| stockInfo.LocationInfo.RoadwayNo == "CHSC2"|| stockInfo.LocationInfo.RoadwayNo == "CHSC3")
                if (stockInfo.LocationInfo.RoadwayNo == "CHSC1" || stockInfo.LocationInfo.RoadwayNo == "CHSC2" || stockInfo.LocationInfo.RoadwayNo == "CHSC3")
                {
                    task = CreateTask(stockInfo, "1020-1", taskType);
                }
@@ -1322,7 +1323,7 @@
                {
                    task = CreateTask(stockInfo, "1049-8", taskType);
                }
            }
            else
            {
@@ -2149,7 +2150,7 @@
            ToAddress = await GetRoadWayAsync(process);
        else
            ToAddress = process[0];
        if(string.IsNullOrEmpty(ToAddress))
        if (string.IsNullOrEmpty(ToAddress))
        {
            return content.Error("无法获取目标地址");
        }