From 79e43ccffd15afcd99934ee43b706f6133398079 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期一, 07 七月 2025 15:29:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- MES.Service/service/BOM/MesBomMasterManager.cs | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 307 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/BOM/MesBomMasterManager.cs b/MES.Service/service/BOM/MesBomMasterManager.cs new file mode 100644 index 0000000..cfa4cea --- /dev/null +++ b/MES.Service/service/BOM/MesBomMasterManager.cs @@ -0,0 +1,307 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using MES.Service.DB; +using MES.Service.Modes; +using MES.Service.Dto.service; +using System.Globalization; + +namespace MES.Service.service +{ +public class MesBomMasterManager : Repository<MesBomMaster> +{ + private readonly MesBomDetail1Manager MesBomDetail1Manager = new(); + private readonly MesBomDetail2Manager MesBomDetail2Manager = new(); + + public bool Save(MesBomDto MesBom) + { + // var MesBomDto = MesBom.Main; + var mesMesBom = ConvertErpToMesBom(MesBom); + var mesMesBomDatas1 = ConvertErpToMesBomDetail1(MesBom); + var mesMesBomDatas2 = ConvertErpToMesBomDetail2(MesBom); + + return UseTransaction(db => + { + switch (MesBom.Type) + { + // case "2": + // return InsertData(db, mesSalesReturn, mesSalesReturnDatas, + // rohInErpRohIn.FBILLTYPE) + // ? 1 + // : 0; + case "3": + return UpdateData(db, mesMesBom, mesMesBomDatas1, mesMesBomDatas2) ? 1 : 0; + case "2": + case "4": + return SaveOrUpdateData(db, mesMesBom, mesMesBomDatas1, mesMesBomDatas2, MesBom.Type) + ? 1 + : 0; + default: + throw new NotImplementedException( + $"type娌℃湁{MesBom.Type}杩欎釜绫诲瀷"); + } + }) > 0; + } + + private bool UpdateData(SqlSugarScope db, MesBomMaster mesMesBom, + List<MesBomDetail1> mesMesBomDatas1, List<MesBomDetail2> mesMesBomDatas2) + { + + //鍒犻櫎鐩稿悓ERPID鐩稿悓BOM鏇存柊绫诲瀷鐨勫崟鎹� + var query = db.Queryable<MesBomMaster>() + .Where(s => s.Erpid == mesMesBom.Erpid); + + if (mesMesBom.BomUpdateType != "1") + { + if (string.IsNullOrEmpty(mesMesBom.BomUpdateType)) + { + query = query.Where(s => string.IsNullOrEmpty(s.BomUpdateType)); + } + else + { + query = query.Where(s => s.BomUpdateType == mesMesBom.BomUpdateType); + } + + decimal? ID = query.Select(s => s.Id).First(); + + var update = base.DeleteById(ID); + + var insertOrUpdate1 = db.Deleteable<MesBomDetail1>() + .Where(s => s.Mid == ID) + .ExecuteCommand() > 0; + + var insertOrUpdate2 = true; + + if (mesMesBomDatas2.Count > 0) + { + insertOrUpdate2 = db.Deleteable<MesBomDetail2>() + .Where(s => s.Mid == ID) + .ExecuteCommand() > 0; ; + // deleted 涓� true 琛ㄧず鏈夎褰曡鍒犻櫎 + } + + if (update && insertOrUpdate1 && insertOrUpdate2) return true; + throw new NotImplementedException("鏇存柊澶辫触"); + } + return true; + } + + // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 + private bool SaveOrUpdateData(SqlSugarScope db, MesBomMaster mesMesBom, + List<MesBomDetail1> mesMesBomDatas1, List<MesBomDetail2> mesMesBomDatas2, string type) + { + //鐩稿悓ERPID涓嶅悓BOM鏇存柊绫诲瀷鐨勫崟鎹繚鐣� + var query = db.Queryable<MesBomMaster>() + .Where(s => s.Erpid == mesMesBom.Erpid); + + if (string.IsNullOrEmpty(mesMesBom.BomUpdateType)) + { + query = query.Where(s => string.IsNullOrEmpty(s.BomUpdateType)); + } + else + { + query = query.Where(s => s.BomUpdateType == mesMesBom.BomUpdateType); + } + + decimal? ID = query.Select(s => s.Id).First(); + + if (ID != null) + { + if (mesMesBom.Erpid != null) + db.Deleteable<MesBomMaster>() + .Where(s => s.Id == ID) + .ExecuteCommand(); + + if (mesMesBomDatas1.Count > 0) + db.Deleteable<MesBomDetail1>() + .Where(s => s.Mid == ID).ExecuteCommand(); + + if (mesMesBomDatas2.Count > 0) + db.Deleteable<MesBomDetail2>() + .Where(s => s.Mid == ID).ExecuteCommand(); + } + + + //var orUpdate = base.Insert(mesMesBom); + //var baOrUpdate = MesBomDetail1Manager.InsertRange(mesMesBomDatas1); + //if (orUpdate && baOrUpdate) return true; + var update_res = UseTransaction(db => + { + //鑾峰彇涓昏〃鎻掑叆鍚庣殑涓婚敭 + var insertedId = db.Insertable(mesMesBom).ExecuteReturnIdentity(); + + for (int i = 0; i < mesMesBomDatas1.Count; i++) + { + var item = mesMesBomDatas1[i]; + item.Mid = insertedId; + db.Insertable(item).IgnoreColumns(true).ExecuteCommand(); + } + + + for (int i = 0; i < mesMesBomDatas2.Count; i++) + { + var item = mesMesBomDatas2[i]; + item.Mid = insertedId; + db.Insertable(item).IgnoreColumns(true).ExecuteCommand(); + } + + return 1; + }); + + if (update_res == 1) return true; + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + } + + // 鎵归噺淇濆瓨璁板綍鐨勬柟娉� + public bool SaveList(List<MesBomDto> MesBomOrder) + { + var result = MesBomOrder.Select(Save).ToList(); + return result.All(b => b); + } + + private MesBomMaster ConvertErpToMesBom( + MesBomDto erpDto) + { + DateTime parsedDate; + + var main = erpDto.Main; + var MesBomOrder = new MesBomMaster + { + Erpid = main.Erpid, + Fbilltype = main.Fbilltype, + Fbomcategory = main.Fbomcategory, + Fbomuse = main.Fbomuse, + Fgroup = main.Fgroup, + Fnumber = main.Fnumber, + FUnwBomBb = main.FUnwBomBb, + EffectiveDate = main.EffectiveDate, + ExpirationDate = main.ExpirationDate, + Fmaterialid = main.Fmaterialid, + Fitemname = main.Fitemname, + Fbaseunitid = main.Fbaseunitid, + Fcreatorid = main.Fcreatorid, + Fcreatedate = main.Fcreatedate, + Fitempproperty = main.Fitempproperty, + Fdescription = main.Fdescription, + Fmodifierid = main.Fmodifierid, + Fmodifydate = main.Fmodifydate, + Fapproverid = main.Fapproverid, + Fapprovedate = main.Fapprovedate, + Fforbidreson = main.Fforbidreson, + Fforbidstatus = main.Fforbidstatus, + Fforbidderid = main.Fforbidderid, + Fforbiddate = main.Fforbiddate, + CreateOrganization = main.CreateOrganization, + UsingOrganization = main.UsingOrganization, + Routing = main.Routing, + FUnwTextTpgy = main.FUnwTextTpgy, + BomUpdateType = main.BomUpdateType + }; + + // var single = base.GetSingle(it => it.Erpid == main.Erpid); + // if (single != null) MesBomOrder.Erpid = single.Erpid; + + return MesBomOrder; + } + + private List<MesBomDetail1> ConvertErpToMesBomDetail1( + MesBomDto erpDtoList) + + { + var MesBomOrderSubList = + new List<MesBomDetail1>(); + + + foreach (var erpDto in erpDtoList.DT1) + { + var MesBomOrderSub = new MesBomDetail1 + { + Erpid = erpDto.Erpid, + Erphid = erpDto.Erphid, + Freplacegroup = erpDto.Freplacegroup, + Fscraprate = erpDto.Fscraprate, + Fpositionno = erpDto.Fpositionno, + Fmaterialidchild = erpDto.Fmaterialidchild, + Fnumerator = erpDto.Fnumerator, + Fdenominator = erpDto.Fdenominator, + Fchilditemname = erpDto.Fchilditemname, + Fchilditemproperty = erpDto.Fchilditemproperty, + Fsupplytype = erpDto.Fsupplytype, + Fmaterialtype = erpDto.Fmaterialtype, + FUnwBzds1 = erpDto.FUnwBzds1, + Fchildunitid = erpDto.Fchildunitid, + Fdosagetype = erpDto.Fdosagetype, + Fbomid = erpDto.Fbomid, + Fmemo = erpDto.Fmemo, + Fstockid = erpDto.Fstockid, + Fisskip = erpDto.Fisskip, + Fismulcsd = erpDto.Fismulcsd, + Feffectdate = erpDto.Feffectdate, + Fexpiredate = erpDto.Fexpiredate, + Fissuetype = erpDto.Fissuetype, + Fnetdemandrate = erpDto.Fnetdemandrate, + FUnwTextTpgyZ = erpDto.FUnwTextTpgyZ, + Fbackflushtype = erpDto.Fbackflushtype, + Fovercontrolmode = erpDto.Fovercontrolmode, + Fbpminissueqty = erpDto.Fbpminissueqty, + Fisminissueqty = erpDto.Fisminissueqty, + Fisgetscrap = erpDto.Fisgetscrap, + Foptqueue = erpDto.Foptqueue, + Foperid = erpDto.Foperid, + Fprocessid = erpDto.Fprocessid, + FUnwJjds1 = erpDto.FUnwJjds1 + + }; + + /*var single = MesBomDetail1Manager.GetSingle(it => + it.Erpid == MesBomOrderSub.Erpid); + if (single != null) MesBomOrderSub.Erpid = single.Erpid;*/ + + MesBomOrderSubList.Add(MesBomOrderSub); + } + + return MesBomOrderSubList; + } + + + + + private List<MesBomDetail2> ConvertErpToMesBomDetail2( + MesBomDto erpDtoList) + + { + var MesBomOrderSubList = + new List<MesBomDetail2>(); + + foreach (var erpDto in erpDtoList.DT2) + { + var MesBomOrderSub = new MesBomDetail2 + { + Erpid = erpDto.Erpid, + Erphid = erpDto.Erphid, + Fstartqty = erpDto.Fstartqty, + Fendqty = erpDto.Fendqty, + Funitidlot = erpDto.Funitidlot, + Ffixscrapqtylot = erpDto.Ffixscrapqtylot, + Fscrapratelot = erpDto.Fscrapratelot, + Fnumeratorlot = erpDto.Fnumeratorlot, + Fdenominatorlot = erpDto.Fdenominatorlot, + Fmaterialidlotbased = erpDto.Fmaterialidlotbased, + LineNumber = erpDto.LineNumber + + }; + + /*var single = MesBomDetail2Manager.GetSingle(it => + it.Erpid == MesBomOrderSub.Erpid); + if (single != null) MesBomOrderSub.Erpid = single.Erpid;*/ + + MesBomOrderSubList.Add(MesBomOrderSub); + } + + return MesBomOrderSubList; + } + } + + + +} \ No newline at end of file -- Gitblit v1.9.3