using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; using SqlSugar; namespace MES.Service.service; public class WomcaaManager : Repository { //当前类已经继承了 Repository 增、删、查、改的方法 //这里面写的代码不会给覆盖,如果要重新生成请删除 WomcaaManager.cs private readonly WomcabManager _womcabManager = new(); public bool SaveList(List 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); 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 mesWomcabs) { if (mesWomcaa.Id != null) base.DeleteById(mesWomcaa.Id); if (mesWomcabs.Count > 0) db.Deleteable() .Where(s => s.Eid == 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) return true; throw new NotImplementedException("插入或更新失败"); } private bool UpdateData(SqlSugarScope db, Womcaa mesWomcaa, List mesWomcabs) { var decimals = mesWomcabs.Select(s => s.Id).ToArray(); var update = base.DeleteById(mesWomcaa.Id); var insertOrUpdate = db .Deleteable().In(decimals) .ExecuteCommand() > 0; if (update && insertOrUpdate) return true; throw new NotImplementedException("更新失败"); } private Womcaa MapErpCAAtoWomcaa(ErpCAA dto) { //string jabs="0"; //var entity = new Womcaa //{ // Erpid = Convert.ToDecimal(dto.Id), // Caa001 = dto.FBillNo, // Caa004 = dto.FBillType, // Caa005 = dto.FConveyDate, // Caa006 = dto.FMaterialId, // Caa009 = dto.FUnitId, // Caa010 = dto.FPlanStartDate, // Caa011 = dto.FPlanFinishDate, // Caa012 = Convert.ToDecimal(dto.FQty), // Caa013 = dto.FBomId, // Caa015 = dto.FSaleOrderNo, // Caa015Head = dto.FSaleOrderEntrySeq, // Caa016 = dto.FDescription, // Caa017 = 0, // Caa018 = Convert.ToDecimal(dto.PLAN_ID), // Caa019 = dto.PLAN_SEQ, // Caa020 = dto.PLAN_NUM, // Caa021 = dto.FWorkShopID, // Fstatus = 0, // Caa022 = Convert.ToDecimal(dto.FQty), // Caa023 = dto.FStatus, // Caa024 = 0, // RoutingId = dto.FRoutingId, // WorkShopId = dto.FREMWorkShopId, // DepotCode = dto.FStockId, // CreateDate = dto.FDate, // WorkGroupId = dto.FWorkGroupId, // PlanId = dto.FPlannerID, // StockInlimith = dto.FStockInLimitH, // StockInlimitl = dto.FStockInLimitL, // Mtono = dto.FMTONO, // Lot = dto.FLot, // 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, // F_ZSXG_KH = dto.F_ZSXG_KH, // F_ZJXF_YHRQ = dto.F_ZJXF_YHRQ, // PrdOrg = dto.erP_SCZZ, // TrustOrg = dto.erP_WTZZ, // TbTime = DateTime.Now, // JaBs = "0" //}; //if (dto.Type == "5") //{ // entity.IsXg = 1; //} //else //{ // entity.IsXg = 0; //} //if (dto.FStatus == "6" || dto.FStatus == "7") //{ // entity.JaBs = "1"; // entity.JaTime = DateTime.Now; //} var entity = new Womcaa { Erpid = Convert.ToInt32(dto.Id), /// ERPID Caa001 = dto.ppbombillno, /// 单号 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 = dto.FConveyDate, /// 开单日期 StockInlimith = dto.FStockInLimitH, /// 入库上限 StockInlimitl = dto.FStockInLimitL, /// 入库下限 Mtono = dto.FMTONO, /// 计划跟踪号 Lot = dto.FLot, /// 批号 Caa013 = dto.FBomId, /// BOM版次 CreateType = dto.FCreateType, /// 生成方式 Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID) ? Convert.ToInt32(dto.PLAN_ID) : null, /// ERP源单ID Caa019 = dto.PLAN_SEQ, /// ERP源单行号 Caa020 = dto.PLAN_NUM, /// ERP源单单号(任务单号) 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, /// 备注 BTBZ = dto.BTBZ, /// 备注 PrdOrg = dto.FPrdOrgId, /// 生产组织ID TrustOrg = dto.FEnTrustOrgId, /// 委托组织ID Typea = dto.TypeA, /// 单据状态 //沃尔新增 WR_F_SCDD_SCTZD = dto.F_SCDD_SCTZD //WR_F_SCDD_XH = dto.F_SCDD_XH }; var single = base.GetSingle(it => it.Erpid == entity.Erpid); if (single != null) entity.Id = single.Id; return entity; } private List MapErpCABtoWomcab(List dtoList) { var womcabList = new List(); foreach (var dto in dtoList) { var womcab = new Womcab { Erpid = Convert.ToDecimal(dto.ID), Cab001 = dto.FBillNo, Cab002 = dto.FSeq, Cab003 = dto.FMaterialID, Cab006 = Convert.ToDecimal(dto.FNeedQty), MustQty = Convert.ToDecimal(dto.FMustQty), Cab007 = Convert.ToDecimal(dto.FPickedQty), PositionNo = dto.FPositionNO, SupplyOrganization = dto.FChildSupplyOrgId, IssuingOrganization = dto.FSupplyOrg, OwnerId = dto.FOwnerID, Mtono = dto.FMTONO, Lot = dto.FLot, DepotCode = dto.FStockID, IssueType = dto.FIssueType, Cab009 = dto.FUnitID, SupplyType = dto.FSupplyType, Cab012 = Convert.ToDecimal(dto.FStdQty), Freplacegroup = Convert.ToInt32(dto.FReplaceGroup), UseRate = Convert.ToDecimal(dto.FUseRate), MaterialType = dto.FMaterialType, Cab014 = dto.FIsKeyItem, Numerator = Convert.ToDecimal(dto.FNumerator), Denominator = Convert.ToDecimal(dto.FDenominator), Pid = Convert.ToDecimal(dto.PID), Eid = Convert.ToDecimal(dto.PID), SCRAPQTY = Convert.ToDecimal(dto.FFixScrapQty), SCRAPRATE = Convert.ToDecimal(dto.FScrapRate), Typeb = dto.TypeB, WR_F_XIFG_Base_qtr = dto.F_XIFG_Base_qtr //WR_F_XIFG_Base_83g = dto.F_XIFG_Base_83g }; var entity = Db.Queryable() .Where(s => s.Erpid == womcab.Erpid).Single(); if (entity != null) womcab.Id = entity.Id; womcabList.Add(womcab); } return womcabList; } }