diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 3ed12083..f9dc4c67 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -390,42 +390,56 @@ namespace Tnb.WarehouseMgr [HttpPost] public async Task TaskComplate(TaskCompleUpInput input) { - //更新任务执行表,单据状态为 完成 - await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); - //更新预任务申请表,单据状态为 已完成 - var disTasks = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).ToListAsync(); - if (disTasks?.Count > 0) + try { - var preTaskIds = disTasks.Select(x => x.pretask_id).ToList(); - await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); - } - //更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位 - if (disTasks?.Count > 0) - { - var multiList = disTasks.Select(it => (it.carry_id, it.endlocation_id)).ToList(); - for (int i = 0; i < multiList.Count; i++) + await _db.Ado.BeginTranAsync(); + + //更新任务执行表,单据状态为 完成 + await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); + //更新预任务申请表,单据状态为 已完成 + var disTasks = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).ToListAsync(); + if (disTasks?.Count > 0) { - await _db.Updateable().SetColumns(it => new WmsCarryH { is_lock = 0, location_id = multiList[i].endlocation_id }).Where(it => it.id == multiList[i].carry_id).ExecuteCommandAsync(); + var preTaskIds = disTasks.Select(x => x.pretask_id).ToList(); + await _db.Updateable().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync(); } - } - //更新库位信息,使用状态为 使用,锁定状态为未锁定 - if (disTasks?.Count > 0) - { - var destLocIds = disTasks.Select(it => it.endlocation_id).ToList(); - await _db.Updateable().SetColumns(it => new BasLocation { is_use = "1", is_lock = 0 }).Where(it => destLocIds.Contains(it.id)).ExecuteCommandAsync(); - } - //更新业务主表的单据状态 - if (disTasks?.Count > 0) - { - foreach (var dt in disTasks) + //更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位 + if (disTasks?.Count > 0) { - if (dt.is_chain == 0) + var multiList = disTasks.Select(it => (it.carry_id, it.endlocation_id)).ToList(); + for (int i = 0; i < multiList.Count; i++) + { + await _db.Updateable().SetColumns(it => new WmsCarryH { is_lock = 0, location_id = multiList[i].endlocation_id }).Where(it => it.id == multiList[i].carry_id).ExecuteCommandAsync(); + } + } + //更新库位信息,使用状态为 使用,锁定状态为未锁定 + if (disTasks?.Count > 0) + { + var destLocIds = disTasks.Select(it => it.endlocation_id).ToList(); + await _db.Updateable().SetColumns(it => new BasLocation { is_use = "1", is_lock = 0 }).Where(it => destLocIds.Contains(it.id)).ExecuteCommandAsync(); + } + //更新业务主表的单据状态 + if (disTasks?.Count > 0) + { + foreach (var dt in disTasks) { var upInput = new WareHouseUpInput { bizTypeId = dt.biz_type, requireId = dt.require_id }; - await base[upInput]; + if (dt.is_chain == 0) + { + await base[upInput]; + } + else if (dt.is_chain == 1 && dt.chain_type == "3") + { + await base[upInput]; + } } - } + + await _db.Ado.CommitTranAsync(); + } + catch (Exception) + { + await _db.Ado.RollbackTranAsync(); } }