From 0705cb6170a9ba77ba48bbb6dcebb9cf3d73cbea Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 14 十月 2025 02:12:25 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs | 139 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 119 insertions(+), 20 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
index 43506f3..623df73 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
@@ -4,6 +4,7 @@
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using SqlSugar;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
@@ -419,36 +420,134 @@
webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=fbc3aaf4133ea650d8116fb86b3ebfd0c5e0d46775966ce87893a41886bdf9dc";
secret = "SECf221842b26356f22ccac84c4e60714e5287408ee8332a8f63503791382c3f5fb";
}
- HttpClient httpClient = new HttpClient();
- ///鑾峰彇鏃堕棿鎴�
- var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
- ///鐢熸垚绛惧悕
- var sign = GenerateSign(timestamp,secret);
- // 鏋勫缓璇锋眰URL
- var url = $"{webhookUrl.Split('?')[0]}?access_token={new Uri(webhookUrl).Query.Split('=')[1]}×tamp={timestamp}&sign={sign}";
- var requestBody = new
+ var warehouseIdToName = new Dictionary<int, string>
{
- msgtype = "text",
- text = new { content = "閽夐拤娑堟伅鎺ㄩ��" },
+ { 2, "娌瑰ⅷ浠�" },
+ { 3, "鏉挎潗浠�" },
+ { 4, "PP浠�" },
+ { 6, "娴嬭瘯鏋朵粨" },
+ { 11, "骞茶啘浠�" },
+ { 12, "闃荤剨浠�" }
};
- var jsonBody = JsonConvert.SerializeObject(requestBody);
- var content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
- // 鍙戦�丳OST璇锋眰
- var response = await httpClient.PostAsync(url, content);
- if (!response.IsSuccessStatusCode)
+ var currentTime = DateTime.Now;
+ var ninetyDaysAgo = currentTime.AddDays(-90);
+
+ var expirationLabel3Stocks = BaseDal.Db.Queryable<Dt_StockInfo>()
+ .Where(s => s.Expirationlabel == 3 && s.WarehouseId != 5)
+ .ToList();
+
+ var over90DaysStocks = BaseDal.Db.Queryable<Dt_StockInfo>()
+ .Where(s => s.ModifyDate <= ninetyDaysAgo && s.Expirationlabel != 3 && s.WarehouseId != 5)
+ .ToList();
+
+ if (!expirationLabel3Stocks.Any() && !over90DaysStocks.Any())
{
- // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
- var errorContent = await response.Content.ReadAsStringAsync();
- throw new Exception($"閽夐拤娑堟伅鍙戦�佸け璐ワ紝鐘舵�佺爜: {response.StatusCode}锛岄敊璇唴瀹�: {errorContent}");
+ return;
+ }
+
+ var expirationLabel3StockIds = expirationLabel3Stocks.Select(s => s.Id).ToList();
+ var over90DaysStockIds = over90DaysStocks.Select(s => s.Id).ToList();
+ var expirationLabel3Details = expirationLabel3StockIds.Any()
+ ? BaseDal.Db.Queryable<Dt_StockInfoDetail>()
+ .Where(d => expirationLabel3StockIds.Contains(d.StockId))
+ .ToList()
+ : new List<Dt_StockInfoDetail>();
+
+ var over90DaysDetails = over90DaysStockIds.Any()
+ ? BaseDal.Db.Queryable<Dt_StockInfoDetail>()
+ .Where(d => over90DaysStockIds.Contains(d.StockId))
+ .ToList()
+ : new List<Dt_StockInfoDetail>();
+
+ var stockIdToWarehouseId = expirationLabel3Stocks
+ .Concat(over90DaysStocks)
+ .ToDictionary(s => s.Id, s => s.WarehouseId);
+
+ var expirationLabel3Groups = expirationLabel3Details
+ .GroupBy(d => stockIdToWarehouseId[d.StockId])
+ .ToDictionary(g => g.Key, g => g.Select(d => new
+ {
+ d.MaterielCode,
+ d.BatchNo
+ }).ToList());
+
+ var over90DaysGroups = over90DaysDetails
+ .GroupBy(d => stockIdToWarehouseId[d.StockId])
+ .ToDictionary(g => g.Key, g => g.Select(d => new
+ {
+ d.MaterielCode,
+ d.BatchNo
+ }).ToList());
+
+ var allWarehouseIds = expirationLabel3Groups.Keys
+ .Union(over90DaysGroups.Keys)
+ .ToList();
+
+ using (HttpClient httpClient = new HttpClient())
+ {
+ foreach (var warehouseId in allWarehouseIds)
+ {
+ // 9.1 澶勭悊浠撳簱鍚嶇О鏄剧ず锛氫紭鍏堢敤鏄犲皠鍚嶇О锛屾棤鏄犲皠鏃舵樉绀哄師濮婭D
+ var warehouseName = warehouseIdToName.TryGetValue(warehouseId, out var name)
+ ? name
+ : $"浠撳簱{warehouseId}";
+
+ var messageParts = new List<string>
+ {
+ $"銆恵warehouseName}銆戠墿鏂欐彁閱�"
+ };
+
+ // 娣诲姞杩囨湡鐗╂枡淇℃伅
+ if (expirationLabel3Groups.TryGetValue(warehouseId, out var label3Materials) && label3Materials.Any())
+ {
+ var label3Details = label3Materials
+ .Select(m => $"鈥� 鐗╂枡缂栫爜锛歿m.MaterielCode} | 鎵规鍙凤細{m.BatchNo}")
+ .Aggregate((current, next) => $"{current}\n{next}");
+ messageParts.Add($"涓�銆佽繃鏈熺墿鏂橽n{label3Details}");
+ }
+
+ // 娣诲姞瓒呰繃90澶╂湭浣跨敤鐗╂枡淇℃伅
+ if (over90DaysGroups.TryGetValue(warehouseId, out var over90Materials) && over90Materials.Any())
+ {
+ var over90Details = over90Materials
+ .Select(m => $"鈥� 鐗╂枡缂栫爜锛歿m.MaterielCode} | 鎵规鍙凤細{m.BatchNo}")
+ .Aggregate((current, next) => $"{current}\n{next}");
+ messageParts.Add($"浜屻�佽秴杩�90澶╂湭浣跨敤鐗╂枡\n{over90Details}");
+ }
+
+ var messageContent = string.Join("\n\n", messageParts);
+
+ var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
+ var sign = GenerateSign(timestamp, secret);
+
+ var url = $"{webhookUrl.Split('?')[0]}?access_token={new Uri(webhookUrl).Query.Split('=')[1]}×tamp={timestamp}&sign={sign}";
+
+ // 鏋勫缓璇锋眰浣擄紙绗﹀悎閽夐拤text绫诲瀷娑堟伅鏍煎紡锛�
+ var requestBody = new
+ {
+ msgtype = "text",
+ text = new { content = messageContent }
+ };
+ var jsonBody = JsonConvert.SerializeObject(requestBody);
+ var content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
+
+ var response = await httpClient.PostAsync(url, content);
+ if (!response.IsSuccessStatusCode)
+ {
+ var errorContent = await response.Content.ReadAsStringAsync();
+ throw new Exception($"銆恵warehouseName}銆戞秷鎭彂閫佸け璐ワ紝鐘舵�佺爜锛歿response.StatusCode}锛岄敊璇俊鎭細{errorContent}");
+ }
+ }
}
}
- catch(Exception ex)
+ catch (Exception ex)
{
- throw new Exception($"閽夐拤娑堟伅鍙戦�佸け璐ワ紝閿欒鍐呭: {ex.Message}");
+ throw new Exception($"閽夐拤娑堟伅鎺ㄩ�佹暣浣撳け璐ワ紝閿欒璇︽儏锛歿ex.Message}", ex);
}
}
+
/// <summary>
/// 鐢熸垚鍔犵绛惧悕
/// </summary>
--
Gitblit v1.9.3