53 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|