From 850105e8cdf0d048ef843d87520513ac77a64200 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期三, 23 七月 2025 21:21:53 +0800 Subject: [PATCH] 代码提交 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 496 ++++++++++++++++++++++++++++++++---------------------- 1 files changed, 291 insertions(+), 205 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" index 2bb462c..fdf9e8d 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" @@ -16,46 +16,33 @@ #endregion << 鐗� 鏈� 娉� 閲� >> using AutoMapper; -using Magicodes.ExporterAndImporter.Core; -using Microsoft.AspNetCore.Mvc.RazorPages; -using NetTaste; +using Mapster; using Newtonsoft.Json; -using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using SqlSugar; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Reflection.Metadata; -using System.Security.Policy; -using System.Text; -using System.Threading.Tasks; -using System.Xml.Linq; using WIDESEA_Comm.Http; using WIDESEA_Common.Log; +using WIDESEAWCS_Common; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Enums; +using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.Utilities; using WIDESEAWCS_DTO.Enum; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_IBasicInfoService; +using WIDESEAWCS_ISystemServices; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.BasicInfo; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_TaskInfoRepository; -using static Microsoft.IO.RecyclableMemoryStreamManager; namespace WIDESEAWCS_TaskInfoService { @@ -66,6 +53,7 @@ private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository; private readonly ITask_HtyService _taskHtyService; private readonly ITask_HtyRepository _taskHtyRepository; + private readonly ISys_ConfigService _sys_ConfigService; private readonly IMapper _mapper; private readonly IDt_StationManagerRepository _stationManagerRepository; @@ -83,7 +71,7 @@ public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList(); public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList(); - public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService taskHtyService, IDt_StationManagerRepository stationManagerRepository, ITask_HtyRepository taskHtyRepository) : base(BaseDal) + public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService taskHtyService, ISys_ConfigService sys_ConfigService, IDt_StationManagerRepository stationManagerRepository, ITask_HtyRepository taskHtyRepository) : base(BaseDal) { _routerService = routerService; _taskExecuteDetailService = taskExecuteDetailService; @@ -92,6 +80,8 @@ _mapper = mapper; _stationManagerRepository = stationManagerRepository; _taskHtyRepository = taskHtyRepository; + _mapper = mapper; + _sys_ConfigService = sys_ConfigService; } /// <summary> @@ -108,73 +98,83 @@ // 閬嶅巻浼犲叆鐨刉MSTaskDTO鍒楄〃 foreach (var item in taskDTOs) { - // 鏌ヨ鏁版嵁搴撲腑鏄惁瀛樺湪鐩稿悓浠诲姟缂栧彿鎴栨墭鐩樼爜鐨勪换鍔★紝濡傛灉瀛樺湪鍒欒烦杩囧綋鍓嶅惊鐜� - if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskId || x.PalletCode == item.TPbarcode) != null) + + var task = BaseDal.QueryFirst(x => x.WMSTaskNum == item.TaskId || x.PalletCode == item.TPbarcode); + if (task != null) { - continue; + task.Creater = "WMS"; + task.Grade = 1; + task.PalletCode = item.TPbarcode; } - // 灏哤MSTaskDTO瀵硅薄鏄犲皠涓篋t_Task瀵硅薄 - Dt_Task task = _mapper.Map<Dt_Task>(item); - // 璁剧疆浠诲姟鐨勫垱寤鸿�呬负"WMS" - task.Creater = "WMS"; - task.Grade = 1; // 璁剧疆榛樿浼樺厛绾т负1 + // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔� if (item.TaskType == "2") { - task.TaskType = (int)TaskOutboundTypeEnum.Outbound; - List<Dt_Router> routers = _routerService.QueryNextRoutes(item.WhCode, item.EndPoint); - if (routers.Count > 0) + string[] targetCodes = item.BeginPoint.Split("-"); + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == GetScCode(Convert.ToInt32(targetCodes[0])) && x.stationType == 2); + Dt_Task taskOut = new Dt_Task() { - // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓 - task.TaskState = (int)TaskOutStatusEnum.OutNew; - // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃 - task.CurrentAddress = item.BeginPoint; - // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆 - task.NextAddress = routers.FirstOrDefault().ChildPosi; - } - else - { - // 鏌ヨ浠庢簮鍦板潃鍒扮洰鏍囧湴鍧�鐨勮矾鐢� - routers = _routerService.QueryNextRoutes(item.BeginPoint, item.EndPoint); - if (routers.Count > 0) - { - // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱瀹屾垚 - task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; - // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃 - task.CurrentAddress = item.BeginPoint; - // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆 - task.NextAddress = routers.FirstOrDefault().ChildPosi; - } - } - }// 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄叆搴撲换鍔� + TaskNum = BaseDal.GetTaskNo().Result, + Creater = "WMS", + WMSTaskNum=item.TaskId, + Grade = 1, + PalletCode = item.TPbarcode, + TaskType = (int)TaskOutboundTypeEnum.Outbound, + TaskState = (int)TaskOutStatusEnum.OutNew, + SourceAddress = item.BeginPoint, + CurrentAddress = item.BeginPoint, + Roadway = GetScCode(Convert.ToInt32(targetCodes[0])), + NextAddress = stationManager.stationChildCode, + TargetAddress = item.EndPoint, + RGVName = "RGV01" + }; + BaseDal.AddData(taskOut); + } + // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄叆搴撲换鍔� else if (item.TaskType == "1") { task.TaskType = (int)TaskInboundTypeEnum.Inbound; - // 鏌ヨ浠庢簮鍦板潃鍒扮洰鏍囧湴鍧�鐨勮矾鐢� - List<Dt_Router> routers = _routerService.QueryNextRoutes(item.BeginPoint, item.EndPoint); - if (routers.Count > 0) - { - // 璁剧疆浠诲姟鐘舵�佷负鍏ュ簱鏂板缓 - task.TaskState = (int)TaskInStatusEnum.InNew; - // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃 - task.CurrentAddress = item.BeginPoint; - // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆 - task.NextAddress = routers.FirstOrDefault().ChildPosi; - } + + task.TaskState = (int)TaskInStatusEnum.RGV_IndispatchFinish; + + task.CurrentAddress = item.BeginPoint; + + task.WMSTaskNum = item.TaskId; + + task.TargetAddress = item.EndPoint; + + string[] targetCodes = item.EndPoint.Split("-"); + + task.Roadway = GetScCode(Convert.ToInt32(targetCodes[0])); + + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationType == 3); + + task.NextAddress = stationManager.stationChildCode; + BaseDal.UpdateData(task); } else if (item.TaskType == "3") { task.TaskType = (int)TaskRelocationTypeEnum.Relocation; - // 璁剧疆浠诲姟鐘舵�佷负鏂板缓 + task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew; - task.Grade = 3; // 璁剧疆榛樿浼樺厛绾т负1 + + task.SourceAddress = item.BeginPoint; + + task.CurrentAddress = item.BeginPoint; + + task.NextAddress = item.EndPoint; + + task.TargetAddress = item.EndPoint; + + task.Grade = 3; + + BaseDal.AddData(tasks); } else { return content.Error($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵item.TaskId}銆�,浠诲姟绫诲瀷:銆恵item.TaskType}銆�"); } } - BaseDal.AddData(tasks); _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskId).ToList(), "鎺ユ敹WMS浠诲姟"); content = WebResponseContent.Instance.OK("鎴愬姛"); } @@ -189,18 +189,45 @@ return content; } + public string GetScCode(int number) + { + if (number >= 1 && number <= 4) + { + return "SC01"; + } + else if (number >= 5 && number <= 8) + { + return "SC02"; + } + else if (number >= 9 && number <= 12) + { + return "SC03"; + } + else if (number >= 13 && number <= 16) + { + return "SC04"; + } + else + { + // 澶勭悊涓嶅湪1-16鑼冨洿鍐呯殑鎯呭喌锛堝彲閫夛級 + throw new ArgumentOutOfRangeException(nameof(number), "杈撳叆鐨勬暟瀛楀繀椤诲湪1-16鑼冨洿鍐�"); + // 鎴栬�呰繑鍥炰竴涓粯璁ゅ�硷細return "SC00"; + } + } + + public WebResponseContent GetTask(WMSTaskDTO taskDTO) { WebResponseContent content = new WebResponseContent(); try { - Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); - Dt_Task_Hty taskHty = _taskHtyRepository.QueryFirst(x => x.TaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); + Dt_Task task = BaseDal.QueryFirst(x => x.WMSTaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); + Dt_Task_Hty taskHty = _taskHtyRepository.QueryFirst(x => x.WMSTaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); if (task != null) { return content.OK(data: new WMSTaskDTO() { - TaskId = task.TaskNum, + TaskId = task.WMSTaskNum, TPbarcode = task.PalletCode, WhCode = task.Roadway, BeginPoint = task.SourceAddress, @@ -212,7 +239,7 @@ { return content.OK(data: new WMSTaskDTO() { - TaskId = taskHty.TaskNum, + TaskId = taskHty.WMSTaskNum, TPbarcode = taskHty.PalletCode, WhCode = taskHty.Roadway, BeginPoint = taskHty.SourceAddress, @@ -290,10 +317,32 @@ /// <param name="deviceNo">璁惧缂栧彿</param> /// <param name="currentAddress">褰撳墠鍦板潃</param> /// <returns></returns> - public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress) + public Dt_Task QueryConveyorLineTask(string currentAddress) { - return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy); + Dt_Task task= BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.RGV_InExecutingFinish && x.CurrentAddress == currentAddress, TaskOrderBy); + if (task == null) + { + task = BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish && x.CurrentAddress == currentAddress, TaskOrderBy); + } + return task; } + + /// <summary> + /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟 + /// </summary> + /// <param name="deviceNo">璁惧缂栧彿</param> + /// <param name="currentAddress">褰撳墠鍦板潃</param> + /// <returns></returns> + public Dt_Task QueryConveyorLineFinishTask(string currentAddress) + { + Dt_Task task = BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InExecuting && x.NextAddress == currentAddress, TaskOrderBy); + if (task == null) + { + task = BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting && x.NextAddress == currentAddress, TaskOrderBy); + } + return task; + } + /// <summary> /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨRGV鏈墽琛岀殑浠诲姟 @@ -301,9 +350,9 @@ /// <param name="deviceNo">璁惧缂栧彿</param> /// <param name="currentAddress">褰撳墠鍦板潃</param> /// <returns></returns> - public Dt_Task QueryRGVTask(string deviceNo, string currentAddress) + public Dt_Task QueryRGVExecutingTask(string deviceNo) { - return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy); + return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish); } /// <summary> @@ -331,44 +380,6 @@ return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy); } - /// <summary> - /// 鏍规嵁浠诲姟鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟 - /// </summary> - /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="nextAddress">涓嬩竴鍦板潃</param> - /// <returns></returns> - public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress) - { - return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy); - } - - /// <summary> - /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎瀹屾垚鐨勪换鍔� - /// </summary> - /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="currentAddress">褰撳墠鍦板潃</param> - /// <returns></returns> - public Dt_Task QueryCompletedConveyorLineTask(int taskNum, string currentAddress) - { - return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy); - } - - /// <summary> - /// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔� - /// </summary> - /// <param name="deviceNo">璁惧缂栧彿</param> - /// <param name="taskTypeGroup">浠诲姟绫诲瀷鍒嗙粍(鍙��)</param> - /// <returns></returns> - public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null) - { - if (taskTypeGroup == null) - return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy); - if (taskTypeGroup.Value == TaskTypeGroup.InboundGroup) - return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy); - if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup) - return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); - return null; - } /// <summary> /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔� @@ -381,7 +392,18 @@ if (string.IsNullOrEmpty(currentAddress)) return BaseDal.QueryFirst(x => x.Roadway == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy); else - return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy); return BaseDal.QueryFirst(x => x.TaskState == (int)AGVTaskStatusEnum.AGVNew && x.Roadway == deviceNo, TaskOrderBy); + return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy); + } + + /// <summary> + /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔� + /// </summary> + /// <param name="deviceNo">璁惧缂栧彿</param> + /// <param name="currentAddress">褰撳墠鍦板潃</param> + /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> + public Dt_Task QueryRGVTask(string deviceNo) + { + return BaseDal.QueryFirst(x => x.RGVName == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish)), TaskOrderBy); } /// <summary> @@ -396,6 +418,17 @@ return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy); else return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.CurrentAddress == currentAddress, TaskOrderBy); + } + + /// <summary> + /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍏ュ簱绫诲瀷鐨勬柊澧炵殑浠诲姟 + /// </summary> + /// <param name="deviceNo">璁惧缂栧彿</param> + /// <param name="currentAddress">褰撳墠鍦板潃</param> + /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> + public Dt_Task QueryRGVInTask(string deviceNo) + { + return BaseDal.QueryFirst(x => x.RGVName == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew, TaskOrderBy); } /// <summary> @@ -417,22 +450,12 @@ /// </summary> /// <param name="deviceNo">璁惧缂栧彿</param> /// <param name="currentAddress">褰撳墠鍦板潃</param> - /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄闆嗗悎锛屽彲鑳戒负null</returns> - public List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes) + /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> + public Dt_Task QueryRGVOutTask(string deviceNo) { - return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && outStationCodes.Contains(x.CurrentAddress), TaskOrderBy); + return BaseDal.QueryFirst(x => x.RGVName == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish, TaskOrderBy); } - /// <summary> - /// 鏍规嵁鍑哄簱璐т綅鏌ヨ鏄惁鏈夊綋鍓嶆祬璐т綅浠诲姟 - /// </summary> - /// <param name="deviceNo">璁惧缂栧彿</param> - /// <param name="currentAddress">褰撳墠鍦板潃</param> - /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄闆嗗悎锛屽彲鑳戒负null</returns> - public List<Dt_Task> QueryStationIsOccupiedOutTasks(string deviceNo, string SourceAddress) - { - return BaseDal.QueryData(x => x.Roadway == deviceNo && SourceAddress.Contains(x.SourceAddress), TaskOrderBy); - } /// <summary> /// 鏇存柊浠诲姟寮傚父淇℃伅鏄剧ず @@ -467,20 +490,6 @@ content = WebResponseContent.Instance.Error(ex.Message); } return content; - } - - /// <summary> - /// 鏇存柊浠诲姟鐘舵�佷俊鎭紝骞跺悓姝ヨ嚦WMS - /// </summary> - /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="status">浠诲姟鐘舵��</param> - public void UpdateTaskStatus(int taskNum, int status) - { - Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); - if (task == null) return; - task.TaskState = status; - task.ModifyDate = DateTime.Now; - BaseDal.UpdateData(task); } /// <summary> @@ -520,7 +529,7 @@ task.TaskState = nextStatus; - if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish) + if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutFinish) { task.ModifyDate = DateTime.Now; task.Modifier = "System"; @@ -542,23 +551,16 @@ { int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); task.TaskState = nextStatus; - - if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) + if (task.TaskState == (int)TaskInStatusEnum.Line_InExecuting) { - #region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 - - // 妫�鏌ョ姸鎬佸苟杩斿洖 - if (!content.Status) - return content; - - // 鍙嶅簭鍒楀寲浠诲姟鏁版嵁 - var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationChildCode== task.NextAddress); task.CurrentAddress = task.NextAddress; - task.NextAddress = taskResult.EndPoint; - task.TargetAddress = task.NextAddress; - - #endregion 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃 + task.NextAddress = stationManager.stationNextChildCode; + } + else if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) + { + task.CurrentAddress = task.NextAddress; + task.NextAddress = task.TargetAddress; } else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish) { @@ -594,23 +596,6 @@ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�"); - #region 鏇存柊浠诲姟鐘舵�� - - // 鑾峰彇WMSip鍦板潃 - //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); - //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; - //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue; - //if (wmsBase == null || updateTask == null) - //{ - // throw new InvalidOperationException("WMS IP 鏈厤缃�"); - //} - //var wmsIpAddress = wmsBase + updateTask; - - //var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result; - //content = JsonConvert.DeserializeObject<WebResponseContent>(result); - - #endregion 鏇存柊浠诲姟鐘舵�� - content = WebResponseContent.Instance.OK(); } catch (Exception ex) @@ -620,42 +605,87 @@ return content; } - /// <summary> - /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏇存柊浠诲姟浣嶇疆淇℃伅 - /// </summary> - /// <param name="taskNum">浠诲姟鍙�</param> - /// <param name="currentAddress">褰撳墠鍦板潃</param> - /// <returns></returns> - public Dt_Task? UpdatePosition(int taskNum, string currentAddress) + + public WebResponseContent RGVTaskCompleted(int taskNum, string Barcode = "") { + WebResponseContent content = new WebResponseContent(); try { - Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress); - if (task == null) throw new Exception($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�"); + Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); + if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�"); - string oldCurrentPos = task.CurrentAddress; - string oldNextPos = task.NextAddress; + if (task.TaskState == (int)TaskInStatusEnum.RGV_Indispatch) + { + //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); + //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; + //var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTask)?.ConfigValue; + //var keys = new Dictionary<string, object>() + //{ + // {"TPbarcode", Barcode}, + // {"WhCode", "1001"}, + // {"BeginPoint", task.SourceAddress} + //}; + //if (wmsBase == null || requestTask == null) + //{ + // throw new InvalidOperationException("WMS IP 鏈厤缃�"); + //} + //var wmsIpAddress = wmsBase + requestTask; + //var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, keys.ToString()).Result; - List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); - if (!routers.Any()) throw new Exception($"鏈壘鍒拌澶囪矾鐢变俊鎭�"); + //if (result != null) + //{ + task.TaskState = (int)TaskInStatusEnum.RGV_InAwaitWMS; + task.PalletCode = Barcode; + task.ModifyDate = DateTime.Now; + BaseDal.UpdateData(task); + //} - task.CurrentAddress = task.NextAddress; - task.NextAddress = routers.FirstOrDefault().ChildPosi; + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV璋冨害瀹屾垚绛夊緟WMS浠诲姟"); + } + else if (task.TaskState == (int)TaskInStatusEnum.RGV_InExecuting) + { + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress); + task.TaskState = (int)TaskInStatusEnum.RGV_InExecutingFinish; + task.NextAddress = stationManager.stationNextChildCode; + task.CurrentAddress = task.NextAddress; + task.ModifyDate = DateTime.Now; + BaseDal.UpdateData(task); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV鍏ュ簱瀹屾垚"); + } + else if (task.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch) + { + task.TaskState = (int)TaskOutStatusEnum.RGV_OutdispatchFinish; + task.ModifyDate = DateTime.Now; + BaseDal.UpdateData(task); - task.ModifyDate = DateTime.Now; - task.Modifier = "System"; - BaseDal.UpdateData(task); + } + else if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting) + { + task.TaskState = (int)TaskOutStatusEnum.RGV_OutFinish; + task.ModifyDate = DateTime.Now; + task.Modifier = "System"; - _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"绯荤粺鑷姩娴佺▼锛屾洿鏂板綋鍓嶄綅缃�恵oldCurrentPos} ----> {task.CurrentAddress}銆戝拰涓嬩竴浣嶇疆銆恵oldNextPos} ----> {task.NextAddress}銆�"); - return task; + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; + + BaseDal.DeleteData(task); + _taskHtyRepository.AddData(task_Hty); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGV鍑哄簱瀹屾垚"); + } + else + { + throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�"); + } + content = WebResponseContent.Instance.OK(); } catch (Exception ex) { + content = WebResponseContent.Instance.Error($"浠诲姟瀹屾垚寮傚父,浠诲姟鍙�:銆恵taskNum}銆�"); } - return null; + return content; } - + public WebResponseContent StackCraneTaskCompleted(int taskNum) { WebResponseContent content = new WebResponseContent(); @@ -664,18 +694,75 @@ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�"); - if ( task.TaskState == (int)AGVTaskStatusEnum.AGV_Executing) + //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); + //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; + //var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue; + //var keys = new Dictionary<string, object>() + // { + // {"TaskId", task.WMSTaskNum}, + // {"TPbarcode", task.PalletCode}, + // {"WhCode", "1001"}, + // {"BeginPoint", task.SourceAddress}, + // {"EndPoint", task.TargetAddress}, + // {"Results", 1}, + // }; + //if (wmsBase == null || requestTask == null) + //{ + // throw new InvalidOperationException("WMS IP 鏈厤缃�"); + //} + //var wmsIpAddress = wmsBase + requestTask; + //var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, keys.ToString()).Result; + + //if (result != null) + //{ + // task.ExceptionMessage += " " + content.Message; + //} + + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) { - task.TaskState = (int)AGVTaskStatusEnum.AGVFinish; + task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; + + Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationType == 2); + + task.CurrentAddress = task.NextAddress; + + task.NextAddress = stationManager.stationNextChildCode; + + BaseDal.UpdateData(task); + + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + } + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) + { + //todo 鍚屾鍒癢MS + int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); + task.TaskState = nextStatus; task.ModifyDate = DateTime.Now; + task.Modifier = "System"; + + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; + BaseDal.DeleteData(task); - //_taskHtyService.AddTaskHty(task, (int)OperateTypeEnum.鑷姩瀹屾垚); + _taskHtyRepository.AddData(task_Hty); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�"); + } + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) + { + int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskRelocationStatusEnum>(); + task.TaskState = nextStatus; + task.ModifyDate = DateTime.Now; + task.Modifier = "System"; - Dt_Task_Hty taskHty = _mapper.Map<Dt_Task_Hty>(task); - taskHty.OperateType = (int)OperateTypeEnum.鑷姩瀹屾垚; - _taskHtyRepository.AddData(taskHty); + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; - _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"AGV鎼繍瀹屾垚瀹屾垚"); + BaseDal.DeleteData(task); + _taskHtyRepository.AddData(task_Hty); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈虹Щ搴撳畬鎴�"); + } + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup) + { } else { @@ -695,7 +782,7 @@ WebResponseContent content = new WebResponseContent(); try { - List<Dt_Task> tasks = BaseDal.QueryData(x => (x.TaskState == (int)TaskInStatusEnum.InNew || x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew) && x.TaskNum == taskDTO.TaskId && x.PalletCode == taskDTO.TPbarcode && x.Roadway == taskDTO.WhCode); + List<Dt_Task> tasks = BaseDal.QueryData(x => (x.TaskState == (int)TaskInStatusEnum.InNew || x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew) && x.WMSTaskNum == taskDTO.TaskId && x.PalletCode == taskDTO.TPbarcode && x.Roadway == taskDTO.WhCode); if (tasks.Count == 0) return content.Error("娌℃湁闇�瑕佸彇娑堢殑浠诲姟"); foreach (Dt_Task task in tasks) { @@ -705,7 +792,6 @@ BaseDal.DeleteData(task); Dt_Task_Hty taskHty = _mapper.Map<Dt_Task_Hty>(task); - //_taskHtyService.AddTaskHty(task, (int)OperateTypeEnum.WMS鍙栨秷); taskHty.OperateType = (int)OperateTypeEnum.WMS鍙栨秷; _taskHtyRepository.AddData(taskHty); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, "浜哄伐鍙栨秷浠诲姟"); -- Gitblit v1.9.3