| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # RouterService é»è¾ä¿®å¤ä¸æ°æ¹æ³è®¾è®¡ |
| | | |
| | | > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:writing-plans to create implementation plan. |
| | | |
| | | **Goal:** ä¿®å¤ `RouterService` ä¸å·²åç°çé»è¾éè¯¯ï¼æ°å¢ 5 ä¸ªè·¯ç±æ¥è¯¢/ç®¡çæ¹æ³ï¼å¹¶æ´æ°æ¥å£å±ã |
| | | |
| | | **Architecture:** å¨ç°æ `RouterService` åºç¡ä¸æ°å¢ç¼åç®¡çæ¹æ³åè·¯ç±æ¥è¯¢å¢å¼ºæ¹æ³ï¼ä¿æç°æç¼åæ¶æä¸åã |
| | | |
| | | **Tech Stack:** ASP.NET Core 6.0, HybridCacheService, SqlSugar ORM |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãç°æé»è¾é®é¢ä¿®å¤ |
| | | |
| | | ### 1.1 AddRouters ç¼åä¸è´æ§ |
| | | |
| | | **é®é¢**ï¼`BaseDal.AddData` å `_cacheService.AddOrUpdate` ä¹é´æ ä¿æ¤ã妿 `AddOrUpdate` æå¼å¸¸ï¼DB å·²åå
¥ä½ç¼åæªæ´æ°ï¼ä¸æ¬¡æ¥è¯¢è¯»å°æ§æ°æ®ã |
| | | |
| | | **ä¿®å¤**ï¼ä½¿ç¨ try-finally é»è¾ï¼ä¿è¯ DB åå
¥ååæ´æ°ç¼åã妿ç¼åæ´æ°å¤±è´¥ï¼ä¸æ¬¡æ¥è¯¢ä¼ä» DB èªå¨é建ç¼åï¼`GetOrAdd` æå è½½ä¿è¯ï¼ã |
| | | |
| | | ### 1.2 QueryAllPositions 空 catch å |
| | | |
| | | **é®é¢**ï¼catch åä»
ææ³¨éï¼æ å®é
æ¥å¿è®°å½ãå¼å¸¸è¢«éé»åæï¼è°ç¨æ¹æ æ³åºå"æ²¡ææ°æ®"å"æ¥è¯¢å¤±è´¥"ã |
| | | |
| | | **ä¿®å¤**ï¼å¢å `ConsoleHelper.WriteErrorLine` è®°å½é误ã |
| | | |
| | | ### 1.3 æ¥å£å± public 修饰符 |
| | | |
| | | **é®é¢**ï¼`IRouterService` ä¸çæ¹æ³ç¾åæå¤ä½ç `public` 修饰符ã |
| | | |
| | | **ä¿®å¤**ï¼ç§»é¤æ¥å£æ¹æ³ä¸ç `public` 修饰符ã |
| | | |
| | | --- |
| | | |
| | | ## äºãæ°å¢æ¹æ³è®¾è®¡ |
| | | |
| | | ### 2.1 ClearRouterCache() |
| | | |
| | | æ¸
é¤ `Router:AllRouters:In` å `Router:AllRouters:Out` 两个ç¼åé®ã |
| | | |
| | | **ç¾å**ï¼`void ClearRouterCache()` |
| | | **å®ç°**ï¼ |
| | | ```csharp |
| | | _cacheService.Remove("Router:AllRouters:In"); |
| | | _cacheService.Remove("Router:AllRouters:Out"); |
| | | ``` |
| | | |
| | | ### 2.2 QueryRoutersByDeviceCode(string deviceCode) |
| | | |
| | | æ¥è¯¢ç»è¿æå®è®¾å¤çææè·¯ç±ï¼åå¹¶å
¥å£/åºå£ç±»åï¼ã |
| | | |
| | | **ç¾å**ï¼`List<Dt_Router> QueryRoutersByDeviceCode(string deviceCode)` |
| | | **é»è¾**ï¼ä»ç¼åå è½½ In + Out è·¯ç±ï¼çé `ChildPosiDeviceCode == deviceCode` çè·¯ç±ã |
| | | **ç¼å**ï¼ä¸ç¬å ç¼åï¼ç´æ¥ä½¿ç¨ç°æ `GetAllRoutersFromCache` è·åæ°æ®ã |
| | | |
| | | ### 2.3 ExistsRouterï¼ä¸¤ä¸ªéè½½ï¼ |
| | | |
| | | 夿䏤ç¹ä¹é´æ¯å¦åå¨è·¯ç±ã |
| | | |
| | | **ç¾å**ï¼ |
| | | - `bool ExistsRouter(string startPosi, string endPosi)` â å
¨ç±»å |
| | | - `bool ExistsRouter(string startPosi, string endPosi, int routeType)` â æå®ç±»å |
| | | |
| | | **é»è¾**ï¼è°ç¨ `FindRoutesInMemory`ï¼è¿å `routers.Count > 0`ã |
| | | |
| | | ### 2.4 GetRouterCountï¼ä¸¤ä¸ªéè½½ï¼ |
| | | |
| | | è¿åè·¯ç±æ°éã |
| | | |
| | | **ç¾å**ï¼ |
| | | - `int GetRouterCount()` â åå¹¶ In + Out æ»æ° |
| | | - `int GetRouterCount(int routeType)` â æå®ç±»åæ°é |
| | | |
| | | **å®ç°**ï¼ä»ç¼åè·åå `.Count`ã |
| | | |
| | | ### 2.5 DeleteRouters(List<long> routerIds) |
| | | |
| | | æ¹éå é¤æå® ID çè·¯ç±ï¼å é¤å忥æ¸
é¤å¯¹åºç±»åç¼åã |
| | | |
| | | **ç¾å**ï¼`WebResponseContent DeleteRouters(List<long> routerIds)` |
| | | **é»è¾**ï¼ |
| | | 1. æ¥åºå¾
å é¤è·¯ç±åèªç `InOutType` |
| | | 2. `BaseDal.DeleteData` æ¹éå é¤ |
| | | 3. æ ¹æ®æ¶åç `InOutType` æ¸
é¤å¯¹åºç¼åé® |
| | | 4. è¿å `WebResponseContent` |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãæ¶åæä»¶ |
| | | |
| | | | æä»¶ | æ¹å¨ | |
| | | |------|------| |
| | | | `WIDESEAWCS_QuartzJob/Service/RouterService.cs` | ä¿®å¤é»è¾ + æ°å¢æ¹æ³å®ç° | |
| | | | `WIDESEAWCS_QuartzJob/Service/IRouterService.cs` | æ¥å£æ°å¢æ¹æ³ç¾åï¼å»æå¤ä½ `public` | |
| | | |
| | | --- |
| | | |
| | | ## åãç¼å鮿±æ» |
| | | |
| | | | é® | ç¨é | |
| | | |----|------| |
| | | | `Router:AllRouters:In` | å
¥å£ç±»åå
¨éè·¯ç± | |
| | | | `Router:AllRouters:Out` | åºå£ç±»åå
¨éè·¯ç± | |
| | | | `System:DevicePositions:{deviceCode}` | `QueryAllPositions` å·²æç¼åï¼ä¸å¨æ¬æ¹æ¡èå´å
| |