From 3a6f7cb36dff0ec99edddbb53078947fcf08a47e Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期六, 19 七月 2025 09:32:15 +0800 Subject: [PATCH] 1.用料清单变更 --- MES.Service/service/WomcaaManager.cs | 241 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 241 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/WomcaaManager.cs b/MES.Service/service/WomcaaManager.cs new file mode 100644 index 0000000..cb30102 --- /dev/null +++ b/MES.Service/service/WomcaaManager.cs @@ -0,0 +1,241 @@ +锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; +using MES.Service.Modes; +using MES.Service.util; +using SqlSugar; + +namespace MES.Service.service; + +public class WomcaaManager : Repository<Womcaa> +{ + //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� + + //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 WomcaaManager.cs + + private readonly WomcabManager _womcabManager = new(); + + public bool SaveList(List<ErpWOM> rohIns) + { + var result = rohIns.Select(Save).ToList(); + return result.All(b => b); + } + + public bool Save(ErpWOM wom) + { + var womErpCaa = wom.ErpCaa; + + var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa, wom.ErpCabs[0].FBillNo); + var mesWomcabs = + MapErpCABtoWomcab(wom.ErpCabs); + + return UseTransaction(db => + { + switch (womErpCaa.Type) + { + case "3": + return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0; + case "2": + case "4": + //kyy 2024-09-13 鍙樻洿 + case "5": + return SaveOrUpdateData(db, mesWomcaa, mesWomcabs) + ? 1 + : 0; + default: + throw new NotImplementedException( + $"type娌℃湁{womErpCaa.Type}杩欎釜绫诲瀷"); + } + }) > 0; + } + + private bool SaveOrUpdateData(SqlSugarScope db, Womcaa mesWomcaa, + List<Womcab> mesWomcabs) + { + if (StringUtil.CheckGuid(mesWomcaa.Guid)) + base.DeleteById(mesWomcaa.Guid); + + + if (mesWomcabs.Count > 0) + db.Deleteable<Womcab>() + .Where(s => s.Pid == mesWomcaa.Erpid).ExecuteCommand(); + + //鍗曟潯鎻掑叆蹇界暐绌哄瓧娈� + var orUpdate = db.Insertable(mesWomcaa) + .IgnoreColumns(true).ExecuteCommand() > 0; + + //鎵归噺鎻掑叆蹇界暐绌哄瓧娈� + var baOrUpdate = db.Insertable(mesWomcabs).PageSize(1) + .IgnoreColumnsNull() + .ExecuteCommand() > 0; + + // if (orUpdate && baOrUpdate) + // throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + + if (orUpdate && baOrUpdate) + { + // 璋冪敤瀛樺偍杩囩▼鏇存柊鐢ㄦ枡娓呭崟 + db.Ado.ExecuteCommand("exec [dbo].[prc_update_womdab] @outMsg output,@outSum output,@inEdtUserGuid,@inCaaGuid", + new { + outMsg = (string)null, // 杈撳嚭鍙傛暟 + outSum = (int?)null, // 杈撳嚭鍙傛暟 + inEdtUserGuid = new Guid("11111111-1111-1111-1111-111111111111"), + inCaaGuid = new Guid(mesWomcaa.Guid.ToString()) + }); + return true; + } + throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�"); + + + } + + private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa, + List<Womcab> mesWomcabs) + { + var decimals = mesWomcabs.Select(s => s.Guid).ToArray(); + var update = base.DeleteById(mesWomcaa.Guid); + var insertOrUpdate = db + .Deleteable<Womcab>().In(decimals) + .ExecuteCommand() > 0; + + if (update && insertOrUpdate) return true; + throw new NotImplementedException("鏇存柊澶辫触"); + } + + private Womcaa MapErpCAAtoWomcaa(ErpCAA dto,string PPBOMNO) + { + var entity = new Womcaa + { + Erpid = Convert.ToInt32(dto.Id), /// ERPID + Caa001 = PPBOMNO, /// 鍗曞彿 + Caa021 = dto.FWorkShopID, /// 宸ヤ綔杞﹂棿 + RoutingId = dto.FRoutingId, /// 宸ヨ壓璺嚎 + WorkShopId = dto.FREMWorkShopId, /// 浜х嚎 + DepotCode = dto.FStockId, /// 浠撳簱 + CreateDate = dto.FDate, /// 鍗曟嵁鏃ユ湡 + Caa004 = dto.FBILLTYPE, /// 鍗曟嵁绫诲瀷 + Caa023 = dto.FStatus, /// 鐘舵�� 瀹屽伐锛屾湭瀹屽伐 + Caa006 = dto.FMaterialId, /// 浜у搧缂栫爜 + Caa009 = dto.FUnitId, /// 鍗曚綅 + Caa012 = !string.IsNullOrEmpty(dto.FQty) + ? Convert.ToDecimal(dto.FQty) + : null, /// 鏁伴噺 + WorkGroupId = dto.FWorkGroupId, /// 璁″垝缁� + PlanId = dto.FPlannerID, /// 璁″垝鍛� + Caa010 = dto.FPlanStartDate, /// 棰勮寮�宸ユ椂闂� + Caa011 = dto.FPlanFinishDate, /// 棰勮瀹屽伐鏃堕棿 + Caa005 = DateTime.TryParse(dto.FConveyDate, out var conveyDate) + ? (conveyDate <= new DateTime(1900, 1, 1) ? null : conveyDate.ToString()) + : null, /// 寮�鍗曟棩鏈� + StockInlimith = dto.FStockInLimitH, /// 鍏ュ簱涓婇檺 + StockInlimitl = dto.FStockInLimitL, /// 鍏ュ簱涓嬮檺 + Mtono = dto.FMTONO, /// 璁″垝璺熻釜鍙� + Lot = dto.FLot, /// 鎵瑰彿 + Caa013 = dto.FBomId, /// BOM鐗堟 + + CreateType = dto.FCreateType, /// 鐢熸垚鏂瑰紡 + SrcBillType = dto.FSrcBillType, /// 婧愬崟绫诲瀷 + SrcBillNo = dto.FSrcBillNo, /// 婧愬崟缂栧彿 + SrcBillentryseq = dto.FSrcBillEntrySeq, /// 婧愬崟鍒嗗綍琛屽彿 + SaleOrderNo = dto.FSaleOrderNo, /// 闇�姹傚崟鎹彿 + SaleOrderEntryseq = dto.FSaleOrderEntrySeq, /// 闇�姹傚崟鎹鍙� + ForceCloserid = dto.FForceCloserId, /// 缁撴浜� + CloseType = dto.FCloseType, /// 缁撴绫诲瀷 + SrcSplitBillno = dto.FSrcSplitBillNo, /// 婧愭媶鍒嗚鍗曠紪鍙� + Caa016 = dto.FDESCRIPTION, /// 澶囨敞 + + Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID) + ? Convert.ToInt32(dto.PLAN_ID) + : null, /// ERP婧愬崟ID + Caa019 = !string.IsNullOrEmpty(dto.PLAN_SEQ) + ? Convert.ToInt32(dto.PLAN_SEQ) + : null, /// ERP婧愬崟琛屽彿 + Caa020 = dto.PLAN_NUM, /// ERP婧愬崟鍗曞彿(浠诲姟鍗曞彿) + //Caa015 = dto.F_UNW_Text_xsddh, /// 閿�鍞鍗曞彿 + ErpSczz = Convert.ToInt32(dto.FPrdOrgId), /// 鐢熶骇缁勭粐ID + ErpWtzz = Convert.ToInt32(dto.FEnTrustOrgId), /// 濮旀墭缁勭粐ID + Btbz = dto.Btbz, /// 濮旀墭缁勭粐ID + //Caa015Head = dto.F_XIFG_Integer_tzk, /// 閿�鍞鍗曡鍙� + //MainProductNo = dto.F_XIFG_Base_w5c, /// 涓讳骇鍝佺紪鐮� + // MainProductQty = + // Convert.ToInt32(dto.F_XIFG_Qty_yrr), /// 涓讳骇鍝佺敓浜ф暟閲� + // CustomerItemNumber = dto.F_XIFG_Text_fg2, /// 瀹㈡埛璐у彿 + // PackingListNumber = dto.F_XIFG_Text_yrr, /// 鍖呰鍗曞彿 + // CustomerName = dto.F_XIFG_Text_qtr1, /// 瀹㈡埛鍚嶇О + // Customer = dto.F_XIFG_Base_83g1, /// 瀹㈡埛 + Caa0111 = dto.FPlanFinishDate, /// 棰勮瀹屽伐鏃堕棿澶囦唤 + Typea = dto.TypeA, /// 棰勮瀹屽伐鏃堕棿澶囦唤 + //Typeb = dto.TypeB /// 棰勮瀹屽伐鏃堕棿澶囦唤 + SynchronousDate = DateTime.Now + }; + + var single = base.GetSingle(it => it.Erpid == entity.Erpid); + if (single != null) entity.Guid = single.Guid; + + return entity; + } + + private List<Womcab> MapErpCABtoWomcab(List<ErpCAB> dtoList) + { + var womcabList = new List<Womcab>(); + + foreach (var dto in dtoList) + { + var womcab = new Womcab + { + Erpid = Convert.ToInt32(dto.Id), /// ERPID + Cab001 = dto.FBillNo, /// 宸ュ崟鍗曞彿 + Cab002 = Convert.ToInt32(dto.FSeq), /// 搴忓彿 + Cab003 = dto.FMaterialID, /// 鏉愭枡缂栫爜 + Cab006 = !string.IsNullOrEmpty(dto.FNeedQty) + ? Convert.ToDecimal(dto.FNeedQty) + : null, /// 闇�棰嗙敤閲� + Cab007 = !string.IsNullOrEmpty(dto.FPickedQty) + ? Convert.ToDecimal(dto.FPickedQty) + : null, /// 宸查鐢ㄩ噺 + PositionNo = dto.FPositionNO, /// 浣嶇疆鍙� + SupplyOrganization = dto.FChildSupplyOrgId, /// 渚涘簲缁勭粐 + IssuingOrganization = dto.FSUPPLYORG, /// 鍙戞枡缁勭粐 + OwnerId = dto.FOwnerID, /// 璐т富 + Mtono = dto.FMTONO, /// 璁″垝璺熻釜鍙� + Lot = dto.FLot, /// 鎵瑰彿 + DepotCode = dto.FStockID, /// 浠撳簱 + IssueType = dto.FIssueType, /// 鍙戞枡鏂瑰紡 + // Cab008 = dto.F_UNW_Text_tpgy, /// 宸ヨ壓 + Cab009 = dto.FUnitID, /// 鍗曚綅 + SupplyType = dto.FSupplyType, /// 渚涘簲绫诲瀷(C閲囪喘 Z鑷埗 W濮斿) + Cab012 = !string.IsNullOrEmpty(dto.FStdQty) + ? Convert.ToDecimal(dto.FStdQty) + : null, /// 缁勬垚鐢ㄩ噺 + Cab014 = dto.FIsKeyItem, /// 鏄惁鏇挎枡 + Numerator = dto.FNumerator, /// 鍒嗗瓙 + Denominator = dto.FDenominator, /// 鍒嗘瘝 + Pid = Convert.ToInt32(dto.PID), /// ERP澶碔D + Eid = Convert.ToInt32(dto.Id), /// ERP ID + + Scrapqty = dto.FFixScrapQty, /// 鍥哄畾鎹熻�� + Scraprate = dto.FScrapRate, /// 鍙樺姩鎹熻�楃巼 + Freplacegroup = Convert.ToInt32(dto.FReplaceGroup), + UseRate = Convert.ToDecimal(dto.FUseRate), + MaterialType = dto.FMaterialType, + MustQty = Convert.ToDecimal(dto.FMustQty), + Typeb = dto.TypeB + // Fsaleorderno = dto.FSALEORDERNO, /// 閿�鍞鍗� + // + // CustomerItemNumber = dto.F_XIFG_Text_re5, /// 瀹㈡埛璐у彿 + // PackingListNumber = dto.F_XIFG_Text_apv, /// 鍖呰鍗曞彿 + // MainProduct = dto.F_XIFG_Base_re5, /// 涓讳骇鍝� + // MainProductQty = + // Convert.ToInt32(dto.F_XIFG_Qty_apv), /// 涓讳骇鍝佹暟閲� + // ParentItemName = dto.F_XIFG_Base_apv /// 鐖堕」鐗╂枡鍚嶇О + }; + + var entity = Db.Queryable<Womcab>() + .Where(s => s.Eid == womcab.Eid).Single(); + if (entity != null) womcab.Guid = entity.Guid; + + womcabList.Add(womcab); + } + + return womcabList; + } +} \ No newline at end of file -- Gitblit v1.9.3