From 518e2d596cf846172d764c6d3f05316cb8367860 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 27 三月 2026 14:28:02 +0800
Subject: [PATCH] feat(RouterService): 新增 ClearRouterCache 清除路由缓存方法
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs | 81 ++++++++++++++++++++++++++--------------
1 files changed, 53 insertions(+), 28 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
index dc1f9c8..5ea6ce5 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
@@ -56,6 +56,15 @@
}
/// <summary>
+ /// 娓呴櫎鎵�鏈夎矾鐢辩紦瀛橈紙鍏ュ彛鍜屽嚭鍙g被鍨嬶級
+ /// </summary>
+ public void ClearRouterCache()
+ {
+ _cacheService.Remove("Router:AllRouters:In");
+ _cacheService.Remove("Router:AllRouters:Out");
+ }
+
+ /// <summary>
/// 鏍规嵁璧风偣/褰撳墠浣嶇疆銆佺粓鐐硅幏鍙栦笅涓�涓瓙鑺傜偣銆�
/// </summary>
/// <param name="startPosi">璧风偣/褰撳墠浣嶇疆銆�</param>
@@ -208,9 +217,11 @@
{
try
{
- // 鏌ヨ浠庤捣鐐瑰嚭鍙戠殑鎵�鏈夎矾鐢�
- List<Dt_Router> routes = BaseDal.QueryData(x => x.StartPosi == startPosi,
- new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } });
+ // 浠庣紦瀛樿幏鍙栧叆鍙g被鍨嬬殑鎵�鏈夎矾鐢辨暟鎹紝鍩轰簬璧风偣绛涢�夊悗鎸塈sEnd闄嶅簭鎺掑簭
+ List<Dt_Router> routes = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt())
+ .Where(x => x.StartPosi == startPosi)
+ .ToList();
+ routes = routes.OrderByDescending(x => x.IsEnd).ToList();
// 杩斿洖绗竴涓矾鐢�
return routes.FirstOrDefault();
@@ -232,9 +243,11 @@
{
try
{
- // 鏌ヨ浠庤捣鐐瑰嚭鍙戠殑鎸囧畾绫诲瀷璺敱
- List<Dt_Router> routes = BaseDal.QueryData(x => x.StartPosi == startPosi && x.InOutType == routeType,
- new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } });
+ // 浠庣紦瀛樿幏鍙栨寚瀹氱被鍨嬬殑鎵�鏈夎矾鐢辨暟鎹紝绛涢�夎捣鐐瑰悗鎸塈sEnd闄嶅簭鎺掑垪
+ List<Dt_Router> routes = GetAllRoutersFromCache(routeType)
+ .Where(x => x.StartPosi == startPosi)
+ .ToList();
+ routes = routes.OrderByDescending(x => x.IsEnd).ToList();
// 杩斿洖绗竴涓矾鐢�
return routes.FirstOrDefault();
@@ -257,9 +270,11 @@
{
try
{
- // 鏌ヨ浠庤捣鐐瑰嚭鍙戠殑鎸囧畾绫诲瀷璺敱
- List<Dt_Router> routes = BaseDal.QueryData(x => x.StartPosi == startPosi && x.InOutType == routeType,
- new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } });
+ // 浠庣紦瀛樿幏鍙栨寚瀹氱被鍨嬬殑鎵�鏈夎矾鐢辨暟鎹紝绛涢�夎捣鐐瑰悗鎸塈sEnd闄嶅簭鎺掑垪
+ List<Dt_Router> routes = GetAllRoutersFromCache(routeType)
+ .Where(x => x.StartPosi == startPosi)
+ .ToList();
+ routes = routes.OrderByDescending(x => x.IsEnd).ToList();
if (routes.Count == 0)
return null;
@@ -269,8 +284,8 @@
if (directRoute != null)
return directRoute;
- // 濡傛灉娌℃湁鐩存帴璺敱锛屼娇鐢ㄦ煡鎵剧畻娉曟壘鍒版湞鍚戠粓鐐圭殑璺敱
- List<Dt_Router> allRouters = BaseDal.QueryData(x => x.InOutType == routeType);
+ // 濡傛灉娌℃湁鐩存帴璺敱锛屼娇鐢ㄧ紦瀛樹腑鐨勫叏閲忚矾鐢辨暟鎹煡鎵炬湞鍚戠粓鐐圭殑璺敱
+ List<Dt_Router> allRouters = GetAllRoutersFromCache(routeType);
foreach (var route in routes)
{
// 妫�鏌ヤ粠杩欎釜璺敱鐨勪笅涓�涓綅缃槸鍚﹁兘鍒拌揪缁堢偣
@@ -299,9 +314,13 @@
{
try
{
- // 鏌ヨ浠庤捣鐐瑰嚭鍙戠殑鎸囧畾绫诲瀷璺敱
- List<Dt_Router> routes = BaseDal.QueryData(x => x.StartPosi == startPosi,
- new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } });
+ // 浠庣紦瀛樿幏鍙栧叆鍙e拰鍑哄彛绫诲瀷鐨勬墍鏈夎矾鐢辨暟鎹紝绛涢�夎捣鐐瑰悗鎸塈sEnd闄嶅簭鎺掑簭
+ List<Dt_Router> inRoutes = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt());
+ List<Dt_Router> outRoutes = GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt());
+ List<Dt_Router> routes = inRoutes.Concat(outRoutes)
+ .Where(x => x.StartPosi == startPosi)
+ .ToList();
+ routes = routes.OrderByDescending(x => x.IsEnd).ToList();
if (routes.Count == 0)
return null;
@@ -310,16 +329,6 @@
Dt_Router directRoute = routes.FirstOrDefault(x => x.NextPosi == endPosi || x.ChildPosi == endPosi);
if (directRoute != null)
return directRoute;
-
- //// 濡傛灉娌℃湁鐩存帴璺敱锛屼娇鐢ㄦ煡鎵剧畻娉曟壘鍒版湞鍚戠粓鐐圭殑璺敱
- //List<Dt_Router> allRouters = BaseDal.QueryData(x => x.InOutType == routeType);
- //foreach (var route in routes)
- //{
- // // 妫�鏌ヤ粠杩欎釜璺敱鐨勪笅涓�涓綅缃槸鍚﹁兘鍒拌揪缁堢偣
- // var pathToEnd = FindRoutesInMemory(route.NextPosi, endPosi, allRouters, routeType);
- // if (pathToEnd.Count > 0)
- // return route;
- //}
// 濡傛灉閮戒笉鑳藉埌杈剧粓鐐癸紝杩斿洖绗竴涓矾鐢�
return routes.FirstOrDefault();
@@ -409,9 +418,9 @@
// 杩斿洖鍘婚噸鍚庣殑浣嶇疆鍒楄〃
return positions.GroupBy(x => x).Select(x => x.Key).ToList();
}
- catch
+ catch (Exception ex)
{
-
+ ConsoleHelper.WriteErrorLine($"RouterService.QueryAllPositions 鏌ヨ澶辫触: {ex.Message}");
}
finally
{
@@ -430,8 +439,10 @@
public List<object> GetAllWholeRouters()
{
List<object> data = new List<object>();
- // 鏌ヨ鎵�鏈夎矾鐢�
- List<Dt_Router> allRouters = BaseDal.QueryData(x => true);
+ // 浠庣紦瀛樺姞杞藉叆鍙g被鍨嬪拰鍑哄彛绫诲瀷鐨勫叏閲忚矾鐢辨暟鎹苟鍚堝苟
+ List<Dt_Router> inRouters = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt());
+ List<Dt_Router> outRouters = GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt());
+ List<Dt_Router> allRouters = inRouters.Concat(outRouters).ToList();
// 鏌ヨ鎵�鏈夌粨鏉熺殑璺敱锛屽苟鎸塈d鎺掑簭
List<Dt_Router> dt_Routers = allRouters.Where(x => x.IsEnd).OrderBy(x => x.Id).ToList();
@@ -602,6 +613,20 @@
// 娣诲姞鏂扮殑璺敱淇℃伅
BaseDal.AddData(routers);
+
+ // 閲嶆柊鏌ヨ鍏ㄩ噺璺敱锛堟鏃舵墠鍖呭惈鏂板鐨勮矾鐢憋級锛屽啀鍐欏叆缂撳瓨
+ List<Dt_Router> updatedRouters = BaseDal.QueryData(x => x.InOutType == routerType);
+ string cacheKey = $"Router:AllRouters:{(routerType == RouterInOutType.In.ObjToInt() ? "In" : "Out")}";
+
+ try
+ {
+ _cacheService.AddOrUpdate(cacheKey, updatedRouters);
+ }
+ catch
+ {
+ // 缂撳瓨鏇存柊澶辫触鏃堕潤榛樺拷鐣ワ紝涓嬫鏌ヨ浼氫粠DB鑷姩閲嶅缓缂撳瓨
+ }
+
content = WebResponseContent.Instance.OK();
}
catch (Exception ex)
--
Gitblit v1.9.3