Files
tnb.server/WarehouseMgr/Tnb.WarehouseMgr/TaskManagerDelBase.cs

53 lines
2.1 KiB
C#

using JNPF.Common.Contracts;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Entity;
namespace Tnb.WarehouseMgr
{
public class TaskManagerDelBase<T> : BaseWareHouseService where T : BaseEntity<string>, 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<T>().SingleAsync(it => it.id == id);
if (preTask != null)
{
string[] locIds = new[] { preTask.startlocation_id, preTask.endlocation_id };
List<BasLocation> locs = await _db.Queryable<BasLocation>().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<WmsCarryH>().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<WmsElevatorH>().SetColumns(it => it.task_nums == it.task_nums - 1).Where(it => it.area_code == preTask.area_code).ExecuteCommandAsync();
}
await _db.Ado.CommitTranAsync();
}
catch (Exception)
{
await _db.Ado.RollbackTranAsync();
throw;
}
}
}
}