| #region << 版 本 注 释 >> | 
| /*---------------------------------------------------------------- | 
|  * 命名空间:WIDESEAWCS_ITaskInfoService | 
|  * 创建者:胡童庆 | 
|  * 创建时间:2024/8/2 16:13:36 | 
|  * 版本:V1.0.0 | 
|  * 描述: | 
|  * | 
|  * ---------------------------------------------------------------- | 
|  * 修改人: | 
|  * 修改时间: | 
|  * 版本:V1.0.1 | 
|  * 修改说明: | 
|  *  | 
|  *----------------------------------------------------------------*/ | 
| #endregion << 版 本 注 释 >> | 
|   | 
| using SqlSugar; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Diagnostics.CodeAnalysis; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
| using WIDESEA_DTO.Agv; | 
| using WIDESEAWCS_Common.APIEnum; | 
| using WIDESEAWCS_Common.TaskEnum; | 
| using WIDESEAWCS_Core; | 
| using WIDESEAWCS_Core.BaseServices; | 
| using WIDESEAWCS_Core.Enums; | 
| using WIDESEAWCS_DTO.Agv; | 
| using WIDESEAWCS_DTO.TaskInfo; | 
| using WIDESEAWCS_Model.Models; | 
|   | 
| namespace WIDESEAWCS_ITaskInfoService | 
| { | 
|     public interface ITaskService : IService<Dt_Task> | 
|     { | 
|         /// <summary> | 
|         /// 任务排序 | 
|         /// </summary> | 
|         public Dictionary<string, OrderByType> TaskOrderBy { get; set; } | 
|   | 
|         /// <summary> | 
|         /// 所有入库任务类型 | 
|         /// </summary> | 
|         public List<int> TaskInboundTypes { get; } | 
|   | 
|         /// <summary> | 
|         /// 所有出库任务类型 | 
|         /// </summary> | 
|         public List<int> TaskOutboundTypes { get; } | 
|   | 
|         /// <summary> | 
|         /// 接收WMS任务信息 | 
|         /// </summary> | 
|         /// <param name="taskDTOs">WMS任务对象集合</param> | 
|         /// <returns>返回处理结果</returns> | 
|         WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs); | 
|   | 
|         /// <summary> | 
|         /// 根据托盘号、起始地址向WMS请求任务 | 
|         /// </summary> | 
|         /// <param name="palletCode">托盘号</param> | 
|         /// <param name="sourceAddress">起始地址</param> | 
|         /// <returns></returns> | 
|         WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string materielBoxCode = ""); | 
|          | 
|         WebResponseContent RequestWMSZHTask(string agvTaskCode, string palletCode, string palletType,string materialLot); | 
|   | 
|         /// <summary> | 
|         /// 向WMS申请任务 | 
|         /// </summary> | 
|         /// <param name="palletCode">托盘号</param> | 
|         /// <param name="sourceAddress">起始地址</param> | 
|         /// <returns></returns> | 
|         WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress); | 
|   | 
|         /// <summary> | 
|         /// 向WMS申请任务 | 
|         /// </summary> | 
|         /// <param name="palletCode">托盘号</param> | 
|         /// <param name="sourceAddress">起始地址</param> | 
|         /// <param name="roadway">巷道号</param> | 
|         /// <returns></returns> | 
|         //WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string roadway); | 
|   | 
|         /// <summary> | 
|         ///  | 
|         /// </summary> | 
|         /// <param name="sourceAddress"></param> | 
|         /// <param name="palletCode"></param> | 
|         /// <param name="heightType"></param> | 
|         /// <param name="roadways"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, int heightType, List<string> roadways); | 
|   | 
|         /// <summary> | 
|         /// 向WMS申请分配货位 | 
|         /// </summary> | 
|         /// <param name="taskNum">任务号</param> | 
|         /// <param name="roadwayNo">巷道号</param> | 
|         /// <returns></returns> | 
|         string? RequestAssignLocation(int taskNum, string roadwayNo); | 
|   | 
|         /// <summary> | 
|         /// 向WMS申请分配货位 | 
|         /// </summary> | 
|         /// <param name="taskNum">任务号</param> | 
|         /// <param name="roadwayNo">巷道号</param> | 
|         /// <param name="heightType">高度</param> | 
|         /// <returns></returns> | 
|         string? RequestAssignLocationByHeight(int taskNum, string roadwayNo, int heightType); | 
|   | 
|         /// <summary> | 
|         /// 任务完成 | 
|         /// </summary> | 
|         /// <param name="taskNum">任务号</param> | 
|         /// <returns></returns> | 
|         WebResponseContent TaskCompleted(int taskNum); | 
|   | 
|         /// <summary> | 
|         /// 根据设备编号、任务类型分组(可选)按照优先级以及创建时间排序查询任务池新增的任务 | 
|         /// </summary> | 
|         /// <param name="deviceNo">设备编号</param> | 
|         /// <param name="taskTypeGroup">任务类型分组(可选)</param> | 
|         /// <returns></returns> | 
|         Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null); | 
|   | 
|         /// <summary> | 
|         /// 根据设备编号、当前地址按照优先级以及创建时间排序查询任务池新增的任务 | 
|         /// </summary> | 
|         /// <param name="deviceNo">设备编号</param> | 
|         /// <param name="currentAddress">当前地址</param> | 
|         /// <returns>返回任务实体对象,可能为null</returns> | 
|         Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = ""); | 
|   | 
|         /// <summary> | 
|         /// 根据设备编号、当前地址按照优先级以及创建时间排序查询任务池入库类型的新增的任务 | 
|         /// </summary> | 
|         /// <param name="deviceNo">设备编号</param> | 
|         /// <param name="currentAddress">当前地址</param> | 
|         /// <returns>返回任务实体对象,可能为null</returns> | 
|         Dt_Task QueryStackerCraneInTask(string deviceNo, string currentAddress = ""); | 
|   | 
|         /// <summary> | 
|         /// 根据设备编号、当前地址按照优先级以及创建时间排序查询任务池出库类型的新增的任务 | 
|         /// </summary> | 
|         /// <param name="deviceNo">设备编号</param> | 
|         /// <param name="currentAddress">当前地址</param> | 
|         /// <returns>返回任务实体对象,可能为null</returns> | 
|         Dt_Task QueryStackerCraneOutTask(string deviceNo, string currentAddress = ""); | 
|   | 
|         /// <summary> | 
|         /// 根据设备编号、当前地址按照优先级以及创建时间排序查询任务池出库类型的新增的任务 | 
|         /// </summary> | 
|         /// <param name="deviceNo">设备编号</param> | 
|         /// <param name="outStationCodes">当前地址</param> | 
|         /// <returns>返回任务实体对象集合,可能为null</returns> | 
|         List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes); | 
|   | 
|         /// <summary> | 
|         /// 更新任务异常信息显示 | 
|         /// </summary> | 
|         /// <param name="taskNum">任务号</param> | 
|         /// <param name="message">异常信息</param> | 
|         WebResponseContent UpdateTaskExceptionMessage(int taskNum, string message); | 
|   | 
|         /// <summary> | 
|         /// 恢复挂起任务 | 
|         /// </summary> | 
|         /// <param name="taskNum">任务号</param> | 
|         /// <returns>返回处理结果</returns> | 
|         WebResponseContent TaskStatusRecovery(int taskNum); | 
|         /// <summary> | 
|         /// 回滚任务状态 | 
|         /// </summary> | 
|         /// <param name="taskNum">任务号</param> | 
|         /// <returns>返回处理结果</returns> | 
|         WebResponseContent RollbackTaskStatusToLast(int taskNum); | 
|         /// <summary> | 
|         /// 发送AGV任务 | 
|         /// </summary> | 
|         /// <param name="taskModel"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent AgvSendTask(AgvTaskDTO taskModel, APIEnum SendTask = APIEnum.Agv_CSJSendTask); | 
|         /// <summary> | 
|         /// 安全信号申请 | 
|         /// </summary> | 
|         /// <param name="secureApplyModel"></param> | 
|         /// <returns></returns> | 
|         AgvResponseContent AgvSecureApply(AgvSecureApplyDTO secureApplyModel); | 
|         /// <summary> | 
|         /// 安全信号回复 WCS-AGV | 
|         /// </summary> | 
|         /// <param name="secureModel"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent AgvSecureReply(AgvSecureReplyDTO secureReplyModel, APIEnum SecureReply = APIEnum.Agv_CSJSecureReply); | 
|         /// <summary> | 
|         /// AGV任务状态刷新 | 
|         /// </summary> | 
|         /// <param name="agvUpdateModel"></param> | 
|         /// <returns></returns> | 
|         AgvResponseContent AgvUpdateTask(AgvUpdateDTO agvUpdateModel); | 
|   | 
|         /// <summary> | 
|         ///  | 
|         /// </summary> | 
|         /// <param name="taskNum"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent SendSecureReplyToAgv(int taskNum); | 
|   | 
|         /// <summary> | 
|         /// 更新任务信息及添加任务明细记录 | 
|         /// </summary> | 
|         /// <param name="task">任务原对象实例(未修改的数据对象)</param> | 
|         /// <param name="taskStatus">修改后的任务状态</param> | 
|         /// <param name="deviceCode">修改后的设备编号</param> | 
|         /// <param name="sourceAddress">修改后的起始地址</param> | 
|         /// <param name="targetAddress">修改后的目标地址</param> | 
|         /// <param name="currentAddress">修改后的当前地址</param> | 
|         /// <param name="nextAddress">修改后的下一地址</param> | 
|         void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "", int heightType = 0); | 
|   | 
|         /// <summary> | 
|         /// 请求分配巷道 | 
|         /// </summary> | 
|         /// <param name="taskNum"></param> | 
|         /// <param name="roadwayNos"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent RequestWMSAssignRoadway(int taskNum, List<string> roadwayNos); | 
|   | 
|         /// <summary> | 
|         ///  | 
|         /// </summary> | 
|         /// <param name="roadwayNos"></param> | 
|         /// <param name="palletCode"></param> | 
|         /// <param name="heightType"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, string palletCode, int heightType); | 
|   | 
|         /// <summary> | 
|         ///  | 
|         /// </summary> | 
|         /// <param name="roadwayNos"></param> | 
|         /// <param name="taskNum"></param> | 
|         /// <param name="heightType"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, int taskNum, int heightType); | 
|   | 
|         /// <summary> | 
|         ///  | 
|         /// </summary> | 
|         /// <param name="roadwayNos"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos); | 
|   | 
|         /// <summary> | 
|         ///  | 
|         /// </summary> | 
|         /// <param name="agvPodModel"></param> | 
|         /// <param name="PodBerthAndMat"></param> | 
|         /// <returns></returns> | 
|         WebResponseContent AgvPodBerthAndMat(AgvPodBerthAndMatDTO agvPodModel, APIEnum PodBerthAndMat = APIEnum.Agv_CSJPodBerthAndMat); | 
|         /// <summary> | 
|         /// //判断移库货位任务是否已存在,如存在先执行 | 
|         /// </summary> | 
|         Dt_Task QueryStackerExistTask(string PalletCode,string locationCode); | 
|         /// <summary> | 
|         /// AGV成品取放货通知 | 
|         /// </summary> | 
|         WebResponseContent AgvBoxApplyPass(AGVBoxApplyPassDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CPBoxApplyPass); | 
|         /// <summary> | 
|         /// CTU取消任务 | 
|         /// </summary> | 
|         /// <returns></returns> | 
|         WebResponseContent AgvBoxApplyPass(AgvCTUCancelDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CTUCancelTask); | 
|         /// <summary> | 
|         /// 生成空框任务 | 
|         /// </summary> | 
|         WebResponseContent AgvCarrying(int row, int startColumn, int endColumn, int layer, int targetLayer); | 
|         /// <summary> | 
|         /// 预调度指令 | 
|         /// </summary> | 
|         WebResponseContent AgvPreScheduleTask(AgvScheduleTaskDTO scheduleTaskDTO, APIEnum ScheduleTask = APIEnum.AGV_CTUScheduleTaskTask); | 
|   | 
|         /// <summary> | 
|         /// 接受WMS手动完成任务 | 
|         /// </summary> | 
|         /// <param name="taskNum"></param> | 
|         /// <returns></returns> | 
|         public WebResponseContent RecWMSTaskCompleted(int taskNum); | 
|     } | 
| } |