From 99e961c476c6bd7370639e1e194cd1adfdf099d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=A4=A7?= <1504665037@qq.com> Date: Tue, 27 Jan 2026 17:30:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AirlineFileGroupInfoController.java | 21 ++++++++++++++ ...AirlineFileGroupInfoControllerConvert.java | 3 ++ .../domain/impl/AirlineFileDomainImpl.java | 3 +- .../api/IAirlineFileGroupInfoService.java | 1 + .../impl/AirlineFileServiceGroupInfoImpl.java | 29 ++++++++++++++----- .../airline/AirlineFileGroupInfoMapper.xml | 15 +++++----- .../mapper/airline/AirlineFileMapper.xml | 2 +- 7 files changed, 58 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java b/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java index f42923a..2c25971 100644 --- a/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java +++ b/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java @@ -111,4 +111,25 @@ public class AirlineFileGroupInfoController extends BaseController { } + /*** + * 删除分组详情 + * @param vo + * @return + * @throws BaseException + */ + @DeleteMapping("/delete") + @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") + public AjaxResult delete(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException { + if (vo.getGroupId() == null) { + throw new BaseException("分组ID不能为空"); + } + AirlineFileGroupInfoDTO dto = AirlineFileGroupInfoControllerConvert.toDTO(vo); + Long result = iAirlineFileGroupInfoService.deleteGroupInf(dto); + if (result > 0) { + return success(result); + } + throw new BaseException("删除失败"); + } + + } diff --git a/src/main/java/com/ruoyi/airline/controller/convert/AirlineFileGroupInfoControllerConvert.java b/src/main/java/com/ruoyi/airline/controller/convert/AirlineFileGroupInfoControllerConvert.java index 4ec6447..79f08da 100644 --- a/src/main/java/com/ruoyi/airline/controller/convert/AirlineFileGroupInfoControllerConvert.java +++ b/src/main/java/com/ruoyi/airline/controller/convert/AirlineFileGroupInfoControllerConvert.java @@ -31,7 +31,9 @@ public class AirlineFileGroupInfoControllerConvert { } AirlineFileGroupInfoVO vo = new AirlineFileGroupInfoVO(); vo.setId(dto.getId()); + vo.setAirlineId(dto.getAirlineId()); vo.setGroupId(dto.getGroupId()); + vo.setAirlineFileVO(AirlineFileControllerConvert.toVO(dto.getAirlineFileDTO())); vo.setCreateBy(dto.getCreateBy()); vo.setCreateTime(dto.getCreateTime()); @@ -54,6 +56,7 @@ public class AirlineFileGroupInfoControllerConvert { AirlineFileGroupInfoDTO dto = new AirlineFileGroupInfoDTO(); dto.setId(vo.getId()); dto.setGroupId(vo.getGroupId()); + dto.setAirlineId(vo.getAirlineId()); dto.setCreateBy(vo.getCreateBy()); dto.setCreateTime(vo.getCreateTime()); dto.setUpdateBy(vo.getUpdateBy()); diff --git a/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java b/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java index d22cc7a..9362fae 100644 --- a/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java +++ b/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java @@ -30,6 +30,7 @@ public class AirlineFileDomainImpl implements IAirlineFileDomain { @Override public Long save(AirlineFile model) { AirlineFileEntity entity = AirlineFileDomainConvert.toEntity(model); - return airlineFileMapper.save(entity); + airlineFileMapper.save(entity); + return entity.getId(); } } \ No newline at end of file diff --git a/src/main/java/com/ruoyi/airline/service/api/IAirlineFileGroupInfoService.java b/src/main/java/com/ruoyi/airline/service/api/IAirlineFileGroupInfoService.java index 99e71c9..c25cd74 100644 --- a/src/main/java/com/ruoyi/airline/service/api/IAirlineFileGroupInfoService.java +++ b/src/main/java/com/ruoyi/airline/service/api/IAirlineFileGroupInfoService.java @@ -16,4 +16,5 @@ public interface IAirlineFileGroupInfoService { Long save(AirlineFileGroupInfoDTO dto) throws BaseException; + Long deleteGroupInf(AirlineFileGroupInfoDTO dto) throws BaseException ; } diff --git a/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceGroupInfoImpl.java b/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceGroupInfoImpl.java index e934103..587d85d 100644 --- a/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceGroupInfoImpl.java +++ b/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceGroupInfoImpl.java @@ -37,14 +37,18 @@ public class AirlineFileServiceGroupInfoImpl implements IAirlineFileGroupInfoSer @Override public List selectGroupInfoListById(Long groupId) { List models = iAirlineFileGroupInfoDomain.selectGroupInfoListById(groupId); - models.forEach(model -> { - model.setAirlineFile(iAirlineFileService.selectById(model.getAirlineId())); - }); + if (models != null) { + models.forEach(model -> { + model.setAirlineFile(iAirlineFileService.selectById(model.getAirlineId())); + }); + } return AirlineFileGroupInfoServiceConvert.toDtoList(models); } @Override public Long save(AirlineFileGroupInfoDTO dto) throws BaseException { + + AirlineFileDTO result = iAirlineFileService.save(dto.getAirlineFileDTO()); dto.setAirlineId(result.getId()); @@ -52,12 +56,23 @@ public class AirlineFileServiceGroupInfoImpl implements IAirlineFileGroupInfoSer AirlineFileGroupInfo model = AirlineFileGroupInfoServiceConvert.toModel(dto); // 检查唯一性:同一个分组下不能有相同的航线 - boolean exists = iAirlineFileGroupInfoDomain.existsByGroupIdAndAirlineId(model.getGroupId(), model.getAirlineId()); - if (exists) { - throw new BaseException("该航线已存在于当前分组中"); - } + return iAirlineFileGroupInfoDomain.save(model); } + @Override + public Long deleteGroupInf(AirlineFileGroupInfoDTO dto) throws BaseException { + // 检查参数 + if (dto.getGroupId() == null || dto.getAirlineId() == null) { + throw new BaseException("分组ID和航线ID不能为空"); + } + + // 转换为模型 + AirlineFileGroupInfo model = AirlineFileGroupInfoServiceConvert.toModel(dto); + + // 调用domain层删除方法 + return iAirlineFileGroupInfoDomain.deleteGroupInfo(model); + } + } \ No newline at end of file diff --git a/src/main/resources/mapper/airline/AirlineFileGroupInfoMapper.xml b/src/main/resources/mapper/airline/AirlineFileGroupInfoMapper.xml index 729061b..506c858 100644 --- a/src/main/resources/mapper/airline/AirlineFileGroupInfoMapper.xml +++ b/src/main/resources/mapper/airline/AirlineFileGroupInfoMapper.xml @@ -37,13 +37,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" set del_flag = 1, deleted_by = #{deletedBy}, deleted_time = #{deletedTime} - where id = #{id} - - and group_id = #{groupId} - - - and airline_id = #{airlineId} - + + + and group_id = #{groupId} + + + and airline_id = #{airlineId} + + diff --git a/src/main/resources/mapper/airline/AirlineFileMapper.xml b/src/main/resources/mapper/airline/AirlineFileMapper.xml index 87d45a1..5eadce5 100644 --- a/src/main/resources/mapper/airline/AirlineFileMapper.xml +++ b/src/main/resources/mapper/airline/AirlineFileMapper.xml @@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + insert into airline_file (name, air_vendor, air_type, file_name, file_url, type, source, status, file_md5, create_by, create_time, update_by, update_time, remark) values (#{name}, #{airVendor}, #{airType}, #{fileName}, #{fileUrl}, #{type}, #{source}, #{status}, #{fileMd5}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}, #{remark}) From a01ec7becd74fe8ae80ebe80504b45866d05ad5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=A4=A7?= <1504665037@qq.com> Date: Wed, 28 Jan 2026 09:11:59 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=88=AA=E7=BA=BF=E5=90=8D=E7=A7=B0=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AirlineFileController.java | 9 ++------- .../AirlineFileGroupInfoController.java | 17 +++++++---------- .../airline/domain/api/IAirlineFileDomain.java | 2 ++ .../domain/impl/AirlineFileDomainImpl.java | 5 +++++ .../ruoyi/airline/mapper/AirlineFileMapper.java | 2 ++ .../service/impl/AirlineFileServiceImpl.java | 16 ++++++++++++++-- .../mapper/airline/AirlineFileMapper.xml | 6 ++++++ 7 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/ruoyi/airline/controller/AirlineFileController.java b/src/main/java/com/ruoyi/airline/controller/AirlineFileController.java index cbaef05..e04509a 100644 --- a/src/main/java/com/ruoyi/airline/controller/AirlineFileController.java +++ b/src/main/java/com/ruoyi/airline/controller/AirlineFileController.java @@ -7,20 +7,16 @@ import com.ruoyi.airline.service.dto.AirlineFileDTO; import com.ruoyi.common.core.exception.base.BaseException; import com.ruoyi.common.core.web.controller.BaseController; 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.enums.BusinessType; -import com.ruoyi.common.security.annotation.RequiresPermissions; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.util.List; /** * 航线文件Controller @@ -49,14 +45,13 @@ public class AirlineFileController extends BaseController { // @RequiresPermissions("airline:file:edit") @Log(title = "修改航线属性", businessType = BusinessType.UPDATE) @PutMapping("/edit") - @Operation(summary = "编辑航线文件描述信息") + @Operation(summary = "编辑航线文件描述信息") public AjaxResult edit(@RequestBody AirlineFileVO entity) { AirlineFileDTO dto = AirlineFileControllerConvert.toDTO(entity); return success(airlineFileService.save(dto)); } - /** * 长江口 *

