| | |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | /// <summary> |
| | | /// 输送线任务访问器:统一封装任务查询与 WMS 请求。 |
| | | /// 输送线任务过滤器 - 统一封装任务查询与 WMS 请求 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 核心职责: |
| | | /// 1. 查询输送线的待处理任务 |
| | | /// 2. 查询正在执行的任务 |
| | | /// 3. 向 WMS 请求新任务 |
| | | /// |
| | | /// 该类作为业务层与任务服务之间的中间层, |
| | | /// 封装了常用的任务查询操作,提供简洁的接口给调用方。 |
| | | /// </remarks> |
| | | public class ConveyorLineTaskFilter |
| | | { |
| | | /// <summary> |
| | | /// 任务服务实例 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 用于访问数据库中的任务数据,以及与 WMS 系统交互。 |
| | | /// </remarks> |
| | | private readonly ITaskService _taskService; |
| | | |
| | | /// <summary> |
| | | /// 构造函数 |
| | | /// </summary> |
| | | /// <param name="taskService">任务服务实例</param> |
| | | public ConveyorLineTaskFilter(ITaskService taskService) |
| | | { |
| | | _taskService = taskService; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询待处理的输送线任务 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 根据设备编码和子设备编码查询状态为"待处理"的任务。 |
| | | /// 用于当 PLC 请求任务时,WCS 向数据库查询可下发的任务。 |
| | | /// </remarks> |
| | | /// <param name="deviceCode">设备编码(主设备)</param> |
| | | /// <param name="childDeviceCode">子设备编码(位置编码)</param> |
| | | /// <returns>待处理的任务对象,如果没有则返回 null</returns> |
| | | public Dt_Task? QueryPendingTask(string deviceCode, string childDeviceCode) |
| | | { |
| | | return _taskService.QueryConveyorLineTask(deviceCode, childDeviceCode); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询正在执行的输送线任务 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 根据任务号和子设备编码查询状态为"执行中"的任务。 |
| | | /// 用于跟踪任务的执行进度。 |
| | | /// </remarks> |
| | | /// <param name="taskNo">任务号</param> |
| | | /// <param name="childDeviceCode">子设备编码</param> |
| | | /// <returns>执行中的任务对象,如果没有则返回 null</returns> |
| | | public Dt_Task? QueryExecutingTask(int taskNo, string childDeviceCode) |
| | | { |
| | | return _taskService.QueryExecutingConveyorLineTask(taskNo, childDeviceCode); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 向 WMS 请求新任务 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 当输送线有货物到达时,向 WMS 请求新的任务。 |
| | | /// WMS 会根据仓库情况和调度策略返回合适的任务。 |
| | | /// </remarks> |
| | | /// <param name="barcode">货物/托盘条码</param> |
| | | /// <param name="childDeviceCode">请求的子设备编码</param> |
| | | /// <returns>请求是否成功</returns> |
| | | public bool RequestWmsTask(string barcode, string childDeviceCode) |
| | | { |
| | | return _taskService.RequestWMSTask(barcode, childDeviceCode).Status; |