From b698a2085fd090e90abedb1e91266ec496574b29 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 16 四月 2026 23:31:35 +0800
Subject: [PATCH] 1
---
Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs | 80 ++++++++++++++++++++++++++++++++++++---
1 files changed, 73 insertions(+), 7 deletions(-)
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs
index 8d501f5..d8c0093 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs
@@ -1,4 +1,4 @@
-using MapsterMapper;
+using WIDESEA_Common.StockEnum;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_IRecordService;
@@ -11,21 +11,87 @@
/// </summary>
public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IRepository<Dt_StockQuantityChangeRecord>>, IStockQuantityChangeRecordService
{
- private readonly IMapper _mapper;
-
/// <summary>
/// 鏋勯�犲嚱鏁�
/// </summary>
- /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
- /// <param name="mapper">瀵硅薄鏄犲皠鍣�</param>
- public StockQuantityChangeRecordService(IRepository<Dt_StockQuantityChangeRecord> baseDal, IMapper mapper) : base(baseDal)
+ public StockQuantityChangeRecordService(IRepository<Dt_StockQuantityChangeRecord> baseDal) : base(baseDal)
{
- _mapper = mapper;
}
/// <summary>
/// 鑾峰彇搴撳瓨鏁伴噺鍙樻洿璁板綍浠撳偍鎺ュ彛
/// </summary>
public IRepository<Dt_StockQuantityChangeRecord> Repository => BaseDal;
+
+ /// <summary>
+ /// 璁板綍搴撳瓨鍙樻洿銆�
+ /// </summary>
+ public async Task<bool> AddChangeRecordAsync(
+ Dt_StockInfo? beforeStock,
+ Dt_StockInfo? afterStock,
+ StockChangeTypeEnum changeType,
+ int? taskNum = null,
+ string? orderNo = null,
+ string? remark = null)
+ {
+ if (beforeStock == null && afterStock == null)
+ return false;
+
+ var beforeQuantity = GetStockQuantity(beforeStock);
+ var afterQuantity = GetStockQuantity(afterStock);
+ var beforeStatus = beforeStock?.StockStatus ?? 0;
+ var afterStatus = afterStock?.StockStatus ?? 0;
+ int? beforeLocationId = beforeStock?.LocationId > 0 ? beforeStock.LocationId : (int?)null;
+ int? afterLocationId = afterStock?.LocationId > 0 ? afterStock.LocationId : (int?)null;
+ var beforeLocationCode = beforeStock?.LocationCode;
+ var afterLocationCode = afterStock?.LocationCode;
+
+ if (beforeQuantity == afterQuantity &&
+ beforeStatus == afterStatus &&
+ beforeLocationId == afterLocationId &&
+ beforeLocationCode == afterLocationCode)
+ {
+ return true;
+ }
+
+ var currentStock = afterStock ?? beforeStock!;
+ Dt_StockQuantityChangeRecord record = new Dt_StockQuantityChangeRecord
+ {
+ StockDetailId = currentStock.Id,
+ PalleCode = currentStock.PalletCode,
+ MaterielCode = GetFirstValue(currentStock.Details?.Select(x => x.MaterielCode)),
+ MaterielName = GetFirstValue(currentStock.Details?.Select(x => x.MaterielName)),
+ BatchNo = GetFirstValue(currentStock.Details?.Select(x => x.BatchNo)),
+ SerilNumber = GetFirstValue(currentStock.Details?.Select(x => x.SerialNumber)),
+ OrderNo = orderNo,
+ TaskNum = taskNum,
+ ChangeType = (int)changeType,
+ ChangeQuantity = afterQuantity - beforeQuantity,
+ BeforeQuantity = beforeQuantity,
+ AfterQuantity = afterQuantity,
+ BeforeStatus = beforeStatus,
+ AfterStatus = afterStatus,
+ BeforeLocationId = beforeLocationId,
+ AfterLocationId = afterLocationId,
+ BeforeLocationCode = beforeLocationCode,
+ AfterLocationCode = afterLocationCode,
+ Remark = remark
+ };
+
+ return await BaseDal.AddDataAsync(record) > 0;
+ }
+
+ private static float GetStockQuantity(Dt_StockInfo? stockInfo)
+ {
+ if (stockInfo?.Details == null || !stockInfo.Details.Any())
+ return 0;
+
+ return stockInfo.Details.Sum(x => x.StockQuantity);
+ }
+
+ private static string GetFirstValue(IEnumerable<string>? values)
+ {
+ return values?.FirstOrDefault() ?? string.Empty;
+ }
}
}
--
Gitblit v1.9.3