From 362fb69c690a2b36e251996f8b22d87e97d385ba Mon Sep 17 00:00:00 2001 From: cnf <3200815559@qq.com> Date: 星期三, 12 二月 2025 16:06:33 +0800 Subject: [PATCH] 新增销售订单保存接口,销售退货通知单保存接口,销售发货通知单保存接口 --- MES.Service/service/BasicData/SalesOrderManager.cs | 188 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 187 insertions(+), 1 deletions(-) diff --git a/MES.Service/service/BasicData/SalesOrderManager.cs b/MES.Service/service/BasicData/SalesOrderManager.cs index b466f00..d635c50 100644 --- a/MES.Service/service/BasicData/SalesOrderManager.cs +++ b/MES.Service/service/BasicData/SalesOrderManager.cs @@ -1,4 +1,5 @@ 锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; using MES.Service.Modes; using SqlSugar; @@ -38,7 +39,8 @@ conModels.Add(new ConditionalModel { FieldName = typeof(SalesOrder).GetProperties()[0].Name, - ConditionalType = ConditionalType.Equal, FieldValue = "1" + ConditionalType = ConditionalType.Equal, + FieldValue = "1" }); //id=1 var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom()); @@ -75,4 +77,188 @@ } #endregion + + + private readonly SalesOrderDetailManager salesOrderDetailManager = new(); + + // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜 閿�鍞鍗�(SalesOrder) 璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔 + public bool Save(SalesOrders salesOrders) + { + var salesOrdersErpSalesOrder = salesOrders.ErpSalesOrder; + var mesSalesOrders = GetMesSalesOrder(salesOrdersErpSalesOrder); + var mesSalesOrderDetail = GetErpSalesOrderDetail(salesOrders.ErpSalesOrderDetails,salesOrdersErpSalesOrder.Type); + + return UseTransaction(db => + { + switch (salesOrdersErpSalesOrder.Type) + { + case "3": + return UpdateData(db, mesSalesOrders, mesSalesOrderDetail) ? 1 : 0; + case "2": + case "4": + case "5": + case "B": + return SaveOrUpdateData(db, mesSalesOrders, mesSalesOrderDetail) + ? 1 + : 0; + default: + throw new NotImplementedException( + $"type娌℃湁{salesOrdersErpSalesOrder.Type}杩欎釜绫诲瀷"); + } + }) > 0; + + } + + + + // 鏇存柊鏁版嵁鐨勬柟娉�(鍗曠函鐨勫垹闄�) + private bool UpdateData(SqlSugarScope db, SalesOrder salesOrder, + List<SalesOrderDetail> salesOrderDetails) + { + var decimals = salesOrderDetails.Select(s => s.Id).ToArray(); + var update = base.DeleteById(salesOrder.Id); + var insertOrUpdate = db + .Deleteable<SalesOrderDetail>().In(decimals) + .ExecuteCommand() > 0; + + if (update && insertOrUpdate) return true; + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 + private bool SaveOrUpdateData(SqlSugarScope db, SalesOrder salesOrder, + List<SalesOrderDetail> salesOrderDetails) + { + if (salesOrder.Id != null) base.DeleteById(salesOrder.Id); + + if (salesOrderDetails.Count > 0) + db.Deleteable<SalesOrderDetail>() + .Where(s => s.ErpId == salesOrder.Id).ExecuteCommand(); + + var orUpdate = base.Insert(salesOrder); + var baOrUpdate = salesOrderDetailManager.InsertRange(salesOrderDetails); + if (orUpdate && baOrUpdate) return true; + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + } + + // 鎵归噺淇濆瓨璁板綍鐨勬柟娉� + public bool SaveList(List<SalesOrders> salesOrders) + { + var result = salesOrders.Select(Save).ToList(); + return result.All(b => b); + } + + + // 灏� ErpSalesOrder 瀵硅薄杞崲涓� SalesOrder 瀵硅薄鐨勬柟娉� + public SalesOrder GetMesSalesOrder(ErpSalesOrder erpSalesOrder) + { + + var eid = Convert.ToDecimal(erpSalesOrder.Id); + var MesSalesOrder = new SalesOrder(); + + var single = base.GetSingle(it => it.Id == eid); + if (single != null) MesSalesOrder.Id = single.Id; + + MesSalesOrder.ErpId = Convert.ToDecimal(erpSalesOrder.ErpID); + MesSalesOrder.BillNo = erpSalesOrder.FBillNo; + MesSalesOrder.BillTypeId = erpSalesOrder.FBillTypeID; + MesSalesOrder.DocumentStatus = erpSalesOrder.FDocumentStatus; + + if (erpSalesOrder.FDate != null) + MesSalesOrder.FDate = DateTime.ParseExact(erpSalesOrder.FDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesOrder.BusinessType = erpSalesOrder.FBusinessType; + MesSalesOrder.HeadDeliveryWay = erpSalesOrder.FHeadDeliveryWay; + MesSalesOrder.CloseStatus = erpSalesOrder.FCloseStatus; + MesSalesOrder.HeadLocId = erpSalesOrder.FHEADLOCID; + MesSalesOrder.CustId = erpSalesOrder.FCustId; + MesSalesOrder.CloseStatus = erpSalesOrder.FCloseStatus; + MesSalesOrder.SaleDeptId = erpSalesOrder.FSaleDeptId; + MesSalesOrder.SalerId = erpSalesOrder.FSalerId; + MesSalesOrder.ChangeReason = erpSalesOrder.FChangeReason; + MesSalesOrder.Note = erpSalesOrder.FNote; + MesSalesOrder.SettleId = erpSalesOrder.FSettleId; + MesSalesOrder.LinkMan = erpSalesOrder.FLinkMan; + MesSalesOrder.ChargeId = erpSalesOrder.FChargeId; + MesSalesOrder.LinkPhone = erpSalesOrder.FLinkPhone; + MesSalesOrder.CreatorId = erpSalesOrder.FCreatorId; + + if (erpSalesOrder.FCreateDate != null) + MesSalesOrder.CreateDate = DateTime.ParseExact(erpSalesOrder.FCreateDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesOrder.ModifierId = erpSalesOrder.FModifierId; + + if (erpSalesOrder.FModifyDate != null) + MesSalesOrder.ModifyDate = DateTime.ParseExact(erpSalesOrder.FModifyDate, "yyyy-MM-dd HH:mm:ss", null); + + if (erpSalesOrder.FApproveDate != null) + MesSalesOrder.ApproveDate = DateTime.ParseExact(erpSalesOrder.FApproveDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesOrder.CloserId = erpSalesOrder.FCloserId; + + if (erpSalesOrder.FCloseDate != null) + MesSalesOrder.CloseDate = DateTime.ParseExact(erpSalesOrder.FCloseDate, "yyyy-MM-dd HH:mm:ss", null); + + if (erpSalesOrder.FChangeDate != null) + MesSalesOrder.ChangeDate = DateTime.ParseExact(erpSalesOrder.FChangeDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesOrder.CancelStatus = erpSalesOrder.FCancelStatus; + MesSalesOrder.CancellerId = erpSalesOrder.FCancellerId; + MesSalesOrder.VersionNo = Convert.ToDecimal(erpSalesOrder.FVersionNo); + MesSalesOrder.ChangerId = erpSalesOrder.FChangerId; + MesSalesOrder.EntryNote = erpSalesOrder.FEntryNote; + + return MesSalesOrder; + } + + // 灏� ErpSalesOrderDetail 瀵硅薄杞崲涓� SalesOrderDetail 瀵硅薄鐨勬柟娉� + public List<SalesOrderDetail> GetErpSalesOrderDetail( + List<ErpSalesOrderDetail> erpSalesOrderDetails, string type) + { + return erpSalesOrderDetails.Select(s => + { + var entity = new SalesOrderDetail + { + Id = Convert.ToDecimal(s.Id), + ErpId = Convert.ToDecimal(s.ErpID), + EHid = Convert.ToDecimal(s.EHID), + MaterialIDd = s.FMaterialId, + UnitId = s.FUnitID, + Qty = Convert.ToDecimal(s.FQty), + PriceUnitId = s.FPriceUnitId, + PriceUnitQty = Convert.ToDecimal(s.FPriceUnitQty), + DeliveryDate = s.FDeliveryDate != null ? DateTime.ParseExact(s.FDeliveryDate, "yyyy-MM-dd HH:mm:ss", null) : null, + IsFree = s.FIsFree, + OwnerTypeId = s.FOwnerTypeId, + OwnerId = s.FOwnerId, + EntryNote = s.FEntryNote, + MtoNo = s.FMtoNo, + Lot = s.FLot, + DeliveryMaxQty = Convert.ToDecimal(s.FDeliveryMaxQty), + DeliveryMinQty = Convert.ToDecimal(s.FDeliveryMinQty), + OutLmtUnitId = s.FOutLmtUnitID, + MrpCloseStatus = s.FMrpCloseStatus, + MrpTerminateStatus = s.FMrpTerminateStatus, + TerminateDate = s.FTerminateDate != null ? DateTime.ParseExact(s.FTerminateDate, "yyyy-MM-dd HH:mm:ss", null) : null, + TerminaterId = s.FTerminaterId, + SrcType = s.FSrcType, + SrcBillNo = s.FSrcBillNo, + DeliQty = Convert.ToDecimal(s.FDeliQty), + StockOutQty = Convert.ToDecimal(s.FStockOutQty), + BaseRetNoticeQty = Convert.ToDecimal(s.FBaseRetNoticeQty), + BaseReturnQty = Convert.ToDecimal(s.FBaseReturnQty), + BaseRemainOutQty = Convert.ToDecimal(s.FBaseRemainOutQty), + BaseArQty = Convert.ToDecimal(s.FBASEARQTY), + + + + }; + + var single = salesOrderDetailManager.GetSingle(it => + it.Id == entity.Id); + if (single != null) entity.Id = single.Id; + + return entity; + }).ToList(); + } } \ No newline at end of file -- Gitblit v1.9.3