三楼人工库逻辑等

This commit is contained in:
2024-08-30 14:06:11 +08:00
parent a2514a1354
commit ca4fec4d7d
21 changed files with 500 additions and 314 deletions

View File

@@ -432,7 +432,7 @@ namespace Tnb.WarehouseMgr
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
{
is_use = (int)EnumElevatorUseStatus.,
use_tasks = $"','{ r.use_tasks }".Trim(',')
use_tasks = $"','{r.use_tasks}".Trim(',')
}).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync();
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.;
Logger.Information($"【UnloadConfirm】 {devName}放货成功 状态变更为占用 {s_eleUseStatusDic.GetHashCode()} {s_eleUseStatusDic[elevator.device_id]}");
@@ -521,72 +521,76 @@ namespace Tnb.WarehouseMgr
Logger.Information($"【TaskChainCallBack】{wmsDistaskH.bill_code} 执行取消电梯任务时 任务数变更{eleRow}");
}
else
{
Logger.Information($"【TaskChainCallBack】{wmsDistaskH.bill_code} 执行取消电梯任务时 电梯id{e.device_id}找不到对应电梯资料");
}
}
else
{
Logger.Information($"【TaskChainCallBack】{wmsDistaskH.bill_code} 判断不是在执行取消电梯任务");
}
if (wmsDistaskH.startlocation_code.Contains("DT") || wmsDistaskH.endlocation_code.Contains("DT"))
if (wmsDistaskH.act_start_date == null)
{
//WmsElevatorUnlockInput wmsElevatorUnlockInput = new ();
//wmsElevatorUnlockInput.elevator_id = wmsDistaskH.device_id;
//await WmsElevatorUnlock(wmsElevatorUnlockInput);
//Logger.Information($"WCS取消任务{wmsDistaskH.bill_code},自动解占用电梯{wmsDistaskH.device_id}");
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.endlocation_code}");
#region
WmsPretaskH curWmsPretaskH = await _db.Queryable<WmsPretaskH>().Where(r => r.bill_code == wmsDistaskH.pretask_code).FirstAsync();
List<WmsPretaskH> nextWmsPretaskHs = _db.Queryable<WmsPretaskH>().Where(r => r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && r.carry_code == wmsDistaskH.carry_code && long.Parse(r.id) > long.Parse(curWmsPretaskH.id)).ToList();
Logger.Information($"即将取消{wmsDistaskH.bill_code}的后续预任务{nextWmsPretaskHs.Count}条");
foreach (WmsPretaskH wmsPretaskH in nextWmsPretaskHs)
{
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
if (wmsDistaskH.act_start_date == null)
int _row = await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
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}");
}
note = "WCS上传失败(CANCELLED)信号",
status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID
}).Where(P => P.bill_code == wmsPretaskH.bill_code).ExecuteCommandAsync();
if (_row > 0)
Logger.Information($"成功取消后续预任务{wmsPretaskH.bill_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).ExecuteCommandAsync();
if (unlockCarryRow > 0)
{
Logger.Information($"成功解锁载具{wmsDistaskH.carry_code}");
}
Logger.Information($"未成功取消后续预任务{wmsPretaskH.bill_code}");
int _unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsPretaskH.startlocation_code).ExecuteCommandAsync();
if (_unlockStartRow > 0)
Logger.Information($"成功解锁起点库位{wmsPretaskH.startlocation_code}");
else
{
Logger.Information($"未成功解锁载具{wmsDistaskH.carry_code}");
}
Logger.Information($"未成功解锁起点库位{wmsPretaskH.startlocation_code}");
int _unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsPretaskH.endlocation_code).ExecuteCommandAsync();
if (_unlockEndRow > 0)
Logger.Information($"成功解锁终点库位{wmsPretaskH.endlocation_code}");
else
Logger.Information($"未成功解锁终点库位{wmsPretaskH.endlocation_code}");
}
#endregion
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}");
}
// 任务链取消
await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
note = "WCS上传取消(CANCELLED)信号",
@@ -607,7 +611,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync();
throw;
}
break;
}
case "SUCCEED": break;
@@ -645,70 +649,74 @@ namespace Tnb.WarehouseMgr
Logger.Information($"【TaskChainCallBack】{wmsDistaskH.bill_code} 执行取消电梯任务时 任务数变更{eleRow}");
}
else
{
Logger.Information($"【TaskChainCallBack】{wmsDistaskH.bill_code} 执行电梯任务时 电梯id{e.device_id}找不到对应电梯资料");
}
Logger.Information($"【TaskChainCallBack】{wmsDistaskH.bill_code} 执行取消电梯任务时 电梯id{e.device_id}找不到对应电梯资料");
}
else
{
Logger.Information($"【TaskChainCallBack】{wmsDistaskH.bill_code} 判断不是在执行电梯任务");
if (wmsDistaskH.act_start_date == null)
{
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}");
}
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}");
}
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}");
#region
WmsPretaskH curWmsPretaskH = await _db.Queryable<WmsPretaskH>().Where(r => r.bill_code == wmsDistaskH.pretask_code).FirstAsync();
List<WmsPretaskH> nextWmsPretaskHs = _db.Queryable<WmsPretaskH>().Where(r => r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && r.carry_code == wmsDistaskH.carry_code && long.Parse(r.id) > long.Parse(curWmsPretaskH.id)).ToList();
Logger.Information($"即将取消{wmsDistaskH.bill_code}的后续预任务{nextWmsPretaskHs.Count}条");
foreach (WmsPretaskH wmsPretaskH in nextWmsPretaskHs)
{
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
if (wmsDistaskH.act_start_date == null)
int _row = await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
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}");
}
note = "WCS上传失败(FAILURE)信号",
status = WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID
}).Where(P => P.bill_code == wmsPretaskH.bill_code).ExecuteCommandAsync();
if (_row > 0)
Logger.Information($"成功取消后续预任务{wmsPretaskH.bill_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).ExecuteCommandAsync();
if (unlockCarryRow > 0)
{
Logger.Information($"成功解锁载具{wmsDistaskH.carry_code}");
}
Logger.Information($"未成功取消后续预任务{wmsPretaskH.bill_code}");
int _unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsPretaskH.startlocation_code).ExecuteCommandAsync();
if (_unlockStartRow > 0)
Logger.Information($"成功解锁起点库位{wmsPretaskH.startlocation_code}");
else
{
Logger.Information($"未成功解锁载具{wmsDistaskH.carry_code}");
}
Logger.Information($"未成功解锁起点库位{wmsPretaskH.startlocation_code}");
int _unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsPretaskH.endlocation_code).ExecuteCommandAsync();
if (_unlockEndRow > 0)
Logger.Information($"成功解锁终点库位{wmsPretaskH.endlocation_code}");
else
Logger.Information($"未成功解锁终点库位{wmsPretaskH.endlocation_code}");
}
#endregion
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}");
}
// 任务链取消
await _db.Updateable<WmsPretaskH>().SetColumns(r => new WmsPretaskH
{
note = "WCS上传失败(FAILURE)信号",
@@ -729,7 +737,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync();
throw;
}
break;
}
case "FINISHED":
@@ -771,6 +779,7 @@ namespace Tnb.WarehouseMgr
}
/// <summary>
/// 任务状态上报
/// </summary>
@@ -781,7 +790,7 @@ namespace Tnb.WarehouseMgr
{
var disTask = await _db.Queryable<WmsDistaskH>().FirstAsync(it => it.bill_code == input.taskCode);
Logger.Information($"【TaskCallback】 【接收】{input.taskCode} WCS信号 任务状态上报->接收参数:{JsonConvert.SerializeObject(input)}");
try
{