From a9a3f943efb083de8ed88b293897886b3ef612a2 Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期一, 11 八月 2025 17:37:09 +0800
Subject: [PATCH] 功能增添优化
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 216 insertions(+), 2 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
index 2c0c087..cba7d6c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs"
@@ -4,20 +4,234 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.StockEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_IOutboundRepository;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockService;
using WIDESEA_Model.Models;
namespace WIDESEA_IOutboundService
{
public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
{
- public IOutStockLockInfoRepository Repository => BaseDal;
- public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal) : base(BaseDal)
+ private readonly IStockService _stockService;
+ private readonly IRecordService _recordService;
+
+ public IOutStockLockInfoRepository Repository => BaseDal;
+ public IUnitOfWorkManage _unitOfWorkManage;
+
+ public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal, IStockService stockService, IRecordService recordService, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
{
+ _recordService = recordService;
+ _stockService = stockService;
+ _unitOfWorkManage = unitOfWorkManage;
+ }
+
+ public List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, List<Dt_StockInfo> outStocks, int? taskNum = null)
+ {
+ List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
+
+ foreach (var item in outStocks)
+ {
+ Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+ {
+ PalletCode = item.PalletCode,
+ AssignQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity),
+ MaterielCode = outboundOrderDetail.MaterielCode,
+ BatchNo = outboundOrderDetail.BatchNo,
+ LocationCode = item.LocationCode,
+ MaterielName = outboundOrderDetail.MaterielName,
+ OrderDetailId = outboundOrderDetail.Id,
+ OrderNo = outboundOrder.OrderNo,
+ OrderType = outboundOrder.OrderType,
+ OriginalQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
+ Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
+ StockId = item.Id,
+ TaskNum = taskNum,
+ ProductionDate = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate,
+ EffectiveDate = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate
+
+ };
+ outStockLockInfos.Add(outStockLockInfo);
+ }
+
+ return outStockLockInfos;
+ }
+
+ public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null)
+ {
+
+ Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+ {
+ PalletCode = outStock.PalletCode,
+ AssignQuantity = assignQuantity,
+ MaterielCode = outboundOrderDetail.MaterielCode,
+ BatchNo = outboundOrderDetail.BatchNo ?? outStock.Details.FirstOrDefault()?.BatchNo,
+ LocationCode = outStock.LocationCode,
+ MaterielName = outboundOrderDetail.MaterielName,
+ OrderDetailId = outboundOrderDetail.Id,
+ OrderNo = outboundOrder.OrderNo,
+ OrderType = outboundOrder.OrderType,
+ OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
+ Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
+ StockId = outStock.Id,
+ TaskNum = taskNum,
+ OrderQuantity = outboundOrderDetail.OrderQuantity,
+ Unit = outboundOrderDetail.Unit,
+ ProductionDate = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate,
+ EffectiveDate = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate
+ };
+
+ return outStockLockInfo;
+ }
+ /// <summary>
+ /// PP澶у嵎鍑哄簱
+ /// </summary>
+ /// <param name="mesOutboundOrder"></param>
+ /// <param name="outStock"></param>
+ /// <param name="assignQuantity"></param>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesOutboundOrder mesOutboundOrder, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null)
+ {
+
+ Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+ {
+ PalletCode = outStock.PalletCode,
+ AssignQuantity = assignQuantity,
+ MaterielCode = mesOutboundOrder.MaterialCode,
+ BatchNo = outStock.Details.FirstOrDefault()?.BatchNo ?? "",
+ LocationCode = outStock.LocationCode,
+ MaterielName = mesOutboundOrder.MaterialName,
+ OrderDetailId = mesOutboundOrder.Id,
+ OrderNo = mesOutboundOrder.OrderNo,
+ OrderType = mesOutboundOrder.OrderType,
+ OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == mesOutboundOrder.MaterialCode).Sum(x => x.StockQuantity),
+ Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
+ StockId = outStock.Id,
+ TaskNum = taskNum,
+ OrderQuantity = mesOutboundOrder.OrderQuantity,
+ Unit = mesOutboundOrder.Unit,
+ ProductionDate = outStock.Details.Where(x => x.MaterielCode == mesOutboundOrder.MaterialCode).FirstOrDefault()?.ProductionDate,
+ EffectiveDate = outStock.Details.Where(x => x.MaterielCode == mesOutboundOrder.MaterialCode).FirstOrDefault()?.EffectiveDate
+
+ };
+
+ return outStockLockInfo;
+ }
+ /// <summary>
+ /// PP灏忓嵎鍑哄簱
+ /// </summary>
+ /// <param name="mesPPCutOutboundOrderDetail"></param>
+ /// <param name="outStock"></param>
+ /// <param name="assignQuantity"></param>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ public List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail, List<Dt_StockInfo> outStock, int? taskNum = null)
+ {
+ List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
+
+ foreach (var item in outStock)
+ {
+ Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+ {
+ PalletCode = item.PalletCode,
+ AssignQuantity = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity),
+ MaterielCode = mesPPCutOutboundOrderDetail.MaterielCode,
+ BatchNo = item.Details.FirstOrDefault().BatchNo,
+ LocationCode = item.LocationCode,
+ MaterielName = mesPPCutOutboundOrderDetail.MaterielName,
+ OrderDetailId = mesPPCutOutboundOrderDetail.Id,
+ OrderNo = mesPPCutOutboundOrder.OrderNo,
+ OrderType = mesPPCutOutboundOrder.OrderType,
+ OriginalQuantity = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
+ Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
+ StockId = item.Id,
+ TaskNum = taskNum,
+ OrderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity,
+ Unit = mesPPCutOutboundOrderDetail.Unit,
+ ProductionDate = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate,
+ EffectiveDate = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate
+ };
+ outStockLockInfos.Add(outStockLockInfo);
+ }
+
+ return outStockLockInfos;
+ }
+
+ public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesPPOutboundOrder mesPPOutboundOrder, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null)
+ {
+
+ Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+ {
+ PalletCode = outStock.PalletCode,
+ AssignQuantity = assignQuantity,
+ MaterielCode = mesPPOutboundOrder.MaterialCode,
+ BatchNo = outStock.Details.FirstOrDefault()?.BatchNo ?? "",
+ LocationCode = outStock.LocationCode,
+ MaterielName = mesPPOutboundOrder.MaterialName,
+ OrderDetailId = mesPPOutboundOrder.Id,
+ OrderNo = mesPPOutboundOrder.OrderNo,
+ OrderType = mesPPOutboundOrder.OrderType,
+ OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.StockQuantity),
+ Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
+ StockId = outStock.Id,
+ TaskNum = taskNum,
+ OrderQuantity = mesPPOutboundOrder.OrderQuantity,
+ Unit = mesPPOutboundOrder.Unit,
+ ProductionDate = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).FirstOrDefault()?.ProductionDate,
+ EffectiveDate = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).FirstOrDefault()?.EffectiveDate
+ };
+
+ return outStockLockInfo;
+ }
+
+ public List<Dt_OutStockLockInfo> OutStockLockInfos(string OrderNo)
+ {
+ return BaseDal.QueryData(x => x.OrderNo == OrderNo);
+ }
+
+ public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutLockStockStatusEnum? outStockStatus)
+ {
+ return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && outStockStatus == null ? true : x.Status == outStockStatus.ObjToInt());
+ }
+ public List<Dt_OutStockLockInfo> GetByMesOrderDetail(string taskNo)
+ {
+ return BaseDal.QueryData(x => x.OrderNo == taskNo);
+ }
+
+ public List<Dt_OutStockLockInfo> GetStockOutboundOrder(SaveModel saveModel)
+ {
+ try
+ {
+ var palletCode = saveModel.MainData["barcode"].ToString();
+ var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
+ Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode && x.WarehouseId == warehouseId).Includes(x => x.Details).First();
+ if (stockInfo.StockStatus != StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt())
+ {
+ throw new Exception($"璇ユ墭鐩樿繕鏈嚭搴撳畬鎴�");
+ }
+ if (stockInfo == null)
+ {
+ throw new Exception($"鏈壘鍒板簱瀛樹俊鎭�");
+ }
+ Dt_StockInfoDetail stockInfoDetail = stockInfo.Details.FirstOrDefault();
+ if (stockInfoDetail == null)
+ {
+ throw new Exception($"鏈壘鍒板簱瀛樿鎯�");
+ }
+ List<Dt_OutStockLockInfo> stockLockInfos = BaseDal.QueryData(x => x.StockId == stockInfo.Id && x.Status == OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
+ return stockLockInfos;
+ }
+ catch (Exception ex)
+ {
+ return null;
+ }
}
}
}
--
Gitblit v1.9.3