row : rows) {
+ StringBuilder columns = new StringBuilder();
+ StringBuilder values = new StringBuilder();
+
+ row.forEach((key, value) -> {
+ columns.append("`").append(key).append("`");
+ switch (value) {
+ case String s ->
+ // 对字符串进行转义
+ values.append(escapeSql(s));
+ case null -> values.append("NULL");
+ case Number ignored -> values.append(value); // 数字不需要加引号
+ default ->
+ // 其他类型统一转为字符串处理
+ values.append(escapeSql(value.toString()));
+ }
+
+ if (!key.equals(row.keySet().toArray()[row.size() - 1])) {
+ values.append(", ");
+ columns.append(", ");
+ }
+ });
+
+ inserts.add("INSERT INTO `" + table + "` (" + columns + ") VALUES (" + values + ");");
+ }
+
+ inserts.add("\n"); // 每个表之间空一行
+ return inserts;
+ }
+
+ public String escapeSql(String value) {
+ if (value == null) {
+ return "NULL";
+ }
+
+ int len = value.length();
+ StringBuilder out = new StringBuilder(len + 16);
+
+ for (int i = 0; i < len; i++) {
+ char c = value.charAt(i);
+ switch (c) {
+ case '\'':
+ out.append("''");
+ break;
+ case '\\':
+ out.append("\\\\");
+ break;
+ case '\0':
+ out.append("\\0");
+ break;
+ case '\n':
+ out.append("\\n");
+ break;
+ case '\r':
+ out.append("\\r");
+ break;
+ case '\t':
+ out.append("\\t");
+ break;
+ case '\b':
+ out.append("\\b");
+ break;
+ case '\u001A': // Ctrl+Z
+ out.append("\\Z");
+ break;
+ case '"':
+ out.append("\\\"");
+ break;
+ case '\u001B':
+ out.append("\\e");
+ break;
+ default:
+ out.append(c);
+ }
+ }
+
+ return "'" + out.toString() + "'";
+ }
+
+}
diff --git a/core/core-backend/src/main/java/io/gisbi/application/appcode/utils/ZipUtils.java b/core/core-backend/src/main/java/io/gisbi/application/appcode/utils/ZipUtils.java
new file mode 100644
index 0000000..7e4fd98
--- /dev/null
+++ b/core/core-backend/src/main/java/io/gisbi/application/appcode/utils/ZipUtils.java
@@ -0,0 +1,70 @@
+package io.gisbi.application.appcode.utils;
+
+import org.springframework.util.FileCopyUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+public class ZipUtils {
+
+ public static void unzip(File zipFile, File outputFolder) throws IOException {
+ try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) {
+ ZipEntry entry;
+ while ((entry = zis.getNextEntry()) != null) {
+ File file = new File(outputFolder, entry.getName());
+ if (entry.isDirectory()) {
+ Files.createDirectories(file.toPath());
+ } else {
+ Files.createDirectories(file.getParentFile().toPath());
+ FileCopyUtils.copy(zis, new FileOutputStream(file));
+ }
+ zis.closeEntry();
+ }
+ }
+ }
+
+ public static void zipFolder(File folder, File zipFile) throws IOException {
+ try (
+ FileOutputStream fos = new FileOutputStream(zipFile);
+ ZipOutputStream zos = new ZipOutputStream(fos)
+ ) {
+ zipFile(folder, folder.getName(), zos);
+ }
+ }
+
+ private static void zipFile(File fileToZip, String fileName, ZipOutputStream zos) throws IOException {
+ if (fileToZip.isDirectory()) {
+ if (fileName.endsWith("/")) {
+ zos.putNextEntry(new ZipEntry(fileName));
+ zos.closeEntry();
+ } else {
+ zos.putNextEntry(new ZipEntry(fileName + "/"));
+ zos.closeEntry();
+ }
+
+ File[] children = fileToZip.listFiles();
+ if (children != null) {
+ for (File child : children) {
+ zipFile(child, fileName + "/" + child.getName(), zos);
+ }
+ }
+ return;
+ }
+
+ try (FileInputStream fis = new FileInputStream(fileToZip)) {
+ zos.putNextEntry(new ZipEntry(fileName));
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = fis.read(buffer)) > 0) {
+ zos.write(buffer, 0, length);
+ }
+ zos.closeEntry();
+ }
+ }
+}
diff --git a/core/core-backend/src/main/java/io/gisbi/chart/dao/auto/mapper/CoreChartViewMapper.java b/core/core-backend/src/main/java/io/gisbi/chart/dao/auto/mapper/CoreChartViewMapper.java
index 8198e6c..65515c8 100644
--- a/core/core-backend/src/main/java/io/gisbi/chart/dao/auto/mapper/CoreChartViewMapper.java
+++ b/core/core-backend/src/main/java/io/gisbi/chart/dao/auto/mapper/CoreChartViewMapper.java
@@ -3,6 +3,10 @@ package io.gisbi.chart.dao.auto.mapper;
import io.gisbi.chart.dao.auto.entity.CoreChartView;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
/**
*
@@ -15,4 +19,11 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface CoreChartViewMapper extends BaseMapper {
+ @Select("SELECT DISTINCT\n" +
+ "\tccv.id \n" +
+ "FROM\n" +
+ "\tcore_chart_view ccv\n" +
+ "\tINNER JOIN data_visualization_info dvi ON ccv.scene_id = dvi.id\n" +
+ "\tWHERE dvi.app_id=#{appId}")
+ List selectChatViewIds(@Param("appId")String appId);
}
diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java
index 02b14fe..eeb683b 100644
--- a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java
+++ b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/DataVisualizationInfoMapper.java
@@ -1,7 +1,7 @@
package io.gisbi.visualization.dao.auto.mapper;
-import io.gisbi.visualization.dao.auto.entity.DataVisualizationInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import io.gisbi.visualization.dao.auto.entity.DataVisualizationInfo;
import org.apache.ibatis.annotations.Mapper;
/**
diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpInfoMapper.java b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpInfoMapper.java
index 0e8bb32..c1c423e 100644
--- a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpInfoMapper.java
+++ b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpInfoMapper.java
@@ -3,6 +3,10 @@ package io.gisbi.visualization.dao.auto.mapper;
import io.gisbi.visualization.dao.auto.entity.VisualizationLinkJumpInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
/**
*
@@ -15,4 +19,12 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VisualizationLinkJumpInfoMapper extends BaseMapper {
+ @Select("SELECT\n" +
+ "\tvlji.id \n" +
+ "FROM\n" +
+ "\tvisualization_link_jump_info vlji\n" +
+ "\tINNER JOIN visualization_link_jump vlj ON vlj.id = vlji.link_jump_id\n" +
+ "\tINNER JOIN data_visualization_info dvi ON dvi.id=vlj.source_dv_id\n" +
+ "\tWHERE dvi.app_id =#{appId}")
+ List selectInfoIds(@Param("appId")String appId);
}
diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpMapper.java b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpMapper.java
index c7643ca..1185de6 100644
--- a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpMapper.java
+++ b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkJumpMapper.java
@@ -3,6 +3,10 @@ package io.gisbi.visualization.dao.auto.mapper;
import io.gisbi.visualization.dao.auto.entity.VisualizationLinkJump;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
/**
*
@@ -15,4 +19,12 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VisualizationLinkJumpMapper extends BaseMapper {
+ @Select("SELECT\n" +
+ "\tvlj.id \n" +
+ "FROM\n" +
+ "\tvisualization_link_jump vlj\n" +
+ "\tINNER JOIN data_visualization_info dvi ON dvi.id = vlj.source_dv_id \n" +
+ "WHERE\n" +
+ "\tdvi.app_id = #{appId}")
+ List selectLinkJumpIds(@Param("appId")String appId);
}
diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkageMapper.java b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkageMapper.java
index 83a75fa..5685c05 100644
--- a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkageMapper.java
+++ b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationLinkageMapper.java
@@ -3,6 +3,10 @@ package io.gisbi.visualization.dao.auto.mapper;
import io.gisbi.visualization.dao.auto.entity.VisualizationLinkage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
/**
*
@@ -15,4 +19,14 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VisualizationLinkageMapper extends BaseMapper {
+ @Select("SELECT DISTINCT\n" +
+ "\tccv.id \n" +
+ "FROM\n" +
+ "\tvisualization_linkage vl\n" +
+ "\tINNER JOIN core_chart_view ccv ON vl.source_view_id = ccv.id\n" +
+ "\tINNER JOIN data_visualization_info dvi ON ccv.scene_id = dvi.id \n" +
+ "WHERE\n" +
+ "\tdvi.app_id = #{appId}")
+ List selectLinkageIds(@Param("appId")String appId);
+
}
diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsInfoMapper.java b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsInfoMapper.java
index 6e035d6..0513fcd 100644
--- a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsInfoMapper.java
+++ b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsInfoMapper.java
@@ -3,6 +3,10 @@ package io.gisbi.visualization.dao.auto.mapper;
import io.gisbi.visualization.dao.auto.entity.VisualizationOuterParamsInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
/**
*
@@ -15,4 +19,13 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VisualizationOuterParamsInfoMapper extends BaseMapper {
+ @Select("SELECT\n" +
+ "\tvopi.params_info_id \n" +
+ "FROM\n" +
+ "visualization_outer_params_info vopi \n" +
+ "INNER JOIN visualization_outer_params vop ON vopi.params_id=vop.params_id\n" +
+ "INNER JOIN data_visualization_info dvi ON vop.visualization_id = dvi.id \n" +
+ "WHERE\n" +
+ "\tdvi.app_id = #{appId}")
+ List selectParamsInfoIds(@Param("appId")String appId);
}
diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsMapper.java b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsMapper.java
index 81b20ee..b0618cb 100644
--- a/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsMapper.java
+++ b/core/core-backend/src/main/java/io/gisbi/visualization/dao/auto/mapper/VisualizationOuterParamsMapper.java
@@ -3,6 +3,10 @@ package io.gisbi.visualization.dao.auto.mapper;
import io.gisbi.visualization.dao.auto.entity.VisualizationOuterParams;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
/**
*
@@ -15,4 +19,12 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VisualizationOuterParamsMapper extends BaseMapper {
+ @Select("SELECT\n" +
+ "\tvop.params_id \n" +
+ "FROM\n" +
+ "\tvisualization_outer_params vop\n" +
+ "\tINNER JOIN data_visualization_info dvi ON vop.visualization_id = dvi.id \n" +
+ "WHERE\n" +
+ "\tdvi.app_id = #{appId}")
+ List selectOuterParamIds(@Param("appId")String appId);
}
diff --git a/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java b/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java
index 49fb8c0..7cf1a21 100644
--- a/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java
+++ b/core/core-backend/src/main/java/io/gisbi/visualization/server/StaticResourceServer.java
@@ -34,7 +34,7 @@ import java.util.Map;
@RequestMapping("/staticResource")
public class StaticResourceServer implements StaticResourceApi {
- @Value("${gisbi.path.static-resource:E:/opt/gisbi2.0/data/static-resource/}")
+ @Value("${gisbi.path.static-resource:/opt/gisbi2.0/data/static-resource/}")
private String staticDir;
@Override