Merge branch 'main' of http://th.local.t-aaron.com:13000/THENG/a-tuoheng-airline
This commit is contained in:
commit
bf538371d7
|
|
@ -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
|
||||||
|
|
@ -56,7 +52,6 @@ public class AirlineFileController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 长江口
|
* 长江口
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -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();
|
||||||
|
|
@ -111,4 +108,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("删除失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,9 @@ public class AirlineFileGroupInfoControllerConvert {
|
||||||
}
|
}
|
||||||
AirlineFileGroupInfoVO vo = new AirlineFileGroupInfoVO();
|
AirlineFileGroupInfoVO vo = new AirlineFileGroupInfoVO();
|
||||||
vo.setId(dto.getId());
|
vo.setId(dto.getId());
|
||||||
|
vo.setAirlineId(dto.getAirlineId());
|
||||||
vo.setGroupId(dto.getGroupId());
|
vo.setGroupId(dto.getGroupId());
|
||||||
|
vo.setAirlineFileVO(AirlineFileControllerConvert.toVO(dto.getAirlineFileDTO()));
|
||||||
vo.setCreateBy(dto.getCreateBy());
|
vo.setCreateBy(dto.getCreateBy());
|
||||||
vo.setCreateTime(dto.getCreateTime());
|
vo.setCreateTime(dto.getCreateTime());
|
||||||
|
|
||||||
|
|
@ -54,6 +56,7 @@ public class AirlineFileGroupInfoControllerConvert {
|
||||||
AirlineFileGroupInfoDTO dto = new AirlineFileGroupInfoDTO();
|
AirlineFileGroupInfoDTO dto = new AirlineFileGroupInfoDTO();
|
||||||
dto.setId(vo.getId());
|
dto.setId(vo.getId());
|
||||||
dto.setGroupId(vo.getGroupId());
|
dto.setGroupId(vo.getGroupId());
|
||||||
|
dto.setAirlineId(vo.getAirlineId());
|
||||||
dto.setCreateBy(vo.getCreateBy());
|
dto.setCreateBy(vo.getCreateBy());
|
||||||
dto.setCreateTime(vo.getCreateTime());
|
dto.setCreateTime(vo.getCreateTime());
|
||||||
dto.setUpdateBy(vo.getUpdateBy());
|
dto.setUpdateBy(vo.getUpdateBy());
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
@ -30,6 +30,12 @@ public class AirlineFileDomainImpl implements IAirlineFileDomain {
|
||||||
@Override
|
@Override
|
||||||
public Long save(AirlineFile model) {
|
public Long save(AirlineFile model) {
|
||||||
AirlineFileEntity entity = AirlineFileDomainConvert.toEntity(model);
|
AirlineFileEntity entity = AirlineFileDomainConvert.toEntity(model);
|
||||||
return airlineFileMapper.save(entity);
|
airlineFileMapper.save(entity);
|
||||||
|
return entity.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AirlineFile> selectFileNameLike(String name) {
|
||||||
|
return AirlineFileDomainConvert.toModelList(airlineFileMapper.selectFileNameLike(name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
@ -16,4 +16,5 @@ public interface IAirlineFileGroupInfoService {
|
||||||
|
|
||||||
Long save(AirlineFileGroupInfoDTO dto) throws BaseException;
|
Long save(AirlineFileGroupInfoDTO dto) throws BaseException;
|
||||||
|
|
||||||
|
Long deleteGroupInf(AirlineFileGroupInfoDTO dto) throws BaseException ;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,14 +37,18 @@ public class AirlineFileServiceGroupInfoImpl implements IAirlineFileGroupInfoSer
|
||||||
@Override
|
@Override
|
||||||
public List<AirlineFileGroupInfoDTO> selectGroupInfoListById(Long groupId) {
|
public List<AirlineFileGroupInfoDTO> selectGroupInfoListById(Long groupId) {
|
||||||
List<AirlineFileGroupInfo> models = iAirlineFileGroupInfoDomain.selectGroupInfoListById(groupId);
|
List<AirlineFileGroupInfo> models = iAirlineFileGroupInfoDomain.selectGroupInfoListById(groupId);
|
||||||
|
if (models != null) {
|
||||||
models.forEach(model -> {
|
models.forEach(model -> {
|
||||||
model.setAirlineFile(iAirlineFileService.selectById(model.getAirlineId()));
|
model.setAirlineFile(iAirlineFileService.selectById(model.getAirlineId()));
|
||||||
});
|
});
|
||||||
|
}
|
||||||
return AirlineFileGroupInfoServiceConvert.toDtoList(models);
|
return AirlineFileGroupInfoServiceConvert.toDtoList(models);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long save(AirlineFileGroupInfoDTO dto) throws BaseException {
|
public Long save(AirlineFileGroupInfoDTO dto) throws BaseException {
|
||||||
|
|
||||||
|
|
||||||
AirlineFileDTO result = iAirlineFileService.save(dto.getAirlineFileDTO());
|
AirlineFileDTO result = iAirlineFileService.save(dto.getAirlineFileDTO());
|
||||||
|
|
||||||
dto.setAirlineId(result.getId());
|
dto.setAirlineId(result.getId());
|
||||||
|
|
@ -52,12 +56,23 @@ public class AirlineFileServiceGroupInfoImpl implements IAirlineFileGroupInfoSer
|
||||||
AirlineFileGroupInfo model = AirlineFileGroupInfoServiceConvert.toModel(dto);
|
AirlineFileGroupInfo model = AirlineFileGroupInfoServiceConvert.toModel(dto);
|
||||||
|
|
||||||
// 检查唯一性:同一个分组下不能有相同的航线
|
// 检查唯一性:同一个分组下不能有相同的航线
|
||||||
boolean exists = iAirlineFileGroupInfoDomain.existsByGroupIdAndAirlineId(model.getGroupId(), model.getAirlineId());
|
|
||||||
if (exists) {
|
|
||||||
throw new BaseException("该航线已存在于当前分组中");
|
|
||||||
}
|
|
||||||
|
|
||||||
return iAirlineFileGroupInfoDomain.save(model);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -37,13 +37,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
set del_flag = 1,
|
set del_flag = 1,
|
||||||
deleted_by = #{deletedBy},
|
deleted_by = #{deletedBy},
|
||||||
deleted_time = #{deletedTime}
|
deleted_time = #{deletedTime}
|
||||||
where id = #{id}
|
<where>
|
||||||
<if test="groupId != null">
|
<if test="groupId != null">
|
||||||
and group_id = #{groupId}
|
and group_id = #{groupId}
|
||||||
</if>
|
</if>
|
||||||
<if test="airlineId != null">
|
<if test="airlineId != null">
|
||||||
and airline_id = #{airlineId}
|
and airline_id = #{airlineId}
|
||||||
</if>
|
</if>
|
||||||
|
</where>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!-- 保存分组详情 -->
|
<!-- 保存分组详情 -->
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<!-- 保存航线文件 -->
|
<!-- 保存航线文件 -->
|
||||||
<insert id="save" parameterType="com.ruoyi.airline.mapper.entity.AirlineFileEntity" useGeneratedKeys="true" keyProperty="id">
|
<insert id="save" parameterType="com.ruoyi.airline.mapper.entity.AirlineFileEntity" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
|
||||||
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)
|
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})
|
values (#{name}, #{airVendor}, #{airType}, #{fileName}, #{fileUrl}, #{type}, #{source}, #{status}, #{fileMd5}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}, #{remark})
|
||||||
</insert>
|
</insert>
|
||||||
|
|
@ -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>
|
||||||
Loading…
Reference in New Issue