From a3014a01e07619105d597d0c51cf195217b0806f Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期二, 29 七月 2025 10:47:01 +0800 Subject: [PATCH] 1 --- WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 205 ++++++++++++++++++++++++++++++++++---------------- 1 files changed, 139 insertions(+), 66 deletions(-) diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs index 9cc9396..f96becc 100644 --- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs +++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs @@ -90,7 +90,7 @@ private readonly IStockInfoDetailRepository _stockInfoDetailRepository; public ITaskRepository Repository => BaseDal; - public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal) + public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IMaterielInfoService materielInfoService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IInboundOrder_HtyService inboundOrder_HtyService, IStockRepository stockRepository, IInboundOrderDetailService inboundOrderDetailService, IBasicService basicService, IOutboundService outboundService, IInboundService inboundService, IRecordService recordService, IStockService stockService, ITask_HtyService taskHtyService, ILocationInfoService locationInfoService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IBasicRepository basicRepository, IStockInfoDetailRepository stockInfoDetailRepository, IPalletTypeInfoRepository palletTypeInfoRepository) : base(BaseDal) { _mapper = mapper; _stockRepository = stockRepository; @@ -111,6 +111,7 @@ _outboundOrderDetailRepository = outboundOrderDetailRepository; _basicRepository = basicRepository; _stockInfoDetailRepository = stockInfoDetailRepository; + _palletTypeInfoRepository = palletTypeInfoRepository; } public string ReceiveWMSTaskin = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWMSTaskin"]; @@ -484,11 +485,11 @@ UpdateInboundOrder(inboundOrder, inboundOrderDetail); // 鍗曟嵁鏁伴噺鍏ㄩ儴涓婃灦瀹屾垚锛屽鐞哤MS鍥炰紶 - if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) - { - var stockInfoDetail = stockInfo.Details.FirstOrDefault(); - SendInboundInfoToWMS(task, inboundOrder, stockInfo); - } + //if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) + //{ + // var stockInfoDetail = stockInfo.Details.FirstOrDefault(); + // SendInboundInfoToWMS(task, inboundOrder, stockInfo); + //} _unitOfWorkManage.CommitTran(); return WebResponseContent.Instance.OK(); @@ -503,36 +504,76 @@ private WebResponseContent ProcessAllocateInbound(Dt_Task task, Dt_StockInfo stockInfo, Dt_LocationInfo locationInfo, int lastStatus, Dt_InboundOrder inboundOrder, Dt_InboundOrderDetail inboundOrderDetail) { - // 濡傛灉鏄渶鍚庝竴鏉℃槑缁� - if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) + //// 濡傛灉鏄渶鍚庝竴鏉℃槑缁� + //if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) + //{ + // try + // { + // _unitOfWorkManage.BeginTran(); + + // // 澶勭悊璋冩嫧鍏ュ簱鍗� + // ProcessAllocateInboundOrder(inboundOrder, inboundOrderDetail); + + // // 鑾峰彇鐩稿叧搴撳瓨淇℃伅 + // var relatedStockInfo = _stockService.StockInfoService.Repository + // .QueryData(x => x.BatchNo == inboundOrderDetail.BatchNo); + + // // 鍙戦�佽皟鎷ㄤ俊鎭埌WMS + // SendAllocateInfoToWMS(task, inboundOrder, relatedStockInfo); + + // _unitOfWorkManage.CommitTran(); + // } + // catch + // { + // _unitOfWorkManage.RollbackTran(); + // throw; + // } + //} + + //// 娣诲姞鍘嗗彶璁板綍 + //AddInboundOrderDetailHistory(inboundOrderDetail); + + //return WebResponseContent.Instance.OK(); + // 鏇存柊鍏ュ簱鍗曟槑缁嗙姸鎬� + UpdateInboundOrderDetails(stockInfo, inboundOrder, ref inboundOrderDetail); + + // 鏇存柊搴撳瓨鏄庣粏鐘舵�� + stockInfo.Details.ForEach(x => x.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()); + + try { - try - { - _unitOfWorkManage.BeginTran(); + _unitOfWorkManage.BeginTran(); - // 澶勭悊璋冩嫧鍏ュ簱鍗� - //ProcessAllocateInboundOrder(inboundOrder, inboundOrderDetail); + // 鏇存柊浠诲姟鐘舵�� + UpdateTaskStatus(task); - // 鑾峰彇鐩稿叧搴撳瓨淇℃伅 - var relatedStockInfo = _stockService.StockInfoService.Repository - .QueryData(x => x.BatchNo == inboundOrderDetail.BatchNo); + // 鏇存柊璐т綅鐘舵�� + UpdateLocationStatus(locationInfo, lastStatus); - // 鍙戦�佽皟鎷ㄤ俊鎭埌WMS - SendAllocateInfoToWMS(task, inboundOrder, relatedStockInfo); + // 鏇存柊搴撳瓨淇℃伅 + UpdateStockInfo(stockInfo); - _unitOfWorkManage.CommitTran(); - } - catch - { - _unitOfWorkManage.RollbackTran(); - throw; - } + // 娣诲姞璁板綍 + AddRecords(task, stockInfo, locationInfo, lastStatus); + + // 鏇存柊鍏ュ簱鍗� + UpdateInboundOrder(inboundOrder, inboundOrderDetail); + + // 鍗曟嵁鏁伴噺鍏ㄩ儴涓婃灦瀹屾垚锛屽鐞哤MS鍥炰紶 + //if (inboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()) + //{ + // var stockInfoDetail = stockInfo.Details.FirstOrDefault(); + // SendInboundInfoToWMS(task, inboundOrder, stockInfo); + //} + + _unitOfWorkManage.CommitTran(); + return WebResponseContent.Instance.OK(); } - - // 娣诲姞鍘嗗彶璁板綍 - AddInboundOrderDetailHistory(inboundOrderDetail); - - return WebResponseContent.Instance.OK(); + catch + { + _unitOfWorkManage.RollbackTran(); + throw; + } } #region Helper Methods @@ -602,8 +643,17 @@ private void SendInboundInfoToWMS(Dt_Task task, Dt_InboundOrder inboundOrder, Dt_StockInfo stockInfo) { - List<Dt_StockInfoDetail> dt_StockInfo = _stockInfoDetailRepository.QueryData(x => x.BatchNo == stockInfo.BatchNo).ToList(); - if (dt_StockInfo.Count == 0) return; + + List<Dt_StockInfo> StockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == task.WarehouseId).Includes(x => x.Details).Where(x => x.Details.Any(v => v.OrderNo == inboundOrder.OrderNo)).ToList(); + //var dt_StockInfo = _stockRepository.StockInfoRepository.QueryData(x => x.Id == stockInfo.Id).ToList(); + //List<Dt_StockInfo> StockInfos = new List<Dt_StockInfo>(); + //foreach (var item in dt_StockInfo) + //{ + // Dt_StockInfo StockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.Id == item.Id).Includes(x => x.Details).First(); + // StockInfos.Add(StockInfo); + //} + + if (StockInfos.Count == 0) throw new Exception("鏈壘鍒板簱瀛樹俊鎭�"); var houseInboundPassBack = new HouseInboundPassBack { ApiType = "AsnController", @@ -616,21 +666,21 @@ { new data.data1 { - AsnNo = task.OrderNo, - InWarehouse = task.Roadway, + AsnNo = inboundOrder.OrderNo, + //InWarehouse = task.Roadway, TransactionCode = inboundOrder.TransactionCode, InoutType = inboundOrder.OrderType, OrderType = inboundOrder.InoutType, // 閬嶅巻鎵�鏈夊簱瀛樻槑缁嗭紝娣诲姞鍒� DetailList - DetailList = dt_StockInfo.Select(d => new data.data1.Inbound + DetailList = StockInfos.Select(d => new data.data1.Inbound { - LinId = d.LinId, - MaterielCode = d.MaterielCode, - OrderQuantity = d.StockQuantity, + LinId = d.Details.FirstOrDefault()?.LinId?? "", + MaterielCode = d.Details.FirstOrDefault()?.MaterielCode?? "", + OrderQuantity = d.Details.FirstOrDefault().StockQuantity, BatchNo = d.BatchNo, - LPNNo = task.PalletCode, - FinishQty = d.StockQuantity, - LocationName = task.TargetAddress + LPNNo = d.PalletCode, + FinishQty = d.Details.FirstOrDefault().StockQuantity, + LocationName = d.LocationCode }).ToList() } } @@ -845,10 +895,10 @@ foreach (var lockInfo in outStockLockInfos) { - var detail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == lockInfo.OrderDetailId); + var detail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == lockInfo.BatchNo); if (detail != null) { - detail.OverOutQuantity = detail.LockQuantity; + detail.OverOutQuantity = lockInfo.OriginalQuantity; if (detail.LockQuantity == detail.OrderQuantity) { detail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); @@ -884,11 +934,11 @@ // 鏍规嵁璁㈠崟绫诲瀷澶勭悊涓嶅悓閫昏緫 var outDetail = _outboundService.OutboundOrderDetailService.Db.Queryable<Dt_OutboundOrderDetail>() - .Where(x => x.LPNNo == stockInfo.PalletCode).First(); + .Where(x => x.BatchNo == outboundOrderDetails.FirstOrDefault().BatchNo).First(); var outboundOrder = _outboundService.OutboundOrderService.Db.Queryable<Dt_OutboundOrder>() .Where(x => x.Id == outDetail.OrderId).Includes(x => x.Details).First(); - if (outboundOrder.OrderType == 1) // 鏅�氬嚭搴� + if (outboundOrder.OrderType == 1) // 鏅�氬嚭搴� && outDetail.OrderDetailStatus = OutboundStatusEnum.鍑哄簱瀹屾垚 { ProcessNormalOutbound(task, stockInfo, outboundOrder, outDetail); } @@ -946,9 +996,23 @@ var stockInfoDetail = _stockRepository.StockInfoDetailRepository.Db.Queryable<Dt_StockInfoDetail>() .Where(x => x.StockId == stockInfo.Id).First(); - if (outboundOrder.Details.Count == 1) + if (outboundOrder.OrderStatus == OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) { - MoveOutboundOrderToHistory(outboundOrder); + var history = new Dt_OutboundOrder_Hty + { + OrderStatus = outboundOrder.OrderStatus, + CreateType = outboundOrder.CreateType, + UpperOrderNo = outboundOrder.UpperOrderNo, + OrderNo = outboundOrder.OrderNo, + OutWareHouse = outboundOrder.OutWareHouse, + TransactionCode = outboundOrder.TransactionCode, + InoutType = outboundOrder.InoutType, + OrderType = outboundOrder.OrderType, + Creater = "WMS", + CreateDate = DateTime.Now, + }; + _outboundOrder_HtyService.AddData(history); + _outboundService.OutboundOrderService.DeleteData(outboundOrder); } MoveOutboundDetailToHistory(outDetail); @@ -967,7 +1031,21 @@ if (outboundOrder.Details.Count == 1) { - MoveOutboundOrderToHistory(outboundOrder); + var history = new Dt_OutboundOrder_Hty + { + OrderStatus = outboundOrder.OrderStatus, + CreateType = outboundOrder.CreateType, + UpperOrderNo = outboundOrder.UpperOrderNo, + OrderNo = outboundOrder.OrderNo, + OutWareHouse = outboundOrder.OutWareHouse, + TransactionCode = outboundOrder.TransactionCode, + InoutType = outboundOrder.InoutType, + OrderType = outboundOrder.OrderType, + Creater = "WMS", + CreateDate = DateTime.Now, + }; + _outboundOrder_HtyService.AddData(history); + _outboundService.OutboundOrderService.DeleteData(outboundOrder); } MoveOutboundDetailToHistory(outDetail); @@ -979,24 +1057,6 @@ DeleteStockInfo(stockInfo); } - private void MoveOutboundOrderToHistory(Dt_OutboundOrder outboundOrder) - { - var history = new Dt_OutboundOrder_Hty - { - OrderStatus = outboundOrder.OrderStatus, - CreateType = outboundOrder.CreateType, - UpperOrderNo = outboundOrder.UpperOrderNo, - OrderNo = outboundOrder.OrderNo, - OutWareHouse = outboundOrder.OutWareHouse, - TransactionCode = outboundOrder.TransactionCode, - InoutType = outboundOrder.InoutType, - OrderType = outboundOrder.OrderType, - Creater = "WMS", - CreateDate = DateTime.Now, - }; - _outboundOrder_HtyService.AddData(history); - _outboundService.OutboundOrderService.DeleteData(outboundOrder); - } private void MoveOutboundDetailToHistory(Dt_OutboundOrderDetail outDetail) { @@ -1018,6 +1078,19 @@ private void SendNormalOutboundToWMS(Dt_Task task, Dt_OutboundOrder outboundOrder, Dt_StockInfoDetail stockInfoDetail, Dt_OutboundOrderDetail outDetail) { + + + List<Dt_StockInfo> StockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == task.WarehouseId).Includes(x => x.Details).Where(x => x.Details.Any(v => v.OrderNo == outboundOrder.OrderNo)).ToList(); + //var dt_StockInfo = _stockRepository.StockInfoRepository.QueryData(x => x.Id == stockInfo.Id).ToList(); + //List<Dt_StockInfo> StockInfos = new List<Dt_StockInfo>(); + //foreach (var item in dt_StockInfo) + //{ + // Dt_StockInfo StockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.Id == item.Id).Includes(x => x.Details).First(); + // StockInfos.Add(StockInfo); + //} + + if (StockInfos.Count == 0) throw new Exception("鏈壘鍒板簱瀛樹俊鎭�"); + var passBack = new HouseoutboundPassBack { ApiType = "ShippingOrderController", -- Gitblit v1.9.3