From 804974329613a3676ac698cb2bbf6b8fd25d2670 Mon Sep 17 00:00:00 2001 From: zhou keda <1315948824@qq.com> Date: Thu, 10 Oct 2024 16:36:47 +0800 Subject: [PATCH] bug --- .../PrdMaterialReceiptService.cs | 416 +++++++++--------- .../IWmsCarryUnbindService.cs | 2 +- .../Tnb.WarehouseMgr/WmsCarryUnbindService.cs | 48 +- 3 files changed, 255 insertions(+), 211 deletions(-) diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs index 1a8b066f..51e45f10 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs @@ -586,239 +586,251 @@ namespace Tnb.ProductionMgr public override async Task ModifyAsync(WareHouseUpInput input) { Log.Information($"物料呼叫完成回更参数:{JsonConvert.SerializeObject(input)}"); - if (input == null) + try { - throw new ArgumentNullException(nameof(input)); - } - - if (string.IsNullOrEmpty(input.requireId)) - { - throw Oops.Bah("来源id为空"); - } - - var db = _repository.AsSugarClient(); - PrdMoTask moTask = await db.Queryable().SingleAsync(x => x.id == input.requireId); - if (moTask == null) - { - throw Oops.Bah($"未找到来源id为{input.requireId}的生产任务单"); - } - - OrganizeEntity workshop = await _organizeService.GetAnyParentByWorkstationId(moTask.workstation_id, DictConst.RegionCategoryWorkshopCode); - List insertHList = new List(); - List insertDList = new List(); - List insertFHList = new List(); - List insertFDList = new List(); - List clearCarryIds = new List(); - string orgId = WmsWareHouseConst.AdministratorOrgId; - // string userId = moTask.worker_id; - string userId = WmsWareHouseConst.AdministratorUserId; - if (_userManager != null && !string.IsNullOrEmpty(_userManager.UserId)) - { - userId = _userManager.UserId; - } - foreach(string carryId in input.carryIds) - { - clearCarryIds.Add(carryId); - WmsCarryH carry = await db.Queryable().SingleAsync(x => x.id == carryId); - string code = await _billRullService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.MATERIAL_RECEIPT_CODE); - PrdMaterialReceiptH prdMaterialReceiptH = new PrdMaterialReceiptH() + if (input == null) { - code = code, - station_id = moTask.workstation_id, - mo_task_id = moTask.id, - process_id = moTask.process_id, - equip_id = moTask.eqp_id, - workshop_id = workshop?.Id ?? "", - carry_id = carry.id, - workline_id = moTask.workline_id, - carry_code = carry.carry_code, - mbom_process_id = moTask.mbom_process_id, - create_id = userId, - create_time = DateTime.Now, - org_id = orgId - }; - insertHList.Add(prdMaterialReceiptH); + throw new ArgumentNullException(nameof(input)); + } + + if (string.IsNullOrEmpty(input.requireId)) + { + throw Oops.Bah("来源id为空"); + } + + var db = _repository.AsSugarClient(); + PrdMoTask moTask = await db.Queryable().SingleAsync(x => x.id == input.requireId); + if (moTask == null) + { + throw Oops.Bah($"未找到来源id为{input.requireId}的生产任务单"); + } + + OrganizeEntity workshop = await _organizeService.GetAnyParentByWorkstationId(moTask.workstation_id, DictConst.RegionCategoryWorkshopCode); + List insertHList = new List(); + List insertDList = new List(); + List insertFHList = new List(); + List insertFDList = new List(); + List clearCarryIds = new List(); + string orgId = WmsWareHouseConst.AdministratorOrgId; + // string userId = moTask.worker_id; + string userId = WmsWareHouseConst.AdministratorUserId; + if (_userManager != null && !string.IsNullOrEmpty(_userManager.UserId)) + { + userId = _userManager.UserId; + } + foreach(string carryId in input.carryIds) + { + clearCarryIds.Add(carryId); + WmsCarryH carry = await db.Queryable().SingleAsync(x => x.id == carryId); + string code = await _billRullService.GetBillNumber(CodeTemplateConst.MATERIAL_RECEIPT_CODE); + PrdMaterialReceiptH prdMaterialReceiptH = new PrdMaterialReceiptH() + { + code = code, + station_id = moTask.workstation_id, + mo_task_id = moTask.id, + process_id = moTask.process_id, + equip_id = moTask.eqp_id, + workshop_id = workshop?.Id ?? "", + carry_id = carry.id, + workline_id = moTask.workline_id, + carry_code = carry.carry_code, + mbom_process_id = moTask.mbom_process_id, + create_id = userId, + create_time = DateTime.Now, + org_id = orgId + }; + insertHList.Add(prdMaterialReceiptH); - string feedCode = await _billRullService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.FEEDING_CODE); - PrdFeedingH prdFeedingH = new PrdFeedingH() - { - code = feedCode, - station_id = moTask.workstation_id, - mo_task_id = moTask.id, - process_id = moTask.process_id, - // equip_id = input.equip_id, - workshop_id = workshop?.Id, - carry_id = carry.id, - workline_id = moTask.workline_id, - carry_code = carry.carry_code, - // remark = input.remark, - mbom_process_id = moTask.mbom_process_id, - create_id = userId, - create_time = DateTime.Now, - org_id = orgId - }; - insertFHList.Add(prdFeedingH); + string feedCode = await _billRullService.GetBillNumber(CodeTemplateConst.FEEDING_CODE); + PrdFeedingH prdFeedingH = new PrdFeedingH() + { + code = feedCode, + station_id = moTask.workstation_id, + mo_task_id = moTask.id, + process_id = moTask.process_id, + // equip_id = input.equip_id, + workshop_id = workshop?.Id, + carry_id = carry.id, + workline_id = moTask.workline_id, + carry_code = carry.carry_code, + // remark = input.remark, + mbom_process_id = moTask.mbom_process_id, + create_id = userId, + create_time = DateTime.Now, + org_id = orgId + }; + insertFHList.Add(prdFeedingH); - List carryCodes = new List(); - List memberCarryIds = new List(); - List memberCarrys = new List(); - if (carry.carrystd_id == WmsWareHouseConst.CARRY_ZYXCSTD_ID || - carry.carrystd_id == WmsWareHouseConst.CARRY_ZYLJSTD_ID) - { - carryCodes = await db.Queryable().Where(x=>x.carry_id==carry.id).ToListAsync(); - } - else - { - //CarryQueryOutput carryQueryOutput = await _wmsCarryQueryService.MESCarryQueryResult(new MESCarryQueryResultInput(){carry_code = carry.carry_code}); - memberCarryIds = await db.Queryable().Where(x=>x.carry_id==carry.id).Select(x=>x.membercarry_id).ToListAsync(); - if (memberCarryIds == null || memberCarryIds.IsEmpty()) + List carryCodes = new List(); + List memberCarryIds = new List(); + List memberCarrys = new List(); + if (carry.carrystd_id == WmsWareHouseConst.CARRY_ZYXCSTD_ID || + carry.carrystd_id == WmsWareHouseConst.CARRY_ZYLJSTD_ID) { - throw Oops.Bah($"未找到载具编号{carry.carry_code}的子载具"); + carryCodes = await db.Queryable().Where(x=>x.carry_id==carry.id).ToListAsync(); } - - memberCarrys = await db.Queryable().Where(x=>memberCarryIds.Contains(x.id)).ToListAsync(); - carryCodes = await db.Queryable().Where(x=>memberCarryIds.Contains(x.carry_id)).ToListAsync(); - clearCarryIds.AddRange(memberCarryIds); - } - - if (carryCodes != null && carryCodes.Count > 0) - { - Log.Information($"签收载具信息{JsonConvert.SerializeObject(carryCodes)}"); - foreach (var item in carryCodes) + else { - // 自动签收不校验 - // PrdMaterialReceiptD existD = await db.Queryable() - // .LeftJoin((x, y) => x.material_receipt_id == y.id) - // .Where((x, y) => x.carry_id == carry.id && y.mo_task_id == moTask.id && x.is_all_feeding == 0) - // .Select((x,y)=>x) - // .FirstAsync(); - // if (existD != null) - // { - // throw new Exception($"{moTask.mo_task_code}任务单存在未投完的签收物料,物料签收子表id{existD.id}"); - // } - PrdMaterialReceiptD detail = new PrdMaterialReceiptD + //CarryQueryOutput carryQueryOutput = await _wmsCarryQueryService.MESCarryQueryResult(new MESCarryQueryResultInput(){carry_code = carry.carry_code}); + memberCarryIds = await db.Queryable().Where(x=>x.carry_id==carry.id).Select(x=>x.membercarry_id).ToListAsync(); + if (memberCarryIds == null || memberCarryIds.IsEmpty()) { - material_receipt_id = prdMaterialReceiptH.id, - material_id = item.material_id, - num = item.codeqty, - batch = item.code_batch, - unit_id = item.unit_id, - carry_id = carry.id, - barcode = item.barcode, - is_all_feeding = 1, - member_carry_id = item.carry_id, - member_carry_code = memberCarrys.Find(x => x.id == item.carry_id)?.carry_code ?? "", - feeding_num = item.codeqty, - supplier_id = item.supplier_id, - instock_time = item.instock_time, - check_conclusion = item.check_conclusion + "", - create_time = DateTime.Now, - }; - - insertDList.Add(detail); - - decimal num = item.codeqty; - insertFDList.Add(new PrdFeedingD + throw Oops.Bah($"未找到载具编号{carry.carry_code}的子载具"); + } + + memberCarrys = await db.Queryable().Where(x=>memberCarryIds.Contains(x.id)).ToListAsync(); + carryCodes = await db.Queryable().Where(x=>memberCarryIds.Contains(x.carry_id)).ToListAsync(); + clearCarryIds.AddRange(memberCarryIds); + } + + if (carryCodes != null && carryCodes.Count > 0) + { + Log.Information($"签收载具信息{JsonConvert.SerializeObject(carryCodes)}"); + foreach (var item in carryCodes) { - feeding_id = prdFeedingH.id, - material_receipt_detail_id = detail?.id, - material_id = item.material_id, - num = num, - batch = item.code_batch, - unit_id = item.unit_id, - carry_id = carry.id, - status = "0", - use_num = 0, - }); + // 自动签收不校验 + // PrdMaterialReceiptD existD = await db.Queryable() + // .LeftJoin((x, y) => x.material_receipt_id == y.id) + // .Where((x, y) => x.carry_id == carry.id && y.mo_task_id == moTask.id && x.is_all_feeding == 0) + // .Select((x,y)=>x) + // .FirstAsync(); + // if (existD != null) + // { + // throw new Exception($"{moTask.mo_task_code}任务单存在未投完的签收物料,物料签收子表id{existD.id}"); + // } + PrdMaterialReceiptD detail = new PrdMaterialReceiptD + { + material_receipt_id = prdMaterialReceiptH.id, + material_id = item.material_id, + num = item.codeqty, + batch = item.code_batch, + unit_id = item.unit_id, + carry_id = carry.id, + barcode = item.barcode, + is_all_feeding = 1, + member_carry_id = item.carry_id, + member_carry_code = memberCarrys.Find(x => x.id == item.carry_id)?.carry_code ?? "", + feeding_num = item.codeqty, + supplier_id = item.supplier_id, + instock_time = item.instock_time, + check_conclusion = item.check_conclusion + "", + create_time = DateTime.Now, + }; + insertDList.Add(detail); + + decimal num = item.codeqty; + insertFDList.Add(new PrdFeedingD + { + feeding_id = prdFeedingH.id, + material_receipt_detail_id = detail?.id, + material_id = item.material_id, + num = num, + batch = item.code_batch, + unit_id = item.unit_id, + carry_id = carry.id, + status = "0", + use_num = 0, + }); + + if (carry.carrystd_id == WmsWareHouseConst.CARRY_ZYXCSTD_ID || carry.carrystd_id == WmsWareHouseConst.CARRY_ZYLJSTD_ID) + { + } + else + { + Result result = await _wmsCarryUnbindService.CarryCodeUnbindWithoutTran(new CarryCodeUnbindInput() + { + carry_id = detail.member_carry_id + },db); + + + if (result.code != HttpStatusCode.OK) + { + throw Oops.Bah(result.msg); + } + } + + } + if (carry.carrystd_id == WmsWareHouseConst.CARRY_ZYXCSTD_ID || carry.carrystd_id == WmsWareHouseConst.CARRY_ZYLJSTD_ID) { - } - else - { - Tnb.WarehouseMgr.Entities.Dto.Outputs.Result result = await _wmsCarryUnbindService.CarryCodeUnbindWithoutTran(new CarryCodeUnbindInput() + Result result = await _wmsCarryUnbindService.CarryCodeUnbindWithoutTran(new CarryCodeUnbindInput() { - carry_id = detail.member_carry_id + carry_id = carry.id },db); - if (result.code != JNPF.Common.Enums.HttpStatusCode.OK) + if (result.code != HttpStatusCode.OK) { throw Oops.Bah(result.msg); } } - } - - if (carry.carrystd_id == WmsWareHouseConst.CARRY_ZYXCSTD_ID || carry.carrystd_id == WmsWareHouseConst.CARRY_ZYLJSTD_ID) + else { - Tnb.WarehouseMgr.Entities.Dto.Outputs.Result result = await _wmsCarryUnbindService.CarryCodeUnbindWithoutTran(new CarryCodeUnbindInput() + throw Oops.Bah($"{carry.carry_code}未找到物料明细"); + } + + + if (carry.carrystd_id==WmsWareHouseConst.CARRY_LXSTD_ID || carry.carrystd_id==WmsWareHouseConst.CARRY_LJSTD_ID) + { + Result result2 = await _wmsCarryUnbindService.CarryUnbindWithoutTran(new CarryBindInput() { - carry_id = carry.id + org = prdFeedingH.org_id, + create_id = prdFeedingH.create_id, + carry_id = prdMaterialReceiptH.carry_id, + carry_code = prdMaterialReceiptH.carry_code, + carrystd_id = carry.carrystd_id, + membercarry_code = "", + membercarry_id = "", },db); - - - if (result.code != JNPF.Common.Enums.HttpStatusCode.OK) - { - throw Oops.Bah(result.msg); - } - } - } - else - { - throw Oops.Bah($"{carry.carry_code}未找到物料明细"); - } - - - if (carry.carrystd_id==WmsWareHouseConst.CARRY_LXSTD_ID || carry.carrystd_id==WmsWareHouseConst.CARRY_LJSTD_ID) - { - Tnb.WarehouseMgr.Entities.Dto.Outputs.Result result2 = await _wmsCarryUnbindService.CarryUnbindWithoutTran(new CarryBindInput() - { - org = prdFeedingH.org_id, - create_id = prdFeedingH.create_id, - carry_id = prdMaterialReceiptH.carry_id, - carry_code = prdMaterialReceiptH.carry_code, - carrystd_id = carry.carrystd_id, - membercarry_code = "", - membercarry_id = "", - },db); - if (result2.code != JNPF.Common.Enums.HttpStatusCode.OK) - { - throw Oops.Bah(result2.msg); - } + if (result2.code != HttpStatusCode.OK) + { + throw Oops.Bah(result2.msg); + } - } + } - } + } - Log.Information($"清空载具信息:{JsonConvert.SerializeObject(clearCarryIds)}"); - string carryStatus = ((int)EnumCarryStatus.空闲).ToString(); - string isCheck = ((int)EnumCheckConclusion.待检).ToString(); - foreach(string carryId in clearCarryIds) - { - await db.Updateable() - .SetColumns(x => x.carry_status == carryStatus) - .SetColumns(x => x.is_check == isCheck) - .Where(x => x.id==carryId) - .ExecuteCommandAsync(); - Log.Information($"更新载具{carryId}状态为空闲{carryStatus},检验为{isCheck}成功"); - } + Log.Information($"清空载具信息:{JsonConvert.SerializeObject(clearCarryIds)}"); + string carryStatus = ((int)EnumCarryStatus.空闲).ToString(); + string isCheck = ((int)EnumCheckConclusion.待检).ToString(); + foreach(string carryId in clearCarryIds) + { + string sql = $"update wms_carry_h set carry_status='0',is_check='8' where id='{carryId}';"; + Log.Information($"自动签收更新载具sql:{sql}"); + await db.Ado.ExecuteCommandAsync(sql); + Log.Information($"用SQL更新载具{carryId}状态为空闲{carryStatus},检验为{isCheck}成功"); + await db.Updateable() + .SetColumns(x => x.carry_status == carryStatus) + .SetColumns(x => x.is_check == isCheck) + .Where(x => x.id==carryId) + .ExecuteCommandAsync(); + Log.Information($"更新载具{carryId}状态为空闲{carryStatus},检验为{isCheck}成功"); + } - if (insertHList.Count <= 0 || insertDList.Count <= 0) - { - throw Oops.Bah(ErrorCode.COM1000); + if (insertHList.Count <= 0 || insertDList.Count <= 0) + { + throw Oops.Bah(ErrorCode.COM1000); + } + + int row1 = await db.Insertable(insertHList).ExecuteCommandAsync(); + int row2 = await db.Insertable(insertDList).ExecuteCommandAsync(); + int row3 = await db.Insertable(insertFHList).ExecuteCommandAsync(); + int row4 = await db.Insertable(insertFDList).ExecuteCommandAsync(); + + + if (row1 <= 0 || row2 <= 0 || row3<=0 || row4<=0) + { + throw Oops.Bah(ErrorCode.COM1000); + } } - - int row1 = await db.Insertable(insertHList).ExecuteCommandAsync(); - int row2 = await db.Insertable(insertDList).ExecuteCommandAsync(); - int row3 = await db.Insertable(insertFHList).ExecuteCommandAsync(); - int row4 = await db.Insertable(insertFDList).ExecuteCommandAsync(); - - - if (row1 <= 0 || row2 <= 0 || row3<=0 || row4<=0) + catch (Exception e) { - throw Oops.Bah(ErrorCode.COM1000); + Logger.Error("自动签收投料失败:"+e.Message,e); + throw Oops.Bah(e.Message,e); } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryUnbindService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryUnbindService.cs index d66a19a0..65b6ba49 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryUnbindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsCarryUnbindService.cs @@ -1,4 +1,4 @@ -using JNPF.Common.Dtos.VisualDev; +using JNPF.Common.Dtos.VisualDev; using SqlSugar; using Tnb.WarehouseMgr.Entities.Dto.Inputs; using Tnb.WarehouseMgr.Entities.Dto.Outputs; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs index 08dca023..b5bbe325 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs @@ -1,4 +1,4 @@ -using JNPF.Common.Core.Manager; +using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Security; @@ -332,7 +332,15 @@ namespace Tnb.WarehouseMgr //VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYUNBIND_ID, true); //await _runService.Create(templateEntity, visualDevModelCrInput); - if (tranFlag) await db.Ado.BeginTranAsync(); + if (tranFlag) + { + Logger.LogInformation($"【CarryUnbindWithoutTran】开始事务"); + await db.Ado.BeginTranAsync(); + } + else + { + Logger.LogInformation($"【CarryCodeUnbindWithoutTran】不使用事务"); + } int row = await db.Deleteable().Where(r => r.carry_id == input.carry_id).ExecuteCommandAsync(); //isOk = row > 0; @@ -341,9 +349,13 @@ namespace Tnb.WarehouseMgr // throw new Exception($"料架id{input.carry_id}载具解绑失败"); //} Logger.LogInformation($"【CarryUnbindWithoutTran】料架{carry.carry_code}已解绑,解绑条数{row}"); - - if (tranFlag) await db.Ado.CommitTranAsync(); + + if (tranFlag) + { + Logger.LogInformation($"【CarryUnbindWithoutTran】提交事务"); + await db.Ado.CommitTranAsync(); + } } else { @@ -357,7 +369,11 @@ namespace Tnb.WarehouseMgr { Logger.LogError($"【CarryUnbindWithoutTran】 {ex.Message}"); Logger.LogError($"【CarryUnbindWithoutTran】 {ex.StackTrace}"); - if (tranFlag) await db.Ado.RollbackTranAsync(); + if (tranFlag) + { + Logger.LogInformation($"【CarryUnbindWithoutTran】回滚事务"); + await db.Ado.RollbackTranAsync(); + } throw Oops.Bah(ex.Message); } @@ -391,9 +407,21 @@ namespace Tnb.WarehouseMgr WmsCarryH? carry = await db.Queryable().SingleAsync(it => it.id == input.carry_id); if (carry != null) { - if (tranFlag) await db.Ado.BeginTranAsync(); + if (tranFlag) + { + Logger.LogInformation($"【CarryCodeUnbindWithoutTran】开始事务"); + await db.Ado.BeginTranAsync(); + } + else + { + Logger.LogInformation($"【CarryCodeUnbindWithoutTran】不使用事务"); + } int row = await db.Deleteable().Where(r => r.carry_id == input.carry_id).ExecuteCommandAsync(); - if (tranFlag) await db.Ado.CommitTranAsync(); + if (tranFlag) + { + Logger.LogInformation($"【CarryCodeUnbindWithoutTran】提交事务"); + await db.Ado.CommitTranAsync(); + } isOk = row > 0; Logger.LogInformation($"【CarryCodeUnbindWithoutTran】载具{carry.carry_code}已解绑,解绑条数{row}"); @@ -414,7 +442,11 @@ namespace Tnb.WarehouseMgr { Logger.LogError($"【CarryCodeUnbindWithoutTran】 {ex.Message}"); Logger.LogError($"【CarryCodeUnbindWithoutTran】 {ex.StackTrace}"); - if (tranFlag) await db.Ado.RollbackTranAsync(); + if (tranFlag) + { + Logger.LogInformation($"【CarryCodeUnbindWithoutTran】回滚事务"); + await db.Ado.RollbackTranAsync(); + } throw Oops.Bah(ex.Message); } return await ToApiResult(JNPF.Common.Enums.HttpStatusCode.OK, "成功");