using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Security; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using NPOI.Util; using SqlSugar; using Tnb.BasicData; using Tnb.BasicData.Entities; using Tnb.ProductionMgr.Entities; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; using Tnb.WarehouseMgr.Entities.Dto.Inputs; using Tnb.WarehouseMgr.Entities.Entity; using Tnb.WarehouseMgr.Interfaces; using Tnb.ProductionMgr.Entities.Entity; using System.Threading; using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { [OverideVisualDev(ModuleConsts.MODULE_WMSPRDINSTOCK_ID)] [ServiceModule(BizTypeId)] public class WmsPrdInstockHService : BaseWareHouseService { private const string BizTypeId = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly IWareHouseService _wareHouseService; private readonly IBillRullService _billRullService; private readonly IThirdApiRecordService _thirdApiRecordService; public WmsPrdInstockHService(ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService, IWareHouseService wareHouseService, IThirdApiRecordService thirdApiRecordService, IBillRullService billRullService) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; _wareHouseService = wareHouseService; _billRullService = billRullService; _thirdApiRecordService = thirdApiRecordService; } /// /// 工单提报 第一次主表所有参数全传,后续主表只需要传工单号prd_bill_code和更新后的合格数pqty、不合格数rqty /// /// /// public async Task PrdInstock(WmsPrdInstockInput input, ISqlSugarClient dbConn = null) { Logger.LogInformation($"【PrdInstock】传入参数 {JsonConvert.SerializeObject(input)}"); var db = _db; if (dbConn != null) db = dbConn; string type = ""; SemaphoreSlim semaphoreSlim = null; try { await db.Ado.BeginTranAsync(); WmsPrdInstockH prdInstockH = db.Queryable().Where(r => r.prd_bill_code == input.prd_bill_code).First(); string prd_instock_code_id = ""; // 新建主表 if (prdInstockH == null) { string bill_code = await _billRullService.GetBillNumber(CodeTemplateConst.PRDOUTSTOCK_CODE); WmsPrdInstockH wmsPrdInstockH = new (); wmsPrdInstockH.create_id = ""; wmsPrdInstockH.create_time = DateTime.Now; wmsPrdInstockH.prd_bill_code = input.prd_bill_code; wmsPrdInstockH.bill_code = bill_code; wmsPrdInstockH.material_id = input.material_id; wmsPrdInstockH.material_code = input.material_code; wmsPrdInstockH.material_name = input.material_name; wmsPrdInstockH.material_spec = input.material_spec; wmsPrdInstockH.planqty = input.planqty; wmsPrdInstockH.pqty = input.pqty; wmsPrdInstockH.rqty = input.rqty; wmsPrdInstockH.type = input.type; //wmsPrdInstockH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID; await db.Insertable(wmsPrdInstockH).ExecuteCommandAsync(); prd_instock_code_id = wmsPrdInstockH.id; type = input.type; } else { prd_instock_code_id = prdInstockH.id; await db.Updateable(r => new WmsPrdInstockH { pqty = input.pqty, rqty = input.rqty }).Where(r => r.id == prd_instock_code_id).ExecuteCommandAsync(); type = prdInstockH.type; } List WmsPrdInstockDs = new List(); #region 生产入库对应的bip仓库 string scwarehouse_id = ""; string rkwarehouse_id = ""; // bip变更为俩字段传一样或不传scwarehouse_id if (type == DictConst.PrdMoTypeZS) { scwarehouse_id = WmsWareHouseConst.bipwarehouseid_zs; rkwarehouse_id = WmsWareHouseConst.bipwarehouseid_zs; } else if (type == DictConst.PrdMoTypeJC) { scwarehouse_id = WmsWareHouseConst.bipwarehouseid_jc; rkwarehouse_id = WmsWareHouseConst.bipwarehouseid_jc; } else if (type == DictConst.PrdMoTypeZZ) { scwarehouse_id = WmsWareHouseConst.bipwarehouseid_bz; rkwarehouse_id = WmsWareHouseConst.bipwarehouseid_bz; } else if (type == DictConst.PrdMoTypeBZ) { scwarehouse_id = WmsWareHouseConst.bipwarehouseid_bz; rkwarehouse_id = WmsWareHouseConst.bipwarehouseid_bz; } #endregion List WmsPrdInstockCodes = new List(); WmsPrdInstockDInput prdInstockDInput = input.prdInstockD; WmsPrdInstockD wmsPrdInstockD = new WmsPrdInstockD() { task_bill_code = prdInstockDInput.task_bill_code, warehouse_id = prdInstockDInput.warehouse_id, startlocation_id = prdInstockDInput.startlocation_id, carry_id = prdInstockDInput.carry_id, create_id = input.create_id, create_time = DateTime.Now, prd_instock_id = prd_instock_code_id, status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID, scwarehouse_id = scwarehouse_id, rkwarehouse_id = rkwarehouse_id, prd_report_id = input.prd_report_id }; WmsPrdInstockDs.Add(wmsPrdInstockD); foreach (WmsPrdInstockCodeInput prdInstockCodeInput in input.prdInstockCodes) { WmsPrdInstockCodes.Add(new WmsPrdInstockCode() { planqty = prdInstockCodeInput.planqty, pqty = prdInstockCodeInput.pqty, code_batch = prdInstockCodeInput.code_batch, code = prdInstockCodeInput.code, unit_id = prdInstockCodeInput.unit_id, carry_id = prdInstockCodeInput.carry_id, prd_instock_id = prd_instock_code_id, prd_instockD_id = wmsPrdInstockD.id }); } await db.Insertable(wmsPrdInstockD).ExecuteCommandAsync(); await db.Insertable(WmsPrdInstockCodes).ExecuteCommandAsync(); if (type == DictConst.PrdMoTypeZS) { semaphoreSlim = _wareHouseService.GetSemaphore("instock", WmsWareHouseConst.WAREHOUSE_ZC_ID); } else if (type == DictConst.PrdMoTypeJC) { semaphoreSlim = _wareHouseService.GetSemaphore("instock", WmsWareHouseConst.WAREHOUSE_HCC_ID); } else if (type == DictConst.PrdMoTypeBZ) { semaphoreSlim = _wareHouseService.GetSemaphore("instock", WmsWareHouseConst.WAREHOUSE_DMJC_ID); } await semaphoreSlim.WaitAsync(); //入库取终点 InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = wmsPrdInstockD.warehouse_id, Size = 1 }; List endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); if (endLocations?.Count == 0) { throw new AppFriendlyException("没有可用的库位", 500); } BasLocation endLocation = endLocations[0]; BasLocation startLocation = db.Queryable().Where(r => r.id == wmsPrdInstockD.startlocation_id).First(); if (startLocation == null) { throw new AppFriendlyException("系统中找不到起点ID的库位信息", 500); } BasLocation endlocation_ssx = null; string startlocation_id_ssx = null; if (type == DictConst.PrdMoTypeZS) { Logger.LogInformation($"【PrdInstock】注塑车间生产提报"); // 注塑线边库到2,4输送线 // 根据ZSSSXCTU01 ZSSSXCTU02任务数平均分配任务 endlocation_ssx = await db.Queryable().Where(r => new string[2] { "32624148726549", "32624157608981" }.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync(); await db.Updateable().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync(); // ZSSSXCTU01 对应 SSX-011-002 if (endlocation_ssx.location_code == "ZSSSXCTU01") { startlocation_id_ssx = "32609073591317"; } // ZSSSXCTU02 对应 SSX-011-004 else if (endlocation_ssx.location_code == "ZSSSXCTU02") { startlocation_id_ssx = "32609093546005"; } WmsCarryH wmsCarryH = await db.Queryable().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync(); // 生成到输送线任务 CommonCreatePretaskInput commonCreatePretaskInput1 = new CommonCreatePretaskInput(); commonCreatePretaskInput1.startlocation_id = startLocation.id; commonCreatePretaskInput1.endlocation_id = endlocation_ssx.id; commonCreatePretaskInput1.carry_id = wmsCarryH.id; commonCreatePretaskInput1.carry_code = wmsCarryH.carry_code; commonCreatePretaskInput1.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; commonCreatePretaskInput1.biz_type = WmsWareHouseConst.BIZTYPE_WMSDELIVERY_ID; commonCreatePretaskInput1.require_id = wmsPrdInstockD.id; commonCreatePretaskInput1.isExcuteMission = false; Entities.Dto.Outputs.Result res1 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput1, db); if (res1.code != HttpStatusCode.OK) { throw new Exception($"注塑车间生成到输送线的任务失败 {res1.msg}"); } // 生成到中储仓任务 CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput(); commonCreatePretaskInput2.startlocation_id = startlocation_id_ssx; commonCreatePretaskInput2.endlocation_id = endLocation.id; commonCreatePretaskInput2.carry_id = wmsCarryH.id; commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code; commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID; commonCreatePretaskInput2.require_id = wmsPrdInstockD.id; commonCreatePretaskInput2.isChangeCarryLoc2StartLoc = false; Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db); if (res2.code != HttpStatusCode.OK) { throw new Exception($"注塑车间生成到中储仓的任务失败 {res2.msg}"); } } else if (type == DictConst.PrdMoTypeJC) { Logger.LogInformation($"【PrdInstock】挤出车间生产提报"); WmsCarryH wmsCarryH = await db.Queryable().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync(); // 生成到中储仓任务 CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput(); commonCreatePretaskInput2.startlocation_id = startLocation.id; commonCreatePretaskInput2.endlocation_id = endLocation.id; commonCreatePretaskInput2.carry_id = wmsCarryH.id; commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code; commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID; commonCreatePretaskInput2.require_id = wmsPrdInstockD.id; Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db); if (res2.code != HttpStatusCode.OK) { throw new Exception($"挤出车间生成到中储仓的任务失败 {res2.msg}"); } } else if (type == DictConst.PrdMoTypeBZ) { Logger.LogInformation($"【PrdInstock】包装车间生产提报"); WmsCarryH wmsCarryH = await db.Queryable().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync(); // 生成任务 CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput(); commonCreatePretaskInput2.startlocation_id = startLocation.id; commonCreatePretaskInput2.endlocation_id = endLocation.id; commonCreatePretaskInput2.carry_id = wmsCarryH.id; commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code; commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID; commonCreatePretaskInput2.require_id = wmsPrdInstockD.id; Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db); if (res2.code != HttpStatusCode.OK) { throw new Exception($"包装车间生成任务失败 {res2.msg}"); } } await db.Ado.CommitTranAsync(); } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); await db.Ado.RollbackTranAsync(); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); } finally { semaphoreSlim.Release(); _wareHouseService.GenTaskExecute(); } return await ToApiResult(HttpStatusCode.OK, "成功"); } public override async Task ModifyAsync(WareHouseUpInput input) { if (input == null) { throw new ArgumentNullException(nameof(input)); } bool isOk = true; // 如果生产入库 输送线到仓库这条任务完成,反写单据数据 if (input.bizTypeId == WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID) { isOk = await _db.Updateable() .SetColumns(it => new WmsPrdInstockD { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID }) .Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); WmsPrdInstockD wmsPrdInstockD = await _db.Queryable().SingleAsync(x=>x.id==input.requireId); WmsPrdInstockH instock = await _db.Queryable().SingleAsync(x=>x.id==wmsPrdInstockD.prd_instock_id); // BasWarehouse scWarehouse = await _db.Queryable().SingleAsync(x=>x.id==wmsPrdInstockD.scwarehouse_id); // BasWarehouse kcWarehouse = await _db.Queryable().SingleAsync(x=>x.id==wmsPrdInstockD.warehouse_id); // PrdReport prdReport = await _db.Queryable().SingleAsync(x => x.id == instock.prd_report_id); PrdReport prdReport = await _db.Queryable().SingleAsync(x => x.id == wmsPrdInstockD.prd_report_id); if (prdReport == null) return; PrdMoTask prdMoTask = await _db.Queryable().SingleAsync(x => x.id == prdReport.mo_task_id); PrdMo prdMo = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.mo_id); #region 新增生产入库记录 var prdInstockH = new PrdInstockH(); prdInstockH = await _db.Queryable().Where(r => r.mo_task_id == prdReport.mo_task_id).FirstAsync(); if (prdInstockH != null) { prdInstockH.bill_type = instock.type; prdInstockH.warehouse_id = wmsPrdInstockD.warehouse_id; prdInstockH.carry_code = wmsPrdInstockD.carry_id; prdInstockH.location_code = wmsPrdInstockD.startlocation_id; prdInstockH.create_id = prdReport?.create_id ?? wmsPrdInstockD.create_id; prdInstockH.org_id = instock.org_id; prdInstockH.station_id = prdMoTask?.workstation_id; prdInstockH.workline_id = prdMoTask?.workline_id; prdInstockH.mo_task_id = prdReport?.mo_task_id; prdInstockH.code = instock.bill_code; prdInstockH.is_sync_bip = 0; await _db.Updateable(prdInstockH).ExecuteCommandAsync(); } else { prdInstockH.id = SnowflakeIdHelper.NextId(); prdInstockH.bill_type = instock.type; prdInstockH.warehouse_id = wmsPrdInstockD.warehouse_id; prdInstockH.carry_code = wmsPrdInstockD.carry_id; prdInstockH.location_code = wmsPrdInstockD.startlocation_id; prdInstockH.create_id = prdReport?.create_id ?? wmsPrdInstockD.create_id; prdInstockH.org_id = instock.org_id; prdInstockH.station_id = prdMoTask?.workstation_id; prdInstockH.workline_id = prdMoTask?.workline_id; prdInstockH.mo_task_id = prdReport?.mo_task_id; prdInstockH.code = instock.bill_code; prdInstockH.is_sync_bip = 0; await _db.Insertable(prdInstockH).ExecuteCommandAsync(); } #endregion //来源erp才产成品入库 if (prdMo.mo_source != "1") { return; } if (await _db.Queryable().AnyAsync(x => x.remark.Contains(prdReport.id) && x.name == "产成品入库")) { Logger.LogInformation($"【WmsPrdInstockHService ModifyAsync】重复调用入库"); return; } List allInstockDetails = await _db.Queryable().Where(it => it.prd_instockD_id == wmsPrdInstockD.id).OrderBy(x=>x.id).ToListAsync(); List materialIds = Arrays.AsList(instock.material_id); List unitIds = allInstockDetails.Select(x => x.unit_id).Distinct().ToList(); List unitCodes = allInstockDetails.Select(x => x.unit_id).Distinct().ToList(); List unitDatas = await _db.Queryable() .LeftJoin((x, y) => x.Id == y.DictionaryTypeId) .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode)) .Select((x, y) => y) .ToListAsync(); List erpWarehouserelaHs = await _db.Queryable().Where(x=>x.id!=null).ToListAsync(); string userId = prdReport?.create_id ?? WmsWareHouseConst.AdministratorUserId; string supplierId = WmsWareHouseConst.TIANYIGONGYINGSHANG_ID; List tableIds = new List(); tableIds.Add(userId); tableIds.Add(WmsWareHouseConst.AdministratorOrgId); tableIds.AddRange(materialIds); tableIds.Add(supplierId); tableIds.AddRange(unitDatas.Select(x => x.Id).ToList()); // tableIds.AddRange(unitIds); List erpExtendFields = await _db.Queryable().Where(x => tableIds.Contains(x.table_id)).ToListAsync(); // string erpCreateId = erpExtendFields.Find(x => x.table_id == userId)?.user_id ?? WmsWareHouseConst.ERPUSERID; string erpCreateId = WmsWareHouseConst.ERPUSERID; ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (WmsWareHouseConst.AdministratorOrgId)); string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); List> requestData = new List>(); Dictionary erpRequestData = new Dictionary(); erpRequestData.Add("billmaker", erpCreateId); erpRequestData.Add("corpoid", erpOrg.corpoid); erpRequestData.Add("corpvid", erpOrg.corpvid); erpRequestData.Add("cprocalbodyoid", erpOrg.pk_org); erpRequestData.Add("cprocalbodyvid", erpOrg.pk_org_v); erpRequestData.Add("creationtime", nowStr); erpRequestData.Add("creator", erpCreateId); erpRequestData.Add("ctrantypeid", "0001H11000000000D30X");//先写死 // erpRequestData.Add("cprowarehouseid", wmsPrdInstockD.scwarehouse_id); erpRequestData.Add("cprowarehouseid", wmsPrdInstockD.scwarehouse_id); // 出库仓库 erpRequestData.Add("cwarehouseid", wmsPrdInstockD.rkwarehouse_id);//todo 现在是我们的仓库id 要改 // 库存仓库 erpRequestData.Add("cwhsmanagerid", null); erpRequestData.Add("dbilldate", nowStr); erpRequestData.Add("dmakedate", nowStr); erpRequestData.Add("fbillflag", 2); erpRequestData.Add("ntotalnum", allInstockDetails!=null ? allInstockDetails.Sum(x=>x.pqty) : 0); erpRequestData.Add("pk_org", erpOrg.pk_org); erpRequestData.Add("pk_org_v", erpOrg.pk_org_v); erpRequestData.Add("pk_group", erpOrg.pk_group); erpRequestData.Add("vbillcode", instock.bill_code); erpRequestData.Add("vtrantypecode", "46-01"); erpRequestData.Add("csourcebillhid", prdReport?.erp_pk_wr ?? ""); erpRequestData.Add("report_id", prdReport?.id ?? ""); erpRequestData.Add("prd_instock_h_id", prdInstockH.id); List> erpRequestDataDetails = new List>(); foreach (WmsPrdInstockCode item in allInstockDetails) { erpRequestDataDetails.Add(new Dictionary() { ["cbodytranstypecode"] = "46-01", ["cbodywarehouseid"] = wmsPrdInstockD.rkwarehouse_id, // 库存仓库 ["cmaterialoid"] = erpExtendFields.Find(x => x.table_id == instock.material_id)?.cmaterialoid ?? "", ["cmaterialvid"] = erpExtendFields.Find(x => x.table_id == instock.material_id)?.cmaterialvid ?? "", ["corpoid"] = erpOrg.corpoid, ["corpvid"] = erpOrg.corpvid, ["cproductid"] = erpExtendFields.Find(x => x.table_id == instock.material_id)?.cmaterialoid ?? "", ["fproductclass"] = 1, ["crowno"] = (allInstockDetails.FindIndex(x => x.id == item.id) + 1) * 10, ["csourcebillhid"] = prdReport?.erp_pk_wr ?? "", ["csourcebillbid"] = prdReport?.erp_pk_wr_product ?? "", ["cunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x=>x.EnCode==item.unit_id)?.Id ?? ""))?.cunitid ?? "", ["cvendorid"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_id ?? "", ["cvendorvid"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_vid ?? "", ["dbizdate"] = instock.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), ["dplanarrivedate"] = instock.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), ["dplanoutdate"] = instock.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), ["nnum"] = item.pqty, ["nshouldnum"] = item.pqty, ["pk_group"] = erpOrg.pk_group, ["pk_org"] = erpOrg.pk_org, ["pk_org_v"] = erpOrg.pk_org_v, ["vbatchcode"] = item.code_batch, ["vproductbatch"] = prdMo.mo_code.Split("-")[0], ["vsourcebillcode"] = prdReport.vsourcebillcode, ["vsourcerowno"] = prdReport.vsourcerowno, }); } erpRequestData.Add("dtls", erpRequestDataDetails); requestData.Add(erpRequestData); BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL); ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord(); thirdWebapiRecord.id = SnowflakeIdHelper.NextId(); thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; thirdWebapiRecord.name = "产成品入库"; thirdWebapiRecord.method = "POST"; // thirdWebapiRecord.url = config.value + "uapws/rest/productin/save"; thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/productin/save"; thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.remark = $"【WmsPrdInstockHService ModifyAsync】载具编号:{prdReport?.material_box_code ?? ""},提报id:{prdReport?.id}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); if(callErp.value=="1") { _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); } } if (!isOk) { throw Oops.Oh(ErrorCode.COM1001); } } } }