using Dm; using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; using SqlSugar; using System.Net.NetworkInformation; 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 DeleteData(db, mesWomcaa, mesWomcabs) ? 1 : 0; case "1": case "2": case "4": return SaveOrUpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0; case "5": return UpdateData(db, mesWomcaa, mesWomcabs) ? 1 : 0; default: throw new NotImplementedException( $"type没有{womErpCaa.Type}这个类型"); } }) > 0; } private bool UpdateData(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 = base.Insert(mesWomcaa); var baOrUpdate = _womcabManager.InsertRange(mesWomcabs); if (orUpdate && baOrUpdate) { //定义输入参数 var inputParam1 = new SugarParameter("P_WORK_NO", mesWomcaa.Caa001); // 定义输出参数 var outParam1 = new SugarParameter("c_Result", null, true); var outParam2 = new SugarParameter("C_MSG", null, true); // 使用 SqlSugar 执行存储过程 Db.Ado.ExecuteCommand("BEGIN PRC_UPDATE_DAA(:P_WORK_NO,:c_Result,:C_MSG); END;", inputParam1, outParam1, outParam2); // 获取输出参数的值 int result = int.Parse((string)outParam1.Value); string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; if (result == 1) { //存储过程失败则事务进行回滚 db.Ado.RollbackTran(); throw new Exception(message); } // 提交事务 db.Ado.CommitTran(); return true; } throw new NotImplementedException("插入或更新失败"); } 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 = base.Insert(mesWomcaa); var baOrUpdate = _womcabManager.InsertRange(mesWomcabs); if (orUpdate && baOrUpdate) return true; throw new NotImplementedException("插入或更新失败"); } private bool DeleteData(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.FXSHTH, 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.FXSHTH, 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 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.FENTRYID), Cab001 = dto.FBillNo, Cab002 = dto.FSeq, Cab003 = dto.FMaterialID, Cab006 = Convert.ToDecimal(dto.FNeedQty), Cab007 = Convert.ToDecimal(dto.FPickedQty), Cab009 = dto.FUnitID, Cab012 = Convert.ToDecimal(dto.FStdQty), Cab014 = dto.FIsKeyItem, Pid = Convert.ToDecimal(dto.FID), Eid = Convert.ToDecimal(dto.FID), PositionNo = dto.FPositionNO, IssuingOrganization=dto.FSupplyOrg, SupplyOrganization=dto.FChildSupplyOrgId, OwnerId = dto.FOwnerID, Mtono = dto.FMTONO, Lot = dto.FLot, DepotCode = dto.FStockID, IssueType = dto.FIssueType, SupplyType = dto.FSupplyType, Numerator = Convert.ToDecimal(dto.FNumerator), Denominator = Convert.ToDecimal(dto.FDenominator), SCRAPQTY = Convert.ToDecimal(dto.FFixScrapQty), SCRAPRATE = Convert.ToDecimal(dto.FScrapRate), SalesOrder=dto.FXSHTBH, F_ZJXF_YHRQ=dto.F_ZJXF_YHRQ, ProcNo=dto.F_ZJXF_SSGX }; var entity = Db.Queryable() .Where(s => s.Erpid == womcab.Erpid).Single(); if (entity != null) womcab.Id = entity.Id; womcabList.Add(womcab); } return womcabList; } }