From bf780b6c83012b5beb3d7515b8fb61753c5fb736 Mon Sep 17 00:00:00 2001 From: sjz <1240968267@qq.com> Date: 星期四, 26 六月 2025 08:48:37 +0800 Subject: [PATCH] 采购承诺交期改string类型 --- MES.Service/service/BasicData/SalesReturnNoticeManager.cs | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 179 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/BasicData/SalesReturnNoticeManager.cs b/MES.Service/service/BasicData/SalesReturnNoticeManager.cs index 206f0ea..c8395f6 100644 --- a/MES.Service/service/BasicData/SalesReturnNoticeManager.cs +++ b/MES.Service/service/BasicData/SalesReturnNoticeManager.cs @@ -1,4 +1,5 @@ 锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; using MES.Service.Modes; using SqlSugar; @@ -75,4 +76,182 @@ } #endregion + + private readonly SalesReturnNoticeDetailManager salesReturnNoticeDetailManager = new(); + + // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜 閿�鍞鍗�(SalesOrder) 璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔 + public bool Save(SaleReturnNotice saleReturnNotice) + { + var salesReturnNoticeErpSalesReturnNotice = saleReturnNotice.erpSalesReturnNotice; + var mesSalesReturnNotice = GetSalesReturnNotice(salesReturnNoticeErpSalesReturnNotice); + var mesSalesReturnNoticeDetails = GetErpSalesOrderDetail(saleReturnNotice.erpSalesReturnNoticeDetail, salesReturnNoticeErpSalesReturnNotice.type); + + return UseTransaction(db => + { + switch (salesReturnNoticeErpSalesReturnNotice.type) + { + case "3": + return UpdateData(db, mesSalesReturnNotice, mesSalesReturnNoticeDetails) ? 1 : 0; + case "2": + case "4": + case "5": + case "6": + return SaveOrUpdateData(db, mesSalesReturnNotice, mesSalesReturnNoticeDetails) + ? 1 + : 0; + default: + throw new NotImplementedException( + $"type娌℃湁{salesReturnNoticeErpSalesReturnNotice.type}杩欎釜绫诲瀷"); + } + }) > 0; + + } + + + + // 鏇存柊鏁版嵁鐨勬柟娉�(鍗曠函鐨勫垹闄�) + private bool UpdateData(SqlSugarScope db, SalesReturnNotice salesReturnNotice, + List<SalesReturnNoticeDetail> salesReturnNoticeDetails) + { + var decimals = salesReturnNoticeDetails.Select(s => s.Id).ToArray(); + var update = base.DeleteById(salesReturnNotice.Id); + var insertOrUpdate = db + .Deleteable<SalesOrderDetail>().In(decimals) + .ExecuteCommand() > 0; + + if (update && insertOrUpdate) return true; + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 + private bool SaveOrUpdateData(SqlSugarScope db, SalesReturnNotice salesReturnNotice, + List<SalesReturnNoticeDetail> salesReturnNoticeDetails) + { + if (salesReturnNotice.Id != null) base.DeleteById(salesReturnNotice.Id); + + if (salesReturnNoticeDetails.Count > 0) + db.Deleteable<SalesOrderDetail>() + .Where(s => s.ErpId == salesReturnNotice.Id).ExecuteCommand(); + + var orUpdate = base.Insert(salesReturnNotice); + var baOrUpdate = salesReturnNoticeDetailManager.InsertRange(salesReturnNoticeDetails); + if (orUpdate && baOrUpdate) return true; + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + } + + // 鎵归噺淇濆瓨璁板綍鐨勬柟娉� + public bool SaveList(List<SaleReturnNotice> saleReturnNotices) + { + var result = saleReturnNotices.Select(Save).ToList(); + return result.All(b => b); + } + + + // 灏� ErpSalesReturnNotice 瀵硅薄杞崲涓� SalesReturnNotice 瀵硅薄鐨勬柟娉� + public SalesReturnNotice GetSalesReturnNotice(ErpSalesReturnNotice erpSalesReturnNotice) + { + + var eid = Convert.ToDecimal(erpSalesReturnNotice.Id); + var MesSalesReturnNotice = new SalesReturnNotice(); + + var single = base.GetSingle(it => it.Id == eid); + if (single != null) MesSalesReturnNotice.Id = single.Id; + + MesSalesReturnNotice.ErpId = erpSalesReturnNotice.erpID; + MesSalesReturnNotice.BillType = erpSalesReturnNotice.fBillTypeID; + MesSalesReturnNotice.BillNo = erpSalesReturnNotice.fBillNo; + + if (erpSalesReturnNotice.fDate != null) + MesSalesReturnNotice.FDate = DateTime.ParseExact(erpSalesReturnNotice.fDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesReturnNotice.Currency = erpSalesReturnNotice.fSettleCurrld; + MesSalesReturnNotice.SalesDept = erpSalesReturnNotice.fSaleDeptId; + MesSalesReturnNotice.ReturnCustomer = erpSalesReturnNotice.fRetcustId; + MesSalesReturnNotice.ReturnReason = erpSalesReturnNotice.fRetcustReason; + MesSalesReturnNotice.DeliveryLocation = erpSalesReturnNotice.fHeadLocId; + MesSalesReturnNotice.InventoryDept = erpSalesReturnNotice.fRetDeptId; + MesSalesReturnNotice.InventoryGroup = erpSalesReturnNotice.fStockerGroupId; + MesSalesReturnNotice.WarehouseManager = erpSalesReturnNotice.fStockerId; + MesSalesReturnNotice.SalesGroup = erpSalesReturnNotice.fSaleGroupId; + MesSalesReturnNotice.SalesPerson = erpSalesReturnNotice.fSalesManId; + MesSalesReturnNotice.Receiver = erpSalesReturnNotice.fReceiveCusId; + MesSalesReturnNotice.ReceiverContact = erpSalesReturnNotice.fReceiveCusContact; + MesSalesReturnNotice.ReceiverAddress = erpSalesReturnNotice.fReceiveAddress; + MesSalesReturnNotice.ReceiverName = erpSalesReturnNotice.fLinkMan; + MesSalesReturnNotice.SettleParty = erpSalesReturnNotice.fSettleCusId; + MesSalesReturnNotice.CreatedBy = erpSalesReturnNotice.fCreatorId; + + if (erpSalesReturnNotice.fCreateDate != null) + MesSalesReturnNotice.CreatedDate = DateTime.ParseExact(erpSalesReturnNotice.fCreateDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesReturnNotice.ModifiedBy = erpSalesReturnNotice.fModifierId; + + if (erpSalesReturnNotice.fModifyDate != null) + MesSalesReturnNotice.ModifiedDate = DateTime.ParseExact(erpSalesReturnNotice.fModifyDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesReturnNotice.ClosedBy = erpSalesReturnNotice.fCloserId; + MesSalesReturnNotice.CloseReason = erpSalesReturnNotice.fCloseReason; + + if (erpSalesReturnNotice.fCloseDate != null) + MesSalesReturnNotice.CloseDate = DateTime.ParseExact(erpSalesReturnNotice.fCloseDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesReturnNotice.ApprovedBy = erpSalesReturnNotice.fApproverId; + + if (erpSalesReturnNotice.fApproveDate != null) + MesSalesReturnNotice.ApprovedDate = DateTime.ParseExact(erpSalesReturnNotice.fApproveDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesReturnNotice.CancelStatus = erpSalesReturnNotice.fCancelStatus; + MesSalesReturnNotice.CancelledBy = erpSalesReturnNotice.fCancellerId; + + if (erpSalesReturnNotice.fCancelDate != null) + MesSalesReturnNotice.CancelDate = DateTime.ParseExact(erpSalesReturnNotice.fCancelDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesReturnNotice.CloseStatus = erpSalesReturnNotice.fBillCloseStatus; + MesSalesReturnNotice.BillStatus = erpSalesReturnNotice.fDocumentStatus; + + return MesSalesReturnNotice; + } + + // 灏� ErpSalesReturnNoticeDetail 瀵硅薄杞崲涓� SalesReturnNoticeDetail 瀵硅薄鐨勬柟娉� + public List<SalesReturnNoticeDetail> GetErpSalesOrderDetail( + List<ErpSalesReturnNoticeDetail> erpSalesReturnNoticeDetails, string type) + { + return erpSalesReturnNoticeDetails.Select(s => + { + var entity = new SalesReturnNoticeDetail + { + Id = Convert.ToDecimal(s.Id), + ErpLineId = s.erpID, + ErpHeadId =s.ehid, + MaterialId = s.fMaterialId, + MaterialName = s.fMaterialName, + MaterialSpecification = s.fMaterialModel, + SalesUnitId = s.fUnitID, + SalesQuantity = Convert.ToDecimal(s.fQty), + IsFree = s.fIsFree, + ReturnDate = s.fDeliverydate != null ? DateTime.ParseExact(s.fDeliverydate, "yyyy-MM-dd HH:mm:ss", null) : null, + WareHouse = s.fStockId, + PlanTrackingNumber = s.fMtoNo, + LotNumber = s.fLot, + Note = s.fEntryDescription, + ReturnType = s.fRmType, + InventoryUnit = s.fStockUnitID, + InventoryQuantity = Convert.ToDecimal(s.fStockQty), + MaterialCategory = s.fMaterialType, + OwnerTypeId = s.fOwnerTypeID, + OwnerId = s.fOwnerId, + SourceBillType = s.fSrcType, + SourceBillNo = s.fSrcBillNo, + OrderBillNo = s.fOrderNo, + + }; + + var single = salesReturnNoticeDetailManager.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