From 25971ce968a1a25273e90838aa18fa77a0e8b622 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 06 五月 2026 16:20:17 +0800
Subject: [PATCH] #地图保存优化

---
 src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java
index d8d8e92..1e3b7b6 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java
@@ -65,6 +65,65 @@
 
     @Override
     @Transactional
+    public void saveMapPayloadInBatches(Integer lev, String data, String originData, Date updateTime) {
+        if (lev == null || lev <= 0) {
+            throw new CoolException("妤煎眰涓嶈兘涓虹┖");
+        }
+        Date now = updateTime == null ? new Date() : updateTime;
+        BasMap basMap = this.getOne(new QueryWrapper<BasMap>().select("id", "data").eq("lev", lev));
+        boolean existingMap = basMap != null;
+        if (basMap == null) {
+            basMap = insertLightMap(lev, now);
+        }
+
+        if (existingMap) {
+            updateLastDataOnly(basMap.getId(), basMap.getData());
+        }
+        updateDataOnly(basMap.getId(), data, now);
+        updateOriginDataOnly(basMap.getId(), originData);
+    }
+
+    private BasMap insertLightMap(Integer lev, Date now) {
+        BasMap insertMap = new BasMap();
+        insertMap.setLev(lev);
+        insertMap.setCreateTime(now);
+        insertMap.setUpdateTime(now);
+        if (!this.save(insertMap)) {
+            throw new CoolException("鍦板浘鍩虹淇℃伅淇濆瓨澶辫触");
+        }
+        return insertMap;
+    }
+
+    private void updateLastDataOnly(Integer id, String lastData) {
+        UpdateWrapper<BasMap> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", id)
+                .set("last_data", lastData);
+        if (!this.update(updateWrapper)) {
+            throw new CoolException("鍦板浘鍘嗗彶鏁版嵁淇濆瓨澶辫触");
+        }
+    }
+
+    private void updateDataOnly(Integer id, String data, Date updateTime) {
+        UpdateWrapper<BasMap> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", id)
+                .set("data", data)
+                .set("update_time", updateTime);
+        if (!this.update(updateWrapper)) {
+            throw new CoolException("鍦板浘杩愯鏁版嵁淇濆瓨澶辫触");
+        }
+    }
+
+    private void updateOriginDataOnly(Integer id, String originData) {
+        UpdateWrapper<BasMap> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", id)
+                .set("origin_data", originData);
+        if (!this.update(updateWrapper)) {
+            throw new CoolException("鍦板浘缂栬緫鏁版嵁淇濆瓨澶辫触");
+        }
+    }
+
+    @Override
+    @Transactional
     public int syncLocMastByMap(Integer lev) {
         if (lev == null || lev <= 0) {
             throw new CoolException("璇疯緭鍏ユ湁鏁堟ゼ灞�");

--
Gitblit v1.9.1