From 30c540d35e476f9dc1c7149a4e52088c7f375f60 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期二, 07 四月 2026 08:52:59 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java
index 417a8b3..a12db5e 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/RouteController.java
@@ -106,6 +106,7 @@
     @PreAuthorize("hasAuthority('manager:route:update')")
     @OperationLog("Update Route")
     @PostMapping("/route/update")
+    @Transactional
     public R update(@RequestBody Route route) {
         Route origin = routeService.getById(route.getId());
         if (origin == null) {
@@ -131,6 +132,14 @@
         if (!routeService.updateById(route)) {
             return R.error("Update Fail");
         }
+        Code startCode = codeService.getCacheById(route.getStartCode());
+        Code endCode = codeService.getCacheById(route.getEndCode());
+        if (startCode != null && endCode != null) {
+            codeGapService.createCodeGapByCode(startCode, endCode, getLoginUserId());
+        }
+        if (!isSameCode(origin, route)) {
+            codeGapService.removeCodeGapIfUnused(origin.getStartCode(), origin.getEndCode());
+        }
         List<Long> affectedCodeIds = new ArrayList<>();
         if (origin.getStartCode() != null) {
             affectedCodeIds.add(origin.getStartCode());
@@ -144,9 +153,6 @@
         if (route.getEndCode() != null) {
             affectedCodeIds.add(route.getEndCode());
         }
-        Code startCode = codeService.getCacheById(route.getStartCode());
-        Code endCode = codeService.getCacheById(route.getEndCode());
-        codeGapService.createCodeGapByCode(startCode, endCode, getLoginUserId());
         codeService.refreshCornerByCodeIds(affectedCodeIds);
         return R.ok("Update Success").add(route);
     }
@@ -154,6 +160,7 @@
     @PreAuthorize("hasAuthority('manager:route:remove')")
     @OperationLog("Delete Route")
     @PostMapping("/route/remove/{ids}")
+    @Transactional
     public R remove(@PathVariable Long[] ids) {
         List<Route> routes = routeService.listByIds(Arrays.asList(ids));
         List<Long> affectedCodeIds = new ArrayList<>();
@@ -167,6 +174,9 @@
         }
         if (!routeService.removeByIds(Arrays.asList(ids))) {
             return R.error("Delete Fail");
+        }
+        for (Route route : routes) {
+            codeGapService.removeCodeGapIfUnused(route.getStartCode(), route.getEndCode());
         }
         codeService.refreshCornerByCodeIds(affectedCodeIds);
         return R.ok("Delete Success").add(ids);
@@ -222,4 +232,11 @@
         return R.ok();
     }
 
+    private boolean isSameCode(Route route0, Route route1) {
+        return Objects.equals(route0.getStartCode(), route1.getStartCode())
+                && Objects.equals(route0.getEndCode(), route1.getEndCode())
+                || Objects.equals(route0.getStartCode(), route1.getEndCode())
+                && Objects.equals(route0.getEndCode(), route1.getStartCode());
+    }
+
 }

--
Gitblit v1.9.1