From 18ca42bc7a74433f735336bdfeaeb81c81633f39 Mon Sep 17 00:00:00 2001 From: zjh <2207896513@qq.com> Date: 星期四, 24 七月 2025 20:22:27 +0800 Subject: [PATCH] 采购订单接口bug修复 --- StandardPda/MES.Service/service/BasicData/MesRohInManager.cs | 107 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 93 insertions(+), 14 deletions(-) diff --git a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs index 67e8fab..aae6bfb 100644 --- a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs +++ b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs @@ -1,7 +1,9 @@ 锘縰sing MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; +using MES.Service.util; using SqlSugar; +using System.Collections.Generic; namespace MES.Service.service.BasicData; @@ -17,12 +19,17 @@ var mesRohInDatas = GetMesRohInDatas(rohIn.ErpRohinDatas, rohInErpRohIn.Type); + var erpLineDetailsDB = GetErpLineDetailsDB(rohIn.ErpLineDetails, rohInErpRohIn.Type); + + + + return UseTransaction(db => { return rohInErpRohIn.Type switch { "2" or "4" or "5" => SaveOrUpdateData(db, mesRohIn, - mesRohInDatas) + mesRohInDatas, erpLineDetailsDB) ? 1 : 0, "3" => DeleteData(db, mesRohIn, mesRohInDatas) ? 1 : 0, @@ -57,14 +64,16 @@ // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn, - List<MesRohInData> mesRohInDatas) + List<MesRohInData> mesRohInDatas, List<ErpLineDetailsDB> erpLineDetails) { if (mesRohIn.Id != null) base.DeleteById(mesRohIn.Id); if (mesRohInDatas.Count > 0) db.Deleteable<MesRohInData>() .Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand(); - + if (mesRohInDatas.Count > 0) + db.Deleteable<ErpLineDetailsDB>() + .Where(s => s.Eid == mesRohIn.EbelnK3id).ExecuteCommand(); //var orUpdate = base.Insert(mesRohIn); //var baOrUpdate = rohInDataManager.InsertRange(mesRohInDatas); var orUpdate = db.Insertable(mesRohIn) @@ -75,8 +84,15 @@ .IgnoreColumnsNull() .ExecuteCommand() > 0; + var ba1OrUpdate = db.Insertable(erpLineDetails).PageSize(1) + .IgnoreColumnsNull() + .ExecuteCommand() > 0; + if (erpLineDetails==null ||erpLineDetails.Count==0) + { + ba1OrUpdate = true; + } - if (orUpdate && baOrUpdate) return true; + if (orUpdate && baOrUpdate&& ba1OrUpdate) return true; throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); } @@ -90,11 +106,18 @@ // 灏� ErpRohIn 瀵硅薄杞崲涓� MesRohIn 瀵硅薄鐨勬柟娉� private MesRohIn GetMesRohIn(ErpRohIn rohIn) { - var eid = Convert.ToDecimal(rohIn.id); + var eid = rohIn.id; var mesRohIn = new MesRohIn(); var single = base.GetSingle(it => it.EbelnK3id == eid); if (single != null) mesRohIn.Id = single.Id; + + var mesLinkU9 = Db.Queryable<MesLinkU9>() + .Where(s => s.U9Id == rohIn.FSupplierId + && s.OrgId == rohIn.FReceiveOrgId + && s.TableType == "MES_SUPPLIER").First(); + + if (mesLinkU9 != null) mesRohIn.Supplier = mesLinkU9.MesId; mesRohIn.EbelnK3id = eid; mesRohIn.BillNo = rohIn.FBillNo; @@ -104,7 +127,7 @@ if (rohIn.FDate != null) mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate, "yyyy-MM-dd HH:mm:ss", null); - mesRohIn.Supplier = rohIn.FSupplierId; + mesRohIn.CloseStatus = rohIn.FCloseStatus; mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId; mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId; @@ -125,9 +148,8 @@ mesRohIn.ErpCheckBy = rohIn.FApproverId; mesRohIn.ErpCheckDate = rohIn.FApproveDate; mesRohIn.Changereason = rohIn.PubDescSeg2; - mesRohIn.ReceiveOrg = Convert.ToDecimal(rohIn.FReceiveOrgId); + mesRohIn.ReceiveOrg = rohIn.FReceiveOrgId; mesRohIn.Remarks = rohIn.Remarks; - mesRohIn.SrcDocType = rohIn.FSrcDocType; mesRohIn.SrcDoc = rohIn.FSrcDoc; mesRohIn.TradePathName = rohIn.FTradePathName; @@ -137,7 +159,7 @@ mesRohIn.Version = rohIn.FVersion; //浣滃簾鐨勭浉鍏冲瓧娈� - // mesRohIn.CancellationStatus = rohIn.FCancelStatus; + mesRohIn.CancellationStatus = rohIn.FCancelStatus; // mesRohIn.CancellationPerson = rohIn.FCancellerId; // // if (rohIn.FCancelDate != null) @@ -152,18 +174,18 @@ private List<MesRohInData> GetMesRohInDatas( List<ErpRohinData> erpRohinDatas, string type) { - return erpRohinDatas.Select(s => + return erpRohinDatas.DistinctByConcurrent(x => x.id).Select(s => { var entity = new MesRohInData { - EbelnK3id = Convert.ToDecimal(s.id), - ErpId = Convert.ToDecimal(s.Eid), + EbelnK3id = s.id, + ErpId = s.Eid, BillNo = s.FBillNo, OrderLineId = s.FSeq, BusinessFreeze = s.FStatus, PurchaseOrderLineNumber = s.FSeq, SalesOrderId = s.FDemandBillEntrySeq, - ItemId = s.FMaterialId, + PurchaseUnit = s.FUnitId, PurchaseQty = Convert.ToDecimal(s.FQty), PricingUnit = s.FPriceUnitId, @@ -191,14 +213,71 @@ DemandDocumentId = s.FDemandBillNo, DemandDocumentLineId = s.FDemandBillEntrySeq, RdProject = s.RdProject, - Project = s.Project, ProjectPurchaser = s.ProjectPurchaser }; + + if (s.FDeliveryDate != null) + entity.DeliveryDate = + DateTime.ParseExact(s.FDeliveryDate, + "yyyy-MM-dd HH:mm:ss", null); var single = rohInDataManager.GetSingle(it => it.EbelnK3id == entity.EbelnK3id); if (single != null) entity.Id = single.Id; + //ItemId = s.FMaterialId, + var mesLinkU9 = Db.Queryable<MesLinkU9>() + .Where(x => x.U9Id == s.FMaterialId + && x.OrgId == s.FReceiveOrgId + && x.TableType == "MES_ITEMS").First(); + + if (mesLinkU9 != null) entity.ItemId = mesLinkU9.MesId; + + + var mesLinkU92 = Db.Queryable<MesLinkU9>() + .Where(x => x.U9Id == s.Project + && x.OrgId == s.FReceiveOrgId + && x.TableType == "MES_PROJECT").First(); + + if (mesLinkU92 != null) entity.Project = mesLinkU92.MesId; + + return entity; + }).ToList(); + } + + private List<ErpLineDetailsDB> GetErpLineDetailsDB( + List<ErpLineDetails> erpLineDetails, string type) + { + if (erpLineDetails ==null) + { + return null; + } + return erpLineDetails.Select(s => + { + var entity = new ErpLineDetailsDB + { + Mid= s.Mid, + Eid = s.Eid, + FlineNo = s.FlineNo, + FMaterialId = s.FMaterialId, + ReqQty = s.ReqQty, + PlannedQty = s.PlannedQty, + SupplierConfirmsQty = s.SupplierConfirmsQty, + RequestDeliveryDate = s.RequestDeliveryDate, + ActualArrivalQty = s.ActualArrivalQty + + + }; + + //ItemId = s.FMaterialId, + var mesLinkU9 = Db.Queryable<MesLinkU9>() + .Where(x => x.U9Id == s.FMaterialId + && x.OrgId == s.FMaterialId + && x.TableType == "MES_ITEMS").First(); + + if (mesLinkU9 != null) entity.FMaterialId = mesLinkU9.MesId; + + return entity; }).ToList(); } -- Gitblit v1.9.3