From bc3e001d093c3d6cbddc7e008aa99c12f850c1e5 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期四, 26 十二月 2024 21:50:35 +0800 Subject: [PATCH] 更新 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 215 insertions(+), 15 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 7c0e82c..e309926 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,12 @@ 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; +using WIDESEA_DTO.Basic; +using WIDESEA_DTO.ERP; using WIDESEA_External.ERPService; using WIDESEA_External.Model; using WIDESEA_IBasicRepository; @@ -21,13 +26,17 @@ { 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, IBasicRepository basicRepository, IInvokeERPService invokeERPService) : 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; @@ -72,7 +81,11 @@ return base.AddData(saveModel); } - + /// <summary> + /// 鏀惰揣瀹屾垚骞跺洖浼燛RP + /// </summary> + /// <param name="orderId"></param> + /// <returns></returns> public WebResponseContent FeedbackReceiveOrder(int orderId) { try @@ -81,6 +94,10 @@ if (receiveOrder == null) { return WebResponseContent.Instance.Error($"鏈壘鍒版敹璐у崟"); + } + if (receiveOrder.ReceiveOrderStatus==ReceiveOrderStatusEnum.Completed.ObjToInt()) + { + return WebResponseContent.Instance.Error($"鏀惰揣鍗曞凡瀹屾垚"); } if (receiveOrder.Details == null || receiveOrder.Details.Count == 0) { @@ -105,10 +122,11 @@ PriceInTax = 0, PurchaseOrderCode = item.PurchaseOrderNo, PurchaseOrderSerno = item.PurchaseOrderDetailRowNo, - QtyReceived = item.ReceivedQuantity, + QtyRecieved = item.ReceivedQuantity.ObjToInt(), Serno = item.RowNo, Supplotno = "", - Taxrate = "" + Taxrate = "", + }; recevieOrderDetails.Add(recevieOrderDetail); } @@ -116,29 +134,41 @@ ERPReceiveModel receiveModel = new ERPReceiveModel() { Code = receiveOrder.ReceiveOrderNo, - CompanyId = "", + CompanyId = "HATC", DeliveryCode = receiveOrder.DeliveryCode, CustomerId = receiveOrder.CustomerId, - CreatorId = receiveOrder.CustomerId, - EndDate = receiveOrder.CreateDate, - ReceiveDate = receiveOrder.CreateDate, - PlantsId = "", + CreatorId = "TC20082",//娴嬭瘯 receiveOrder.Creater + EntDate = receiveOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"), + ReceiveDate = receiveOrder.ReceiveDate.ToString("yyyy-MM-dd HH:mm:ss"), + PlantsId = "HA02", SuppliersId = receiveOrder.SuppliersId, - Type = "PO", + Type = Enum.GetName(typeof(ReceiveOrderTypeEnum),receiveOrder.ReceiveOrderType), UniqueTag = receiveOrder.ReceiveOrderId.ToString(), WarehouseCode = warehouse.WarehouseCode, Way = 1, Details = recevieOrderDetails }; - - string response = _invokeERPService.InvokeMatReceiveApi(receiveModel); - + //鏀惰揣鎺ㄩ�佽嚦ERP + string Content = _invokeERPService.InvokeMatReceiveApi(receiveModel); + ErpRequestContent erpRequest=Content.DeserializeObject<ErpRequestContent>(); + if (erpRequest.res==0) + { + return WebResponseContent.Instance.Error(erpRequest.Data); + } + receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Completed.ObjToInt(); + receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt(); + //鏇存柊鏀惰揣鍗曚俊鎭� + _unitOfWorkManage.BeginTran(); + BaseDal.UpdateData(receiveOrder); + _unitOfWorkManage.CommitTran(); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } + } + public WebResponseContent GetReceiveOrders(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); @@ -165,7 +195,11 @@ } return content; } - + /// <summary> + /// 鍒涘缓鍏ュ簱鍗� + /// </summary> + /// <param name="receiveOrderId">鏀惰揣鍗曠紪鍙�</param> + /// <returns></returns> public WebResponseContent CreateInboundOrder(int receiveOrderId) { try @@ -197,6 +231,7 @@ Dt_InboundOrder inboundOrder = new Dt_InboundOrder() { + InboundOrderNo="TestInboundNo1",//娴嬭瘯 UpperOrderNo = receiveOrder.ReceiveOrderNo, CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(), @@ -241,5 +276,170 @@ 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.CheckOrderNo = "TestCheckNo11";//娴嬭瘯 + checkOrder.ReceiveOrderNo = ""; + checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; + checkOrder.ScrappedQuantity = 0; + checkOrder.ReturnQuantity = 0; + checkOrder.DefectedQuantity = 0; + checkOrder.ReceiveDetailRowNo = rowNo; + checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt(); + checkOrders.Add(checkOrder); + } + } + receiveOrder = new Dt_ReceiveOrder() + { + ReceiveOrderNo= "TestReceiveOrderNo11",//娴嬭瘯 + 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.CheckOrderNo = "Test-CheckNo1";//娴嬭瘯 + checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; + checkOrder.ScrappedQuantity = 0; + checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; + checkOrder.ReturnQuantity = 0; + checkOrder.DefectedQuantity = 0; + checkOrder.ReceiveDetailRowNo = rowNo; + checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt(); + 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); + } + if (checkOrders.Count > 0) + { + _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