using JNPF.Common.Contracts; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.ProductionMgr.Entities; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Dto.Inputs; using Tnb.WarehouseMgr.Entities.Entity; namespace Tnb.WarehouseMgr { public class TaskManagerDelBase : BaseWareHouseService where T : BaseEntity, ITaskManagerDel, new() { private readonly ISqlSugarClient _db; public TaskManagerDelBase(ISqlSugarClient db) { _db = db; OverideFuncs.DeleteAsync = UnLockLocationAndCarry; } private async Task UnLockLocationAndCarry(string id) { try { await _db.Ado.BeginTranAsync(); T preTask = await _db.Queryable().SingleAsync(it => it.id == id); if (preTask != null) { string[] locIds = new[] { preTask.startlocation_id, preTask.endlocation_id }; List locs = await _db.Queryable().Where(it => locIds.Contains(it.id)).ToListAsync(); if (locs?.Count > 0) { locs.ForEach(it => { it.is_lock = 0; }); _ = await _db.Updateable(locs).UpdateColumns(it => it.is_lock).ExecuteCommandAsync(); } WmsCarryH carry = await _db.Queryable().SingleAsync(it => it.id == preTask.carry_id); if (carry != null) { carry.is_lock = 0; _ = await _db.Updateable(carry).UpdateColumns(it => it.is_lock).ExecuteCommandAsync(); } _ = await _db.Deleteable(preTask).ExecuteCommandAsync(); _ = await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums - 1).Where(it => it.area_code == preTask.area_code).ExecuteCommandAsync(); _ = await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => preTask.endlocation_id == it.id).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); } catch (Exception) { await _db.Ado.RollbackTranAsync(); throw; } } [HttpPost] public async Task BatchDelete(TaskBatchDelInput input) { return await _db.Deleteable().Where(it => input.ids.Contains(it.id)).ExecuteCommandHasChangeAsync(); } } }