From 0c369f4d3dab390ab14332346b0fe6b86c999bd9 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期一, 23 六月 2025 09:46:29 +0800 Subject: [PATCH] 修复消息处理逻辑并增加地址检查在 `RequestInbound.cs` 中,更新了对 `content.Message` 的条件判断,增加了对 "无法获取目标地址" 消息的处理逻辑,并确保错误信息始终被记录。在 `Dt_TaskService.cs` 中,增加了对 `ToAddress` 变量的空值检查,确保在创建新任务实例之前,地址是有效的。 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 128 +++++++++++++++++++++++++++++++++--------- 1 files changed, 100 insertions(+), 28 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs index bc5d0c0..20b5236 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs @@ -2,6 +2,7 @@ using Masuit.Tools; using SqlSugar; using System.Text.RegularExpressions; +using System.Threading.Tasks; using WIDESEA_Cache; using WIDESEA_Core.Const; using WIDESEA_DTO.MOM; @@ -31,6 +32,7 @@ private readonly IAgingInOrOutInputService _agingInOrOutInputService; //闈欑疆\闄堝寲 private readonly IDt_StationManagerRepository _stationManagerRepository; private readonly ISys_ConfigService _configService; + private readonly IDt_ChangeoversRepository _dt_ChangeoversRepository; private readonly ISimpleCacheService _simpleCacheService; public Dt_TaskService(IDt_TaskRepository BaseDal, @@ -50,7 +52,8 @@ IStockInfoDetailRepository stockInfoDetailRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService, - ISimpleCacheService simpleCacheService) : base(BaseDal) + ISimpleCacheService simpleCacheService, + IDt_ChangeoversRepository dt_ChangeoversRepository) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _stockInfoRepository = stockInfoRepository; @@ -68,6 +71,7 @@ _stationManagerRepository = stationManagerRepository; _configService = configService; _simpleCacheService = simpleCacheService; + _dt_ChangeoversRepository = dt_ChangeoversRepository; } #region 澶栭儴鎺ュ彛鏂规硶 @@ -247,7 +251,7 @@ var isStockUpdated = await _locationRepository.UpdateDataAsync(info); if (!isStockUpdated) { - throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触"); + throw new Exception("搴撲綅淇℃伅鏇存柊澶辫触"); } } @@ -280,6 +284,36 @@ } #endregion 鍑哄簱浠诲姟瀹屾垚 + + #region 鐏浠诲姟瀹屾垚 + public async Task<WebResponseContent> CompleteOutFireAlarmTaskAsync(Dt_Task task, DtStockInfo stock) + { + WebResponseContent content = new WebResponseContent(); + (var loc, var tas) = UpdateStockAndTaskStatus(stock, task); + var taskHty = task.Adapt<Dt_Task_Hty>(); + taskHty.FinishTime = DateTime.Now; + taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚; + taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System"; + + DtStockInfo_Hty stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>(); + stockInfo_Hty.ModifyDate = DateTime.Now; + + // 浜嬪姟澶勭悊 + await _unitOfWorkManage.UseTranAsync(async () => + { + if (task.TaskType != (int)TaskOutboundTypeEnum.OutQuality) + { + await DeleteStockInfoAsync(stock.Id); + await DeleteStockInfoDetailsAsync(stock.StockInfoDetails); + await AddStockInfoHtyAsync(stockInfo_Hty); + await UpdateLocationAsync(loc); //璐ㄦ浠诲姟闇�瑕佹寔缁攣瀹氬簱浣� + } + await DeleteTaskAsync(task.TaskId); + await AddTaskHtyAsync(taskHty); + }); + return content.OK("浠诲姟瀹屾垚鎴愬姛", task.Remark); + } + #endregion #region 绉诲簱浠诲姟瀹屾垚 @@ -327,7 +361,7 @@ WebResponseContent content = new WebResponseContent(); try { - if (task.TaskType == (int)TaskInboundTypeEnum.InNG || task.TaskType == (int)TaskInboundTypeEnum.InQuality) + if (task.TaskType == (int)TaskInboundTypeEnum.InNG) { task.TaskState = (int)TaskInStatusEnum.SC_InFinish; // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷 @@ -394,6 +428,9 @@ Console.WriteLine(err.Message.ToString()); LogFactory.GetLog("浠诲姟瀹屾垚").Error(true, err); content.Error(err.Message); + task.ErrorMessage= err.Message; + task.TaskState=(int)TaskInStatusEnum.SC_InExecuting; + await BaseDal.Update(task); } return content; } @@ -599,8 +636,14 @@ case (int)TaskOutboundTypeEnum.OutTray: case (int)TaskOutboundTypeEnum.Outbound: case (int)TaskOutboundTypeEnum.OutNG: + LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", ""); return await CompleteStackTaskAsync(task, stock); + + case (int)TaskOutboundTypeEnum.OutFireAlarm: + + LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鐏浠诲姟", ""); + return await CompleteOutFireAlarmTaskAsync(task, stock); case (int)TaskRelocationTypeEnum.Relocation: return await CompleteTransferTaskAsync(task, stock); @@ -714,12 +757,13 @@ else { // 澶勭悊寮傚父鐢佃姱鎯呭喌 - var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList(); - if (serialNosError.Count > 0) - { - return await HandleErrorCells(input, area, serialNosError); - } - + #region 鐢佃姱鍒嗙粨鏋滃紓甯镐笉闇�瑕佹垜浠鐞� + //var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList(); + //if (serialNosError.Count > 0) + //{ + // return await HandleErrorCells(input, area, serialNosError); + //} + #endregion var boxing = CreateBoxingInfo(result, input.PalletCode); if (boxing == null) return content.Error("缁勭洏澶辫触"); @@ -860,22 +904,45 @@ // 鑾峰彇缁勭洏淇℃伅 private DtBoxingInfo CreateBoxingInfo(ResultTrayCellsStatus result, string palletCode) - { - return new DtBoxingInfo + { + var boxing=_boxingInfoRepository.QueryFirst(x=>x.PalletCode == palletCode); + if (boxing == null) { - PalletCode = palletCode, - IsFull = true, - ProcessCode = result.ProcessCode, - ProductionLine = result.ProductionLine, - BoxingInfoDetails = result.SerialNos.Select(serialNoObj => new DtBoxingInfoDetail + return new DtBoxingInfo { - SerialNumber = serialNoObj.SerialNo, - OrderNo = serialNoObj.PositionNo.ToString(), - Status = serialNoObj.SerialNoStatus, - MaterielCode = result.BindCode, - Remark = result.TrayBarcodePropertys.ToJsonString(), - }).ToList() - }; + PalletCode = palletCode, + IsFull = true, + ProcessCode = result.ProcessCode, + ProductionLine = result.ProductionLine, + BoxingInfoDetails = result.SerialNos.Select(serialNoObj => new DtBoxingInfoDetail + { + SerialNumber = serialNoObj.SerialNo, + OrderNo = serialNoObj.PositionNo.ToString(), + Status = serialNoObj.SerialNoStatus, + MaterielCode = result.BindCode, + Remark = result.TrayBarcodePropertys.ToJsonString(), + }).ToList() + }; + } + else { + _boxingInfoRepository.DeleteData(boxing); + return new DtBoxingInfo + { + PalletCode = palletCode, + IsFull = true, + ProcessCode = result.ProcessCode, + ProductionLine = result.ProductionLine, + BoxingInfoDetails = result.SerialNos.Select(seriaINoObj => new DtBoxingInfoDetail + { + SerialNumber = seriaINoObj.SerialNo, + OrderNo = seriaINoObj.PositionNo.ToString(), + Status = seriaINoObj.SerialNoStatus, + MaterielCode = result.BindCode, + Remark = result.TrayBarcodePropertys.ToJsonString(), + }).ToList() + }; + } + } // 鑾峰彇宸ヨ壓鐢宠 @@ -913,7 +980,6 @@ DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound ? areaCode != "CWSC1" ? await QueryStockInfoForRealTrayAsync(areaCode, areaCodes, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine) : await QueryStockInfoForEmptyTrayAsync(areaCode, position); - if (stockInfo == null) { return content.Error("搴撳瓨淇℃伅涓嶅瓨鍦�"); @@ -973,7 +1039,9 @@ return null; } - var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel"); + //var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel"); + var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList(); + List<string>? materielCodes = outBoundMateriel.Count != 0 ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == area.AreaCode) .Select(x => x.MaterielCode) @@ -1026,7 +1094,8 @@ // materielCodes = outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0]).Select(x => x.MaterielCode).ToList(); //} - var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel"); + //var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel"); + var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList(); List<string>? materielCodes = outBoundMateriel.Count != 0 ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0]) .Select(x => x.MaterielCode) @@ -1243,7 +1312,7 @@ } else { - task = CreateTask(stockInfo, "1049-1", taskType); + task = CreateTask(stockInfo, "1049-8", taskType); } } @@ -2074,7 +2143,10 @@ ToAddress = await GetRoadWayAsync(process); else ToAddress = process[0]; - + if(string.IsNullOrEmpty(ToAddress)) + { + return content.Error("鏃犳硶鑾峰彇鐩爣鍦板潃"); + } // 鍒涘缓鏂颁换鍔″疄渚� var task = new Dt_Task { -- Gitblit v1.9.3