Junjie
1 天以前 25971ce968a1a25273e90838aa18fa77a0e8b622
#地图保存优化
3个文件已修改
75 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/BasMapService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasMapEditorServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasMapServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasMapService.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.entity.BasMap;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -23,4 +24,6 @@
    BasMap selectPayloadById(Integer id);//按id查询地图大字段
    void saveMapPayloadInBatches(Integer lev, String data, String originData, Date updateTime);//分批保存地图大字段
}
src/main/java/com/zy/asrs/service/impl/BasMapEditorServiceImpl.java
@@ -133,19 +133,8 @@
        }
        String dataJson = JSON.toJSONString(storedData);
        String editorJson = JSON.toJSONString(editorDoc);
        BasMap basMap = basMapService.getOne(new QueryWrapper<BasMap>().eq("lev", lev));
        Date now = new Date();
        if (basMap == null) {
            basMap = new BasMap();
            basMap.setCreateTime(now);
        } else {
            basMap.setLastData(basMap.getData());
        }
        basMap.setLev(lev);
        basMap.setData(dataJson);
        basMap.setOriginData(editorJson);
        basMap.setUpdateTime(now);
        basMapService.saveOrUpdate(basMap);
        basMapService.saveMapPayloadInBatches(lev, dataJson, editorJson, now);
    }
    private BasMapEditorDoc parseEditorDocJson(Integer lev, String json) {
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("请输入有效楼层");