1
z8018
2025-06-10 e46aa927d231af83724683c7286d9db503e24cf7
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -33,17 +33,127 @@
{
    public interface ITaskService : IService<Dt_Task>
    {
        /// <summary>
        /// æŸ¥è¯¢æŒ‡å®šé—¨æž¶è®¾å¤‡æœªæ‰§è¡Œçš„任务
        /// </summary>
        /// <param name="gantryDeviceNo">门架设备编号</param>
        /// <returns>未执行的任务数据,若不存在则返回null</returns>
        Dt_Task? QueryAGantryUnExecuteTask(string gantryDeviceNo);
        /// <summary>
        /// æ‰§è¡Œè®¢å•块放置测试,根据订单行ID获取订单明细并计算放置位置
        /// </summary>
        /// <param name="orderRowId">订单行ID</param>
        /// <returns>包含放置块信息的Web响应内容。成功时返回放置块列表,失败时返回错误信息</returns>
        /// <remarks>
        /// 1. é€šè¿‡è®¢å•行ID查询订单明细数据 <br/>
        /// 2. å¯¹æ¯ä¸ªæœ‰æ•ˆè®¢å•明细计算合适的放置位置 <br/>
        /// 3. åˆ›å»ºå®¹å™¨é¡¹å’Œä»»åŠ¡è®°å½• <br/>
        /// 4. é€šè¿‡WebSocket发布放置位置信息 <br/>
        /// 5. è¿”回所有成功放置的块信息
        /// </remarks>
        WebResponseContent PlaceBlockTest(int orderRowId);
        /// <summary>
        /// åˆ›å»ºä»»åŠ¡å¹¶è®¡ç®—ç‰©å“æ”¾ç½®ä½ç½®
        /// </summary>
        /// <param name="takePosition">取货位置编码</param>
        /// <param name="putPosition">放货位置编码</param>
        /// <param name="deviceCode">设备编码</param>
        /// <param name="length">物品长度</param>
        /// <param name="width">物品宽度</param>
        /// <param name="height">物品高度</param>
        /// <returns>包含操作结果的Web响应内容</returns>
        /// <remarks>
        /// 1. éªŒè¯å–è´§/放货位置是否存在 <br/>
        /// 2. è®¡ç®—物品在容器中的最佳放置位置 <br/>
        /// 3. åˆ›å»ºå®¹å™¨ç‰©å“è®°å½•和任务记录 <br/>
        /// 4. é€šè¿‡WebSocket通知客户端
        /// </remarks>
        WebResponseContent CreateTask(string takePosition, string putPosition, string deviceCode, int length, int width, int height);
        /// <summary>
        /// æ ¹æ®è®¢å•信息生成任务
        /// </summary>
        /// <param name="orderInfo">订单信息</param>
        /// <returns>包含三个值的元组: <br/>
        /// Item1 - æ“ä½œæ˜¯å¦æˆåŠŸ (bool) <br/>
        /// Item2 - ç”Ÿæˆçš„任务对象 (Dt_Task),失败时为null <br/>
        /// Item3 - é”™è¯¯æ¶ˆæ¯ (string),成功时为空字符串
        /// </returns>
        /// <remarks>
        /// è¯¥æ–¹æ³•会: <br/>
        /// 1. æ ¹æ®è®¢å•尺寸获取合适的货位 <br/>
        /// 2. åˆ›å»ºå®¹å™¨é¡¹å’Œä»»åŠ¡è®°å½• <br/>
        /// 3. æ›´æ–°ç›¸å…³å®¹å™¨çŠ¶æ€ <br/>
        /// 4. åœ¨äº‹åŠ¡ä¸­æ‰§è¡Œæ‰€æœ‰æ•°æ®åº“æ“ä½œ
        /// </remarks>
        (bool, Dt_Task?, string) GenerateTask(OrderInfo orderInfo);
        /// <summary>
        /// é‡æ–°ç”Ÿæˆä»»åŠ¡
        /// </summary>
        /// <param name="task">原始任务对象</param>
        /// <param name="stationCode">工作站编码</param>
        /// <returns>
        /// åŒ…含三个值的元组: <br/>
        /// 1. bool - æ“ä½œæ˜¯å¦æˆåŠŸ <br/>
        /// 2. Dt_Task - æ›´æ–°åŽçš„任务对象(失败时为null) <br/>
        /// 3. string - é”™è¯¯æ¶ˆæ¯ï¼ˆæˆåŠŸæ—¶ä¸ºç©ºå­—ç¬¦ä¸²ï¼‰
        /// </returns>
        /// <remarks>
        /// è¯¥æ–¹æ³•用于重新生成任务信息,包括: <br/>
        /// 1. è§£æžæ¿å­å°ºå¯¸ä¿¡æ¯ <br/>
        /// 2. éªŒè¯å–è´§/放货位置 <br/>
        /// 3. è®¡ç®—物品放置位置 <br/>
        /// 4. æ›´æ–°ä»»åŠ¡çŠ¶æ€å’Œä½ç½®ä¿¡æ¯ <br/>
        /// 5. åœ¨äº‹åŠ¡ä¸­æ›´æ–°æ•°æ®åº“è®°å½•
        /// </remarks>
        (bool, Dt_Task?, string) RegenerateTask(Dt_Task task, string stationCode);
        /// <summary>
        /// ç”Ÿæˆå¼‚常任务
        /// </summary>
        /// <param name="orderInfo">订单信息</param>
        /// <returns>元组包含三个值: <br/>
        /// Item1 - æ“ä½œæ˜¯å¦æˆåŠŸï¼ˆbool) <br/>
        /// Item2 - ç”Ÿæˆçš„任务对象(Dt_Task),失败时为null <br/>
        /// Item3 - é”™è¯¯æ¶ˆæ¯ï¼ˆstring),成功时为空字符串</returns>
        /// <remarks>
        /// è¯¥æ–¹æ³•会根据订单信息生成一个异常处理任务,包括: <br/>
        /// 1. èŽ·å–å¼‚å¸¸ä½ç½® <br/>
        /// 2. éªŒè¯æ”¾è´§/取货位置 <br/>
        /// 3. åˆ›å»ºå®¹å™¨é¡¹å’Œä»»åŠ¡è®°å½• <br/>
        /// 4. æäº¤äº‹åŠ¡
        /// </remarks>
        (bool, Dt_Task?, string) GenerateExceptionTask(OrderInfo orderInfo);
        /// <summary>
        /// æ ¹æ®è®¾å¤‡ç¼–号获取取货位置
        /// </summary>
        /// <param name="deviceCode">设备编号</param>
        /// <returns>符合条件的容器对象,若找不到则返回null</returns>
        /// <remarks>
        /// 1. é¦–先查询指定设备下所有可用的取货容器,并按ContainerSort升序排序 <br/>
        /// 2. æŸ¥æ‰¾è¯¥è®¾å¤‡æœ€è¿‘的任务记录 <br/>
        /// 3. å¦‚果找到任务记录,则根据任务源地址匹配容器,返回下一个容器(若已是最后一个则返回第一个) <br/>
        /// 4. å¦‚果出现异常或未找到匹配项,则返回第一个可用容器
        /// </remarks>
        Dt_Container? GetTakePosition(string deviceCode);
        /// <summary>
        /// ä»»åŠ¡å®Œæˆå¤„ç†æ–¹æ³•
        /// </summary>
        /// <param name="task">任务实体</param>
        /// <returns>Web响应内容</returns>
        /// <remarks>
        /// 1. æ›´æ–°ä»»åŠ¡çŠ¶æ€ä¸º"龙门架完成" <br/>
        /// 2. æ›´æ–°ç›¸å…³è®¢å•详情状态为"码垛成功" <br/>
        /// 3. æ›´æ–°è®¢å•行中的托盘数量 <br/>
        /// 4. æ ¹æ®ä»»åŠ¡å®Œæˆæƒ…å†µå‘é€WebSocket通知 <br/>
        /// 5. è®°å½•操作日志并提交事务 <br/>
        /// 6. å¼‚常时回滚事务并返回错误信息
        /// </remarks>
        WebResponseContent TaskComplete(Dt_Task task);
    }
}