From b330b8ff1b5315684b25afb534f74044dea1654b Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期二, 28 十月 2025 15:56:30 +0800
Subject: [PATCH] 优化
---
新建文件夹/WIDESEA_WMSServer/ClassLibrary2/InventoryInfoService.cs | 216 ++++++++++++++++++++++++-----------------------------
1 files changed, 99 insertions(+), 117 deletions(-)
diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/InventoryInfoService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/InventoryInfoService.cs"
index 858b401..0859da2 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/InventoryInfoService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/InventoryInfoService.cs"
@@ -1,10 +1,12 @@
锘縰sing HslCommunication;
+using MailKit.Search;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
@@ -23,153 +25,133 @@
}
public IRepository<Dt_InventoryInfo> Repository => BaseDal;
- /// <summary>
- /// wcs鍥炰紶缁欐垜璋冪敤鎴戠殑鏂规硶
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public ApiResponse<Dt_InventoryInfo> OrderFeedback(EdiOrderCallbackRequest request)
+ public WebResponseContent GetExpiredAndlow()
{
try
{
- if (request == null || request.details == null || !request.details.Any())
+ // 鑾峰彇褰撳墠鏃堕棿锛堝彧鍙栨棩鏈熼儴鍒嗭紝蹇界暐鏃堕棿锛�
+ DateTime currentDate = DateTime.Today;
+ // 璁$畻30澶╁悗鐨勬棩鏈�
+ DateTime thresholdDate = currentDate.AddDays(30);
+
+ // 鏌ユ壘搴撳瓨涓墍鏈夊晢鍝�
+ var inventoryList = BaseDal.QueryData();
+ var expiredSoonList = new List<object>();
+
+ foreach (var item in inventoryList)
{
- return new ApiResponse<Dt_InventoryInfo> { code = "500", msg = "璇锋眰鍙傛暟鏃犳晥" };
- }
+ // 妫�鏌alidityPeriod鏄惁涓虹┖
+ if (string.IsNullOrEmpty(item.ValidityPeriod))
+ continue;
- BaseDal.Db.Ado.BeginTran(); // 寮�鍚簨鍔�
-
- foreach (var detail in request.details)
- {
- // 鑾峰彇鏄庣粏涓殑鎬诲叆搴撴暟閲忥紙鑷姩杞负姝f暟锛�
- decimal orderQty = detail.orderDetails?
- .Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0)
- ?? 0;
-
- //鐩樼偣
- decimal diffQty = detail.stocktakingDetails?
- .Sum(x => Convert.ToDecimal(x.differenceQuantity))
- ?? 0;
-
- // 鏍规嵁鐗╂枡缂栧彿 + 鎵规鍙� 鏌ユ壘鏄惁宸叉湁搴撳瓨
- var entity = BaseDal.Db.Queryable<Dt_InventoryInfo>()
- .First(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo);
-
- if (entity == null)
+ // 浣跨敤绮剧‘鏍煎紡瑙f瀽 "2037-10-02"
+ if (DateTime.TryParseExact(item.ValidityPeriod.Trim(), "yyyy-MM-dd",
+ System.Globalization.CultureInfo.InvariantCulture,
+ System.Globalization.DateTimeStyles.None, out DateTime expiryDate))
{
- // 馃啎 涓嶅瓨鍦ㄥ垯鏂板缓搴撳瓨璁板綍
- entity = new Dt_InventoryInfo
+ // 璁$畻鍓╀綑澶╂暟锛堝彧姣旇緝鏃ユ湡閮ㄥ垎锛�
+ double daysRemaining = (expiryDate - currentDate).TotalDays;
+
+ // 妫�鏌ユ槸鍚﹀湪30澶╁唴锛堝寘鎷凡杩囨湡鐨勶級
+ if (daysRemaining <= 30)
{
- PalletCode = detail.orderDetails?.FirstOrDefault()?.palletCode ?? "",
- WarehouseCode = 001.ToString(), // 榛樿搴撴埧缂栧彿锛屽彲鏍规嵁涓氬姟鏀�
- LocationCode = "", // 鏆傛棤鍙┖
- StockStatus = 1, // 绔嬪簱鍥哄畾涓� 1
- MaterielCode = detail.productCode ?? detail.productName,
- MaterielName = detail.productName ?? "",
- MaterielSpec = detail.productSpecifications ?? "",
- BatchNo = detail.batchNo,
- // 鍒濇鍏ュ簱鏁伴噺 = 瀹為檯鍏ュ簱鏁伴噺
- StockQuantity = 0,
- OutboundQuantity = 0,
- SupplyQuantity = 0,
- InDate = DateTime.Now,
- ProductionDate = detail.finishDate.ToString("yyyy-MM-dd"),
- ShelfLife = 0,
- ValidityPeriod = "",
- Remark = "WCS鍥炰紶鍒涘缓"
- };
- }
-
- switch (request.orderType)
- {
- case "1": // 鍏ュ簱
- entity.StockQuantity += (float)orderQty;
- entity.InDate = DateTime.Now;
- entity.Remark = "鍏ュ簱鍗曞洖浼�";
- break;
-
- case "2": // 鍑哄簱
- entity.OutboundQuantity += (float)orderQty;
- entity.StockQuantity -= (float)orderQty;
- if (entity.StockQuantity < 0) entity.StockQuantity = 0;
- entity.Remark = "鍑哄簱鍗曞洖浼�";
- break;
-
- case "3": // 鐩樼偣
- if (detail.stocktakingDetails != null && detail.stocktakingDetails.Any())
+ expiredSoonList.Add(new
{
- foreach (var stock in detail.stocktakingDetails)
- {
- decimal diff = Convert.ToDecimal(stock.differenceQuantity);
- if (stock.IsProfit == "1") // 鐩樼泩
- {
- entity.SupplyQuantity += (float)Math.Abs(diff);
- }
- else // 鐩樹簭
- {
- entity.SupplyQuantity -= (float)Math.Abs(diff);
- if (entity.SupplyQuantity < 0) entity.SupplyQuantity = 0;
- }
- entity.PalletCode = stock.palletCode;
- entity.Remark = "鐩樼偣鍗曞洖浼�";
- }
- }
- break;
- }
-
- // 鎻掑叆鎴栨洿鏂版暟鎹簱
- if (entity.Id == 0)
- {
- BaseDal.Db.Insertable(entity).ExecuteCommand();
+ MaterielCode = item.MaterielCode ?? "",
+ BatchNo = item.BatchNo ?? "",
+ ValidityPeriod = item.ValidityPeriod,
+ ExpiryDate = expiryDate.ToString("yyyy-MM-dd"),
+ });
+ }
}
else
{
- BaseDal.Db.Updateable(entity).ExecuteCommand();
+ // 璁板綍瑙f瀽澶辫触鐨勮褰曪紙鐢ㄤ簬璋冭瘯锛�
+ Console.WriteLine($"鏃犳硶瑙f瀽鏁堟湡: {item.ValidityPeriod}");
}
}
- BaseDal.Db.Ado.CommitTran();
- return new ApiResponse<Dt_InventoryInfo> { code = "0", msg = "鎴愬姛" };
+ // 鎸夊墿浣欏ぉ鏁板崌搴忔帓鍒楋紙鍗冲皢杩囨湡鐨勬帓鍓嶉潰锛�
+ var sortedList = expiredSoonList.OrderBy(x =>
+ {
+ var days = (int)((dynamic)x).DaysRemaining;
+ return days;
+ }).ToList();
+
+ return new WebResponseContent
+ {
+ Status = true,
+ Message = $"鍙戠幇 {sortedList.Count} 涓晢鍝佸皢鍦�30澶╁唴杩囨湡",
+ Data = new
+ {
+ TotalCount = sortedList.Count,
+ ExpiredCount = sortedList.Count(x => ((dynamic)x).DaysRemaining < 0),
+ WarningCount = sortedList.Count(x => ((dynamic)x).DaysRemaining >= 0),
+ CheckDate = currentDate.ToString("yyyy-MM-dd"),
+ Items = sortedList
+ }
+ };
}
catch (Exception ex)
{
- BaseDal.Db.Ado.RollbackTran();
- return new ApiResponse<Dt_InventoryInfo> { code = "500", msg = ex.Message };
+ return new WebResponseContent
+ {
+ Status = false,
+ Message = $"鑾峰彇鏁堟湡鏁版嵁澶辫触: {ex.Message}"
+ };
}
}
-
-
-
-
-
-
-
/// <summary>
- /// 鎺ㄩ�佸紓甯镐俊鎭粰涓婃父绯荤粺1.鍏ュ簱鍗曟帴鍙o紱2.鍏ュ簱鍗曟姤瀹屾垚鎺ュ彛锛�3.鍑哄簱鍗曟帴鍙o紱4.鍑哄簱鎶ュ畬鎴愭帴鍙o紱5.鑽搧鍩虹淇℃伅鍚屾鎺ュ彛锛�6.渚涘簲鍟嗕俊鎭帴鍙o紱7.瀹㈡埛淇℃伅鎺ュ彛锛�8.搴撳瓨
+ /// 鑾峰彇搴撳瓨
/// </summary>
- public void SendErrorToUpstream(int type, string code, string message, string remark)
+ /// <returns></returns>
+ public WebResponseContent GetInventory()
{
+ WebResponseContent content = new WebResponseContent();
try
{
- var url = "http://121.37.118.63:80/GYZ2/95fck/exceptionLog";
-
- var requestData = new
+ List<object> lists = new List<object>();
+ #region 鍐峰喕搴�
+ string WareCodeLD = WarehouseEnum.鍐峰喕搴�.ObjToInt().ToString("000");
+ List<Dt_InventoryInfo> inventoryInfosLD = BaseDal.QueryData(x => x.WarehouseCode == WareCodeLD);
+ object LDQty = new
{
- type = type.ToString(),
- code = code,
- message = message,
- remark = remark
+ name = WarehouseEnum.鍐峰喕搴�.ObjToString(),
+ count = inventoryInfosLD.Sum(x => x.StockQuantity).ObjToInt()
};
-
- var result = HttpHelper.Post(url, requestData.ToJsonString());
- // 鍙互鍙嶅簭鍒楀寲妫�鏌� resultCode 鏄惁涓�0
+ lists.Add(LDQty);
+ #endregion
+ #region 楹荤簿搴�
+ string WareCodeMJ = WarehouseEnum.楹荤簿搴�.ObjToInt().ToString("000");
+ List<Dt_InventoryInfo> inventoryInfosMJ = BaseDal.QueryData(x => x.WarehouseCode == WareCodeMJ);
+ object MJQty = new
+ {
+ name = WarehouseEnum.楹荤簿搴�.ObjToString(),
+ count = inventoryInfosMJ.Sum(x => x.StockQuantity).ObjToInt()
+ };
+ lists.Add(MJQty);
+ #endregion
+ #region 澶т欢搴�
+ string WareCodeDJ = WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000");
+ List<Dt_InventoryInfo> inventoryInfosDJ = BaseDal.QueryData(x => x.WarehouseCode == WareCodeDJ);
+ object DJQty = new
+ {
+ name = WarehouseEnum.澶т欢搴�.ObjToString(),
+ count = inventoryInfosDJ.Sum(x => x.StockQuantity).ObjToInt()
+ };
+ lists.Add(DJQty);
+ #endregion
+ content.OK(data: lists);
}
- catch (Exception e)
+ catch (Exception ex)
{
- // 杩欓噷涓嶈鍐嶆姏寮傚父浜嗭紝閬垮厤姝诲惊鐜�
- Console.WriteLine("寮傚父鎺ュ彛鎺ㄩ�佸け璐ワ細" + e.Message);
+ content.Error(ex.Message);
}
+ return content;
}
+
+
+
}
}
--
Gitblit v1.9.3