@@ -67,7 +62,7 @@ public class AirlineFileController extends BaseController { // @RequiresPermissions("airline:file:parseAndUpload") @Log(title = "创建航线", businessType = BusinessType.UPDATE) @PostMapping("/createOrUpdate") - @Operation(summary = "编辑航线文件内容,生产航点新文件") + @Operation(summary = "编辑航线文件内容,生产航点新文件") public AjaxResult createOrUpdate(@RequestBody AirlineFileVO vo) { AirlineFileDTO airlineFile = AirlineFileControllerConvert.toDTO(vo); try { diff --git a/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java b/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java index 2c25971..71cf08c 100644 --- a/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java +++ b/src/main/java/com/ruoyi/airline/controller/AirlineFileGroupInfoController.java @@ -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.domain.AjaxResult; 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.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; import java.util.List; /** @@ -46,7 +44,7 @@ public class AirlineFileGroupInfoController extends BaseController { */ // @RequiresPermissions("airline:groupInfo:list") @GetMapping("/{groupId}") - @Operation(summary = "编辑航线文件内容,生产航点新文件") + @Operation(summary = "编辑航线文件内容,生产航点新文件") public TableDataInfo selectGroupInfoListById(@PathVariable("groupId") Long groupId) { startPage(); List list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId); @@ -62,7 +60,7 @@ public class AirlineFileGroupInfoController extends BaseController { */ // @RequiresPermissions("airline:groupInfo:list") @GetMapping - @Operation(summary = "编辑航线文件内容,生产航点新文件") + @Operation(summary = "编辑航线文件内容,生产航点新文件") public TableDataInfo selectGroupInfoListByQueryId(@RequestParam("groupId") Long groupId) { startPage(); List list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId); @@ -76,12 +74,11 @@ public class AirlineFileGroupInfoController extends BaseController { *

* kmz类似zip,一般情况下内部包含kml和wpml两个文件 * - * * @param file */ - @PostMapping("/parseAndUpload") - @Operation(summary = " kmz航线文件,并转换成waypoint上传 ,仅仅返航URL") - public AjaxResult parseAndUpload(@RequestParam("file") MultipartFile file, Long groupId) throws BaseException { + @PostMapping("/parseAndUpload/{groupId}") + @Operation(summary = " kmz航线文件,并转换成waypoint上传 ,仅仅返航URL") + public AjaxResult parseAndUpload(@RequestParam("file") MultipartFile file, @PathVariable("groupId")Long groupId) throws BaseException { AirlineFileDTO dto = iAirlineFileService.parseAndUplload(file); AirlineFileDTO result = iAirlineFileService.save(dto); AirlineFileGroupInfoDTO infoDTO = new AirlineFileGroupInfoDTO(); @@ -97,7 +94,7 @@ public class AirlineFileGroupInfoController extends BaseController { * @return */ @PostMapping() - @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") + @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") public AjaxResult add(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException { if (vo.getGroupId() == null) { throw new BaseException("分组ID不能为空"); @@ -118,7 +115,7 @@ public class AirlineFileGroupInfoController extends BaseController { * @throws BaseException */ @DeleteMapping("/delete") - @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") + @Operation(summary = "在当前分组下添加初始航线,必须上传分组ID") public AjaxResult delete(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException { if (vo.getGroupId() == null) { throw new BaseException("分组ID不能为空"); diff --git a/src/main/java/com/ruoyi/airline/domain/api/IAirlineFileDomain.java b/src/main/java/com/ruoyi/airline/domain/api/IAirlineFileDomain.java index a893f62..00137e4 100644 --- a/src/main/java/com/ruoyi/airline/domain/api/IAirlineFileDomain.java +++ b/src/main/java/com/ruoyi/airline/domain/api/IAirlineFileDomain.java @@ -17,4 +17,6 @@ public interface IAirlineFileDomain { List selectFileListByIds(List ids); Long save(AirlineFile model); + + List selectFileNameLike(String name); } \ No newline at end of file diff --git a/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java b/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java index 9362fae..02f1d8e 100644 --- a/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java +++ b/src/main/java/com/ruoyi/airline/domain/impl/AirlineFileDomainImpl.java @@ -33,4 +33,9 @@ public class AirlineFileDomainImpl implements IAirlineFileDomain { airlineFileMapper.save(entity); return entity.getId(); } + + @Override + public List selectFileNameLike(String name) { + return AirlineFileDomainConvert.toModelList(airlineFileMapper.selectFileNameLike(name)); + } } \ No newline at end of file diff --git a/src/main/java/com/ruoyi/airline/mapper/AirlineFileMapper.java b/src/main/java/com/ruoyi/airline/mapper/AirlineFileMapper.java index 05f5186..58c660a 100644 --- a/src/main/java/com/ruoyi/airline/mapper/AirlineFileMapper.java +++ b/src/main/java/com/ruoyi/airline/mapper/AirlineFileMapper.java @@ -16,4 +16,6 @@ public interface AirlineFileMapper { Long save(AirlineFileEntity entity); List selectFileListByIds(List ids); + + List selectFileNameLike(String name); } \ No newline at end of file diff --git a/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceImpl.java b/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceImpl.java index a1eaa61..69e2007 100644 --- a/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceImpl.java +++ b/src/main/java/com/ruoyi/airline/service/impl/AirlineFileServiceImpl.java @@ -12,6 +12,7 @@ import com.ruoyi.airline.service.dto.AirLinePointDTO; import com.ruoyi.airline.service.dto.AirlineFileDTO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.base.BaseException; +import com.ruoyi.common.core.utils.file.FileUtils; import com.ruoyi.system.api.RemoteFileService; import org.apache.commons.compress.archivers.ArchiveEntry; import org.apache.commons.compress.archivers.ArchiveInputStream; @@ -23,6 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.UUID; @@ -81,9 +83,19 @@ public class AirlineFileServiceImpl implements IAirlineFileService { String globalHeight = kmlInfo.getDocument().getFolder().getGlobalHeight(); R fileUrl = remoteFileService.uploadFileByData(UUID.randomUUID().toString(), "waypoints", WayPointUitls.kmz2waypoint(kmlInfo)); AirlineFileDTO dto = new AirlineFileDTO(); + // 去除文件名中的后缀名 + String fileName = file.getName(); + int pos = fileName.lastIndexOf("."); + String fileNameWithoutExtension = pos > 0 ? fileName.substring(0, pos) : fileName; + List airlineFiles =iAirlineFileDomain.selectFileNameLike(fileNameWithoutExtension); + + + List fileNames = airlineFiles.stream().map(AirlineFile::getName).toList(); + String newFileName = FileUtils.generateUniqueFileName(fileNameWithoutExtension, fileNames); + dto.setFileName(newFileName); dto.setFileUrl(fileUrl.getData()); - dto.setAirVendor(""); - dto.setAirType(""); + dto.setAirVendor(kmlInfo.getDocument().getKmlMissionConfig().getDroneInfo().getDroneEnumValue()); + dto.setAirType(kmlInfo.getDocument().getKmlMissionConfig().getDroneInfo().getDroneEnumValue()); return dto; } catch (IOException e) { diff --git a/src/main/resources/mapper/airline/AirlineFileMapper.xml b/src/main/resources/mapper/airline/AirlineFileMapper.xml index 5eadce5..fcd8fa2 100644 --- a/src/main/resources/mapper/airline/AirlineFileMapper.xml +++ b/src/main/resources/mapper/airline/AirlineFileMapper.xml @@ -39,4 +39,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file