¶Ô±ÈÐÂÎļþ |
| | |
| | | using 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; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |