取消逻辑调整 原材料看板调整
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user