From b3cbeec348e826813c176340f1b0010bb2ece2cd Mon Sep 17 00:00:00 2001 From: cnf <3200815559@qq.com> Date: 星期三, 12 二月 2025 16:13:55 +0800 Subject: [PATCH] 新增销售订单保存接口,销售退货通知单保存接口,销售发货通知单保存接口 --- MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 262 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs b/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs new file mode 100644 index 0000000..d936c38 --- /dev/null +++ b/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs @@ -0,0 +1,262 @@ +锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; +using MES.Service.Modes; +using SqlSugar; + +namespace MES.Service.service.BasicData; + +public class SalesDeliveryNoticeManager : Repository<SalesDeliveryNotice> +{ + //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� + + //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 SalesReturnNoticeManager.cs + + + #region 鏁欏鏂规硶 + + /// <summary> + /// 浠撳偍鏂规硶婊¤冻涓嶄簡澶嶆潅涓氬姟闇�姹傦紝涓氬姟浠g爜璇峰湪杩欓噷闈㈠畾涔夋柟娉� + /// </summary> + public void Study() + { + /*********鏌ヨ*********/ + + var data1 = base.GetById(1); //鏍规嵁ID鏌ヨ + var data2 = base.GetList(); //鏌ヨ鎵�鏈� + var data3 = base.GetList(it => 1 == 1); //鏍规嵁鏉′欢鏌ヨ + //var data4 = base.GetSingle(it => 1 == 1);//鏍规嵁鏉′欢鏌ヨ涓�鏉�,濡傛灉瓒呰繃涓�鏉′細鎶ラ敊 + + var p = new PageModel { PageIndex = 1, PageSize = 2 }; // 鍒嗛〉鏌ヨ + var data5 = base.GetPageList(it => 1 == 1, p); + Console.Write(p.TotalCount); //杩斿洖鎬绘暟 + + var data6 = + base.GetPageList(it => 1 == 1, p, + it => SqlFunc.GetRandom()); // 鍒嗛〉鏌ヨ鍔犳帓搴� + Console.Write(p.TotalCount); //杩斿洖鎬绘暟 + + var conModels = new List<IConditionalModel>(); //缁勮鏉′欢鏌ヨ浣滀负鏉′欢瀹炵幇 鍒嗛〉鏌ヨ鍔犳帓搴� + conModels.Add(new ConditionalModel + { + FieldName = typeof(SalesReturnNotice).GetProperties()[0].Name, + ConditionalType = ConditionalType.Equal, + FieldValue = "1" + }); //id=1 + var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom()); + + AsQueryable().Where(x => 1 == 1) + .ToList(); //鏀寔浜嗚浆鎹㈡垚queryable,鎴戜滑鍙互鐢╭ueryable瀹炵幇澶嶆潅鍔熻兘 + + + /*********鎻掑叆*********/ + var insertData = new SalesDeliveryNotice(); //娴嬭瘯鍙傛暟 + var insertArray = new[] { insertData }; + base.Insert(insertData); //鎻掑叆 + base.InsertRange(insertArray); //鎵归噺鎻掑叆 + var id = base.InsertReturnIdentity(insertData); //鎻掑叆杩斿洖鑷鍒� + AsInsertable(insertData).ExecuteCommand(); //鎴戜滑鍙互杞垚 Insertable瀹炵幇澶嶆潅鎻掑叆 + + + /*********鏇存柊*********/ + var updateData = new SalesDeliveryNotice(); //娴嬭瘯鍙傛暟 + var updateArray = new[] { updateData }; //娴嬭瘯鍙傛暟 + base.Update(updateData); //鏍规嵁瀹炰綋鏇存柊 + base.UpdateRange(updateArray); //鎵归噺鏇存柊 + //base.Update(it => new SalesReturnNotice() { ClassName = "a", CreateTime = DateTime.Now }, it => it.id==1);// 鍙洿鏂癈lassName鍒楀拰CreateTime鍒楋紝鍏跺畠鍒椾笉鏇存柊锛屾潯浠秈d=1 + AsUpdateable(updateData).ExecuteCommand(); //杞垚Updateable鍙互瀹炵幇澶嶆潅鐨勬彃鍏� + + + /*********鍒犻櫎*********/ + var deldata = new SalesDeliveryNotice(); //娴嬭瘯鍙傛暟 + base.Delete(deldata); //鏍规嵁瀹炰綋鍒犻櫎 + base.DeleteById(1); //鏍规嵁涓婚敭鍒犻櫎 + base.DeleteById(new[] { 1, 2 }); //鏍规嵁涓婚敭鏁扮粍鍒犻櫎 + base.Delete(it => 1 == 2); //鏍规嵁鏉′欢鍒犻櫎 + AsDeleteable().Where(it => 1 == 2) + .ExecuteCommand(); //杞垚Deleteable瀹炵幇澶嶆潅鐨勬搷浣� + } + + #endregion + + private readonly SalesDeliveryNoticeDetailManager salesDeliveryNoticeDetailManager = new(); + + // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜 閿�鍞鍗�(SalesOrder) 璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔 + public bool Save(SaleDeliveryNotice saleDeliveryNotice) + { + var salesDeliveryNoticeErpSalesDeliveryNotice = saleDeliveryNotice.ErpSalesDeliveryNotice; + var mesSalesDeliveryNotice = GetSalesDeliveryNotice(salesDeliveryNoticeErpSalesDeliveryNotice); + var mesSalesDeliveryNoticeDetails = GetErpSalesDeliveryNoticeDetail(saleDeliveryNotice.ErpSalesDeliveryNoticeDetails, salesDeliveryNoticeErpSalesDeliveryNotice.type); + + return UseTransaction(db => + { + switch (salesDeliveryNoticeErpSalesDeliveryNotice.type) + { + case "3": + return UpdateData(db, mesSalesDeliveryNotice, mesSalesDeliveryNoticeDetails) ? 1 : 0; + case "2": + case "4": + case "5": + case "6": + return SaveOrUpdateData(db, mesSalesDeliveryNotice, mesSalesDeliveryNoticeDetails) + ? 1 + : 0; + default: + throw new NotImplementedException( + $"type娌℃湁{salesDeliveryNoticeErpSalesDeliveryNotice.type}杩欎釜绫诲瀷"); + } + }) > 0; + + } + + + + // 鏇存柊鏁版嵁鐨勬柟娉�(鍗曠函鐨勫垹闄�) + private bool UpdateData(SqlSugarScope db, SalesDeliveryNotice salesDeliveryNotice, + List<SalesDeliveryNoticeDetail> salesDeliveryNoticeDetails) + { + var decimals = salesDeliveryNoticeDetails.Select(s => s.Id).ToArray(); + var update = base.DeleteById(salesDeliveryNotice.Id); + var insertOrUpdate = db + .Deleteable<SalesOrderDetail>().In(decimals) + .ExecuteCommand() > 0; + + if (update && insertOrUpdate) return true; + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 + private bool SaveOrUpdateData(SqlSugarScope db, SalesDeliveryNotice salesDeliveryNotice, + List<SalesDeliveryNoticeDetail> salesDeliveryNoticeDetails) + { + if (salesDeliveryNotice.Id != null) base.DeleteById(salesDeliveryNotice.Id); + + if (salesDeliveryNoticeDetails.Count > 0) + db.Deleteable<SalesOrderDetail>() + .Where(s => s.ErpId == salesDeliveryNotice.Id).ExecuteCommand(); + + var orUpdate = base.Insert(salesDeliveryNotice); + var baOrUpdate = salesDeliveryNoticeDetailManager.InsertRange(salesDeliveryNoticeDetails); + if (orUpdate && baOrUpdate) return true; + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + } + + // 鎵归噺淇濆瓨璁板綍鐨勬柟娉� + public bool SaveList(List<SaleDeliveryNotice> saleDeliveryNotices) + { + var result = saleDeliveryNotices.Select(Save).ToList(); + return result.All(b => b); + } + + + // 灏� erpSalesDeliveryNotice 瀵硅薄杞崲涓� SalesReturnNotice 瀵硅薄鐨勬柟娉� + public SalesDeliveryNotice GetSalesDeliveryNotice(ErpSalesDeliveryNotice erpSalesDeliveryNotice) + { + + var eid = Convert.ToDecimal(erpSalesDeliveryNotice.Id); + var MesSalesDeliveryNotice = new SalesDeliveryNotice(); + + var single = base.GetSingle(it => it.Id == eid); + if (single != null) MesSalesDeliveryNotice.Id = single.Id; + + MesSalesDeliveryNotice.ErpId = erpSalesDeliveryNotice.erpID; + MesSalesDeliveryNotice.BillType = erpSalesDeliveryNotice.fBillTypeID; + MesSalesDeliveryNotice.BillNo = erpSalesDeliveryNotice.fBillNo; + + if (erpSalesDeliveryNotice.fDate != null) + MesSalesDeliveryNotice.FDate = DateTime.ParseExact(erpSalesDeliveryNotice.fDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesDeliveryNotice.Currency = erpSalesDeliveryNotice.fSettleCurrld; + MesSalesDeliveryNotice.SalesDept = erpSalesDeliveryNotice.fSaleDeptId; + MesSalesDeliveryNotice.Customer = erpSalesDeliveryNotice.fCustomerID; + MesSalesDeliveryNotice.DeliveryMethod = erpSalesDeliveryNotice.fHeadDeliveryWay; + MesSalesDeliveryNotice.DeliveryLocation = erpSalesDeliveryNotice.fHeadLocId; + MesSalesDeliveryNotice.Carrier = erpSalesDeliveryNotice.fCarrierID; + MesSalesDeliveryNotice.SettleParty = erpSalesDeliveryNotice.fCarriageNO; + MesSalesDeliveryNotice.SettleParty = erpSalesDeliveryNotice.fDeliveryDeptID; + MesSalesDeliveryNotice.InventoryGroup = erpSalesDeliveryNotice.fStockerGroupId; + MesSalesDeliveryNotice.WarehouseManager = erpSalesDeliveryNotice.fStockerId; + MesSalesDeliveryNotice.SalesGroup = erpSalesDeliveryNotice.fSaleGroupId; + MesSalesDeliveryNotice.SalesPerson = erpSalesDeliveryNotice.fSalesManId; + MesSalesDeliveryNotice.Receiver = erpSalesDeliveryNotice.fReceiveCusId; + MesSalesDeliveryNotice.ReceiverContact = erpSalesDeliveryNotice.fReceiveCusContact; + MesSalesDeliveryNotice.ReceiverAddress = erpSalesDeliveryNotice.fReceiveAddress; + MesSalesDeliveryNotice.ReceiverName = erpSalesDeliveryNotice.fLinkMan; + MesSalesDeliveryNotice.ReceiverName = erpSalesDeliveryNotice.fLinkPhone; + MesSalesDeliveryNotice.SettleParty = erpSalesDeliveryNotice.fSettleID; + MesSalesDeliveryNotice.PayerParty = erpSalesDeliveryNotice.fPayerID; + MesSalesDeliveryNotice.CreatedBy = erpSalesDeliveryNotice.fCreatorId; + + if (erpSalesDeliveryNotice.fCreateDate != null) + MesSalesDeliveryNotice.CreatedDate = DateTime.ParseExact(erpSalesDeliveryNotice.fCreateDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesDeliveryNotice.ModifiedBy = erpSalesDeliveryNotice.fModifierId; + + if (erpSalesDeliveryNotice.fModifyDate != null) + MesSalesDeliveryNotice.ModifiedDate = DateTime.ParseExact(erpSalesDeliveryNotice.fModifyDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesDeliveryNotice.ApprovedBy = erpSalesDeliveryNotice.fApproverId; + + if (erpSalesDeliveryNotice.fApproveDate != null) + MesSalesDeliveryNotice.ApprovedDate = DateTime.ParseExact(erpSalesDeliveryNotice.fApproveDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesDeliveryNotice.ClosedBy = erpSalesDeliveryNotice.fCloserId; + MesSalesDeliveryNotice.CloseReason = erpSalesDeliveryNotice.fCloseReason; + MesSalesDeliveryNotice.CloseStatus = erpSalesDeliveryNotice.fBillCloseStatus; + MesSalesDeliveryNotice.CancelStatus = erpSalesDeliveryNotice.fCancelStatus; + MesSalesDeliveryNotice.CancelledBy = erpSalesDeliveryNotice.fCancellerId; + + if (erpSalesDeliveryNotice.fCancelDate != null) + MesSalesDeliveryNotice.CancelDate = DateTime.ParseExact(erpSalesDeliveryNotice.fCancelDate, "yyyy-MM-dd HH:mm:ss", null); + + MesSalesDeliveryNotice.BillStatus = erpSalesDeliveryNotice.fDocumentStatus; + + return MesSalesDeliveryNotice; + } + + // 灏� erpSalesDeliveryNoticeDetail 瀵硅薄杞崲涓� SalesReturnNoticeDetail 瀵硅薄鐨勬柟娉� + public List<SalesDeliveryNoticeDetail> GetErpSalesDeliveryNoticeDetail( + List<ErpSalesDeliveryNoticeDetail> erpSalesDeliveryNoticeDetails, string type) + { + return erpSalesDeliveryNoticeDetails.Select(s => + { + var entity = new SalesDeliveryNoticeDetail + { + Id = Convert.ToDecimal(s.Id), + ErpLineId = s.erpID, + ErpHeadId = s.ehid, + MaterialId = s.fMaterialId, + MaterialName = s.fUnitID, + SalesQuantity = Convert.ToDecimal(s.fQty), + IsFree = s.fIsFree, + DeliveryDate = s.fDeliverydate != null ? DateTime.ParseExact(s.fDeliverydate, "yyyy-MM-dd HH:mm:ss", null) : null, + WareHouse = s.fStockId, + PlanTrackingNumber = s.fMtoNo, + LotNumber = s.fLot, + PriceQty = Convert.ToDecimal(s.fPriceUnitQty), + OwnerId = s.fOwnerIdHead, + InventoryUnit = s.fStockUnitID, + InventoryQuantity = Convert.ToDecimal(s.fStockQty), + PlanDeliveryDate = s.fPlanDeliveryDate != null ? DateTime.ParseExact(s.fPlanDeliveryDate, "yyyy-MM-dd HH:mm:ss", null) : null, + OutLmtUnit = s.fOutLmtUnit, + OutMaxQty = Convert.ToDecimal(s.fOutMaxQty), + OutMinQty = Convert.ToDecimal(s.fOutMinQty), + DeliveryLoc = s.fDeliveryLoc, + DeliveryAddress = s.fDeliveryLAddress, + SourceBillNo = s.fSrcBillNo, + OrderBillNo = s.fOrderNo, + TerminationStatus = s.fTerminationStatus, + TerminationDate = s.fTerminateDate != null ? DateTime.ParseExact(s.fTerminateDate, "yyyy-MM-dd HH:mm:ss", null) : null, + SumOutQty = Convert.ToDecimal(s.fSumOutQty), + RemainOutQty = Convert.ToDecimal(s.fRemainOutQty), + FentryNote = s.FNoteEntry, + + }; + + var single = salesDeliveryNoticeDetailManager.GetSingle(it => + it.Id == entity.Id); + if (single != null) entity.Id = single.Id; + + return entity; + }).ToList(); + } +} -- Gitblit v1.9.3