From d59b540dd78d49ddf1f2e1c6dfb7b19a7d3e3d7c Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期日, 19 一月 2025 11:19:24 +0800 Subject: [PATCH] 优化代码结构和错误处理 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 87 +++++++++++++++++++++++++++++++++---------- 1 files changed, 66 insertions(+), 21 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 931a2e7..5499743 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 @@ -1,20 +1,15 @@ -锘縰sing AngleSharp.Dom; -using log4net.Core; +锘縰sing Autofac.Core; using Mapster; using Masuit.Tools; -using SixLabors.Fonts.Tables.AdvancedTypographic; -using System.Diagnostics; using System.Text.RegularExpressions; -using System.Threading.Tasks; using WIDESEA_Core.Const; using WIDESEA_DTO.MOM; using WIDESEA_DTO.WMS; using WIDESEA_IServices; using WIDESEA_IStoragIntegrationServices; -using WIDESEA_StorageBasicRepository; -using WIDESEA_StoragIntegrationServices; using WIDESEAWCS_BasicInfoRepository; using WIDESEAWCS_QuartzJob.Models; + namespace WIDESEA_StorageTaskServices; @@ -173,7 +168,6 @@ if (content.Status) { var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString()); - task.Remark = result.Success ? null : "NG"; if (!result.Success && result.MessageCode == "E10001") { @@ -183,9 +177,17 @@ else { task.Remark = "NG"; + ConsoleHelper.WriteErrorLine("MOM閫氭姤鐐硅姱NG"); + return content.Error("MOM閫氭姤鐐硅姱NG"); } } } + } + + if (task.Remark == "NG") + { + ConsoleHelper.WriteErrorLine("MOM閫氭姤鐐硅姱NG"); + return content.Error("MOM閫氭姤鐐硅姱NG"); } // 鏇存柊搴撳瓨鐘舵�佸拰浠诲姟鐘舵�� @@ -204,8 +206,8 @@ await DeleteStockInfoAsync(stock.Id); await DeleteStockInfoDetailsAsync(stock.StockInfoDetails); await AddStockInfoHtyAsync(stockInfo_Hty); + await UpdateLocationAsync(loc); //璐ㄦ浠诲姟闇�瑕佹寔缁攣瀹氬簱浣� } - await UpdateLocationAsync(loc); await DeleteTaskAsync(task.TaskId); await AddTaskHtyAsync(taskHty); }); @@ -264,7 +266,7 @@ ParameterDesc = parameterInfo.Description, ParameterResult = "OK", //isNG.ToString(), TargetValue = parameterInfo.TargetValue, - LowerLomit = parameterInfo.LowerSpecificationsLimit, + LowerLimit = parameterInfo.LowerSpecificationsLimit, UpperLimit = parameterInfo.UpperSpecificationsLimit, DefectCode = defectCode, UOMCode = parameterInfo.UOMCode, @@ -743,7 +745,7 @@ return content.Error(result.MOMMessage); // 鑾峰彇寮傚父鐢佃姱 - List<SerialNoDto>? serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList(); + List<SerialNoDto>? serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList(); if (serialNosError.Count > 0) { // TODO 鍒涘缓浠诲姟閫佽嚦NG鎺掑嚭鍙� @@ -998,12 +1000,19 @@ if (result.SerialNos.Count <= 0) { - return await RequestTrayInTaskAsync(input); + var config = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStacker, SysConfigConst.InboundIsEmpty); + var strings = config.ConfigValue.Split(',').ToList(); + if (strings.Contains(input.Position)) + { + // todo閫佽嚦NG鍙� + ConsoleHelper.WriteErrorLine($"褰撳墠浣嶇疆涓嶈兘鍏ョ┖鎵樼洏"); + return content.Error("褰撳墠浣嶇疆涓嶈兘鍏ョ┖鎵樼洏"); + } + else + return await RequestTrayInTaskAsync(input); } else { - - // 澶勭悊寮傚父鐢佃姱鎯呭喌 var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList(); if (serialNosError.Count > 0) @@ -1087,7 +1096,7 @@ throw new Exception("鏈壘鍒扮┖鎵樼洏鍏ュ簱绔欏彴鍜屽叆搴撶珯鍙伴厤缃�"); } List<string> strings = stationManagers.Roadway.Split(',').ToList(); - Console.WriteLine(strings.ToJsonString() + "b-----------------------"); + //Console.WriteLine(strings.ToJsonString() + "b-----------------------"); return await CreateNewTask(input, strings, 1); } @@ -1158,7 +1167,7 @@ // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅 DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound ? areaCode != "CWSC1" ? await QueryStockInfoForRealTrayAsync(areaCode, areaCodes, productionLine) : await QueryStockInfoForRealTrayCWAsync(areaCodes, productionLine) - : await QueryStockInfoForEmptyTrayAsync(areaCode); + : await QueryStockInfoForEmptyTrayAsync(areaCode, position); if (stockInfo == null) { @@ -1198,6 +1207,7 @@ { // 璁板綍寮傚父淇℃伅骞舵姏鍑� LogFactory.GetLog("璇锋眰鎵樼洏浠诲姟").Error(true, ex); + ConsoleHelper.WriteErrorLine("璇锋眰绌�/瀹炴墭鐩樹换鍔�" + ex.Message); return content.Error(ex.Message); } } @@ -1237,12 +1247,19 @@ return null; } + var devices = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>() + .Where(x => x.DeviceStatus == "1") + .Where(x => x.DeviceRemark == "1") + .ToList(); + var deviceCode = devices.Select(x => x.DeviceCode).ToList(); + var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>() .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails .Where(x => areaCodes.Contains(x.AreaCode) && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢 .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine) .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && areaId.Contains(x.LocationInfo.AreaId) && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢 + .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo)) .OrderBy(x => x.OutboundTime) // 鎺掑簭 .FirstAsync(); // 鑾峰彇绗竴涓厓绱� @@ -1255,9 +1272,23 @@ /// <summary> /// 鏌ヨ绌虹洏搴撳瓨淇℃伅 /// </summary> - private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode) + private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, string position) { var area = await _areaInfoRepository.QueryFirstAsync(x => x.AreaCode == areaCode); + + ConsoleHelper.WriteColorLine(position + "..." + areaCode, ConsoleColor.Magenta); + var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == position && x.stationType == 17); + + ConsoleHelper.WriteColorLine(station.Roadway, ConsoleColor.Magenta); + var stackers = station.Roadway.Split(',').ToList(); + + + var devices = SqlSugarHelper.DbWCS.Queryable<Dt_DeviceInfo>() + .Where(x => x.DeviceStatus == "1") + .Where(x => stackers.Contains(x.DeviceCode)) + .ToList(); + + var deviceCode = devices.Select(x => x.DeviceCode).ToList(); var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>() .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo @@ -1265,6 +1296,7 @@ .Where(x => x.AreaCode == areaCode && x.IsFull == false) .Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�")) .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢 + .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo)) .OrderBy(x => x.CreateDate) // 鎺掑簭 .FirstAsync(); // 杞崲涓哄垪琛� @@ -1280,7 +1312,7 @@ { return new Dt_Task { - Grade = tag == 104 ? 2 : 1, + Grade = tag == 104 ? (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC") ? 1 : 2) : (stockInfo.LocationInfo.RoadwayNo.Contains("CWSC") ? 2 : 1), Roadway = stockInfo.LocationInfo.RoadwayNo, TargetAddress = position, Dispatchertime = DateTime.Now, @@ -1383,6 +1415,10 @@ { return content.Error("鏈煡璇㈠埌瀵瑰簲鐨勫簱瀛樹俊鎭�"); } + if (stockInfo.LocationInfo.LocationStatus != (int)LocationEnum.InStock) + { + return content.Error("璇ヨ揣浣嶇姸鎬佷笉绛変簬銆愭湁璐с�戣鏌ョ湅鏄惁宸茬粡鏈変换鍔★紒"); + } var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); if (task != null) @@ -1403,9 +1439,12 @@ } else { - if (stockInfo.LocationInfo.RoadwayNo == "JZSC1") + if (stockInfo.LocationInfo.RoadwayNo.Contains("JZSC")) { - task = CreateTask(stockInfo, "002-021-001", taskType); + var targetAddress = "002-021-001"; + if (stockInfo.LocationInfo.RoadwayNo == "JZSC4") + targetAddress = "001-021-001"; + task = CreateTask(stockInfo, targetAddress, taskType); } } //var taskId = await BaseDal.AddDataAsync(task); @@ -1767,6 +1806,8 @@ #endregion 澶栭儴鎺ュ彛鏂规硶 + + #region 鍐呴儴璋冪敤鏂规硶 /// <summary> @@ -1959,6 +2000,10 @@ taskHty.TaskId = 0; taskHty.OperateType = isHand ? (int)OperateTypeEnum.浜哄伐鍒犻櫎 : (int)OperateTypeEnum.鑷姩瀹屾垚; taskHty.SourceId = task.TaskId; + if (isHand) + { + taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System"; + } taskHty.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt(); return taskHty; } @@ -2410,7 +2455,7 @@ ParameterDesc = parameterInfo.Description, ParameterResult = "OK", TargetValue = parameterInfo.TargetValue, - LowerLomit = parameterInfo.LowerSpecificationsLimit, + LowerLimit = parameterInfo.LowerSpecificationsLimit, UpperLimit = parameterInfo.UpperSpecificationsLimit, DefectCode = defectCode, } -- Gitblit v1.9.3