From f5851974b861a20182c06d6f891fd427b1414209 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 20 5月 2025 15:21:19 +0800
Subject: [PATCH] 优化
---
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs | 136 ++++++++++++++++++++++++++++-----------------
1 files changed, 85 insertions(+), 51 deletions(-)
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs
index 1c95d67..6e98af0 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsOutStockAppService.cs
@@ -1,4 +1,6 @@
-锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.OutStockDto;
+锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.OutStockDto;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks;
using CMS.Plugin.HIAWms.Application.Contracts.Services;
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder;
@@ -25,8 +27,8 @@
private readonly IWmsTaskRepository _wmsTaskRepository;
private readonly IWmsInOutStockOrderRepository _wmsInOutStockOrderRepository;
private readonly IServiceProvider _serviceProvider;
- public WmsOutStockAppService(IWmsMaterialStockRepository wmsMaterialStockRepository,
- IWmsCommonAppService wmsCommonAppService, IWmsTaskRepository wmsTaskRepository,
+ public WmsOutStockAppService(IWmsMaterialStockRepository wmsMaterialStockRepository,
+ IWmsCommonAppService wmsCommonAppService, IWmsTaskRepository wmsTaskRepository,
IWmsInOutStockOrderRepository wmsInOutStockOrderRepository, IServiceProvider serviceProvider
)
{
@@ -37,68 +39,100 @@
_serviceProvider = serviceProvider;
}
- public async Task CallMaterial(CallMaterialInput input)
+ public async Task<List<CallMaterialOutput>> CallMaterialAsync(List<CallMaterialInput> input)
{
using var scope = _serviceProvider.CreateScope();
var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
using var uow = unitOfWorkManager.Begin(requiresNew: true);
- var order = await _wmsInOutStockOrderRepository.FindByNameAsync(input.OrderNo);
- if(order == null)
+ var distinctModels = input.Select(x => x.MaterialModel).Distinct().ToList();
+ if (distinctModels.Count > 1)
{
- throw new UserFriendlyException("鍑哄簱鍗曟嵁涓嶅瓨鍦�");
+ throw new UserFriendlyException("涓�娆″彨鏂欏彧鑳介拡瀵瑰悓涓�鍨嬪彿鐨勭墿鏂欙紒");
}
- if(input.MaterialNumber <=0)
+ var callOutput = new List<CallMaterialOutput>();
+ foreach (var inputItem in input)
{
- throw new UserFriendlyException("鍙枡鏁伴噺蹇呴』澶т簬0");
- }
- if(order.MaterialNumber< input.MaterialNumber)
- {
- throw new UserFriendlyException("鍙枡鏁伴噺涓嶈兘澶т簬鍗曟嵁鏁伴噺");
- }
- order.OrderStatus = OrderStatusEnum.Executing;
- order.DistributeNumber = input.MaterialNumber;
-
- await _wmsInOutStockOrderRepository.UpdateAsync(order);
-
- var stockresult = await _wmsCommonAppService.FindStockAsync(input.MaterialModel, input.MaterialNumber);
- if(stockresult == null)
- {
- throw new UserFriendlyException("褰撳墠鏃犲簱瀛�");
- }
- var taskList = new List<WmsTask>();
- foreach (var kvp in stockresult)
- {
- var stock = kvp.Key; // WmsPlace瀵硅薄
- var quantity = kvp.Value; // 鍒嗛厤鏁伴噺
-
- for (int i = 0; i < quantity; i++)
+ if (inputItem.MaterialNumber <= 0)
{
- var task = new WmsTask
- {
- TaskNo = $"CK_{DateTime.Now:yyyyMMddHHmmss}_{Guid.NewGuid().ToString("N").Substring(0, 6)}",
- ContainerNo = stock.ContainerNo,
- SourcePlace = stock.PlaceNo,
- ToPlace = "201",// place.PlaceNo,
- TaskType = TaskTypeEnum.CHUKU,
- SonTaskType = input.OrderType == OrderTypeEnum.PRODUCTCALL ? SonTaskTypeEnum.ZDCHUKU : SonTaskTypeEnum.RGRUKU,
- TaskStatus = WmsTaskStatus.WEIZHIXING,
- TaskLevel = 999,
- Aisle = 1,
- DodeviceId = 0,
- TaskDodeviceStatus = TaskDodeviceStatus.SrmNoStart,
- IsNextTask = (int)YesNoEnum.Y,
- IsRead = true,
- SourceOrderNo = input.OrderNo,
- MutableParam1 = input.MaterialModel,
- };
- taskList.Add(task);
+ throw new UserFriendlyException("鍙枡鏁伴噺蹇呴』澶т簬0");
}
+ if (!inputItem.IgnoreOrder)
+ {
+ var order = await _wmsInOutStockOrderRepository.FindByNameAsync(inputItem.OrderNo);
+ if (order == null)
+ {
+ throw new UserFriendlyException("鍑哄簱鍗曟嵁涓嶅瓨鍦�");
+ }
+ if (order.OrderType == OrderTypeEnum.SelfMadeParts || order.OrderType == OrderTypeEnum.PERSONIN)
+ {
+ throw new UserFriendlyException("鍏ュ簱鍗曚笉鍏佽鍙枡");
+ }
+ if (order.OrderStatus == OrderStatusEnum.Finish)
+ {
+ throw new UserFriendlyException("宸插畬鎴愬崟鎹笉鍏佽鍙枡");
+ }
+ if (order.MaterialNumber < inputItem.MaterialNumber + order.DistributeNumber)
+ {
+ throw new UserFriendlyException("鍙枡鏁伴噺涓嶈兘澶т簬鍗曟嵁鏁伴噺");
+ }
+ order.OrderStatus = OrderStatusEnum.Executing;
+ order.DistributeNumber = inputItem.MaterialNumber;
+ order.OperateTime = DateTime.Now;
+
+ await _wmsInOutStockOrderRepository.UpdateAsync(order);
+ }
+
+ var stockresult = await _wmsCommonAppService.FindStockAsync(inputItem.MaterialModel, inputItem.MaterialNumber);
+ if (stockresult == null)
+ {
+ throw new UserFriendlyException("褰撳墠鏃犲簱瀛�");
+ }
+ var taskList = new List<WmsTask>();
+ foreach (var kvp in stockresult)
+ {
+ var stock = kvp.Key; // WmsPlace瀵硅薄
+ var quantity = kvp.Value; // 鍒嗛厤鏁伴噺
+
+ for (int i = 0; i < quantity; i++)
+ {
+ var task = new WmsTask
+ {
+ TaskNo = $"CK_{DateTime.Now:yyyyMMddHHmmss}_{Guid.NewGuid().ToString("N").Substring(0, 6)}",
+ ContainerNo = stock.ContainerNo,
+ SourcePlace = stock.PlaceNo,
+ ToPlace = "201",// place.PlaceNo,
+ TaskType = TaskTypeEnum.CHUKU,
+ SonTaskType = inputItem.OrderType == OrderTypeEnum.PRODUCTCALL ? SonTaskTypeEnum.ZDCHUKU : SonTaskTypeEnum.RGRUKU,
+ TaskStatus = WmsTaskStatus.WEIZHIXING,
+ TaskLevel = inputItem.Priority,
+ Aisle = 1,
+ DodeviceId = 0,
+ Dodevicetype = DodevicetypeEnum.Srm,
+ TaskDodeviceStatus = TaskDodeviceStatus.SrmNoStart,
+ IsNextTask = (int)YesNoEnum.Y,
+ IsRead = true,
+ PlcTaskId = new Random(Guid.NewGuid().GetHashCode()).Next(101, 99999),
+ SourceOrderNo = inputItem.OrderNo,
+ MutableParam1 = inputItem.MaterialModel,
+ MutableParam2 = inputItem.DataIdentifier
+ };
+ taskList.Add(task);
+
+ var output = ObjectMapper.Map<WmsMaterialStockDto, CallMaterialOutput>(stock);
+ output.TaskNo = task.TaskNo;
+ output.PlcTaskId = task.PlcTaskId;
+ output.SourceOrderNo = task.SourceOrderNo;
+ callOutput.Add(output);
+ }
+ }
+ await _wmsTaskRepository.InsertManyAsync(taskList);
}
- await _wmsTaskRepository.InsertManyAsync(taskList);
await uow.SaveChangesAsync();
await uow.CompleteAsync();
+
+ return callOutput;
}
}
}
--
Gitblit v1.9.3