From 920bb5635c88c2f2f9a21134c81ebbc344539987 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期二, 16 十二月 2025 11:07:06 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java       |    9 +++++++++
 zy-acs-flow/src/map/http.js                                                               |    4 ++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AreaService.java          |    2 ++
 zy-acs-flow/src/map/tool.js                                                               |   11 +++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java     |    4 ++--
 zy-acs-flow/src/map/areaSettings/index.jsx                                                |    3 +++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AreaServiceImpl.java |   12 ++++++++++++
 7 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/zy-acs-flow/src/map/areaSettings/index.jsx b/zy-acs-flow/src/map/areaSettings/index.jsx
index b15b961..38af2ea 100644
--- a/zy-acs-flow/src/map/areaSettings/index.jsx
+++ b/zy-acs-flow/src/map/areaSettings/index.jsx
@@ -153,6 +153,9 @@
         }
         const success = await removeArea(id);
         if (success) {
+            if (sprite) {
+                Tool.removeAreaSprite(sprite);
+            }
             onCancel?.();
         }
     };
diff --git a/zy-acs-flow/src/map/http.js b/zy-acs-flow/src/map/http.js
index 934f21e..4754b48 100644
--- a/zy-acs-flow/src/map/http.js
+++ b/zy-acs-flow/src/map/http.js
@@ -447,9 +447,9 @@
     return null;
 };
 
-export const removeArea = async (areaId) => {
+export const removeArea = async (id) => {
     try {
-        const res = await request.post('/map/area/remove', { areaId });
+        const res = await request.post('/map/area/remove', { id });
         const { code, msg } = res.data;
         if (code === 200) {
             notify.success(msg);
diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 87f6c59..791f5c1 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -934,6 +934,17 @@
     }
 };
 
+export const removeAreaSprite = (sprite) => {
+    if (!sprite || sprite?.data?.type !== DEVICE_TYPE.AREA) {
+        return;
+    }
+    const parent = sprite.parent || mapContainer;
+    if (parent) {
+        parent.removeChild(sprite);
+    }
+    sprite.destroy({ children: true, texture: false, baseTexture: false });
+};
+
 export const loadAreas = (curZone, setCurSprite) => {
     if (!mapContainer) return;
     clearAreas();
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java
index b29eb03..b8d9e60 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java
@@ -138,6 +138,15 @@
         return codeList;
     }
 
+    // reset and set new area
+    public Boolean removeArea(Long areaId) {
+        if (null == areaId) { return false; }
+        List<String> codeList = AREA_CODE.get(areaId);
+        AREA_CODE.get(areaId).clear();
+        AREA_CODE.remove(areaId);
+        return Boolean.TRUE;
+    }
+
     public List<String> findCodesInArea(MapPointDto start, MapPointDto end) {
         double minX = Math.min(start.getX(), end.getX());
         double maxX = Math.max(start.getX(), end.getX());
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java
index 570f825..babdeee 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/MapController.java
@@ -445,8 +445,7 @@
     @GetMapping("/area/get")
     public R areaGet(@RequestParam Long areaId) {
         Area area = areaService.getById(areaId);
-        MapAreaResult areaResult = new MapAreaResult();
-        return R.ok().add(areaResult.sync(area));
+        return R.ok().add(new MapAreaResult().sync(area));
     }
 
     @PreAuthorize("hasAuthority('manager:loc:update')")
@@ -464,6 +463,7 @@
     @PreAuthorize("hasAuthority('manager:loc:remove')")
     @PostMapping("/area/remove")
     public R areaRemove(@RequestBody MapAreaParam param) {
+        areaService.removeMapArea(param.getId(), getLoginUserId());
         return R.ok();
     }
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AreaService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AreaService.java
index 00f266c..b8a0bd2 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AreaService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/AreaService.java
@@ -11,4 +11,6 @@
 
     MapAreaResult modifyMapArea(MapAreaParam param, Long loginUserId);
 
+    void removeMapArea(Long id, Long loginUserId);
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AreaServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AreaServiceImpl.java
index 0ce1717..93ad8dd 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AreaServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AreaServiceImpl.java
@@ -97,6 +97,8 @@
         }
 
         if (needModify) {
+            area.setUpdateTime(new Date());
+            area.setUpdateBy(loginUserId);
             if (!this.updateById(area)) {
                 throw new RuntimeException("failed to update Area");
             }
@@ -105,4 +107,14 @@
         return new MapAreaResult().sync(area);
     }
 
+    @Override
+    public void removeMapArea(Long areaId, Long loginUserId) {
+        // area - agv
+        areaAgvService.remove(new LambdaQueryWrapper<AreaAgv>().eq(AreaAgv::getAreaId, areaId));
+        // cache
+        areaGovernService.removeArea(areaId);
+        // db
+        this.removeById(areaId);
+    }
+
 }

--
Gitblit v1.9.1