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("无法获取目标地址"); }