For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 在出库任务选择时,检查是否有正在执行的输送线任务去往同一 TargetAddress,避免冲突。
Architecture: 在 ITaskService 新增 HasExecutingTaskToTarget 方法,在 TaskService 中实现数据库查询,在 StackerCraneTaskSelector.TrySelectOutboundTask 中调用。
Tech Stack: C# / .NET 8,SqlSugar ORM,Serilog
WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.csWCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.csWCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.csFiles:
- Modify: WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
public Dt_Task QueryByTaskNum(int taskNum); 之后,} 之前)添加方法声明/// <summary>
/// 查询是否有正在执行的去往指定 TargetAddress 的输送线任务
/// </summary>
/// <param name="roadway">巷道号</param>
/// <param name="targetAddress">目标地址</param>
/// <returns>存在返回 true</returns>
bool HasExecutingTaskToTarget(string roadway, string targetAddress);
git add WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
git commit -m "feat(ITaskService): 新增 HasExecutingTaskToTarget 接口方法
查询是否有正在执行的去往指定 TargetAddress 的输送线任务
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
Files:
- Modify: WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs
QueryExecutingConveyorLineTask 方法之后添加实现在 TaskService.Query.cs 文件中,找到 QueryExecutingConveyorLineTask 方法(约 line 28-34),在其之后(QueryCompletedConveyorLineTask 之前)插入:
/// <summary>
/// 查询是否有正在执行的去往指定 TargetAddress 的输送线任务
/// </summary>
/// <param name="roadway">巷道号</param>
/// <param name="targetAddress">目标地址</param>
/// <returns>存在返回 true</returns>
public bool HasExecutingTaskToTarget(string roadway, string targetAddress)
{
return BaseDal.QueryFirst(x =>
x.Roadway == roadway &&
x.TargetAddress == targetAddress &&
x.TaskStatus == (int)TaskOutStatusEnum.Line_OutExecuting,
TaskOrderBy) != null;
}
git add WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Query.cs
git commit -m "feat(TaskService): 实现 HasExecutingTaskToTarget 方法
查询 TaskStatus == Line_OutExecuting 且 Roadway 和 TargetAddress 匹配的任务
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
Files:
- Modify: WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
TrySelectOutboundTask 方法中,NextAddress 检查通过之后、WMS 移库检查之前插入当前代码(约 line 203-235):
// 判断 NextAddress 出库站台是否可用
if (!IsOutTaskStationAvailable(outboundTask))
{
return null;
}
// 站台检查通过后,调用 WMS 判断是否需要移库
在 // 站台检查通过后 注释之前插入:
// 检查是否有正在执行的输送线任务去往同一 TargetAddress
if (_taskService.HasExecutingTaskToTarget(outboundTask.Roadway, outboundTask.TargetAddress))
{
QuartzLogHelper.LogInfo(_logger, "TrySelectOutboundTask:TargetAddress: {TargetAddress} 已有正在执行的输送线任务,任务号: {TaskNum}",
$"TrySelectOutboundTask:TargetAddress: {outboundTask.TargetAddress} 已有正在执行的输送线任务", outboundTask.Roadway, outboundTask.TargetAddress, outboundTask.TaskNum);
return null;
}
git add WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
git commit -m "feat(StackerCraneTaskSelector): 出库任务选择时检查 TargetAddress 输送线任务冲突
站台可用后、WMS 移库检查前,查询是否有 Line_OutExecuting 状态的任务去同一 TargetAddress
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>"
cd D:/Git/ShanMeiXinNengYuan/Code
dotnet build WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj
预期:0 个错误