This commit is contained in:
2025-11-24 09:50:57 +08:00
parent c101c07149
commit 907dd0e81c
7 changed files with 99 additions and 46 deletions

View File

@ -4,22 +4,26 @@ 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.*;
import com.yj.earth.business.service.MilitaryLibraryService;
import com.yj.earth.business.service.SourceService;
import com.yj.earth.common.util.ApiResponse;
import com.yj.earth.common.util.FileCommonUtil;
import com.yj.earth.common.util.JsonUtil;
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.params.MilitaryParam;
import com.yj.earth.params.ModelParam;
import com.yj.earth.vo.MilitaryDataVo;
import com.yj.earth.vo.MilitaryTypeVo;
import com.yj.earth.vo.MilitaryVo;
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.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@ -50,6 +54,12 @@ public class MilitaryLibraryController {
@Resource
private MilitaryLibraryService militaryLibraryService;
@Resource
private SourceService sourceService;
@Value("${server.host}")
private String serverHost;
@Value("${server.port}")
private int serverPort;
@Operation(summary = "创建军标库")
@PostMapping("/createMilitaryLibrary")
@ -337,13 +347,39 @@ public class MilitaryLibraryController {
return ApiResponse.failure("请先创建或导入军标库");
}
// 存储被删除的Source ID列表
List<String> deletedSourceIds = new ArrayList<>();
// 获取URL
String MilitaryDataUrlByModelId = getMilitaryDataUrlByModelId(militaryId);
// 查询资源
LambdaQueryWrapper<Source> queryWrapper = new LambdaQueryWrapper<>();
// 查询类型为 model 的
queryWrapper.eq(Source::getSourceType, "military");
// 查询列表
List<Source> sourceList = sourceService.list(queryWrapper);
// 遍历数据
for (Source source : sourceList) {
// 取出 params 字段
String dataParams = source.getParams();
if (dataParams != null) {
// 转换为 Model 对象
MilitaryParam militaryParam = JsonUtil.jsonToObject(dataParams, MilitaryParam.class);
if (MilitaryDataUrlByModelId.equals(militaryParam.getUrl())) {
// 删除这个资源
sourceService.removeById(source.getId());
// 添加到被删除的ID列表
deletedSourceIds.add(source.getId());
}
}
}
// 执行删除
String deleteSql = "DELETE FROM military WHERE id = ?";
List<Object> params = new ArrayList<>();
params.add(militaryId);
SQLiteUtil.executeUpdate(militaryPath, deleteSql, params);
return ApiResponse.success("删除军标成功");
return ApiResponse.success(deletedSourceIds);
}
@ -514,6 +550,32 @@ public class MilitaryLibraryController {
}
}
/**
* 根据军标ID获取模型数据访问URL
*/
private String getMilitaryDataUrlByModelId(String militaryId) {
try {
// 获取当前启用的军标库路径
String militaryLibraryPath = getMilitaryLibrary();
if (militaryLibraryPath == null) {
return null;
}
// 查询军标对应的类型后缀
String sql = "SELECT military_type FROM military WHERE id = ?";
List<Object> params = new ArrayList<>();
params.add(militaryId);
Military military = SQLiteUtil.queryForObject(militaryLibraryPath, sql, params, Military.class);
// 得到类型ID
String militaryType = military.getMilitaryType();
// 拼接完整URL
return "http://" + serverHost + ":" + serverPort + "/militaryLibrary/data/military/" + militaryId + "/" + militaryType;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private boolean isMilitaryTypeExist(String militaryPath, String typeId)
throws SQLException, IllegalAccessException, InstantiationException {
String checkSql = "SELECT id FROM military_type WHERE id = ?";