fix:增加自动航线名称的逻辑

This commit is contained in:
高大 2026-01-28 09:11:59 +08:00
parent 99e961c476
commit a01ec7becd
7 changed files with 38 additions and 19 deletions

View File

@ -7,20 +7,16 @@ import com.ruoyi.airline.service.dto.AirlineFileDTO;
import com.ruoyi.common.core.exception.base.BaseException; import com.ruoyi.common.core.exception.base.BaseException;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.List;
/** /**
* 航线文件Controller * 航线文件Controller
@ -49,14 +45,13 @@ public class AirlineFileController extends BaseController {
// @RequiresPermissions("airline:file:edit") // @RequiresPermissions("airline:file:edit")
@Log(title = "修改航线属性", businessType = BusinessType.UPDATE) @Log(title = "修改航线属性", businessType = BusinessType.UPDATE)
@PutMapping("/edit") @PutMapping("/edit")
@Operation(summary = "编辑航线文件描述信息") @Operation(summary = "编辑航线文件描述信息")
public AjaxResult edit(@RequestBody AirlineFileVO entity) { public AjaxResult edit(@RequestBody AirlineFileVO entity) {
AirlineFileDTO dto = AirlineFileControllerConvert.toDTO(entity); AirlineFileDTO dto = AirlineFileControllerConvert.toDTO(entity);
return success(airlineFileService.save(dto)); return success(airlineFileService.save(dto));
} }
/** /**
* 长江口 * 长江口
* <p> * <p>
@ -67,7 +62,7 @@ public class AirlineFileController extends BaseController {
// @RequiresPermissions("airline:file:parseAndUpload") // @RequiresPermissions("airline:file:parseAndUpload")
@Log(title = "创建航线", businessType = BusinessType.UPDATE) @Log(title = "创建航线", businessType = BusinessType.UPDATE)
@PostMapping("/createOrUpdate") @PostMapping("/createOrUpdate")
@Operation(summary = "编辑航线文件内容,生产航点新文件") @Operation(summary = "编辑航线文件内容,生产航点新文件")
public AjaxResult createOrUpdate(@RequestBody AirlineFileVO vo) { public AjaxResult createOrUpdate(@RequestBody AirlineFileVO vo) {
AirlineFileDTO airlineFile = AirlineFileControllerConvert.toDTO(vo); AirlineFileDTO airlineFile = AirlineFileControllerConvert.toDTO(vo);
try { try {

View File

@ -10,14 +10,12 @@ import com.ruoyi.common.core.exception.base.BaseException;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List; import java.util.List;
/** /**
@ -46,7 +44,7 @@ public class AirlineFileGroupInfoController extends BaseController {
*/ */
// @RequiresPermissions("airline:groupInfo:list") // @RequiresPermissions("airline:groupInfo:list")
@GetMapping("/{groupId}") @GetMapping("/{groupId}")
@Operation(summary = "编辑航线文件内容,生产航点新文件") @Operation(summary = "编辑航线文件内容,生产航点新文件")
public TableDataInfo selectGroupInfoListById(@PathVariable("groupId") Long groupId) { public TableDataInfo selectGroupInfoListById(@PathVariable("groupId") Long groupId) {
startPage(); startPage();
List<AirlineFileGroupInfoDTO> list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId); List<AirlineFileGroupInfoDTO> list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId);
@ -62,7 +60,7 @@ public class AirlineFileGroupInfoController extends BaseController {
*/ */
// @RequiresPermissions("airline:groupInfo:list") // @RequiresPermissions("airline:groupInfo:list")
@GetMapping @GetMapping
@Operation(summary = "编辑航线文件内容,生产航点新文件") @Operation(summary = "编辑航线文件内容,生产航点新文件")
public TableDataInfo selectGroupInfoListByQueryId(@RequestParam("groupId") Long groupId) { public TableDataInfo selectGroupInfoListByQueryId(@RequestParam("groupId") Long groupId) {
startPage(); startPage();
List<AirlineFileGroupInfoDTO> list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId); List<AirlineFileGroupInfoDTO> list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId);
@ -76,12 +74,11 @@ public class AirlineFileGroupInfoController extends BaseController {
* <p> * <p>
* kmz类似zip一般情况下内部包含kml和wpml两个文件 * kmz类似zip一般情况下内部包含kml和wpml两个文件
* *
*
* @param file * @param file
*/ */
@PostMapping("/parseAndUpload") @PostMapping("/parseAndUpload/{groupId}")
@Operation(summary = " kmz航线文件并转换成waypoint上传 ,仅仅返航URL") @Operation(summary = " kmz航线文件并转换成waypoint上传 ,仅仅返航URL")
public AjaxResult parseAndUpload(@RequestParam("file") MultipartFile file, Long groupId) throws BaseException { public AjaxResult parseAndUpload(@RequestParam("file") MultipartFile file, @PathVariable("groupId")Long groupId) throws BaseException {
AirlineFileDTO dto = iAirlineFileService.parseAndUplload(file); AirlineFileDTO dto = iAirlineFileService.parseAndUplload(file);
AirlineFileDTO result = iAirlineFileService.save(dto); AirlineFileDTO result = iAirlineFileService.save(dto);
AirlineFileGroupInfoDTO infoDTO = new AirlineFileGroupInfoDTO(); AirlineFileGroupInfoDTO infoDTO = new AirlineFileGroupInfoDTO();
@ -97,7 +94,7 @@ public class AirlineFileGroupInfoController extends BaseController {
* @return * @return
*/ */
@PostMapping() @PostMapping()
@Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID")
public AjaxResult add(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException { public AjaxResult add(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException {
if (vo.getGroupId() == null) { if (vo.getGroupId() == null) {
throw new BaseException("分组ID不能为空"); throw new BaseException("分组ID不能为空");
@ -118,7 +115,7 @@ public class AirlineFileGroupInfoController extends BaseController {
* @throws BaseException * @throws BaseException
*/ */
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID")
public AjaxResult delete(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException { public AjaxResult delete(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException {
if (vo.getGroupId() == null) { if (vo.getGroupId() == null) {
throw new BaseException("分组ID不能为空"); throw new BaseException("分组ID不能为空");

View File

@ -17,4 +17,6 @@ public interface IAirlineFileDomain {
List<AirlineFile> selectFileListByIds(List<Long> ids); List<AirlineFile> selectFileListByIds(List<Long> ids);
Long save(AirlineFile model); Long save(AirlineFile model);
List<AirlineFile> selectFileNameLike(String name);
} }

View File

@ -33,4 +33,9 @@ public class AirlineFileDomainImpl implements IAirlineFileDomain {
airlineFileMapper.save(entity); airlineFileMapper.save(entity);
return entity.getId(); return entity.getId();
} }
@Override
public List<AirlineFile> selectFileNameLike(String name) {
return AirlineFileDomainConvert.toModelList(airlineFileMapper.selectFileNameLike(name));
}
} }

View File

@ -16,4 +16,6 @@ public interface AirlineFileMapper {
Long save(AirlineFileEntity entity); Long save(AirlineFileEntity entity);
List<AirlineFileEntity> selectFileListByIds(List<Long> ids); List<AirlineFileEntity> selectFileListByIds(List<Long> ids);
List<AirlineFileEntity> selectFileNameLike(String name);
} }

View File

@ -12,6 +12,7 @@ import com.ruoyi.airline.service.dto.AirLinePointDTO;
import com.ruoyi.airline.service.dto.AirlineFileDTO; import com.ruoyi.airline.service.dto.AirlineFileDTO;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.base.BaseException; import com.ruoyi.common.core.exception.base.BaseException;
import com.ruoyi.common.core.utils.file.FileUtils;
import com.ruoyi.system.api.RemoteFileService; import com.ruoyi.system.api.RemoteFileService;
import org.apache.commons.compress.archivers.ArchiveEntry; import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveInputStream; import org.apache.commons.compress.archivers.ArchiveInputStream;
@ -23,6 +24,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
@ -81,9 +83,19 @@ public class AirlineFileServiceImpl implements IAirlineFileService {
String globalHeight = kmlInfo.getDocument().getFolder().getGlobalHeight(); String globalHeight = kmlInfo.getDocument().getFolder().getGlobalHeight();
R<String> fileUrl = remoteFileService.uploadFileByData(UUID.randomUUID().toString(), "waypoints", WayPointUitls.kmz2waypoint(kmlInfo)); R<String> fileUrl = remoteFileService.uploadFileByData(UUID.randomUUID().toString(), "waypoints", WayPointUitls.kmz2waypoint(kmlInfo));
AirlineFileDTO dto = new AirlineFileDTO(); AirlineFileDTO dto = new AirlineFileDTO();
// 去除文件名中的后缀名
String fileName = file.getName();
int pos = fileName.lastIndexOf(".");
String fileNameWithoutExtension = pos > 0 ? fileName.substring(0, pos) : fileName;
List<AirlineFile> airlineFiles =iAirlineFileDomain.selectFileNameLike(fileNameWithoutExtension);
List<String> fileNames = airlineFiles.stream().map(AirlineFile::getName).toList();
String newFileName = FileUtils.generateUniqueFileName(fileNameWithoutExtension, fileNames);
dto.setFileName(newFileName);
dto.setFileUrl(fileUrl.getData()); dto.setFileUrl(fileUrl.getData());
dto.setAirVendor(""); dto.setAirVendor(kmlInfo.getDocument().getKmlMissionConfig().getDroneInfo().getDroneEnumValue());
dto.setAirType(""); dto.setAirType(kmlInfo.getDocument().getKmlMissionConfig().getDroneInfo().getDroneEnumValue());
return dto; return dto;
} catch (IOException e) { } catch (IOException e) {

View File

@ -39,4 +39,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</select> </select>
<!-- 根据航线名称模糊查询航线文件 -->
<select id="selectFileNameLike" parameterType="java.lang.String" resultMap="AirlineFileResult">
select id, name, air_vendor, air_type, file_name, file_url, type, source, status, file_md5, create_by, create_time, update_by, update_time, remark
from airline_file
where name like concat(#{name}, '%')
</select>
</mapper> </mapper>