From 06f5f3e474bb8d9e255a899b62d16f671cfdb940 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期四, 26 六月 2025 17:34:33 +0800 Subject: [PATCH] 代码更新 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs | 92 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 70 insertions(+), 22 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" index 2fc803e..a5ebece 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" @@ -1,5 +1,6 @@ 锘� using AutoMapper; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Globalization; @@ -15,6 +16,9 @@ using WIDESEA_Core.Helper; using WIDESEA_DTO; using WIDESEA_DTO.Basic; +using WIDESEA_DTO.QMS; +using WIDESEA_External.Model; +using WIDESEA_External.QMSService; using WIDESEA_IBasicRepository; using WIDESEA_ICheckRepository; using WIDESEA_IInboundRepository; @@ -32,8 +36,10 @@ private readonly IBasicRepository _basicRepository; private readonly ICheckOrderRepository _checkOrderRepository; private readonly IStockRepository _stockRepository; + private readonly ISupplierInfoRepository _supplierInfoRepository; + private readonly IInvokeQMSService _invokeQMSService; - public ReceiveOrderDetailService(IReceiveOrderDetailRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, ICheckOrderRepository checkOrderRepository, IStockRepository stockRepository) : base(BaseDal) + public ReceiveOrderDetailService(IReceiveOrderDetailRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, ICheckOrderRepository checkOrderRepository, IStockRepository stockRepository,ISupplierInfoRepository supplierInfoRepository,IInvokeQMSService invokeQMSService) : base(BaseDal) { _mapper = mapper; _unitOfWorkManage = unitOfWorkManage; @@ -41,6 +47,8 @@ _basicRepository = basicRepository; _checkOrderRepository = checkOrderRepository; _stockRepository = stockRepository; + _supplierInfoRepository = supplierInfoRepository; + _invokeQMSService = invokeQMSService; } private static object _rowNoLocker = new object(); @@ -64,11 +72,11 @@ { return WebResponseContent.Instance.Error($"璇ュ崟鎹凡鏀惰揣瀹屾垚"); } - + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == receiveOrder.WarehouseId); MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum); - //鏀惰揣澧炲姞鎵规鍗℃帶 - //鏌ヨ鏀惰揣鏄庣粏鏄惁鏈夊瓨鍦ㄥ悓涓�涓壒娆� - Dt_ReceiveOrderDetail receiveOrderDetailOld = _inboundRepository.ReceiveOrderDetailRepository.QueryFirst(x => x.LotNo == model.LotNo); + Dt_SupplierInfo supplierInfo = _supplierInfoRepository.QueryFirst(x => x.SupplierCode == receiveOrder.SuppliersId); + //鏀惰揣澧炲姞鎵规鍗℃帶,鏌ヨ鏀惰揣鏄庣粏鏄惁鏈夊瓨鍦ㄥ悓涓�涓壒娆� + Dt_ReceiveOrderDetail receiveOrderDetailOld = _inboundRepository.ReceiveOrderDetailRepository.QueryFirst(x => x.LotNo == model.LotNo && x.MaterielCode == model.MaterielCode); Dt_ReceiveOrder? receiveOrderOld = null; if (receiveOrderDetailOld!=null) { @@ -79,7 +87,7 @@ return WebResponseContent.Instance.Error($"鏀惰揣鍗曞彿{receiveOrderOld.ReceiveOrderNo}涓壒娆model.LotNo}宸插瓨鍦�"); } //鏌ヨ搴撳瓨鎵规鏄惁鏈夊瓨鍦ㄥ悓涓�涓壒娆� - Dt_StockInfoDetail stockInfoDetail = _stockRepository.StockInfoDetailRepository.QueryFirst(x => x.BatchNo == model.LotNo); + Dt_StockInfoDetail stockInfoDetail = _stockRepository.StockInfoDetailRepository.QueryFirst(x => x.BatchNo == model.LotNo && x.MaterielCode == model.MaterielCode); Dt_StockInfo? stockInfo = null; if (stockInfoDetail!=null) { @@ -174,6 +182,7 @@ if (materielInfo.IsCheck == WhetherEnum.True) { Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); + checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt(); checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; checkOrder.ReceiveDetailRowNo = receiveOrderDetail.RowNo; @@ -205,7 +214,7 @@ { return WebResponseContent.Instance.Error($"璇ラ噰璐崟鏀惰揣宸插畬鎴�"); } - Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.Where(x => x.MaterielCode == model.MaterielCode && (x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt() || x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Receiving.ObjToInt())).FirstOrDefault(); + Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.Where(x => x.MaterielCode == model.MaterielCode && (x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt() || x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Receiving.ObjToInt())).OrderBy(x=>x.Id).FirstOrDefault(); if (purchaseOrderDetail == null) { return WebResponseContent.Instance.Error($"璇ラ噰璐崟鏄庣粏鏀惰揣宸插畬鎴�"); @@ -227,7 +236,7 @@ purchaseOrderDetail.PurchaseDetailReceiveQty += model.Quantity; if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity) { - return WebResponseContent.Instance.Error($"閲囪喘鍗曡鐗╂枡鏁伴噺鍜屾敹璐ф暟閲忎笉涓�鑷�"); + return WebResponseContent.Instance.Error($"閲囪喘鍗曡鍙穥purchaseOrderDetail.RowNo}鐗╂枡{purchaseOrderDetail.MaterielCode}鏁伴噺婧㈠嚭:{purchaseOrderDetail.PurchaseDetailReceiveQty - purchaseOrderDetail.PurchaseDetailQuantity}"); } if (purchaseOrderDetail.PurchaseDetailReceiveQty == purchaseOrderDetail.PurchaseDetailQuantity) { @@ -295,7 +304,7 @@ } if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity) { - return WebResponseContent.Instance.Error($"閲囪喘鍗曡鐗╂枡鏁伴噺鍜屾敹璐ф暟閲忎笉涓�鑷�"); + return WebResponseContent.Instance.Error($"閲囪喘鍗曡鍙穥purchaseOrderDetail.RowNo}鐗╂枡{purchaseOrderDetail.MaterielCode}鏁伴噺婧㈠嚭:{purchaseOrderDetail.PurchaseDetailReceiveQty - purchaseOrderDetail.PurchaseDetailQuantity}"); } if (purchaseOrderDetail.PurchaseDetailQuantity == purchaseOrderDetail.PurchaseDetailReceiveQty) { @@ -313,21 +322,60 @@ purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); } + if(purchaseOrder.PurchaseOrderStatus== PurchaseOrderStatusEnum.NotReceived.ObjToInt()) + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt(); + _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); + } _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); - #region 娉ㄩ噴 - ////if (materielInfo.IsCheck == WhetherEnum.True) - ////{ - //// Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); - //// checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; - //// checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; - //// checkOrder.ReceiveDetailRowNo = receiveOrderDetail.RowNo; - //// checkOrder.ScrappedQuantity = 0; - //// checkOrder.ReturnQuantity = 0; - //// checkOrder.DefectedQuantity = 0; - //// _checkOrderRepository.AddData(checkOrder); - ////} - #endregion + if (materielInfo.IsCheck == WhetherEnum.True) + { + Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); + checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt(); + checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; + checkOrder.Result = CheckAcceptEnum.NotCheckAccept.ToString(); + checkOrder.QualifiedQuantity = 0; + checkOrder.ReceiveDetailRowNo = receiveOrderDetail.RowNo; + checkOrder.WarehouseId = receiveOrder.WarehouseId; + checkOrder.ScrappedQuantity = 0; + checkOrder.MaterielSpec = materielInfo.MaterielSpec; + checkOrder.ReturnQuantity = 0; + checkOrder.DefectedQuantity = 0; + int id = _checkOrderRepository.AddData(checkOrder); + QMSReceiveCheckModel qMSReceiveCheck = new QMSReceiveCheckModel() + { + UniqueTag = id.ToString(), + EntryNumber = receiveOrder.ReceiveOrderNo, + MaterialCode = receiveOrderDetail.MaterielCode, + MaterialName = receiveOrderDetail.MaterielName, + Quantity = (decimal)receiveOrderDetail.ReceivedQuantity, + SupplierCode = receiveOrder.SuppliersId, + SupplierName = supplierInfo.SupplierName, + BatchNumber = receiveOrderDetail.LotNo, + DeliveryNumber = receiveOrder.DeliveryCode, + PurchaseNumber = receiveOrderDetail.PurchaseOrderNo, + RowNumber = receiveOrderDetail.RowNo, + WarehouseCode = warehouse.WarehouseCode, + ReceiptDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + Remark = " " + }; + //璋冪敤QMS鏉ユ枡妫�楠屾帴鍙� + string response = _invokeQMSService.InvokeReceiveCheckApi(qMSReceiveCheck); + MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>(); + if (!mesResponseContent.BSucc) + { + throw new Exception(mesResponseContent.StrMsg); + } + ReceiveResultDTO? receiveResult = JsonConvert.DeserializeObject<ReceiveResultDTO>(mesResponseContent.Content.ToString()); + if (receiveResult == null) + { + throw new Exception("鎺ユ敹QMS缁撴灉澶辫触"); + } + Dt_CheckOrder _CheckOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == id); + _CheckOrder.CheckOrderNo = receiveResult.InspectionNumber; + _checkOrderRepository.UpdateData(_CheckOrder); + } _unitOfWorkManage.CommitTran(); } -- Gitblit v1.9.3