From 81cfbb34ad9092b19a2e3692786ee97f3646014b Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期一, 16 十二月 2024 21:30:46 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs | 244 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 242 insertions(+), 2 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs" index 75675e0..f2a2084 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs" @@ -1,4 +1,5 @@ -锘縰sing MailKit.Search; +锘縰sing AutoMapper; +using MailKit.Search; using System; using System.Collections.Generic; using System.Linq; @@ -7,8 +8,13 @@ using WIDESEA_Common.CommonEnum; using WIDESEA_Common.OrderEnum; using WIDESEA_Core; +using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Helper; +using WIDESEA_DTO.Basic; +using WIDESEA_External.ERPService; +using WIDESEA_External.Model; +using WIDESEA_IBasicRepository; using WIDESEA_ICheckRepository; using WIDESEA_IInboundRepository; using WIDESEA_IInboundService; @@ -18,13 +24,21 @@ { public class ReceiveOrderService : ServiceBase<Dt_ReceiveOrder, IReceiveOrderRepository>, IReceiveOrderService { + private readonly IUnitOfWorkManage _unitOfWorkManage; + private readonly IMapper _mapper; private readonly ICheckOrderRepository _checkOrderRepository; private readonly IInboundRepository _inboundRepository; + private readonly IBasicRepository _basicRepository; + private readonly IInvokeERPService _invokeERPService; - public ReceiveOrderService(IReceiveOrderRepository BaseDal, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository) : base(BaseDal) + public ReceiveOrderService(IReceiveOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService) : base(BaseDal) { + _mapper = mapper; + _unitOfWorkManage = unitOfWorkManage; _checkOrderRepository = checkOrderRepository; _inboundRepository = inboundRepository; + _basicRepository = basicRepository; + _invokeERPService = invokeERPService; } public override WebResponseContent AddData(SaveModel saveModel) @@ -64,6 +78,74 @@ } return base.AddData(saveModel); + } + + public WebResponseContent FeedbackReceiveOrder(int orderId) + { + try + { + Dt_ReceiveOrder receiveOrder = BaseDal.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderId == orderId).Includes(x => x.Details).First(); + if (receiveOrder == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒版敹璐у崟"); + } + if (receiveOrder.Details == null || receiveOrder.Details.Count == 0) + { + return WebResponseContent.Instance.Error($"鏈壘鍒版敹璐у崟鏄庣粏"); + } + + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == receiveOrder.WarehouseId); + if (warehouse == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�"); + } + + List<RecevieOrderDetailModel> recevieOrderDetails = new List<RecevieOrderDetailModel>(); + foreach (var item in receiveOrder.Details) + { + RecevieOrderDetailModel recevieOrderDetail = new RecevieOrderDetailModel() + { + Currcode = "", + IfInspection = item.IfInspection, + Lotno = item.LotNo, + MaterialsId = item.MaterielCode, + PriceInTax = 0, + PurchaseOrderCode = item.PurchaseOrderNo, + PurchaseOrderSerno = item.PurchaseOrderDetailRowNo, + QtyReceived = item.ReceivedQuantity, + Serno = item.RowNo, + Supplotno = "", + Taxrate = "" + }; + recevieOrderDetails.Add(recevieOrderDetail); + } + + ERPReceiveModel receiveModel = new ERPReceiveModel() + { + Code = receiveOrder.ReceiveOrderNo, + CompanyId = "", + DeliveryCode = receiveOrder.DeliveryCode, + CustomerId = receiveOrder.CustomerId, + CreatorId = receiveOrder.Creater, + EndDate = receiveOrder.CreateDate, + ReceiveDate = receiveOrder.CreateDate, + PlantsId = "", + SuppliersId = receiveOrder.SuppliersId, + Type = "PO", + UniqueTag = receiveOrder.ReceiveOrderId.ToString(), + WarehouseCode = warehouse.WarehouseCode, + Way = 1, + Details = recevieOrderDetails + }; + + string response = _invokeERPService.InvokeMatReceiveApi(receiveModel); + + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + return WebResponseContent.Instance.Error(ex.Message); + } } public WebResponseContent GetReceiveOrders(SaveModel saveModel) @@ -168,5 +250,163 @@ return WebResponseContent.Instance.Error(ex.Message); } } + + public WebResponseContent ReceiveAllOrder(int purchaseOrderId, string lotNo) + { + try + { + Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().Where(x => x.Id == purchaseOrderId).Includes(x => x.Details).First(); + if (purchaseOrder == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗�"); + } + if (purchaseOrder.Details == null || purchaseOrder.Details.Count == 0) + { + return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟鏄庣粏淇℃伅"); + } + if (purchaseOrder.PurchaseOrderStatus == PurchaseOrderStatusEnum.Received.ObjToInt()) + { + return WebResponseContent.Instance.Error($"宸叉敹璐у畬鎴�"); + } + if (purchaseOrder.Details.FirstOrDefault(x => x.PurchaseDetailStatus == PurchaseOrderStatusEnum.NotReceived.ObjToInt()) == null) + { + return WebResponseContent.Instance.Error($"宸叉敹璐у畬鎴�"); + } + List<Dt_CheckOrder> checkOrders = new List<Dt_CheckOrder>(); + List<Dt_MaterielInfo> materielInfos = new List<Dt_MaterielInfo>(); + List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>(); + Dt_ReceiveOrder receiveOrder = BaseDal.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.SuppliersId == purchaseOrder.SupplierCode && x.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt()).Includes(x => x.Details).First(); + if (receiveOrder == null) + { + int rowNo = 0; + foreach (var item in purchaseOrder.Details) + { + Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode); + if (materielInfo == null) + { + materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterielCode); + if (materielInfo == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�"); + } + materielInfos.Add(materielInfo); + } + Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() + { + PurchaseOrderNo = purchaseOrder.PurchaseOrderNo, + ReceivedQuantity = item.PurchaseDetailQuantity, + MaterielCode = item.MaterielCode, + LotNo = lotNo, + PurchaseOrderDetailRowNo = item.RowNo, + IfInspection = materielInfo.IsCheck.ObjToInt(), + CurrCode = "", + PriceInTax = 0, + TaxRate = "", + RowNo = rowNo + 1, + Unit = item.Unit + }; + rowNo += 1; + receiveOrderDetails.Add(receiveOrderDetail); + + if (materielInfo.IsCheck == WhetherEnum.True) + { + Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); + checkOrder.ReceiveOrderNo = ""; + checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; + checkOrder.ScrappedQuantity = 0; + checkOrder.ReturnQuantity = 0; + checkOrder.DefectedQuantity = 0; + checkOrder.ReceiveDetailRowNo = rowNo; + checkOrders.Add(checkOrder); + } + } + receiveOrder = new Dt_ReceiveOrder() + { + ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(), + CustomerId = "", + DeliveryCode = "", + ReceiveDate = DateTime.Now, + ReceiveOrderType = ReceiveOrderTypeEnum.PO.ObjToInt(), + SuppliersId = purchaseOrder.SupplierCode, + WarehouseId = purchaseOrder.Details.FirstOrDefault()?.WarehouseId ?? 0, + UploadStatus = WhetherEnum.False.ObjToInt(), + Details = receiveOrderDetails + }; + } + else + { + int rowNo = receiveOrder.Details.Count > 0 ? receiveOrder.Details.Max(x => x.RowNo) : 0; + + foreach (var item in purchaseOrder.Details) + { + Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode); + if (materielInfo == null) + { + materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterielCode); + if (materielInfo == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�"); + } + materielInfos.Add(materielInfo); + } + Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() + { + PurchaseOrderNo = purchaseOrder.PurchaseOrderNo, + ReceivedQuantity = item.PurchaseDetailQuantity, + MaterielCode = item.MaterielCode, + LotNo = lotNo, + ReceiveOrderId = receiveOrder.ReceiveOrderId, + PurchaseOrderDetailRowNo = item.RowNo, + IfInspection = materielInfo.IsCheck.ObjToInt(), + CurrCode = "", + PriceInTax = 0, + TaxRate = "", + RowNo = rowNo + 1, + Unit = item.Unit, + + }; + rowNo += 1; + receiveOrderDetails.Add(receiveOrderDetail); + + if (materielInfo.IsCheck == WhetherEnum.True) + { + Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); + checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; + checkOrder.ScrappedQuantity = 0; + checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; + checkOrder.ReturnQuantity = 0; + checkOrder.DefectedQuantity = 0; + checkOrder.ReceiveDetailRowNo = rowNo; + checkOrders.Add(checkOrder); + } + } + } + + purchaseOrder.Details.ForEach(x => x.PurchaseDetailStatus = PurchaseOrderStatusEnum.Received.ObjToInt()); + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); + + _unitOfWorkManage.BeginTran(); + if (receiveOrder.ReceiveOrderId > 0) + { + Db.Insertable(receiveOrderDetails).ExecuteCommand(); + } + else + { + Db.InsertNav(receiveOrder).Include(x => x.Details).ExecuteCommand(); + checkOrders.ForEach(x => x.ReceiveOrderNo = receiveOrder.ReceiveOrderNo); + } + _checkOrderRepository.AddData(checkOrders); + _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); + _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrder.Details); + _unitOfWorkManage.CommitTran(); + + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } } } -- Gitblit v1.9.3