From 63d187526792e6e29bfec07d0e3f0dce07df31b3 Mon Sep 17 00:00:00 2001 From: helongyang <647556386@qq.com> Date: 星期六, 19 七月 2025 17:32:41 +0800 Subject: [PATCH] 成品报废单新增优化 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 165 insertions(+), 4 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" index 4f51249..a0ff157 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" @@ -516,8 +516,12 @@ }); #region todo:涓存椂鏇存柊鎵�鏈夌爺鍙戣浆鎴愬搧 - proStockInfo.ProStockAttribute=ProStockAttributeEnum.鎴愬搧.ObjToInt(); - proStockInfo.WarehouseId = locationInfo.WarehouseId; + if (proStockInfo.ProStockAttribute == ProStockAttributeEnum.鐮斿彂.ObjToInt()) + { + proStockInfo.ProStockAttribute = ProStockAttributeEnum.鎴愬搧.ObjToInt(); + proStockInfo.WarehouseId = locationInfo.WarehouseId; + } + #endregion //鏇存柊鍏ュ簱鐘舵�� task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); @@ -627,6 +631,10 @@ { return WebResponseContent.Instance.Error($"鏈壘鍒拌揣浣嶄俊鎭�"); } + if ((task.TaskType == TaskTypeEnum.OutInventory.ObjToInt())) + { + return OutInventoryCompleted(task,stockInfo, locationInfo); + } List<Dt_OutStockLockInfo> outStockLockInfos = _outboundService.OutboundStockLockInfoService.Repository.QueryData(x => x.TaskNum == taskNum); List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>(); List<Dt_MesOutboundOrder> mesOutboundOrders = new List<Dt_MesOutboundOrder>(); @@ -691,7 +699,8 @@ ReceivedQuantity = item.OriginalQuantity, OrderType = CheckTypeEnum.InspectCheck.ObjToInt(), ReceiveOrderNo = outboundOrder.OrderNo, - LotNo= item.BatchNo, + OrderPalletCode= item.PalletCode, + LotNo = item.BatchNo, Result = CheckAcceptEnum.NotCheckAccept.ToString(), QualifiedQuantity = 0, ReceiveDetailRowNo = item.Id, @@ -820,6 +829,9 @@ case (int)TaskTypeEnum.OutMesRworkProduct: content = OutMesRworkCompleted(task); break; + case (int)TaskTypeEnum.OutProScrap: + content = OutProScrapCompleted(task); + break; default: content.Error("鏈煡浠诲姟绫诲瀷"); break; @@ -923,7 +935,9 @@ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); _unitOfWorkManage.CommitTran(); //MES鎴愬搧鍑哄簱鍚屾 - ShipmentOrderSync(MesOutSync(outProStockInfo, proOutOrderDetail, proStockInfoDetails)); + MesShipmentOrderSync shipmentOrderSync = MesOutSync(outProStockInfo, proOutOrderDetail, proStockInfoDetails); + ShipmentOrderSync(shipmentOrderSync); + ShipmentOrderMESSync(shipmentOrderSync); content.OK(); } catch (Exception ex) @@ -1012,5 +1026,152 @@ } return content; } + public WebResponseContent OutProScrapCompleted(Dt_Task task) + { + WebResponseContent content = new WebResponseContent(); + try + { + //鑾峰彇璐т綅 + Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress); + if (locationInfo == null) + { + return content.Error("鏈壘鍒拌揣浣嶄俊鎭�"); + } + //鏍规嵁浠诲姟鑾峰彇鎴愬搧鍑哄簱璇︽儏浠诲姟鍙婄墿鏂欎俊鎭� + Dt_OutProStockInfo outProStockInfo = _outProStockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum); + if (outProStockInfo == null) + { + return content.Error("鏈壘鍒版垚鍝佸嚭搴撹鎯�"); + } + //鑾峰彇鎴愬搧鎶ュ簾鍗� + + Dt_ErpProScrapSheet erpProScrapSheet = _outboundRepository.ErpProScrapSheetRepository.Db.Queryable<Dt_ErpProScrapSheet>().Where(x => x.ProScrapSheetOrderNo == outProStockInfo.OrderNo).Includes(x=>x.Details).First(); + if (erpProScrapSheet == null) + { + return content.Error("鏈壘鍒版垚鍝佹姤搴熷崟"); + } + Dt_ErpProScrapSheetDetail erpProScrapSheetDetail = erpProScrapSheet.Details.FirstOrDefault(x => x.Id == outProStockInfo.OrderDetailId); + if (erpProScrapSheetDetail == null) + { + return content.Error("鏈壘鍒版垚鍝佹姤搴熷崟鏄庣粏"); + } + if (erpProScrapSheetDetail.ScrapProDetailStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) + { + return content.Error($"鎴愬搧鎶ュ簾鍗曟槑缁嗚{erpProScrapSheetDetail.Id}宸插畬鎴�"); + } + erpProScrapSheetDetail.ScrapProDetailStatus = OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt(); + //鑾峰彇褰撳墠搴撳瓨 + Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First(); + if (proStockInfo == null) + { + return content.Error($"鏈壘鍒皗task.PalletCode}搴撳瓨淇℃伅"); + } + List<Dt_ProStockInfoDetail> proStockInfoDetails = proStockInfo.proStockInfoDetails; + if (proStockInfoDetails.Count <= 0) + { + return content.Error("鎴愬搧搴撳瓨鏄庣粏涓虹┖"); + } + proStockInfoDetails.ForEach(x => + { + x.ProOutDetailStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); + }); + proStockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); + //鑾峰彇鎴愬搧骞冲簱 + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString()); + proStockInfo.WarehouseId = warehouse.WarehouseId; + proStockInfo.LocationCode = "鎴愬搧鍖呰鎷h揣鍖�"; + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + outProStockInfo.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt(); + _unitOfWorkManage.BeginTran(); + //璐т綅鍙樺姩璁板綍 + int beforeStatus = locationInfo.LocationStatus; + locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); + _outboundRepository.ErpProScrapDetailRepository.UpdateData(erpProScrapSheetDetail); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, locationInfo.WarehouseId); + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, erpProScrapSheet?.ProScrapSheetOrderNo ?? "", task.TaskNum); + _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo); + _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfoDetails); + _outProStockInfoRepository.UpdateData(outProStockInfo); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); + //MES鎴愬搧搴撳瓨鏉垮嚭搴撳悓姝� + //WebResponseContent responseContent = ProductOutBoundSync(MesProOutBound(mesRworkOutboundOrder, proStockInfoDetails)); + //if (!responseContent.Status) + //{ + // throw new Exception("鍚屾MES搴撳瓨鏉垮嚭搴撳け璐�,閿欒:"+ responseContent.Message); + //} + _unitOfWorkManage.CommitTran(); + content.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } + /// <summary> + /// 鐩樼偣鍑哄簱瀹屾垚 + /// </summary> + public WebResponseContent OutInventoryCompleted(Dt_Task task,Dt_StockInfo stockInfo,Dt_LocationInfo locationInfo) + { + WebResponseContent content = new WebResponseContent(); + try + { + //鑾峰彇瀵瑰簲鐩樼偣鍗� + Dt_TakeStockOrder takeStockOrder = _inboundRepository.TakeStockOrderRepository.Db.Queryable<Dt_TakeStockOrder>().Where(x=>x.OrderNo==task.OrderNo).Includes(x=>x.Details).First(); + if (takeStockOrder==null) + { + return content.Error($"鐩樼偣鍗晎task.OrderNo}涓嶅瓨鍦�"); + } + if (takeStockOrder.TakeStockStatus!=TakeStockStatusEnum.鐩樼偣涓�.ObjToInt()) + { + return content.Error($"鐩樼偣鍗晎task.OrderNo}鐩樼偣宸插畬鎴愭垨鏈紑濮�"); + } + if (stockInfo.StockStatus!=StockStatusEmun.鍑哄簱閿佸畾.ObjToInt()) + { + return content.Error($"{stockInfo.PalletCode}搴撳瓨鐘舵�佷笉姝g‘"); + } + if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt()) + { + return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘"); + } + //鏍规嵁浠诲姟鎵樼洏鏌ョ洏鐐规槑缁� + Dt_TakeStockOrderDetail? takeStockOrderDetail = takeStockOrder.Details.FirstOrDefault(x=>x.TakePalletCode==stockInfo.PalletCode); + if (takeStockOrderDetail==null) + { + return content.Error($"{stockInfo.PalletCode}鏈壘鍒板搴旂洏鐐规槑缁�"); + } + if (takeStockOrderDetail.TakeDetalStatus!=TakeStockDetailStatusEnum.鐩樼偣鍑哄簱涓�.ObjToInt()) + { + return content.Error($"{stockInfo.PalletCode}鐩樼偣鏄庣粏鐘舵�佷笉姝g‘"); + } + takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.鐩樼偣鍑哄簱瀹屾垚.ObjToInt(); + stockInfo.StockStatus = StockStatusEmun.鐩樼偣鍑哄簱瀹屾垚.ObjToInt(); + stockInfo.Details.ForEach(x => + { + x.Status = StockStatusEmun.鐩樼偣鍑哄簱瀹屾垚.ObjToInt(); + }); + stockInfo.LocationCode = ""; + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + int beforeStatus = locationInfo.LocationStatus; + locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); + _unitOfWorkManage.BeginTran(); + //璐т綅鍙樺姩璁板綍 + _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Free, locationInfo.WarehouseId); + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, takeStockOrder?.OrderNo ?? "", task.TaskNum); + _inboundRepository.TakeStockOrderDetailRepository.UpdateData(takeStockOrderDetail); + _stockRepository.StockInfoRepository.UpdateData(stockInfo); + _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); + _unitOfWorkManage.CommitTran(); + content.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } } } -- Gitblit v1.9.3