#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 命名空间:WIDESEAWCS_ITaskInfoService * 创建者:胡童庆 * 创建时间:2024/8/2 16:13:36 * 版本:V1.0.0 * 描述: * * ---------------------------------------------------------------- * 修改人: * 修改时间: * 版本:V1.0.1 * 修改说明: * *----------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using SqlSugar; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_DTO.BasicInfo; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_ITaskInfoService { public interface ITaskService : IService { /// /// 查询指定门架设备未执行的任务 /// /// 门架设备编号 /// 未执行的任务数据,若不存在则返回null Dt_Task? QueryAGantryUnExecuteTask(string gantryDeviceNo); /// /// 执行订单块放置测试,根据订单行ID获取订单明细并计算放置位置 /// /// 订单行ID /// 包含放置块信息的Web响应内容。成功时返回放置块列表,失败时返回错误信息 /// /// 1. 通过订单行ID查询订单明细数据
/// 2. 对每个有效订单明细计算合适的放置位置
/// 3. 创建容器项和任务记录
/// 4. 通过WebSocket发布放置位置信息
/// 5. 返回所有成功放置的块信息 ///
WebResponseContent PlaceBlockTest(int orderRowId); /// /// 创建任务并计算物品放置位置 /// /// 取货位置编码 /// 放货位置编码 /// 设备编码 /// 物品长度 /// 物品宽度 /// 物品高度 /// 包含操作结果的Web响应内容 /// /// 1. 验证取货/放货位置是否存在
/// 2. 计算物品在容器中的最佳放置位置
/// 3. 创建容器物品记录和任务记录
/// 4. 通过WebSocket通知客户端 ///
WebResponseContent CreateTask(string takePosition, string putPosition, string deviceCode, int length, int width, int height); /// /// 根据订单信息生成任务 /// /// 订单信息 /// 包含三个值的元组:
/// Item1 - 操作是否成功 (bool)
/// Item2 - 生成的任务对象 (Dt_Task),失败时为null
/// Item3 - 错误消息 (string),成功时为空字符串 ///
/// /// 该方法会:
/// 1. 根据订单尺寸获取合适的货位
/// 2. 创建容器项和任务记录
/// 3. 更新相关容器状态
/// 4. 在事务中执行所有数据库操作 ///
(bool, Dt_Task?, string) GenerateTask(OrderInfo orderInfo); /// /// 重新生成任务 /// /// 原始任务对象 /// 工作站编码 /// /// 包含三个值的元组:
/// 1. bool - 操作是否成功
/// 2. Dt_Task - 更新后的任务对象(失败时为null)
/// 3. string - 错误消息(成功时为空字符串) ///
/// /// 该方法用于重新生成任务信息,包括:
/// 1. 解析板子尺寸信息
/// 2. 验证取货/放货位置
/// 3. 计算物品放置位置
/// 4. 更新任务状态和位置信息
/// 5. 在事务中更新数据库记录 ///
(bool, Dt_Task?, string) RegenerateTask(Dt_Task task, string stationCode); /// /// 生成异常任务 /// /// 订单信息 /// 元组包含三个值:
/// Item1 - 操作是否成功(bool)
/// Item2 - 生成的任务对象(Dt_Task),失败时为null
/// Item3 - 错误消息(string),成功时为空字符串
/// /// 该方法会根据订单信息生成一个异常处理任务,包括:
/// 1. 获取异常位置
/// 2. 验证放货/取货位置
/// 3. 创建容器项和任务记录
/// 4. 提交事务 ///
(bool, Dt_Task?, string) GenerateExceptionTask(OrderInfo orderInfo); /// /// 根据设备编号获取取货位置 /// /// 设备编号 /// 符合条件的容器对象,若找不到则返回null /// /// 1. 首先查询指定设备下所有可用的取货容器,并按ContainerSort升序排序
/// 2. 查找该设备最近的任务记录
/// 3. 如果找到任务记录,则根据任务源地址匹配容器,返回下一个容器(若已是最后一个则返回第一个)
/// 4. 如果出现异常或未找到匹配项,则返回第一个可用容器 ///
Dt_Container? GetTakePosition(string deviceCode); /// /// 任务完成处理方法 /// /// 任务实体 /// Web响应内容 /// /// 1. 更新任务状态为"龙门架完成"
/// 2. 更新相关订单详情状态为"码垛成功"
/// 3. 更新订单行中的托盘数量
/// 4. 根据任务完成情况发送WebSocket通知
/// 5. 记录操作日志并提交事务
/// 6. 异常时回滚事务并返回错误信息 ///
WebResponseContent TaskComplete(Dt_Task task); } }