取消逻辑调整 原材料看板调整

This commit is contained in:
2024-07-31 14:24:44 +08:00
parent 9221113607
commit b9ae51f015
8 changed files with 641 additions and 132 deletions

View File

@@ -129,7 +129,7 @@ namespace Tnb.WarehouseMgr
throw;
}
/*var whereExp = Expressionable.Create<WmsElevatorH, WmsElevatorD, WmsDistaskH>()
.And((a, b, c) => c.bill_code == input.taskCode)
.And((a, b, c) => a.enabled == 1)
@@ -317,7 +317,7 @@ namespace Tnb.WarehouseMgr
}
try
{
@@ -455,163 +455,198 @@ namespace Tnb.WarehouseMgr
case "CANCELLED":
{
Logger.Information("开始处理WCS上传的取消任务");
int row = await _db.Updateable<WmsDistaskH>().SetColumns(r => new WmsDistaskH
try
{
agreement = "WCS上传取消(CANCELLED)信号",
status = WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID
}).Where(P => P.bill_code.Contains(input.taskChainCode)).ExecuteCommandAsync();
if (row > 0)
{
List<WmsDistaskH> wmsDistaskHs = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code.Contains(input.taskChainCode)).ToList();
List<string> wmsDistaskHCodes = wmsDistaskHs.Select(r => r.pretask_code).ToList();
await _db.Ado.BeginTranAsync();
foreach (WmsDistaskH wmsDistaskH in wmsDistaskHs)
int row = await _db.Updateable<WmsDistaskH>().SetColumns(r => new WmsDistaskH
{
if (wmsDistaskH.startlocation_code.Contains("DT") || wmsDistaskH.endlocation_code.Contains("DT"))
{
//WmsElevatorUnlockInput wmsElevatorUnlockInput = new ();
//wmsElevatorUnlockInput.elevator_id = wmsDistaskH.device_id;
//await WmsElevatorUnlock(wmsElevatorUnlockInput);
//Logger.Information($"WCS取消任务{wmsDistaskH.bill_code},自动解占用电梯{wmsDistaskH.device_id}");
}
else
{
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
agreement = "WCS上传取消(CANCELLED)信号",
status = WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID
}).Where(P => P.bill_code.Contains(input.taskChainCode)).ExecuteCommandAsync();
if (row > 0)
{
List<WmsDistaskH> wmsDistaskHs = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code.Contains(input.taskChainCode)).ToList();
List<string> wmsDistaskHCodes = wmsDistaskHs.Select(r => r.pretask_code).ToList();
if (wmsDistaskH.act_start_date == null)
foreach (WmsDistaskH wmsDistaskH in wmsDistaskHs)
{
if (wmsDistaskH.startlocation_code.Contains("DT") || wmsDistaskH.endlocation_code.Contains("DT"))
{
int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
if (unlockStartRow > 0)
//WmsElevatorUnlockInput wmsElevatorUnlockInput = new ();
//wmsElevatorUnlockInput.elevator_id = wmsDistaskH.device_id;
//await WmsElevatorUnlock(wmsElevatorUnlockInput);
//Logger.Information($"WCS取消任务{wmsDistaskH.bill_code},自动解占用电梯{wmsDistaskH.device_id}");
}
else
{
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
if (wmsDistaskH.act_start_date == null)
{
Logger.Information($"成功解锁起点库位{wmsDistaskH.startlocation_code}");
int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
if (unlockStartRow > 0)
{
Logger.Information($"成功解锁起点库位{wmsDistaskH.startlocation_code}");
}
else
{
Logger.Information($"未成功解锁起点库位{wmsDistaskH.startlocation_code}");
}
}
int unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.endlocation_code).ExecuteCommandAsync();
if (unlockEndRow > 0)
{
Logger.Information($"成功解锁终点库位{wmsDistaskH.endlocation_code}");
}
else
{
Logger.Information($"未成功解锁点库位{wmsDistaskH.startlocation_code}");
Logger.Information($"未成功解锁点库位{wmsDistaskH.endlocation_code}");
}
}
int unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.endlocation_code).ExecuteCommandAsync();
if (unlockEndRow > 0)
{
Logger.Information($"成功解锁终点库位{wmsDistaskH.endlocation_code}");
}
else
{
Logger.Information($"未成功解锁终点库位{wmsDistaskH.endlocation_code}");
}
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == wmsDistaskH.carry_code).FirstAsync();
wmsCarryH.is_lock = 0;
if (wmsDistaskH.startlocation_code.Contains("BGWRKYCL0"))
{
wmsCarryH.location_id = WmsWareHouseConst.LOCATION_YCLBGWDRK;
wmsCarryH.location_code = "YCLBGWDRK";
}
int unlockCarryRow = await _db.Updateable<WmsCarryH>().SetColumns(r => new WmsCarryH
{
is_lock = 0,
location_id = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? WmsWareHouseConst.LOCATION_YCLBGWDRK : r.location_id,
location_code = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? "YCLBGWDRK" : r.location_code
}).Where(r => r.carry_code == wmsDistaskH.carry_code).ExecuteCommandAsync();
if (unlockCarryRow > 0)
{
Logger.Information($"成功解锁载具{wmsDistaskH.carry_code}");
}
else
{
Logger.Information($"未成功解锁载具{wmsDistaskH.carry_code}");
}
int unlockCarryRow = await _db.Updateable(wmsCarryH).ExecuteCommandAsync();
if (unlockCarryRow > 0)
{
Logger.Information($"成功解锁载具{wmsDistaskH.carry_code}");
}
else
{
Logger.Information($"未成功解锁载具{wmsDistaskH.carry_code}");
}
}
}
await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
note = "WCS上传取消(CANCELLED)信号",
status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID
}).Where(P => wmsDistaskHCodes.Contains(P.bill_code)).ExecuteCommandAsync();
Logger.Information("成功处理WCS上传的取消任务");
}
else
{
Logger.Information("未处理WCS上传的取消任务");
}
await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
note = "WCS上传取消(CANCELLED)信号",
status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID
}).Where(P => wmsDistaskHCodes.Contains(P.bill_code)).ExecuteCommandAsync();
Logger.Information("成功处理WCS上传的取消任务");
await _db.Ado.CommitTranAsync();
}
else
catch (Exception ex)
{
Logger.Information("未处理WCS上传的取消任务");
Logger.Error("任务取消后处理发生异常", ex);
await _db.Ado.RollbackTranAsync();
throw;
}
break;
}
case "SUCCEED": break;
case "FAILURE":
{
Logger.Information("开始处理WCS上传的失败任务");
int row = await _db.Updateable<WmsDistaskH>().SetColumns(r => new WmsDistaskH
{
agreement = "WCS上传失败(FAILURE)信号",
status = WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID
}).Where(P => P.bill_code.Contains(input.taskChainCode)).ExecuteCommandAsync();
if (row > 0)
{
List<string> wmsDistaskHCodes = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code.Contains(input.taskChainCode)).Select(r => r.pretask_code).ToList();
List<WmsDistaskH> wmsDistaskHs = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code.Contains(input.taskChainCode)).ToList();
foreach (WmsDistaskH wmsDistaskH in wmsDistaskHs)
{
if (wmsDistaskH.startlocation_code.Contains("DT") || wmsDistaskH.endlocation_code.Contains("DT"))
{
//WmsElevatorUnlockInput wmsElevatorUnlockInput = new ();
//wmsElevatorUnlockInput.elevator_id = wmsDistaskH.device_id;
//await WmsElevatorUnlock(wmsElevatorUnlockInput);
//Logger.Information($"WCS取消任务{wmsDistaskH.bill_code},自动解占用电梯{wmsDistaskH.device_id}");
}
else
{
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
if (wmsDistaskH.act_start_date == null)
try
{
await _db.Ado.BeginTranAsync();
int row = await _db.Updateable<WmsDistaskH>().SetColumns(r => new WmsDistaskH
{
agreement = "WCS上传失败(FAILURE)信号",
status = WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID
}).Where(P => P.bill_code.Contains(input.taskChainCode)).ExecuteCommandAsync();
if (row > 0)
{
List<string> wmsDistaskHCodes = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code.Contains(input.taskChainCode)).Select(r => r.pretask_code).ToList();
List<WmsDistaskH> wmsDistaskHs = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code.Contains(input.taskChainCode)).ToList();
foreach (WmsDistaskH wmsDistaskH in wmsDistaskHs)
{
if (wmsDistaskH.startlocation_code.Contains("DT") || wmsDistaskH.endlocation_code.Contains("DT"))
{
int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
if (unlockStartRow > 0)
//WmsElevatorUnlockInput wmsElevatorUnlockInput = new ();
//wmsElevatorUnlockInput.elevator_id = wmsDistaskH.device_id;
//await WmsElevatorUnlock(wmsElevatorUnlockInput);
//Logger.Information($"WCS取消任务{wmsDistaskH.bill_code},自动解占用电梯{wmsDistaskH.device_id}");
}
else
{
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
if (wmsDistaskH.act_start_date == null)
{
Logger.Information($"成功起点解锁库位{wmsDistaskH.startlocation_code}");
int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
if (unlockStartRow > 0)
{
Logger.Information($"成功解锁起点库位{wmsDistaskH.startlocation_code}");
}
else
{
Logger.Information($"未成功解锁起点库位{wmsDistaskH.startlocation_code}");
}
}
int unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.endlocation_code).ExecuteCommandAsync();
if (unlockEndRow > 0)
{
Logger.Information($"成功解锁终点库位{wmsDistaskH.endlocation_code}");
}
else
{
Logger.Information($"未成功解锁点库位{wmsDistaskH.startlocation_code}");
Logger.Information($"未成功解锁点库位{wmsDistaskH.endlocation_code}");
}
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == wmsDistaskH.carry_code).FirstAsync();
wmsCarryH.is_lock = 0;
if (wmsDistaskH.startlocation_code.Contains("BGWRKYCL0"))
{
wmsCarryH.location_id = WmsWareHouseConst.LOCATION_YCLBGWDRK;
wmsCarryH.location_code = "YCLBGWDRK";
}
int unlockCarryRow = await _db.Updateable(wmsCarryH).ExecuteCommandAsync();
if (unlockCarryRow > 0)
{
Logger.Information($"成功解锁载具{wmsDistaskH.carry_code}");
}
else
{
Logger.Information($"未成功解锁载具{wmsDistaskH.carry_code}");
}
}
int unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.endlocation_code).ExecuteCommandAsync();
if (unlockEndRow > 0)
{
Logger.Information($"成功终点解锁库位{wmsDistaskH.endlocation_code}");
}
else
{
Logger.Information($"未成功解锁终点库位{wmsDistaskH.endlocation_code}");
}
int unlockCarryRow = await _db.Updateable<WmsCarryH>().SetColumns(r => new WmsCarryH
{
is_lock = 0,
location_id = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? WmsWareHouseConst.LOCATION_YCLBGWDRK : r.location_id,
location_code = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? "YCLBGWDRK" : r.location_code
}).Where(r => r.carry_code == wmsDistaskH.carry_code).ExecuteCommandAsync();
if (unlockCarryRow > 0)
{
Logger.Information($"成功解锁载具{wmsDistaskH.carry_code}");
}
else
{
Logger.Information($"未成功解锁载具{wmsDistaskH.carry_code}");
}
}
await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
note = "WCS上传失败(FAILURE)信号",
status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID
}).Where(P => wmsDistaskHCodes.Contains(P.bill_code)).ExecuteCommandAsync();
Logger.Information("成功处理WCS上传的失败任务");
}
else
{
Logger.Information("未处理WCS上传的失败任务");
}
await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
note = "WCS上传失败(FAILURE)信号",
status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID
}).Where(P => wmsDistaskHCodes.Contains(P.bill_code)).ExecuteCommandAsync();
Logger.Information("成功处理WCS上传的失败任务");
await _db.Ado.CommitTranAsync();
}
else
catch (Exception ex)
{
Logger.Information("未处理WCS上传的失败任务");
Logger.Error("任务失败后处理发生异常", ex);
await _db.Ado.RollbackTranAsync();
throw;
}
break;
}
case "FINISHED":
@@ -702,7 +737,7 @@ namespace Tnb.WarehouseMgr
{
await _db.Updateable<WmsElevatorH>().SetColumns(r => r.is_use == (int)EnumElevatorUseStatus.).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync();
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.;
// 根据disTask StartLocationId 起始库位关联电梯获取设备ID location_code.Continas("")
// 根据disTask StartLocationId 起始库位关联电梯获取设备ID location_code.Continas("")
var devName = s_elevatorMap[elevator.device_id]?.ToString();
Logger.Information($"【TaskCallback】 {devName.Match(@"\d+")}#梯,设备名称:{devName},开始进入关门流程 {devName} 变更为空闲 {s_eleUseStatusDic.GetHashCode()} {s_eleUseStatusDic[elevator.device_id]}");
int doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
@@ -722,7 +757,7 @@ namespace Tnb.WarehouseMgr
{
//Logger.Information($"【TaskCallback】电梯sourceName不符合条件 {input.sourceName}");
}
WmsElevatorUnexecute elevatorQueueItem = await _db.Queryable<WmsElevatorUnexecute>().FirstAsync(it => disTasks.Select(x => x.id).Contains(it.distask_id) && it.task_status == "执行中");
if (elevatorQueueItem != null)