From efe4ddf97bbfb1ea4591c80cd8ff3a688261489a Mon Sep 17 00:00:00 2001
From: ZZX9599 <536509593@qq.com>
Date: Mon, 29 Sep 2025 17:34:21 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=BA=93=E3=80=81=E7=9F=A2?=
=?UTF-8?q?=E9=87=8F=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 7 +
.../controller/BusinessConfigController.java | 1 +
.../controller/MilitaryLibraryController.java | 620 ++++++++++------
.../controller/ModelLibraryController.java | 17 +-
.../yj/earth/business/domain/Military.java | 4 +-
.../yj/earth/common/config/ServerConfig.java | 1 +
.../yj/earth/common/util/FileCommonUtil.java | 16 +-
.../yj/earth/common/util/SQLiteConverter.java | 495 ++++++-------
.../com/yj/earth/common/util/SQLiteUtil.java | 685 ++++++++++++------
.../java/com/yj/earth/vo/MilitaryDataVo.java | 12 +
src/main/java/com/yj/earth/vo/MilitaryVo.java | 20 +
11 files changed, 1159 insertions(+), 719 deletions(-)
create mode 100644 src/main/java/com/yj/earth/vo/MilitaryDataVo.java
diff --git a/pom.xml b/pom.xml
index ccf03c3..37dd43c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -175,6 +175,13 @@
+
+
+ org.apache.commons
+ commons-dbcp2
+ 2.10.0
+
+
org.yaml
diff --git a/src/main/java/com/yj/earth/business/controller/BusinessConfigController.java b/src/main/java/com/yj/earth/business/controller/BusinessConfigController.java
index e17b6d4..a840f56 100644
--- a/src/main/java/com/yj/earth/business/controller/BusinessConfigController.java
+++ b/src/main/java/com/yj/earth/business/controller/BusinessConfigController.java
@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+
@Tag(name = "业务配置管理")
@CheckAuth
@RestController
diff --git a/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java b/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java
index e260390..6909a67 100644
--- a/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java
+++ b/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java
@@ -4,21 +4,27 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yj.earth.annotation.CheckAuth;
-import com.yj.earth.business.domain.MilitaryLibrary;
-import com.yj.earth.business.domain.MilitaryType;
+import com.yj.earth.business.domain.MilitaryLibrary; // 需自定义:对应军标库配置表(同ModelLibrary结构)
+import com.yj.earth.business.domain.MilitaryType; // 需自定义:对应military_type表实体
import com.yj.earth.business.service.FileInfoService;
-import com.yj.earth.business.service.MilitaryLibraryService;
+import com.yj.earth.business.service.MilitaryLibraryService; // 需自定义:军标库Service(同ModelLibraryService逻辑)
import com.yj.earth.common.util.ApiResponse;
+import com.yj.earth.common.util.FileCommonUtil;
import com.yj.earth.common.util.SQLiteUtil;
-import com.yj.earth.dto.militaryLibrary.AddMilitaryTypeDto;
-import com.yj.earth.dto.militaryLibrary.CreateMilitaryLibraryDto;
-import com.yj.earth.dto.militaryLibrary.DragMilitaryTypeDto;
-import com.yj.earth.dto.militaryLibrary.UpdateMilitaryTypeNameDto;
-import com.yj.earth.vo.MilitaryTypeVo;
-import com.yj.earth.vo.MilitaryVo;
+import com.yj.earth.dto.militaryLibrary.AddMilitaryTypeDto; // 需自定义:添加军标类型DTO
+import com.yj.earth.dto.militaryLibrary.CreateMilitaryLibraryDto; // 需自定义:创建军标库DTO
+import com.yj.earth.dto.militaryLibrary.DragMilitaryTypeDto; // 需自定义:拖动军标类型DTO
+import com.yj.earth.dto.militaryLibrary.UpdateMilitaryTypeNameDto; // 需自定义:修改军标类型名称DTO
+import com.yj.earth.vo.MilitaryDataVo;
+import com.yj.earth.vo.MilitaryTypeVo; // 需自定义:军标类型树形VO(同ModelTypeVo结构)
+import com.yj.earth.vo.MilitaryVo; // 需自定义:军标列表VO(剔除海报相关字段)
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -26,9 +32,12 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -38,44 +47,52 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping("/militaryLibrary")
public class MilitaryLibraryController {
+
@Resource
private MilitaryLibraryService militaryLibraryService;
- @Resource
- private FileInfoService fileInfoService;
@Operation(summary = "创建军标库")
@PostMapping("/createMilitaryLibrary")
- public ApiResponse createMilitaryLibrary(@RequestBody CreateMilitaryLibraryDto createMilitaryLibraryDto) {
+ public ApiResponse createMilitaryLibrary(@RequestBody CreateMilitaryLibraryDto createDto) {
try {
- // 参数校验
- String folderPath = createMilitaryLibraryDto.getPath();
- String militaryName = createMilitaryLibraryDto.getName();
- // 处理路径、组合为完整军标库文件路径
+ // 参数校验与路径处理
+ String folderPath = createDto.getPath();
+ String libraryName = createDto.getName();
+ if (!StringUtils.hasText(folderPath) || !StringUtils.hasText(libraryName)) {
+ return ApiResponse.failure("路径和名称不能为空");
+ }
+
+ // 构建完整军标库文件路径(SQLite文件)
File parentDir = new File(folderPath);
- File militaryFile = new File(parentDir, militaryName);
+ File militaryFile = new File(parentDir, libraryName);
String militaryPath = militaryFile.getAbsolutePath().replace("\\", "/");
- // 检查父目录是否存在、不存在则创建
+
+ // 父目录不存在则创建
if (!parentDir.exists()) {
boolean mkdirsSuccess = parentDir.mkdirs();
if (!mkdirsSuccess) {
return ApiResponse.failure("创建父目录失败:" + folderPath);
}
}
- // 检查军标库文件是否已存在
+
+ // 校验军标库文件是否已存在
if (militaryFile.exists()) {
if (militaryFile.isDirectory()) {
- return ApiResponse.failure("同名目录已存在、无法创建文件:" + militaryPath);
+ return ApiResponse.failure("同名目录已存在,无法创建文件:" + militaryPath);
}
return ApiResponse.failure("军标库文件已存在:" + militaryPath);
}
- // 创建军标库文件
- boolean createSuccess = militaryFile.createNewFile();
- if (!createSuccess) {
+
+ // 创建SQLite文件
+ boolean createFileSuccess = militaryFile.createNewFile();
+ if (!createFileSuccess) {
return ApiResponse.failure("创建军标库文件失败:" + militaryPath);
}
- // 添加军标库信息
- addMilitaryLibrary(militaryPath);
+
+ // 初始化军标库表结构
SQLiteUtil.initializationMilitary(militaryPath);
+ // 添加军标库配置到数据库
+ addMilitaryLibrary(militaryPath);
return ApiResponse.success(null);
} catch (Exception e) {
return ApiResponse.failure("创建军标库失败:" + e.getMessage());
@@ -84,304 +101,441 @@ public class MilitaryLibraryController {
@Operation(summary = "导入军标库")
@PostMapping("/importMilitaryLibrary")
- public ApiResponse importMilitaryLibrary(@RequestParam("militaryPath") @Parameter(description = "军标库路径") String militaryPath) {
- addMilitaryLibrary(militaryPath);
- return ApiResponse.success(null);
+ public ApiResponse importMilitaryLibrary(
+ @RequestParam("militaryPath") @Parameter(description = "军标库SQLite文件路径") String militaryPath) {
+ try {
+ // 校验路径是否存在
+ File militaryFile = new File(militaryPath);
+ if (!militaryFile.exists() || !militaryFile.isFile()) {
+ return ApiResponse.failure("军标库文件不存在:" + militaryPath);
+ }
+ // 添加到配置表并启用
+ addMilitaryLibrary(militaryPath);
+ return ApiResponse.success(null);
+ } catch (Exception e) {
+ return ApiResponse.failure("导入军标库失败:" + e.getMessage());
+ }
}
@Operation(summary = "添加军标类型")
@PostMapping("/addMilitaryType")
- public ApiResponse addMilitaryType(@RequestBody AddMilitaryTypeDto addMilitaryTypeDto) throws SQLException, IllegalAccessException, InstantiationException {
+ public ApiResponse addMilitaryType(@RequestBody AddMilitaryTypeDto addDto) throws SQLException, IllegalAccessException, InstantiationException {
+ // 获取当前启用的军标库路径
String militaryPath = getMilitaryLibrary();
if (militaryPath == null) {
return ApiResponse.failure("请先创建或导入军标库");
}
- // 检查父级是否存在
- String parentId = addMilitaryTypeDto.getParentId();
- if (parentId != null) {
- String sql = "SELECT * FROM military_type WHERE id = ?";
- List