feat: 新增逻辑

新增glb模型导入类型、项目打包新增数据库表
This commit is contained in:
weitang 2025-07-09 14:26:24 +08:00
parent 6cdc46fedc
commit eb52424440
5 changed files with 51 additions and 28 deletions

View File

@ -15,6 +15,9 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.representer.Representer;
import java.io.*;
import java.nio.file.Files;
@ -146,8 +149,8 @@ public class ProjectExportController {
if (spring.containsKey("datasource")) {
Map<String, Object> datasource = (Map<String, Object>) spring.get("datasource");
datasource.put("url", "jdbc:mysql://localhost:3306/newdb");
datasource.put("username", "root");
datasource.put("password", "123456");
datasource.put("username", "roor");
datasource.put("password", "sadfa123456");
}
}
@ -163,13 +166,18 @@ public class ProjectExportController {
// 写回 YAML 文件
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
// 美化输出格式
options.setPrettyFlow(true);
// 缩进两个空格
options.setIndent(2);
// 将String类型转换为PLAIN样式
// Representer representer = new Representer(options) {
// @Override
// protected Node representScalar(Tag tag, String value, DumperOptions.ScalarStyle style) {
// // 使用 PLAIN 样式无引号
// return super.representScalar(tag, value, DumperOptions.ScalarStyle.PLAIN);
// }
// };
// Yaml newYaml = new Yaml(representer,options);
Yaml newYaml = new Yaml(options);
try (Writer writer = new FileWriter(configPath)) {
newYaml.dump(root, writer);
}

View File

@ -46,16 +46,19 @@ public class DatabaseService {
// 1. 获取所有要导出的表名
List<String> tables = Arrays.asList("app_application", "app_dictionary", "app_menu", "app_module",
"app_organization", "app_role", "app_role_menu", "app_role_users", "app_user", "area",
"app_optlog", "app_organization", "app_role", "app_role_menu", "app_role_users", "app_user", "area",
"core_chart_view", "core_dataset_group", "core_dataset_table", "core_dataset_table_field",
"core_datasource", "core_de_engine", "core_driver", "data_visualization_info",
"visualization_background", "visualization_background_image", "visualization_link_jump",
"visualization_link_jump_info", "visualization_link_jump_target_view_info", "visualization_linkage",
"visualization_linkage_field", "visualization_outer_params", "visualization_outer_params_info",
"core_datasource", "core_de_engine", "core_driver", "core_sys_setting", "data_visualization_info",
"snapshot_core_chart_view", "snapshot_visualization_link_jump", "snapshot_visualization_link_jump_info",
"snapshot_visualization_link_jump_target_view_info", "snapshot_visualization_linkage",
"snapshot_visualization_linkage_field", "snapshot_visualization_outer_params_info",
"snapshot_visualization_outer_params_target_view_info", "visualization_background",
"visualization_background_image", "visualization_link_jump", "visualization_link_jump_info",
"visualization_link_jump_target_view_info", "visualization_linkage", "visualization_linkage_field",
"visualization_outer_params", "visualization_outer_params_info",
"visualization_outer_params_target_view_info", "visualization_subject");
for (String table : tables) {
// 2. 获取建表语句
String createSql = getCreateTableSql(table);
if ("app_application".equals(table)) {
@ -103,7 +106,7 @@ public class DatabaseService {
// 3. 获取数据插入语句
List<String> insertSqls = getInsertSqls(table, conditions);
result.add(new TableData(table, createSql, insertSqls));
} else if ("core_chart_view".equals(table)) {
} else if ("core_chart_view".equals(table) || "snapshot_core_chart_view".equals(table)) {
List<DataVisualizationInfo> dataVisualizationInfos =
dataVisualizationInfoMapper.selectList(new LambdaQueryWrapper<DataVisualizationInfo>().eq(DataVisualizationInfo::getAppId, id).select(DataVisualizationInfo::getId));
@ -120,7 +123,7 @@ public class DatabaseService {
// 3. 获取数据插入语句
List<String> insertSqls = getInsertSqls(table, conditions);
result.add(new TableData(table, createSql, insertSqls));
} else if ("visualization_link_jump".equals(table)) {
} else if ("visualization_link_jump".equals(table) || "snapshot_visualization_link_jump".equals(table)) {
List<DataVisualizationInfo> dataVisualizationInfos =
dataVisualizationInfoMapper.selectList(new LambdaQueryWrapper<DataVisualizationInfo>().eq(DataVisualizationInfo::getAppId, id).select(DataVisualizationInfo::getId));
@ -138,7 +141,7 @@ public class DatabaseService {
List<String> insertSqls = getInsertSqls(table, conditions);
result.add(new TableData(table, createSql, insertSqls));
} else if ("visualization_link_jump_info".equals(table)) {
} else if ("visualization_link_jump_info".equals(table) || "snapshot_visualization_link_jump_info".equals(table)) {
List<Long> ids = visualizationLinkJumpMapper.selectLinkJumpIds(id);
List<Condition> conditions = new ArrayList<>();
if (!ids.isEmpty()) {
@ -151,7 +154,8 @@ public class DatabaseService {
// 3. 获取数据插入语句
List<String> insertSqls = getInsertSqls(table, conditions);
result.add(new TableData(table, createSql, insertSqls));
} else if ("visualization_link_jump_target_view_info".equals(table)) {
} else if ("visualization_link_jump_target_view_info".equals(table) ||
"snapshot_visualization_link_jump_target_view_info".equals(table)) {
List<Long> dvInfoIds = visualizationLinkJumpInfoMapper.selectInfoIds(id);
List<Condition> conditions = new ArrayList<>();
if (!dvInfoIds.isEmpty()) {
@ -190,7 +194,7 @@ public class DatabaseService {
// 3. 获取数据插入语句
List<String> insertSqls = getInsertSqls(table, conditions);
result.add(new TableData(table, createSql, insertSqls));
}else if ("visualization_outer_params".equals(table)) {
} else if ("visualization_outer_params".equals(table) || "snapshot_visualization_outer_params".equals(table)) {
List<DataVisualizationInfo> dataVisualizationInfos =
dataVisualizationInfoMapper.selectList(new LambdaQueryWrapper<DataVisualizationInfo>().eq(DataVisualizationInfo::getAppId, id).select(DataVisualizationInfo::getId));
List<Condition> conditions = new ArrayList<>();
@ -206,7 +210,7 @@ public class DatabaseService {
// 3. 获取数据插入语句
List<String> insertSqls = getInsertSqls(table, conditions);
result.add(new TableData(table, createSql, insertSqls));
}else if ("visualization_outer_params_info".equals(table)) {
} else if ("visualization_outer_params_info".equals(table) || "snapshot_visualization_outer_params_info".equals(table)) {
List<Long> outerParamIds = visualizationOuterParamsMapper.selectOuterParamIds(id);
List<Condition> conditions = new ArrayList<>();
if (!outerParamIds.isEmpty()) {
@ -219,7 +223,8 @@ public class DatabaseService {
// 3. 获取数据插入语句
List<String> insertSqls = getInsertSqls(table, conditions);
result.add(new TableData(table, createSql, insertSqls));
}else if ("visualization_outer_params_target_view_info".equals(table)) {
} else if ("visualization_outer_params_target_view_info".equals(table) ||
"snapshot_visualization_outer_params_target_view_info".equals(table)) {
List<Long> paramsInfoIds = visualizationOuterParamsInfoMapper.selectParamsInfoIds(id);
List<Condition> conditions = new ArrayList<>();
if (!paramsInfoIds.isEmpty()) {

View File

@ -225,7 +225,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
String parentId = currentMenu.getParentid();
QueryWrapper<Menu> wrapper = new QueryWrapper<>();
wrapper.eq("parentid", parentId);
wrapper.eq("parentid", parentId).eq("app_id",currentMenu.getAppId());
wrapper.orderByAsc("orderno");
List<Menu> siblings = menuMapper.selectList(wrapper);
@ -267,7 +267,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
// 获取新父级下的最大序号
QueryWrapper<Menu> wrapper = new QueryWrapper<>();
wrapper.eq("parentid", targetParentId);
wrapper.eq("parentid", targetParentId).eq("app_id",menu.getAppId());
wrapper.select("orderno","code");
wrapper.orderByDesc("orderno");
List<Menu> list = menuMapper.selectList(wrapper);

View File

@ -15,7 +15,12 @@ public enum FileType {
/**
* GIF
*/
GIF("47494638", "gif");
GIF("47494638", "gif"),
/**
* GLB (Binary GLTF)
*/
GLB("676C5446", "glb");
private String value = "";
private String ext = "";

View File

@ -1,8 +1,9 @@
spring:
datasource:
url: jdbc:mysql://121.37.111.42:3306/dataease?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
# url: jdbc:mysql://121.37.111.42:3306/dataease?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.1.58:3306/dataease?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
username: root
password: mysql_F8ysiK@2024
password: 123456 #mysql_F8ysiK@2024
messages:
basename: i18n/lic,i18n/core,i18n/permissions,i18n/xpack,i18n/sync
flyway:
@ -12,7 +13,11 @@ spring:
locations: classpath:db/migration
baseline-on-migrate: true
out-of-order: true
servlet:
multipart:
enabled: true
max-file-size: 50MB # 单个文件最大
max-request-size: 100MB # 每次请求总文件最大
mybatis-plus:
mapper-locations: classpath:mybatis/*.xml