From 5c5a26ca4f99953d06e75010eed5b0b59dff3b3f Mon Sep 17 00:00:00 2001 From: song zhou <1759742460@qq.com> Date: 周日, 18 5月 2025 19:44:26 +0800 Subject: [PATCH] wcs交互 --- HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs | 73 ++++++++++++++++++++++++++++++++---- 1 files changed, 65 insertions(+), 8 deletions(-) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs index 7ede721..595662e 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs @@ -526,8 +526,12 @@ /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> - public async Task FinishTaskAsync(WmsTaskStatusDto input) + public async Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input) { + if (string.IsNullOrEmpty(input.TaskNo)) + { + throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�"); + } using var scope = _serviceProvider.CreateScope(); var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); using var uow = unitOfWorkManager.Begin(requiresNew: true); @@ -640,6 +644,8 @@ await uow.SaveChangesAsync(); await uow.CompleteAsync(); + + return ObjectMapper.Map<WmsTask, WmsTaskDto>(task); } /// <summary> @@ -650,7 +656,10 @@ /// <exception cref="UserFriendlyException"></exception> public async Task CancelTaskAysnc(WmsTaskStatusDto input) { - + if (string.IsNullOrEmpty(input.TaskNo)) + { + throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�"); + } using var scope = _serviceProvider.CreateScope(); var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); using var uow = unitOfWorkManager.Begin(requiresNew: true); @@ -705,7 +714,13 @@ /// <exception cref="UserFriendlyException"></exception> public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input) { - var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo); + + if (string.IsNullOrEmpty(input.TaskNo)) + { + throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�"); + } + + var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo); if (task == null) { throw new UserFriendlyException("浠诲姟淇℃伅涓嶅瓨鍦�"); @@ -722,13 +737,13 @@ throw new UserFriendlyException("鐩爣搴撲綅淇℃伅涓嶅瓨鍦�"); } - if(toPlaceInfo.IsDisabled) + if (toPlaceInfo.IsDisabled) { throw new UserFriendlyException("鐩爣搴撲綅宸茶绂佺敤"); } var toplaceStock = await _wmsMaterialStockRepository.GetStockListAsync(new WmsMaterialStock { PlaceNo = input.ToPlace }); - if (toplaceStock != null && toplaceStock.Count>0) + if (toplaceStock != null && toplaceStock.Count > 0) { var model = toplaceStock.FirstOrDefault(); if (model.MaterialModel != input.MutableParam1) @@ -755,14 +770,56 @@ var whereConditions = DynamicGetQueryParams(queryInput); var NoStartTaskList = await wmsTaskRepository.GetTaskListAsync(whereConditions); - if(NoStartTaskList.Count<=0) return null; - var executeTask = NoStartTaskList.FirstOrDefault(x=>x.TaskType == input.TaskType); - if(executeTask == null) + + if (NoStartTaskList.Count <= 0) return null; + + var executeTaskList = NoStartTaskList.WhereIf(input.TaskType > 0, x => x.TaskType == input.TaskType).OrderBy(x => x.TaskType).ThenBy(x => x.TaskLevel).ToList(); + + var executeTask = executeTaskList.FirstOrDefault(); + if (input.OutStockHasGood) + { + executeTask = NoStartTaskList.OrderByDescending(x => x.TaskType == TaskTypeEnum.RUKU).ThenBy(x => x.TaskLevel).FirstOrDefault(); + } + + if (executeTask == null) { return ObjectMapper.Map<WmsTask, WmsTaskDto>(NoStartTaskList.FirstOrDefault()); } + if (executeTask.TaskType == TaskTypeEnum.CHUKU && input.OutStockHasGood) + { + return null; + } + + if(executeTask.TaskType == TaskTypeEnum.RUKU && !input.InStockHasGood) + { + return null; + } + return ObjectMapper.Map<WmsTask, WmsTaskDto>(executeTask); } + + + /// <summary> + /// 鏇存柊浠诲姟涓烘墽琛屼腑 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input) + { + if (string.IsNullOrEmpty(input.TaskNo)) + { + throw new UserFriendlyException("浠诲姟鍙蜂笉鑳戒负绌�"); + } + var task = await wmsTaskRepository.FindByNameAsync(input.TaskNo); + if(task == null) + { + return new WmsTaskDto(); + } + task.TaskStatus = WmsTaskStatus.ZHIXINGZHONG; + task.TaskDodeviceStatus = TaskDodeviceStatus.SrmProgress; + await wmsTaskRepository.UpdateAsync(task); + return ObjectMapper.Map<WmsTask, WmsTaskDto>(task); + } } -- Gitblit v1.9.3