From 74ab9465837f8a6f9eae854059e9783eff24e173 Mon Sep 17 00:00:00 2001 From: sjz <1240968267@qq.com> Date: 星期一, 14 七月 2025 18:06:24 +0800 Subject: [PATCH] 多组织修改 --- MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs | 396 +++++++++++++++++++++++++++---------------------------- 1 files changed, 194 insertions(+), 202 deletions(-) diff --git a/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs b/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs index 95acca0..70d69b3 100644 --- a/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs +++ b/MES.Service/service/BasicData/SalesDeliveryNoticeManager.cs @@ -1,227 +1,219 @@ -锘縰sing SqlSugar; -using System; -using System.Collections.Generic; +锘縰sing System.Globalization; using MES.Service.DB; -using MES.Service.Modes; using MES.Service.Dto.webApi; -using MES.Service.service.BasicData; -using System.Globalization; +using MES.Service.Modes; +using SqlSugar; -namespace MES.Service.service +namespace MES.Service.service; + +public class SalesDeliveryNoticeManager : Repository<SalesDeliveryNotice> { - public class SalesDeliveryNoticeManager : Repository<SalesDeliveryNotice> + //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� + + private readonly SalesDeliveryNoticeDetailManager + _SalesDeliveryDetailManager = new(); + + //ErpSalesRerurn + public bool Save(ErpSalesDelivery SalesDelivery) { + var erpSalesDeliveryDto = SalesDelivery.OrderDto; + var mesSalesDelivery = + ConvertErpToSalesDelivery(SalesDelivery.OrderDto); + var mesSalesDeliveryDatas = + ConvertErpToSalesDeliveryDetail(SalesDelivery.Items); - //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� - - private readonly SalesDeliveryNoticeDetailManager _SalesDeliveryDetailManager = new(); - //ErpSalesRerurn - public bool Save(ErpSalesDelivery SalesDelivery) + return UseTransaction(db => { - var erpSalesDeliveryDto = SalesDelivery.OrderDto; - var mesSalesDelivery = ConvertErpToSalesDelivery(SalesDelivery.OrderDto); - var mesSalesDeliveryDatas = ConvertErpToSalesDeliveryDetail(SalesDelivery.Items); - - return UseTransaction(db => + switch (erpSalesDeliveryDto.Type) { - switch (erpSalesDeliveryDto.Type) - { - case "3": - return DeleteData(db, mesSalesDelivery, mesSalesDeliveryDatas) ? 1 : 0; - case "2": - case "4": - return SaveOrUpdateData(db, mesSalesDelivery, mesSalesDeliveryDatas, erpSalesDeliveryDto.Type) ? 1: 0; - default: - throw new NotImplementedException( $"type娌℃湁{erpSalesDeliveryDto.Type}杩欎釜绫诲瀷"); - } - }) > 0; - } - - private bool DeleteData(SqlSugarScope db, SalesDeliveryNotice mesSalesDelivery,List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas) - { - var decimals = mesSalesDeliveryDatas.Select(s => s.Id).ToArray(); - var update = base.DeleteById(mesSalesDelivery.Id); - var insertOrUpdate = db.Deleteable<SalesDeliveryNoticeDetail>().In(decimals).ExecuteCommand() > 0; - - if (update && insertOrUpdate) - { - return true; + case "3": + return DeleteData(db, mesSalesDelivery, + mesSalesDeliveryDatas) + ? 1 + : 0; + case "2": + case "4": + return SaveOrUpdateData(db, mesSalesDelivery, + mesSalesDeliveryDatas, erpSalesDeliveryDto.Type) + ? 1 + : 0; + default: + throw new NotImplementedException( + $"type娌℃湁{erpSalesDeliveryDto.Type}杩欎釜绫诲瀷"); } - throw new NotImplementedException("鏇存柊澶辫触"); + }) > 0; + } + + private bool DeleteData(SqlSugarScope db, + SalesDeliveryNotice mesSalesDelivery, + List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas) + { + var decimals = mesSalesDeliveryDatas.Select(s => s.Id).ToArray(); + var update = base.DeleteById(mesSalesDelivery.Id); + var insertOrUpdate = db.Deleteable<SalesDeliveryNoticeDetail>() + .In(decimals).ExecuteCommand() > 0; + + if (update && insertOrUpdate) return true; + throw new NotImplementedException("鏇存柊澶辫触"); + } + + // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 + private bool SaveOrUpdateData(SqlSugarScope db, + SalesDeliveryNotice mesSalesDelivery, + List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas, string type) + { + if (mesSalesDelivery.Id != null) base.DeleteById(mesSalesDelivery.Id); + if (mesSalesDeliveryDatas.Count > 0) + db.Deleteable<SalesDeliveryNoticeDetail>() + .Where(s => s.ErpHeadId == mesSalesDelivery.ErpId) + .ExecuteCommand(); + var orUpdate = base.Insert(mesSalesDelivery); + var baOrUpdate = + _SalesDeliveryDetailManager.InsertRange(mesSalesDeliveryDatas); + if (orUpdate && baOrUpdate) return true; + + + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + } + + // 鎵归噺淇濆瓨璁板綍鐨勬柟娉� + public bool SaveList(List<ErpSalesDelivery> salesOrder) + { + var result = salesOrder.Select(Save).ToList(); + return result.All(b => b); + } + + private SalesDeliveryNotice ConvertErpToSalesDelivery( + ErpSalesDeliveryDto erpDto) + { + DateTime parsedDate; + + // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss" + DateTime? ParseDateTime(string dateStr) + { + if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", + CultureInfo.InvariantCulture, DateTimeStyles.None, + out parsedDate)) return parsedDate; + + return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull } - // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 - private bool SaveOrUpdateData(SqlSugarScope db, SalesDeliveryNotice mesSalesDelivery,List<SalesDeliveryNoticeDetail> mesSalesDeliveryDatas, string type) + var salesOrder = new SalesDeliveryNotice { - if (mesSalesDelivery.Id != null) - { - base.DeleteById(mesSalesDelivery.Id); - } - if (mesSalesDeliveryDatas.Count > 0) - { - db.Deleteable<SalesDeliveryNoticeDetail>().Where(s => s.ErpHeadId == mesSalesDelivery.ErpId).ExecuteCommand(); - } - var orUpdate = base.Insert(mesSalesDelivery); - var baOrUpdate = _SalesDeliveryDetailManager.InsertRange(mesSalesDeliveryDatas); - if (orUpdate && baOrUpdate) - { - return true; - } + BillNo = erpDto.FBillNo, + ErpId = erpDto.ErpID, + FDate = ParseDateTime(erpDto.FDate) ?? null, + BillType = erpDto.FBillTypeID, // 鍗曟嵁绫诲瀷 + Currency = erpDto.FSettleCurrld, // 缁撶畻甯佸埆 + SalesDept = erpDto.FSaleDeptId, //閿�鍞儴闂� + Customer = erpDto.FCustomerID, // 瀹㈡埛 + DeliveryMethod = erpDto.FHeadDeliveryWay, // 浜よ揣鏂瑰紡 + DeliveryLocation = erpDto.FHeadLocId, // 浜よ揣鍦扮偣 + Carrier = erpDto.FCarrierID, // 鎵胯繍鍟� + TransportNo = erpDto.FCarriageNO, // 杩愯緭鍗曞彿 + BillNoType = erpDto.FCarriageNO, // 鍗曟嵁鐘舵�� + DeliveryDept = erpDto.FDeliveryDeptID, // 鍙戣揣閮ㄩ棬 + InventoryGroup = erpDto.FStockerGroupId, // 搴撳瓨缁� + WarehouseManager = erpDto.FStockerId, // 浠撶鍛� + SalesGroup = erpDto.FSaleGroupId, // 閿�鍞粍 + SalesPerson = erpDto.FSalesManId, //閿�鍞憳 + Receiver = erpDto.FReceiveCusId, // 鏀惰揣鏂� + ReceiverContact = erpDto.FReceiveCusContact, // 鏀惰揣鏂硅仈绯讳汉 + ReceiverAddress = erpDto.FReceiveAddress, // 鏀惰揣鏂瑰湴鍧� + ReceiverName = erpDto.FLinkMan, // 鏀惰揣鏂瑰鍚� + LinkPhone = erpDto.FLinkPhone, //鑱旂郴鐢佃瘽 + SettleParty = erpDto.FSettleID, // 缁撶畻鏂� + PayerParty = erpDto.FPayerID, //浠樻鏂� + CreatedBy = erpDto.FCreatorId, // 鍒涘缓浜� + CreatedDate = ParseDateTime(erpDto.FCreateDate) ?? null, // 鍒涘缓鏃堕棿 + ModifiedBy = erpDto.FModifierId, // 淇敼浜� + ModifiedDate = ParseDateTime(erpDto.FModifyDate) ?? null, // 淇敼鏃堕棿 + ClosedBy = erpDto.FCloserId, // 鍏抽棴浜� + CloseReason = erpDto.FCloseReason, // 鍏抽棴鍘熷洜 + // CloseDate = ParseDateTime(erpDto.FCloseDate) ?? null, // 鍏抽棴鏃ユ湡 + ApprovedBy = erpDto.FApproverId, // 瀹℃牳浜� + ApprovedDate = ParseDateTime(erpDto.FApproveDate) ?? null, // 瀹℃牳鏃ユ湡 + CancelStatus = erpDto.FCancelStatus, // 浣滃簾鐘舵�� + CancelledBy = erpDto.FCancellerId, // 浣滃簾浜� + CancelDate = ParseDateTime(erpDto.FCancelDate) ?? null, // 浣滃簾鏃ユ湡 + CloseStatus = erpDto.FBillCloseStatus, // 鍏抽棴鐘舵�� + BillStatus = erpDto.FDocumentStatus //鍗曟嵁鐘舵�� + }; + var single = base.GetSingle(it => it.ErpId == erpDto.ErpID); + if (single != null) salesOrder.Id = single.Id; - throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + return salesOrder; + } + + private List<SalesDeliveryNoticeDetail> ConvertErpToSalesDeliveryDetail( + List<ErpSalesDeliveryDetailDto> erpDtoList) + + { + var salesOrderSubList = new List<SalesDeliveryNoticeDetail>(); + DateTime parsedDate; + + // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss" + DateTime? ParseDateTime(string dateStr) + { + if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", + CultureInfo.InvariantCulture, DateTimeStyles.None, + out parsedDate)) return parsedDate; + return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull } - // 鎵归噺淇濆瓨璁板綍鐨勬柟娉� - public bool SaveList(List<ErpSalesDelivery> salesOrder) + + foreach (var erpDto in erpDtoList) { - var result = salesOrder.Select(Save).ToList(); - return result.All(b => b); - } - - private SalesDeliveryNotice ConvertErpToSalesDelivery(ErpSalesDeliveryDto erpDto) - { - DateTime parsedDate; - - // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss" - DateTime? ParseDateTime(string dateStr) + var salesOrderSub = new SalesDeliveryNoticeDetail { - if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.None, out parsedDate)) - { - return parsedDate; - } - - return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull - } - - var salesOrder = new SalesDeliveryNotice - { - BillNo = erpDto.FBillNo, - ErpId = erpDto.ErpID, - FDate = ParseDateTime(erpDto.FDate) ?? null, - BillType = erpDto.FBillTypeID, // 鍗曟嵁绫诲瀷 - Currency = erpDto.FSettleCurrld, // 缁撶畻甯佸埆 - SalesDept = erpDto.FSaleDeptId, //閿�鍞儴闂� - Customer = erpDto.FCustomerID, // 瀹㈡埛 - DeliveryMethod = erpDto.FHeadDeliveryWay, // 浜よ揣鏂瑰紡 - DeliveryLocation = erpDto.FHeadLocId, // 浜よ揣鍦扮偣 - Carrier = erpDto.FCarrierID, // 鎵胯繍鍟� - TransportNo = erpDto.FCarriageNO, // 杩愯緭鍗曞彿 - BillNoType = erpDto.FCarriageNO, // 鍗曟嵁鐘舵�� - DeliveryDept = erpDto.FDeliveryDeptID, // 鍙戣揣閮ㄩ棬 - InventoryGroup = erpDto.FStockerGroupId, // 搴撳瓨缁� - WarehouseManager = erpDto.FStockerId, // 浠撶鍛� - SalesGroup = erpDto.FSaleGroupId, // 閿�鍞粍 - SalesPerson = erpDto.FSalesManId,//閿�鍞憳 - Receiver = erpDto.FReceiveCusId, // 鏀惰揣鏂� - ReceiverContact = erpDto.FReceiveCusContact, // 鏀惰揣鏂硅仈绯讳汉 - ReceiverAddress = erpDto.FReceiveAddress, // 鏀惰揣鏂瑰湴鍧� - ReceiverName = erpDto.FLinkMan, // 鏀惰揣鏂瑰鍚� - LinkPhone = erpDto.FLinkPhone,//鑱旂郴鐢佃瘽 - SettleParty = erpDto.FSettleID, // 缁撶畻鏂� - PayerParty = erpDto.FPayerID,//浠樻鏂� - CreatedBy = erpDto.FCreatorId, // 鍒涘缓浜� - CreatedDate = ParseDateTime(erpDto.FCreateDate) ?? null, // 鍒涘缓鏃堕棿 - ModifiedBy = erpDto.FModifierId, // 淇敼浜� - ModifiedDate = ParseDateTime(erpDto.FModifyDate) ?? null, // 淇敼鏃堕棿 - ClosedBy = erpDto.FCloserId, // 鍏抽棴浜� - CloseReason = erpDto.FCloseReason, // 鍏抽棴鍘熷洜 - // CloseDate = ParseDateTime(erpDto.FCloseDate) ?? null, // 鍏抽棴鏃ユ湡 - ApprovedBy = erpDto.FApproverId, // 瀹℃牳浜� - ApprovedDate = ParseDateTime(erpDto.FApproveDate) ?? null, // 瀹℃牳鏃ユ湡 - CancelStatus = erpDto.FCancelStatus, // 浣滃簾鐘舵�� - CancelledBy = erpDto.FCancellerId, // 浣滃簾浜� - CancelDate = ParseDateTime(erpDto.FCancelDate) ?? null, // 浣滃簾鏃ユ湡 - CloseStatus = erpDto.FBillCloseStatus, // 鍏抽棴鐘舵�� - BillStatus = erpDto.FDocumentStatus //鍗曟嵁鐘舵�� - + ErpLineId = erpDto.ErpID, //ERP琛孖D + ErpHeadId = erpDto.EHID, //ERP澶碔D + MaterialId = erpDto.FMaterialId, //鐗╂枡缂栧彿 + SalesUnitId = erpDto.FUnitID, //閿�鍞崟浣� + SalesQuantity = Convert.ToDecimal(erpDto.FQty), //閿�鍞暟閲� + IsFree = Convert.ToDecimal(erpDto.FIsFree), //鏄惁璧犲搧 + DeliveryDate = ParseDateTime(erpDto.FDeliverydate), //瑕佽揣鏃ユ湡 + Warehouse = erpDto.FStockId, //鍑鸿揣浠撳簱 + PlanTrackingNumber = erpDto.FMtoNo, //璁″垝璺熻釜鍙� + LotNumber = erpDto.FLot, //鎵瑰彿 + SrcBillNo = erpDto.FSrcBillNo, //婧愬崟缂栧彿 + PriceQty = erpDto.FPriceUnitQty, //璁′环鏁伴噺 + OwnerId = erpDto.FOwnerIdHead, //璐т富 + InventoryUnit = erpDto.FStockUnitID, //搴撳瓨鍗曚綅 + InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty), //搴撳瓨鏁伴噺 + PlanDeliveryDate = + ParseDateTime(erpDto.FPlanDeliveryDate), //璁″垝鍙戣揣鏃ユ湡 + OutLmtUnit = erpDto.FOutLmtUnit, //瓒呭彂鎺у埗鍗曚綅 + OutMaxQty = erpDto.FOutMaxQty, //鍑哄簱涓婇檺 + OutMinQty = erpDto.FOutMinQty, //鍑哄簱涓嬮檺 + DeliveryLoc = erpDto.FDeliveryLoc, //浜よ揣鍦扮偣 + DeliverylAddress = erpDto.FDeliveryLAddress, //浜よ揣鍦板潃 + SourceBillNo = erpDto.FSrcBillNo, //鍘熷崟鍗曞彿 + OrderBillNo = erpDto.FOrderNo, //璁㈠崟鍗曞彿 + TerminationStatus = erpDto.FTerminationStatus, //缁堟鐘舵�� + TerminationDate = ParseDateTime(erpDto.FTerminateDate), //涓氬姟缁堟鏃ユ湡 + SumOutQty = erpDto.FSumOutQty, //绱鍑哄簱鏁伴噺 + RemainOutQty = erpDto.FRemainOutQty, //鏈嚭搴撴暟閲� + SalesOrder = erpDto.FXSHTH, //閿�鍞鍗曞彿 + CustOrder = erpDto.F_ZJXF_TEXT_QTR_LEE, //瀹㈡埛璁㈠崟鍙� + SalesContractNo = erpDto.FXSHTBH, //閿�鍞悎鍚岀紪鍙� + F_KHWLBM = erpDto.F_KHWLBM, + F_KHWLMC = erpDto.F_KHWLMC }; - var single = base.GetSingle(it => it.ErpId == erpDto.ErpID); - if (single != null) - { - salesOrder.Id = single.Id; - } + if (erpDto.FRemainOutQty == 0) + salesOrderSub.IsFinish = 1; + else + salesOrderSub.IsFinish = 0; - return salesOrder; + var single = _SalesDeliveryDetailManager.GetSingle(it => + it.ErpLineId == salesOrderSub.ErpLineId); + if (single != null) salesOrderSub.Id = single.Id; + + salesOrderSubList.Add(salesOrderSub); } - private List<SalesDeliveryNoticeDetail> ConvertErpToSalesDeliveryDetail(List<ErpSalesDeliveryDetailDto> erpDtoList) - - { - var salesOrderSubList = new List<SalesDeliveryNoticeDetail>(); - DateTime parsedDate; - // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "yyyy-MM-dd HH:mm:ss" - DateTime? ParseDateTime(string dateStr) - { - if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.None,out parsedDate)) - { - return parsedDate; - } - return null; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull - } - - - - foreach (var erpDto in erpDtoList) - { - var salesOrderSub = new SalesDeliveryNoticeDetail - { - ErpLineId = erpDto.ErpID,//ERP琛孖D - ErpHeadId = erpDto.EHID,//ERP澶碔D - MaterialId = erpDto.FMaterialId,//鐗╂枡缂栧彿 - SalesUnitId = erpDto.FUnitID,//閿�鍞崟浣� - SalesQuantity = Convert.ToDecimal(erpDto.FQty),//閿�鍞暟閲� - IsFree = Convert.ToDecimal(erpDto.FIsFree),//鏄惁璧犲搧 - DeliveryDate = ParseDateTime(erpDto.FDeliverydate),//瑕佽揣鏃ユ湡 - Warehouse = erpDto.FStockId,//鍑鸿揣浠撳簱 - PlanTrackingNumber = erpDto.FMtoNo,//璁″垝璺熻釜鍙� - LotNumber = erpDto.FLot,//鎵瑰彿 - SrcBillNo = erpDto.FSrcBillNo,//婧愬崟缂栧彿 - PriceQty = erpDto.FPriceUnitQty,//璁′环鏁伴噺 - OwnerId = erpDto.FOwnerIdHead,//璐т富 - InventoryUnit = erpDto.FStockUnitID,//搴撳瓨鍗曚綅 - InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty),//搴撳瓨鏁伴噺 - PlanDeliveryDate = ParseDateTime(erpDto.FPlanDeliveryDate),//璁″垝鍙戣揣鏃ユ湡 - OutLmtUnit = erpDto.FOutLmtUnit,//瓒呭彂鎺у埗鍗曚綅 - OutMaxQty = erpDto.FOutMaxQty,//鍑哄簱涓婇檺 - OutMinQty = erpDto.FOutMinQty,//鍑哄簱涓嬮檺 - DeliveryLoc = erpDto.FDeliveryLoc,//浜よ揣鍦扮偣 - DeliverylAddress = erpDto.FDeliveryLAddress,//浜よ揣鍦板潃 - SourceBillNo = erpDto.FSrcBillNo,//鍘熷崟鍗曞彿 - OrderBillNo = erpDto.FOrderNo,//璁㈠崟鍗曞彿 - TerminationStatus = erpDto.FTerminationStatus,//缁堟鐘舵�� - TerminationDate = ParseDateTime(erpDto.FTerminateDate),//涓氬姟缁堟鏃ユ湡 - SumOutQty = erpDto.FSumOutQty,//绱鍑哄簱鏁伴噺 - RemainOutQty = erpDto.FRemainOutQty,//鏈嚭搴撴暟閲� - SalesOrder = erpDto.FXSHTH,//閿�鍞鍗曞彿 - CustOrder = erpDto.F_ZJXF_TEXT_QTR_LEE,//瀹㈡埛璁㈠崟鍙� - SalesContractNo = erpDto.FXSHTBH,//閿�鍞悎鍚岀紪鍙� - F_KHWLBM=erpDto.F_KHWLBM, - F_KHWLMC=erpDto.F_KHWLMC, - - }; - - if (erpDto.FRemainOutQty==0) - { - salesOrderSub.IsFinish = 1; - } - else - { - salesOrderSub.IsFinish = 0; - } - - var single = _SalesDeliveryDetailManager.GetSingle(it =>it.ErpLineId == salesOrderSub.ErpLineId); - if (single != null) - { - salesOrderSub.Id = single.Id; - } - - salesOrderSubList.Add(salesOrderSub); - } - - return salesOrderSubList; - } - + return salesOrderSubList; } } \ No newline at end of file -- Gitblit v1.9.3