From 2c889b38311883ceb703c4e0034c798fdaa2e21c Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期二, 12 八月 2025 23:11:57 +0800 Subject: [PATCH] 更新代码,货位分配优化等 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs | 94 +++++++++++++++++++++++++++++++++------------- 1 files changed, 67 insertions(+), 27 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" index a702bf8..4c88553 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" @@ -30,6 +30,7 @@ using WIDESEA_DTO.Stock; using SqlSugar; using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; namespace WIDESEA_TaskInfoService { @@ -97,6 +98,15 @@ PalletType = stockInfo.PalletType, WarehouseId = stockInfo.WarehouseId, }; + string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode; + float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity); + string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo; + if (MaterielCode != null && Quantity != null && BatchNo != null) + { + taskOut.MaterielCode = MaterielCode; + taskOut.Quantity = Quantity; + taskOut.BatchNo = BatchNo; + } stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾; LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus; locationInfo.LocationStatus = (int)LocationStatusEnum.Lock; @@ -130,11 +140,6 @@ MesResponseContent responseContent = new MesResponseContent(); try { - Dt_Task exsit = Repository.QueryFirst(x => x.TargetAddress == model.TargetAddressCode); - if (exsit != null) - { - return responseContent.Error($"鐩爣鍦板潃閲嶅"); - } Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString()); //鑾峰彇搴撳瓨璁板綍 @@ -176,6 +181,15 @@ PalletType = stockInfo.PalletType, WarehouseId = stockInfo.WarehouseId, }; + string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode; + float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity); + string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo; + if (MaterielCode != null && Quantity != null && BatchNo != null) + { + taskOut.MaterielCode = MaterielCode; + taskOut.Quantity = Quantity; + taskOut.BatchNo = BatchNo; + } stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾; LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus; locationInfo.LocationStatus = (int)LocationStatusEnum.Lock; @@ -210,11 +224,7 @@ MesResponseContent responseContent = new MesResponseContent(); try { - Dt_Task exsit = Repository.QueryFirst(x => x.TargetAddress == model.TargetAddressCode); - if (exsit != null) - { - return responseContent.Error($"鐩爣鍦板潃閲嶅"); - } + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString()); //鑾峰彇搴撳瓨璁板綍 @@ -251,11 +261,20 @@ SourceAddress = stockInfo.LocationCode, TargetAddress = model.TargetAddressCode, TaskStatus = (int)TaskStatusEnum.New, - TaskType = stockInfo.PalletType < 2 ? (int)TaskTypeEnum.MaskOutSmall : (int)TaskTypeEnum.m, + TaskType = stockInfo.PalletType < 2 ? (int)TaskTypeEnum.MaskOutSmall : (int)TaskTypeEnum.MaskOutLarge, TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), PalletType = stockInfo.PalletType, WarehouseId = stockInfo.WarehouseId, }; + string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode; + float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity); + string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo; + if (MaterielCode != null && Quantity != null && BatchNo != null) + { + taskOut.MaterielCode = MaterielCode; + taskOut.Quantity = Quantity; + taskOut.BatchNo = BatchNo; + } stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾; LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus; locationInfo.LocationStatus = (int)LocationStatusEnum.Lock; @@ -318,6 +337,15 @@ PalletType = stockInfo.PalletType, WarehouseId = stockInfo.WarehouseId, }; + string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode; + float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity); + string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo; + if (MaterielCode != null && Quantity != null && BatchNo != null) + { + taskIn.MaterielCode = MaterielCode; + taskIn.Quantity = Quantity; + taskIn.BatchNo = BatchNo; + } //鏇存敼搴撳瓨鐘舵�� stockInfo.StockStatus = StockStatusEmun.閫�搴�.ObjToInt(); BaseDal.AddData(taskIn); @@ -497,6 +525,7 @@ /// <returns></returns> public MesResponseContent SubstrateOut(SubstrateOutModel model) { + MesResponseContent content = new MesResponseContent(); try { string line = string.Empty; @@ -511,15 +540,15 @@ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == line); if (warehouse == null) { - return MesResponseContent.Instance.Error($"浠撳簱鍩虹淇℃伅鏈厤缃�"); + return content.Error($"浠撳簱鍩虹淇℃伅鏈厤缃�"); } Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == model.MaterialCode); if (materielInfo == null) { - return MesResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡淇℃伅"); + return content.Error($"鏈壘鍒拌鐗╂枡淇℃伅"); } - + //鐢熸垚MES鏉挎枡鍑哄簱鍗曟嵁 Dt_MesOutboundOrder mesOutboundOrder = new Dt_MesOutboundOrder() { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), @@ -535,14 +564,15 @@ }; List<Dt_Task> tasks = new List<Dt_Task>(); - List<Dt_StockInfo>? stockInfos = null; List<Dt_OutStockLockInfo>? outStockLockInfos = null; List<Dt_LocationInfo>? locationInfos = null; { + //鍒嗛厤搴撳瓨 (List<Dt_StockInfo>, Dt_MesOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesOutboundOrderService.AssignStockOutbound(mesOutboundOrder); if (result.Item1 != null && result.Item1.Count > 0) { + //鍒涘缓浠诲姟 tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); result.Item3.ForEach(x => @@ -576,23 +606,26 @@ _outboundService.MesOutboundOrderService.Repository.AddData(mesOutboundOrder); if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) { - WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); + WebResponseContent contentResponse = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); - if (!content.Status) + if (!contentResponse.Status) { _unitOfWorkManage.RollbackTran(); - return MesResponseContent.Instance.Error(content.Message); + return content.Error(contentResponse.Message); } } _unitOfWorkManage.CommitTran(); PushTasksToWCS(tasks); - - - return MesResponseContent.Instance.OK(); + //灏嗗紑鏂欏垎閰嶇殑搴撳瓨鎵樼洏杩斿洖缁橫ES + content.Content = new + { + VehicleCode = stockInfos?.Select(x => x.PalletCode).ToList() + }; + return content.OK(); } catch (Exception ex) { - return MesResponseContent.Instance.Error(ex.Message); + return content.Error(ex.Message); } } @@ -613,10 +646,10 @@ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == palletTypeInfo.WarehouseId); //鍒ゆ柇鏄惁鎵樼洏搴撳瓨鏄惁宸插瓨鍦� - Dt_StockInfo stockInfoOld = _stockRepository.StockInfo_HtyRepository.QueryData(x => x.PalletCode == model.CarrierCode).First(); - if (stockInfoOld!=null) + Dt_StockInfo stockInfoOld = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == model.CarrierCode); + if (stockInfoOld != null) { - return MesResponseContent.Instance.Error($"鎵樼洏鍙穥model.CarrierCode}宸插瓨鍦�"); + return MesResponseContent.Instance.Error($"鎵樼洏鍙峰簱瀛榹model.CarrierCode}宸插瓨鍦�"); } Dt_StockInfo_Hty stockInfo_Hty = _stockRepository.StockInfo_HtyRepository.QueryData(x => x.PalletCode == model.CarrierCode).OrderByDescending(x => x.SourceId).First(); @@ -1034,9 +1067,16 @@ TaskStatus = TaskStatusEnum.New.ObjToInt(), WarehouseId = stockInfo.WarehouseId, PalletType = stockInfo.PalletType, - MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode, - Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity, }; + string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode; + float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity); + string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo; + if (MaterielCode != null && Quantity != null && BatchNo != null) + { + newTask.MaterielCode = MaterielCode; + newTask.Quantity = Quantity; + newTask.BatchNo = BatchNo; + } LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus; _unitOfWorkManage.BeginTran(); _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation); -- Gitblit v1.9.3