From 83161ba784c838117bbebb5d712f2e2037b269be Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期三, 04 二月 2026 19:33:28 +0800
Subject: [PATCH] 优化拣选页面
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs | 106 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 85 insertions(+), 21 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
index eea7122..cb45430 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs"
@@ -29,7 +29,8 @@
private readonly ILogger<OutboundOrderService> _logger;
private readonly IRepository<Dt_OutboundOrderDetail> _outboundOrderDetailRepository;
private readonly IMaterialUnitService _materialUnitService;
- public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, ILogger<OutboundOrderService> logger, IMaterialUnitService materialUnitService, IMaterielInfoService materielInfoService) : base(BaseDal)
+ private readonly IRepository<Dt_OutStockLockInfo> _outStockLockInfoRepository;
+ public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, ILogger<OutboundOrderService> logger, IMaterialUnitService materialUnitService, IMaterielInfoService materielInfoService, IRepository<Dt_OutStockLockInfo> outStockLockInfoRepository) : base(BaseDal)
{
_mapper = mapper;
_unitOfWorkManage = unitOfWorkManage;
@@ -37,6 +38,7 @@
_logger = logger;
_materialUnitService = materialUnitService;
_materielInfoService = materielInfoService;
+ _outStockLockInfoRepository = outStockLockInfoRepository;
}
private int[] OrderTypes = new int[] { (int)InOrderTypeEnum.AllocatOutbound, (int)InOrderTypeEnum.InternalAllocat, (int)InOrderTypeEnum.ReCheck };
@@ -113,10 +115,6 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
}
- if (outboundOrder.OrderStatus != (int)OutOrderStatusEnum.鏈紑濮�)
- {
- return WebResponseContent.Instance.Error($"璇ヨ鍗曠姸鎬佷笉鍏佽淇敼");
- }
List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
List<Dt_OutboundOrderDetail> updateoutboundOrderDetails = new List<Dt_OutboundOrderDetail>();
List<int> detailIds = new List<int>();
@@ -161,22 +159,33 @@
}
else
{
- outboundOrderDetail.lineNo = item.lineNo;
- outboundOrderDetail.MaterielCode = item.MaterielCode;
- outboundOrderDetail.SupplyCode = item.SupplyCode;
- outboundOrderDetail.BatchNo = item.BatchNo;
- outboundOrderDetail.Unit = item.Unit;
- outboundOrderDetail.WarehouseCode = item.WarehouseCode;
- outboundOrderDetail.MoveQty = item.MoveQty;
- outboundOrderDetail.OrderQuantity = item.OrderQuantity;
- outboundOrderDetail.BarcodeMoveQty = item.MoveQty;
- outboundOrderDetail.BarcodeQty = item.OrderQuantity;
- outboundOrderDetail.BarcodeUnit = item.Unit;
- var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
- outboundOrderDetail.Unit = issueoStockResult.Unit;
- outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
- var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
- outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
+ if(item.OrderQuantity < outboundOrderDetail.LockQuantity + outboundOrderDetail.MoveQty)
+ {
+ return WebResponseContent.Instance.Error($"淇敼鐨勮鍙穥item.lineNo}鏁伴噺瓒呰繃浜嗘櫤浠撳嚭搴撻攣瀹氭暟閲忓姞涓婃尓鏂欐暟閲忥紝涓嶅厑璁镐慨鏀�");
+ }
+ if(outboundOrderDetail.LockQuantity == 0)
+ {
+ outboundOrderDetail.lineNo = item.lineNo;
+ outboundOrderDetail.MaterielCode = item.MaterielCode;
+ outboundOrderDetail.SupplyCode = item.SupplyCode;
+ outboundOrderDetail.BatchNo = item.BatchNo;
+ outboundOrderDetail.Unit = item.Unit;
+ outboundOrderDetail.WarehouseCode = item.WarehouseCode;
+ outboundOrderDetail.MoveQty = item.MoveQty;
+ outboundOrderDetail.OrderQuantity = item.OrderQuantity;
+ outboundOrderDetail.BarcodeMoveQty = item.MoveQty;
+ outboundOrderDetail.BarcodeQty = item.OrderQuantity;
+ outboundOrderDetail.BarcodeUnit = item.Unit;
+ var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty);
+ outboundOrderDetail.Unit = issueoStockResult.Unit;
+ outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity;
+ var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty);
+ outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity;
+ }
+ else
+ {
+ outboundOrderDetail.OrderQuantity = item.OrderQuantity;
+ }
if (materielInfos.Any())
{
outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? "";
@@ -198,6 +207,10 @@
_unitOfWorkManage.BeginTran();
foreach (var item in deletePurchaseOrderDetails)
{
+ if(item.LockQuantity > 0)
+ {
+ return WebResponseContent.Instance.Error($"鍘熷崟鎹鍙穥item.lineNo}宸茬粡閿佸畾鍑哄簱锛屼笉鍏佽鍒犻櫎锛岃閲嶆柊鏇存敼鏁版嵁鎺ㄩ��");
+ }
// _outboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.鑷姩鍒犻櫎);
_outboundOrderDetailRepository.DeleteData(item);
}
@@ -205,6 +218,10 @@
_outboundOrderDetailRepository.UpdateData(updateoutboundOrderDetails);
_outboundOrderDetailRepository.AddData(outboundOrderDetails);
+ if(outboundOrder.Details.All(x => x.OverOutQuantity >= x.OrderQuantity - x.MoveQty))
+ {
+ outboundOrder.OrderStatus = (int)OutOrderStatusEnum.鍑哄簱瀹屾垚;
+ }
BaseDal.UpdateData(outboundOrder);
_unitOfWorkManage.CommitTran();
@@ -267,6 +284,19 @@
return WebResponseContent.Instance.OK(null, order);
}
+
+ /// <summary>
+ /// 鏍规嵁鎵樼洏鍙疯幏鍙栧崟鎹紪鍙�
+ /// </summary>
+ public WebResponseContent GetOrderNoByPalletCode(string palletCode)
+ {
+ var orderNo = _outStockLockInfoRepository.QueryData(x => x.PalletCode == palletCode).Select(x=>x.OrderNo).FirstOrDefault();
+ if(string.IsNullOrWhiteSpace(orderNo))
+ {
+ return WebResponseContent.Instance.Error($"璇ユ墭鐩榹palletCode}宸叉嫞閫夊畬");
+ }
+ return WebResponseContent.Instance.OK(data: orderNo);
+ }
static object lock_code = new object();
public string CreateCodeByRule(string ruleCode)
@@ -391,6 +421,40 @@
string returnToMESStatus = returnToMESStatusParam.Value.ToString().Trim();
sugarQueryable1 = sugarQueryable1.Where(x => x.ReturnToMESStatus.Equals(returnToMESStatus));
}
+
+ var createDateParams = searchParametersList
+ .Where(x => x.Name.Equals("createDate", StringComparison.OrdinalIgnoreCase)
+ && !string.IsNullOrEmpty(x.Value?.ToString()))
+ .ToList();
+
+ DateTime? minCreateDate = null;
+ DateTime? maxCreateDate = null;
+
+ foreach (var dateParam in createDateParams)
+ {
+ if (DateTime.TryParse(dateParam.Value.ToString(), out DateTime dateValue))
+ {
+ LinqExpressionType expressionType = dateParam.DisplayType.GetLinqCondition();
+ switch (expressionType)
+ {
+ case LinqExpressionType.ThanOrEqual:
+ minCreateDate = dateValue;
+ break;
+ case LinqExpressionType.LessThanOrEqual:
+ maxCreateDate = dateValue;
+ break;
+ }
+ }
+ }
+
+ if (minCreateDate.HasValue)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate >= minCreateDate.Value);
+ }
+ if (maxCreateDate.HasValue)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate <= maxCreateDate.Value);
+ }
}
}
catch { }
--
Gitblit v1.9.3