From 37acb8358f5602a9013ee29c04a45e33483c2329 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 09 四月 2026 15:21:40 +0800
Subject: [PATCH] fix: 修复PLC字符串解析和任务处理逻辑
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs | 101 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 93 insertions(+), 8 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
index e65e3b2..b060189 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
@@ -1,11 +1,5 @@
锘縰sing SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using WIDESEAWCS_Common;
-using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
@@ -78,6 +72,96 @@
return inRouters.Concat(outRouters)
.Where(x => x.ChildPosiDeviceCode == deviceCode)
.ToList();
+ }
+
+ /// <summary>
+ /// 鍒ゆ柇涓ょ偣涔嬮棿鏄惁瀛樺湪璺敱锛堝叏绫诲瀷锛�
+ /// </summary>
+ public bool ExistsRouter(string startPosi, string endPosi)
+ {
+ // 浠庣紦瀛樿幏鍙栧叆鍙g被鍨嬪拰鍑哄彛绫诲瀷鐨勫叏閲忚矾鐢辨暟鎹苟鍚堝苟
+ List<Dt_Router> inRouters = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt());
+ List<Dt_Router> outRouters = GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt());
+ var allRouters = inRouters.Concat(outRouters).ToList();
+ // 鍦ㄥ唴瀛樹腑鏌ユ壘浠庤捣鐐瑰埌缁堢偣鐨勮矾鐢�
+ var routes = FindRoutesInMemory(startPosi, endPosi, allRouters, null);
+ return routes.Count > 0;
+ }
+
+ /// <summary>
+ /// 鍒ゆ柇涓ょ偣涔嬮棿鏄惁瀛樺湪鎸囧畾绫诲瀷鐨勮矾鐢�
+ /// </summary>
+ public bool ExistsRouter(string startPosi, string endPosi, int routeType)
+ {
+ // 浠庣紦瀛樿幏鍙栨寚瀹氱被鍨嬬殑鍏ㄩ噺璺敱鏁版嵁
+ List<Dt_Router> allRouters = GetAllRoutersFromCache(routeType);
+ // 鍦ㄥ唴瀛樹腑鏌ユ壘浠庤捣鐐瑰埌缁堢偣鐨勮矾鐢�
+ var routes = FindRoutesInMemory(startPosi, endPosi, allRouters, routeType);
+ return routes.Count > 0;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍏ㄩ噺璺敱鏁伴噺锛堝叆鍙�+鍑哄彛鍚堣锛�
+ /// </summary>
+ public int GetRouterCount()
+ {
+ // 鍒嗗埆鑾峰彇鍏ュ彛绫诲瀷鍜屽嚭鍙g被鍨嬬殑璺敱鏁伴噺骞剁浉鍔�
+ int inCount = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt()).Count;
+ int outCount = GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt()).Count;
+ return inCount + outCount;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎸囧畾绫诲瀷璺敱鏁伴噺
+ /// </summary>
+ public int GetRouterCount(int routeType)
+ {
+ // 鑾峰彇鎸囧畾绫诲瀷鐨勫叏閲忚矾鐢辨暟鎹苟杩斿洖鏁伴噺
+ return GetAllRoutersFromCache(routeType).Count;
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎鎸囧畾ID鐨勮矾鐢憋紝鍒犻櫎鍚庡悓姝ユ竻闄ゅ搴旂被鍨嬬殑缂撳瓨
+ /// </summary>
+ /// <param name="routerIds">寰呭垹闄ょ殑璺敱ID鍒楄〃</param>
+ /// <returns>杩斿洖澶勭悊缁撴灉</returns>
+ public WebResponseContent DeleteRouters(List<long> routerIds)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ if (routerIds == null || routerIds.Count == 0)
+ {
+ return content = WebResponseContent.Instance.Error("寰呭垹闄ょ殑璺敱ID鍒楄〃涓嶈兘涓虹┖");
+ }
+
+ // 鏌ヨ寰呭垹闄よ矾鐢辩殑绫诲瀷锛堢敤浜庡悗缁竻闄ょ紦瀛橈級
+ var routersToDelete = BaseDal.QueryData(x => routerIds.Contains(x.Id));
+ if (routersToDelete.Count == 0)
+ {
+ return content = WebResponseContent.Instance.Error("鏈壘鍒板緟鍒犻櫎鐨勮矾鐢�");
+ }
+
+ // 璁板綍娑夊強鐨勭被鍨嬶紙鍘婚噸锛�
+ var affectedTypes = routersToDelete.Select(x => x.InOutType).Distinct().ToList();
+
+ // 鎵ц鎵归噺鍒犻櫎
+ BaseDal.DeleteData(routersToDelete);
+
+ // 娓呴櫎鍙楀奖鍝嶇被鍨嬬殑缂撳瓨
+ foreach (var routeType in affectedTypes)
+ {
+ string cacheKey = $"Router:AllRouters:{(routeType == RouterInOutType.In.ObjToInt() ? "In" : "Out")}";
+ _cacheService.Remove(cacheKey);
+ }
+
+ content = WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ content = WebResponseContent.Instance.Error(ex.Message);
+ }
+ return content;
}
/// <summary>
@@ -443,11 +527,12 @@
_cacheService.TryAdd($"{RedisPrefix.System}:{RedisName.DevicePositions}:{deviceCode}", positions);
}
}
- else
+ else
positions = device;
// 杩斿洖浣嶇疆鍒楄〃
return positions;
}
+
/// <summary>
/// 鑾峰彇璺敱琛ㄤ腑鎵�鏈夊畬鏁寸殑璺敱淇℃伅(鍓嶇璋冪敤灞曠ず鏁版嵁)銆�
/// </summary>
@@ -652,4 +737,4 @@
return content;
}
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3