From 734f49c3f74e4a46cfb5892ce60dbf1bb86e74ab Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期二, 22 七月 2025 19:14:39 +0800 Subject: [PATCH] 出入库流程 --- WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 234 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 147 insertions(+), 87 deletions(-) diff --git a/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs b/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs index 992dc5a..cd13900 100644 --- a/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs +++ b/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs @@ -15,7 +15,6 @@ *----------------------------------------------------------------*/ #endregion << 鐗� 鏈� 娉� 閲� >> -using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using SqlSugar; using System; using System.Collections.Generic; @@ -23,13 +22,15 @@ 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; -using WIDESEAWCS_Model.Models.System; namespace WIDESEAWCS_ITaskInfoService { @@ -48,14 +49,14 @@ /// <summary> /// 鎵�鏈夊嚭搴撲换鍔$被鍨� /// </summary> - public List<int> TaskOutboundTypes { get; } + public List<int> TaskOutboundTypes { get; } /// <summary> /// 鎺ユ敹WMS浠诲姟淇℃伅 /// </summary> /// <param name="taskDTOs">WMS浠诲姟瀵硅薄闆嗗悎</param> /// <returns>杩斿洖澶勭悊缁撴灉</returns> - WebResponseContent ReceiveWMSTask([NotNull] List<Dt_Task> taskDTOs); + WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs); /// <summary> /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟 @@ -63,49 +64,60 @@ /// <param name="palletCode">鎵樼洏鍙�</param> /// <param name="sourceAddress">璧峰鍦板潃</param> /// <returns></returns> - WebResponseContent RequestWMSTask(string palletCode, string RGVStationitem, int GoodsType); + WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string materielBoxCode = ""); + + WebResponseContent RequestWMSZHTask(string agvTaskCode, string palletCode, string palletType,string materialLot); - /// <summary> - /// 鏍规嵁璁惧缂栧彿銆佽捣濮嬪湴鐐瑰垽鏂祬搴撲綅鏄惁鏈夎揣 + /// 鍚慦MS鐢宠浠诲姟 /// </summary> - /// <param name="deviceNo">璁惧缂栧彿</param> - /// <param name="outStationCodes">褰撳墠鍦板潃</param> - /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄闆嗗悎锛屽彲鑳戒负null</returns> - Dt_Task RequestWMSTaskMovelibrary(Dt_Task task); - /// <summary> - /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟 - /// </summary> - /// <param name="deviceNo">璁惧缂栧彿</param> - /// <param name="currentAddress">褰撳墠鍦板潃</param> + /// <param name="palletCode">鎵樼洏鍙�</param> + /// <param name="sourceAddress">璧峰鍦板潃</param> /// <returns></returns> - Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress); + WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress); /// <summary> - /// 鏍规嵁浠诲姟鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟 + /// 鍚慦MS鐢宠浠诲姟 + /// </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> + /// 鍚慦MS鐢宠鍒嗛厤璐т綅 /// </summary> /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="nextAddress">涓嬩竴鍦板潃</param> + /// <param name="roadwayNo">宸烽亾鍙�</param> /// <returns></returns> - Dt_Task QueryExeupConveyorLineTask(int taskNum, string nextAddress); + string? RequestAssignLocation(int taskNum, string roadwayNo); /// <summary> - /// 鏍规嵁浠诲姟鍙凤紝淇敼浠诲姟鐘舵�侊紝涓嬩竴鍦板潃锛屼笌褰撳墠鍦板潃 + /// 鍚慦MS鐢宠鍒嗛厤璐т綅 /// </summary> /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="nextAddress">涓嬩竴鍦板潃</param> + /// <param name="roadwayNo">宸烽亾鍙�</param> + /// <param name="heightType">楂樺害</param> /// <returns></returns> - bool QueryOutConveyorLineTask(int taskNum); - bool OutConveyorLineTask(PlatformStation platform); - + string? RequestAssignLocationByHeight(int taskNum, string roadwayNo, int heightType); /// <summary> - /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎瀹屾垚鐨勪换鍔� + /// 浠诲姟瀹屾垚 /// </summary> /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="currentAddress">褰撳墠鍦板潃</param> /// <returns></returns> - //Dt_Task QueryCompletedConveyorLineTask(int taskNum, string currentAddress); + WebResponseContent TaskCompleted(int taskNum); /// <summary> /// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔� @@ -124,22 +136,12 @@ Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = ""); /// <summary> - /// 鏍规嵁璁惧缂栧彿鏌ュ綋鍓嶅湪鍋氫换鍔″彿 - /// </summary> - /// <param name="deviceNo">璁惧缂栧彿</param> - /// <param name="currentAddress">褰撳墠鍦板潃</param> - /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> - Dt_Task IngStackerCraneTask(string deviceNo); - Dt_Task IngStackerCraneTask2(string deviceNo); - - /// <summary> /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍏ュ簱绫诲瀷鐨勬柊澧炵殑浠诲姟 /// </summary> /// <param name="deviceNo">璁惧缂栧彿</param> /// <param name="currentAddress">褰撳墠鍦板潃</param> /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> Dt_Task QueryStackerCraneInTask(string deviceNo, string currentAddress = ""); - /// <summary> /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑浠诲姟 @@ -158,15 +160,6 @@ List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes); /// <summary> - /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑浠诲姟 - /// </summary> - /// <param name="deviceNo">璁惧缂栧彿</param> - /// <param name="outStationCodes">褰撳墠鍦板潃</param> - /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄闆嗗悎锛屽彲鑳戒负null</returns> - List<Dt_Task> QueryStationIsOccupiedOutTasks(string deviceNo, string SourceAddress); - - - /// <summary> /// 鏇存柊浠诲姟寮傚父淇℃伅鏄剧ず /// </summary> /// <param name="taskNum">浠诲姟鍙�</param> @@ -174,61 +167,128 @@ WebResponseContent UpdateTaskExceptionMessage(int taskNum, string message); /// <summary> - /// 鏇存柊浠诲姟鐘舵�佷俊鎭紝骞跺悓姝ヨ嚦WMS - /// </summary> - /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="status">浠诲姟鐘舵��</param> - void UpdateTaskStatus(int taskNum, int status); - - /// <summary> - /// 灏嗕换鍔$姸鎬佷慨鏀逛负涓嬩竴涓姸鎬� - /// </summary> - /// <param name="taskNum">浠诲姟鍙�</param> - WebResponseContent UpdateTaskStatusToNext(int taskNum); - - WebResponseContent UpdateTaskStatusToNext2(int taskNum); - - /// <summary> - /// 灏嗕换鍔$姸鎬佷慨鏀逛负涓嬩竴涓姸鎬� - /// </summary> - /// <param name="task">浠诲姟瀹炰綋瀵硅薄</param> - /// <returns></returns> - WebResponseContent UpdateTaskStatusToNext([NotNull] Dt_Task task); - - /// <summary> - /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏇存柊浠诲姟浣嶇疆淇℃伅 - /// </summary> - /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="currentAddress">褰撳墠鍦板潃</param> - /// <returns></returns> - Dt_Task? UpdatePosition(int taskNum, string currentAddress); - - /// <summary> - /// 浠诲姟瀹屾垚 - /// </summary> - /// <param name="taskNum">浠诲姟缂栧彿</param> - /// <returns>杩斿洖澶勭悊缁撴灉</returns> - WebResponseContent StackCraneTaskCompleted(int taskNum); - - /// <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> + /// 鍙戦�丄GV浠诲姟 + /// </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); - Dt_Task QueryRgvCraneTask(List<string> platforms); + /// <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); - List<Dt_Task> StackerCraneOutTask(); + /// <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); } } -- Gitblit v1.9.3