Compare commits

...

97 Commits
test ... main

Author SHA1 Message Date
gyb 435ed1c62f feat:增加标注分组 2026-03-16 19:28:18 +08:00
gyb d4253be537 feat:增加标注分组 2026-03-16 18:45:45 +08:00
gyb ce41e4a490 feat:增加标注分组 2026-03-16 18:33:21 +08:00
gyb c7793d7c71 feat:增加批量移动接口,优化查询接口逻辑 2026-03-16 14:35:31 +08:00
gyb e761efb850 feat:增加批量移动接口,优化查询接口逻辑 2026-03-16 11:47:46 +08:00
gyb 7c77837cf5 feat:增加批量移动接口,优化查询接口逻辑 2026-03-16 11:21:17 +08:00
gyb c767572a9f feat:增加标注批量删除接口 2026-03-16 09:09:58 +08:00
gyb 3f87e669d5 feat:增加标注批量删除接口 2026-03-16 08:31:36 +08:00
gyb 8e1550a045 feat:增加通过航线id查询航线详情的接口 2026-03-13 13:44:41 +08:00
gyb 9fd2b1f6d7 fix:bug修复 2026-03-12 19:08:58 +08:00
gyb 1be9f626a0 feat:提交标注代码,调整逻辑 2026-03-12 16:59:00 +08:00
gyb 395397fedc feat:提交标注代码 2026-03-12 16:25:40 +08:00
gyb 755cd26ddb feat:提交标注代码 2026-03-12 15:37:42 +08:00
gyb cac50ce393 feat:提交标注代码 2026-03-12 15:06:54 +08:00
gyb d56262fc34 feat:提交标注代码 2026-03-12 14:04:39 +08:00
gyb 7a661add52 feat:修改路径命令 2026-03-12 10:59:56 +08:00
gyb 249215edd1 feat:航线编辑接口新的航点动作保存 2026-03-11 11:52:04 +08:00
gyb b3cd8d8965 feat:航线编辑接口新的航点动作保存 2026-03-11 10:45:16 +08:00
gyb 7d3d36eb0f feat:航线编辑接口新的航点动作保存 2026-03-11 10:15:40 +08:00
gyb c794a06e7a feat:航线编辑接口新的航点动作保存 2026-03-11 09:32:36 +08:00
gyb 337694250a feat:航线编辑接口新的航点动作保存 2026-03-11 08:45:45 +08:00
gyb 73e1deae4e feat:航线增加新的航点动作保存 2026-03-10 17:30:33 +08:00
gyb 0fd39cf7f3 fix:航线bug修复 2026-03-09 11:40:18 +08:00
gyb ca98f67f13 fix:航线bug修复 2026-03-09 11:27:43 +08:00
gyb 0820951503 feat:空域增加批量删除接口 2026-03-06 14:35:03 +08:00
gyb 9718e3ae41 feat:航点修改保存 2026-03-06 14:28:51 +08:00
gyb 3ccdb8ed5a feat:增加航线修改操作的日志 2026-03-06 11:07:43 +08:00
gyb bb7363bd74 feat:增加无人机类型负载属性 2026-03-06 10:48:49 +08:00
gyb d1398b5991 Revert "feat:增加无人机类型负载属性"
This reverts commit 0da4f1f8d4.
2026-03-04 16:43:00 +08:00
gyb 0da4f1f8d4 feat:增加无人机类型负载属性 2026-03-04 16:41:03 +08:00
gyb 4a6cb25af2 feat:增加航线属性字段 2026-03-02 15:08:39 +08:00
gyb 78428c9e98 feat:增加空域限时规则 2026-03-02 10:11:37 +08:00
gyb 79fcee731d feat:增加空域限时规则 2026-03-02 10:05:48 +08:00
gyb 081261e750 feat:增加航线限高 2026-03-02 09:53:48 +08:00
gyb ba86a0d011 feat:调试接口 2026-02-28 14:03:38 +08:00
gyb f9494ee635 feat:调试接口 2026-02-28 09:11:03 +08:00
gyb d32d652ba2 feat:调试接口 2026-02-28 08:45:14 +08:00
gyb c647948ca9 feat:调试接口 2026-02-28 08:28:58 +08:00
gyb 291b3e1b7b feat:修复过滤查询不生效的问题 2026-02-27 20:15:39 +08:00
gyb ce52499b3e feat:修复过滤查询不生效的问题 2026-02-27 20:08:31 +08:00
gyb 7583f3f98e feat:修复过滤查询不生效的问题 2026-02-27 19:55:00 +08:00
gyb d0cc06c353 feat:调整日志级别 2026-02-27 19:46:52 +08:00
gyb aa5a6641d7 feat:航线增加无人机类型字段 2026-02-27 19:44:29 +08:00
gyb 4491b34704 feat:航线增加无人机类型字段 2026-02-27 16:00:03 +08:00
gyb 38661172ed feat:无人机类型增加类型唯一值 2026-02-26 18:41:25 +08:00
gyb c0d7b808ad feat:调整查询航线分组查询接口 2026-02-26 17:33:13 +08:00
gyb a7cea1a5fb feat:调整查询sql 2026-02-26 16:00:41 +08:00
gyb c2145cf08e feat:调整查询sql 2026-02-26 15:42:17 +08:00
gyb 9f14494575 feat:调整查询sql 2026-02-26 15:39:49 +08:00
gyb cc559f4cb1 feat:增加新接口 2026-02-26 15:29:13 +08:00
gyb 43c4b027bc feat:调整空域分组详情删除接口 2026-02-25 17:07:00 +08:00
gyb 4fd0ee3c4e feat:调整空域分组详情删除接口 2026-02-25 17:06:20 +08:00
gyb c2cc12eeda feat:调整空域分组详情删除接口 2026-02-25 17:05:39 +08:00
gyb 40645de69c feat:调整空域分组详情新增接口 2026-02-25 16:38:55 +08:00
gyb cc1f539a82 feat:调整空域分组详情新增接口 2026-02-25 16:29:32 +08:00
gyb f2b97009ab feat:增加空域相关功能接口 2026-02-25 15:16:28 +08:00
gyb bd79084fa0 bug:bug修复 2026-02-12 16:44:32 +08:00
gyb fc0e317432 bug:bug修复 2026-02-12 16:40:04 +08:00
gyb 7252f19a4b bug:bug修复 2026-02-12 16:12:15 +08:00
gyb 888659deae bug:bug修复 2026-02-12 15:34:47 +08:00
gyb 89f8739c18 fit:触发构建 2026-02-11 13:48:55 +08:00
gyb 9a4fa70463 fit:触发构建 2026-02-11 13:36:37 +08:00
gyb 11336eaea1 fit:增加航线分类接口计数 2026-02-11 13:12:13 +08:00
gyb 1d25c15369 bug:接口报错修复 2026-02-10 11:19:55 +08:00
gyb 7da906c608 bug:修复报错 2026-02-09 13:16:56 +08:00
gyb ae03e92685 bug:修复报错 2026-02-09 10:58:01 +08:00
gyb b9eded75c7 bug:航线一期增加航线查询接口 2026-02-09 08:40:59 +08:00
gyb 9f11633445 fit:航线二期,增加批量航线文件导出接口 2026-02-09 08:35:21 +08:00
gyb f2f849c6e6 Merge remote-tracking branch 'origin/main' 2026-01-30 15:58:10 +08:00
gyb b0e873e9d4 fit:增加航线类型 2026-01-30 15:55:03 +08:00
高大 f27bfc33a2 fit:航线管理,增加批量移动分组的功能 2026-01-29 17:49:03 +08:00
高大 c136e237fb bug:修复修改航线名称导致的问题 2026-01-29 15:39:05 +08:00
高大 b03e858b3b fit:提交触发构建 2026-01-29 13:02:16 +08:00
高大 7e426b3bc7 fit:增加批量删除分组航线功能 2026-01-29 11:38:50 +08:00
高大 ea0a741933 bug:修复新增航线无法自动命名的问题 2026-01-29 11:03:33 +08:00
高大 32ce1b3383 fix:提交重新构建 2026-01-28 20:34:16 +08:00
高大 2377e3e41e fix:优化convert 2026-01-28 20:15:59 +08:00
高大 5e34d029b6 fix:优化convert 2026-01-28 20:15:05 +08:00
高大 272aaa637e fix:联调航线上传 2026-01-28 11:20:39 +08:00
高大 bf42d6b13e Merge remote-tracking branch 'origin/main' 2026-01-28 10:29:19 +08:00
高大 2202f4b034 fix:优化导入逻辑,支持waypoints解析 2026-01-28 10:28:51 +08:00
孙小云 bf538371d7 Merge branch 'main' of http://th.local.t-aaron.com:13000/THENG/a-tuoheng-airline 2026-01-28 09:37:43 +08:00
孙小云 8e1f5c622a xx 2026-01-28 09:37:39 +08:00
高大 a01ec7becd fix:增加自动航线名称的逻辑 2026-01-28 09:11:59 +08:00
高大 99e961c476 fix:修复编译报错 2026-01-27 17:30:13 +08:00
孙小云 8e83c0adc1 修改路径 2026-01-27 15:03:11 +08:00
高大 b9a4eefa4b fix:统一git调用格式 2026-01-27 13:18:16 +08:00
高大 dee7f20935 fix:修复增加控制层BaseException处理 2026-01-27 13:05:51 +08:00
高大 d2d265ec91 Merge remote-tracking branch 'origin/main' 2026-01-27 11:33:55 +08:00
高大 d957404beb fix:修复增加控制层BaseException处理 2026-01-27 11:33:17 +08:00
孙小云 9c1a5dca5b Merge branch 'main' of http://th.local.t-aaron.com:13000/THENG/a-tuoheng-airline 2026-01-26 16:59:58 +08:00
孙小云 4110db19f7 xx 2026-01-26 16:59:45 +08:00
高大 f9babad49d fix:修复接口500的问题,调整接口路径 2026-01-26 16:37:58 +08:00
高大 acc087cd72 fix:修复接口500的问题,增加BaseController getDataTable 的空表处理 2026-01-26 15:47:46 +08:00
高大 4d4b85dd7f fix:优化航线管理航线上传逻辑 2026-01-24 17:18:08 +08:00
高大 5acb3656d3 feat:航线管理,优化接口描述,临时去除接口权限 2026-01-24 16:18:10 +08:00
高大 551d5149b6 feat:航线管理,优化接口描述,临时去除接口权限 2026-01-24 16:17:41 +08:00
151 changed files with 8172 additions and 1343 deletions

10
pom.xml
View File

@ -23,6 +23,11 @@
<artifactId>tuoheng-api-airline</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-api-system</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
@ -93,11 +98,6 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-core</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules-file</artifactId>
<version>3.6.7</version>
</dependency>
<!-- Flyway Database Migration -->
<dependency>

View File

@ -1 +1 @@
a
ddddda

View File

@ -0,0 +1,223 @@
package com.ruoyi.airline.controller;
import com.ruoyi.airline.api.domain.AirlineAreaGroupDetailVO;
import com.ruoyi.airline.api.domain.AirlineAreaGroupVO;
import com.ruoyi.airline.api.domain.AirlineAreaVO;
import com.ruoyi.airline.controller.convert.AirlineAreaControllerConvert;
import com.ruoyi.airline.controller.convert.AirlineAreaGroupControllerConvert;
import com.ruoyi.airline.controller.convert.AirlineAreaGroupDetailControllerConvert;
import com.ruoyi.airline.service.api.IAirlineAreaGroupService;
import com.ruoyi.airline.service.dto.AirlineAreaDTO;
import com.ruoyi.airline.service.dto.AirlineAreaGroupDTO;
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.utils.SecurityUtils;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 空域分组
*
* @author 拓恒
*/
@RestController
@RequestMapping("/areaGroup")
@Tag(name = "空域分组管理")
public class AirlineAreaGroupController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(AirlineAreaGroupController.class);
@Autowired
private IAirlineAreaGroupService iAirlineAreaGroupService;
/**
* 获取空域分组列表,根据用户Id查询分组
*
* @param airlineAreaGroupVO 查询条件
*/
@GetMapping()
@Operation(summary = "获取所有的空域分组")
public TableDataInfo index(AirlineAreaGroupVO airlineAreaGroupVO) {
startPage();
airlineAreaGroupVO.setUserId(SecurityUtils.getUserId());
AirlineAreaGroupDTO dto = AirlineAreaGroupControllerConvert.to(airlineAreaGroupVO);
List<AirlineAreaGroupDTO> list = iAirlineAreaGroupService.selectGroupList(dto);
List<AirlineAreaGroupVO> result = AirlineAreaGroupControllerConvert.toApiDomainList(list);
return getDataTable(result);
}
/**
* 新增分组
*/
@PostMapping
@Operation(summary = "新增分组")
public AjaxResult add(@Validated @RequestBody AirlineAreaGroupVO group) {
group.setUserId(SecurityUtils.getUserId());
group.setCreateBy(SecurityUtils.getUserId().toString());
group.setUpdateBy(SecurityUtils.getUserId().toString());
AirlineAreaGroupDTO dto = AirlineAreaGroupControllerConvert.to(group);
if (iAirlineAreaGroupService.checkGroupNameUnique(dto)) {
return error("新增分组'" + group.getGroupName() + "'失败,分组名称已存在");
}
return toAjax(iAirlineAreaGroupService.insertGroup(dto));
}
/**
* 修改分组
*/
@PutMapping
@Operation(summary = "修改分组")
public AjaxResult edit(@Validated @RequestBody AirlineAreaGroupVO group) {
group.setUserId(SecurityUtils.getUserId());
group.setUpdateBy(SecurityUtils.getUserId().toString());
AirlineAreaGroupDTO dto = AirlineAreaGroupControllerConvert.to(group);
if (iAirlineAreaGroupService.checkGroupNameUnique(dto)) {
return error("修改分组'" + group.getGroupName() + "'失败,分组名称已存在");
}
return toAjax(iAirlineAreaGroupService.updateGroup(dto));
}
/**
* 删除分组前端校验分组下是否有空域弹出确认删除提示如果确认会将分组及空域一起删除
*/
@DeleteMapping("/delete/{groupId}")
@Operation(summary = "删除分组")
public AjaxResult removeByQueryParam(@PathVariable Long groupId) {
return toAjax(iAirlineAreaGroupService.deletegroupById(SecurityUtils.getUserId(), groupId));
}
/**
* 按照空域分组查询所有的空域信息包含坐标点信息
*
* @param groupId 分组ID
* @return 空域分组详情
*/
@GetMapping("/airspaceList/{groupId}")
@Operation(summary = "按照空域分组查询所有的空域信息")
public AjaxResult selectAirspaceListByGroupId(@PathVariable Long groupId) {
AirlineAreaGroupDTO dto = iAirlineAreaGroupService.selectAirspaceListByGroupId(SecurityUtils.getUserId(), groupId);
// 使用转换类进行转换
AirlineAreaGroupDetailVO result = AirlineAreaGroupDetailControllerConvert.from(dto);
return success(result);
}
/**
* 修改空域信息包含坐标点信息
*
* @param area 空域信息
* @return 修改结果
*/
@PutMapping("/updateArea")
@Operation(summary = "修改空域信息")
public AjaxResult updateAreaWithPoints(@Validated @RequestBody AirlineAreaVO area) {
// 设置更新人
area.setUpdateBy(SecurityUtils.getUserId().toString());
// 使用转换类进行转换
AirlineAreaDTO dto = AirlineAreaControllerConvert.to(area);
return toAjax(iAirlineAreaGroupService.updateAreaWithPoints(dto));
}
/**
* 在指定分组下新增空域包含坐标点信息
*
* @param groupId 分组ID
* @param area 空域信息
* @return 新增结果
*/
@PostMapping("/addArea/{groupId}")
@Operation(summary = "在指定分组下新增空域")
public AjaxResult addAreaWithGroup(@PathVariable Long groupId, @Validated @RequestBody AirlineAreaVO area) {
// 设置创建人和更新人
area.setCreateBy(SecurityUtils.getUserId().toString());
area.setUpdateBy(SecurityUtils.getUserId().toString());
// 使用转换类进行转换
AirlineAreaDTO dto = AirlineAreaControllerConvert.to(area);
return toAjax(iAirlineAreaGroupService.insertAreaWithGroup(groupId, dto));
}
/**
* 删除空域软删除
*
* @param areaId 空域ID
* @return 删除结果
*/
@DeleteMapping("/deleteArea/{areaId}")
@Operation(summary = "删除空域")
public AjaxResult deleteArea(@PathVariable Long areaId) {
return toAjax(iAirlineAreaGroupService.deleteArea(areaId));
}
/**
* 批量移动空域到新分组
*
* @param areaIds 空域ID列表
* @param groupId 原分组ID
* @param newGroupId 新分组ID
* @return 移动结果
*/
@PostMapping("/move/{groupId}/{newGroupId}")
@Operation(summary = "批量移动空域到新分组")
public AjaxResult batchMove(@RequestBody List<Long> areaIds, @PathVariable("groupId") Long groupId, @PathVariable("newGroupId") Long newGroupId) {
if (groupId == null) {
return error("原分组ID不能为空");
}
if (newGroupId == null) {
return error("新分组ID不能为空");
}
if (areaIds == null || areaIds.isEmpty()) {
return error("没有需要移动的空域");
}
int result = iAirlineAreaGroupService.batchMoveAreaToNewGroup(areaIds, groupId, newGroupId);
if (result > 0) {
return success("移动成功,共移动 " + result + " 个空域");
}
return error("移动失败");
}
/**
* 根据用户ID查询空域列表支持名称模糊查询
*
* @param area 查询条件
* @return 空域列表
*/
@PostMapping("/areaList")
@Operation(summary = "根据用户ID查询空域列表")
public AjaxResult selectAreaListByUserId(@RequestBody AirlineAreaVO area) {
// 设置用户ID
area.setCreateBy(SecurityUtils.getUserId().toString());
// 转换为DTO
AirlineAreaDTO dto = AirlineAreaControllerConvert.to(area);
// 调用服务层方法
List<AirlineAreaDTO> list = iAirlineAreaGroupService.selectAreaListByUserId(dto);
// 转换为VO
List<AirlineAreaVO> result = AirlineAreaControllerConvert.fromList(list);
return success(result);
}
/**
* 批量删除空域
*
* @param areaIds 空域ID列表
* @return 删除结果
*/
@DeleteMapping("/batchDeleteArea")
@Operation(summary = "批量删除空域")
public AjaxResult batchDeleteArea(@RequestBody List<Long> areaIds) {
if (areaIds == null || areaIds.isEmpty()) {
return error("没有需要删除的空域");
}
int result = iAirlineAreaGroupService.batchDeleteArea(areaIds);
if (result > 0) {
return success("删除成功,共删除 " + result + " 个空域");
}
return error("删除失败");
}
}

View File

@ -1,43 +0,0 @@
package com.ruoyi.airline.controller;
import com.ruoyi.airline.api.domain.AirlineDataVO;
import com.ruoyi.airline.service.api.IAirlineDataService;
import com.ruoyi.airline.service.dto.AirlineDataDTO;
import com.ruoyi.airline.controller.convert.AirlineDataControllerConvert;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 航线数据Controller
*
* @author ruoyi
* @date 2026-01-17
*/
@RestController
@RequestMapping("/airline/data")
public class AirlineDataController extends BaseController
{
@Autowired
private IAirlineDataService airlineDataService;
/**
* 查询航线数据列表
*/
@RequiresPermissions("system:dept:query")
@GetMapping()
public TableDataInfo list(AirlineDataVO airlineDataVO)
{
AirlineDataDTO dto = AirlineDataControllerConvert.toDTO(airlineDataVO);
startPage();
List<AirlineDataDTO> list = airlineDataService.selectAirlineDataList(dto);
return getDataTable(AirlineDataControllerConvert.toVOList(list));
}
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.airline.controller;
import com.ruoyi.airline.api.domain.AirlineFileGroupInfoVO;
import com.ruoyi.airline.api.domain.AirlineFileVO;
import com.ruoyi.airline.controller.convert.AirlineFileControllerConvert;
import com.ruoyi.airline.service.api.IAirlineFileService;
@ -7,28 +8,25 @@ 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
*
* @author ruoyi
* @author 拓恒
* @date 2026-01-17
*/
@RestController
@RequestMapping("/airline/file")
@RequestMapping("/file")
@Tag(name = "航线管理")
public class AirlineFileController extends BaseController {
@ -45,28 +43,33 @@ public class AirlineFileController extends BaseController {
* @param entity 实体对象
* @return
*/
@RequiresPermissions("airline:file:edit")
@Log(title = "修改航线属性", businessType = BusinessType.UPDATE)
// @RequiresPermissions("airline:file:edit")
// @Log(title = "修改航线属性", businessType = BusinessType.UPDATE)
@PutMapping("/edit")
public AjaxResult edit(@RequestBody AirlineFileVO entity) {
AirlineFileDTO dto = AirlineFileControllerConvert.toDTO(entity);
return success(airlineFileService.save(dto));
@Operation(summary = "编辑航线文件描述信息")
public AjaxResult edit(@RequestBody AirlineFileGroupInfoVO entity) {
log.info("编辑航线文件信息请求: {}", entity);
AirlineFileDTO dto = AirlineFileControllerConvert.to(entity.getAirlineFileVO());
log.info("转换后的DTO: {}", dto);
Long result = airlineFileService.update(dto);
log.info("更新结果: {}", result);
return success(result);
}
/**
* 长江口
* 创建航线
* <p>
* kmz类似zip一般情况下内部包含kml和wpml两个文件
*
* @param vo
*/
@RequiresPermissions("airline:file:parseAndUpload")
@Log(title = "创建航线", businessType = BusinessType.UPDATE)
@PostMapping("/parseAndUpload")
// @RequiresPermissions("airline:file:parseAndUpload")
// @Log(title = "创建航线", businessType = BusinessType.UPDATE)
@PostMapping("/createOrUpdate")
@Operation(summary = "编辑航线文件内容,生产航点新文件")
public AjaxResult createOrUpdate(@RequestBody AirlineFileVO vo) {
AirlineFileDTO airlineFile = AirlineFileControllerConvert.toDTO(vo);
AirlineFileDTO airlineFile = AirlineFileControllerConvert.to(vo);
try {
return success(airlineFileService.createOrupdate(airlineFile));
} catch (IOException e) {
@ -74,4 +77,15 @@ public class AirlineFileController extends BaseController {
}
}
@GetMapping("/{id}")
@Operation(summary = "根据ID查询航线文件详情")
public AjaxResult getById(@PathVariable Long id) {
AirlineFileDTO dto = airlineFileService.selectById(id);
if (dto == null) {
return error("航线文件不存在");
}
AirlineFileVO vo = AirlineFileControllerConvert.from(dto);
return success(vo);
}
}

View File

@ -3,13 +3,13 @@ package com.ruoyi.airline.controller;
import com.ruoyi.airline.api.domain.AirlineFileGroupVO;
import com.ruoyi.airline.controller.convert.AirlineFileGroupControllerConvert;
import com.ruoyi.airline.service.api.IAirlineFileGroupService;
import com.ruoyi.airline.service.dto.AirlineFileDTO;
import com.ruoyi.airline.service.dto.AirlineFileGroupDTO;
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 com.ruoyi.common.security.utils.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -25,7 +25,7 @@ import java.util.List;
* @author 拓恒
*/
@RestController
@RequestMapping("/airline/fileGroup")
@RequestMapping("/fileGroup")
@Tag(name = "航线分组管理")
public class AirlineFileGroupController extends BaseController {
@ -40,13 +40,13 @@ public class AirlineFileGroupController extends BaseController {
* @param airlineFileVO 查询条件
* @return
*/
@RequiresPermissions("airline:group:list")
// @RequiresPermissions("airline:group:list")
@GetMapping()
@Operation(summary = "获取所有的航线分组")
@Operation(summary = "获取所有的航线分组")
public TableDataInfo index(AirlineFileGroupVO airlineFileVO) {
startPage();
airlineFileVO.setUserId(SecurityUtils.getUserId());
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.toDTO(airlineFileVO);
airlineFileVO.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.to(airlineFileVO);
List<AirlineFileGroupDTO> list = iAirlineFileGroupService.selectGroupList(dto);
List<AirlineFileGroupVO> result = AirlineFileGroupControllerConvert.toApiDomainList(list);
return getDataTable(result);
@ -55,24 +55,24 @@ public class AirlineFileGroupController extends BaseController {
/**
* 根据分组编号获取详细信息
*/
@RequiresPermissions("airline:group:query")
// @RequiresPermissions("airline:group:query")
@GetMapping(value = "/{groupId}")
@Operation(summary = "根据分组ID 获取分组详情信息")
public AjaxResult getInfo(@PathVariable Long groupId) {
@Operation(summary = "根据分组ID 获取分组详情信息")
public AjaxResult getInfo(@PathVariable("groupId") Long groupId) {
return success(iAirlineFileGroupService.selectAirLineListsByGroupId(SecurityUtils.getUserId(), groupId));
}
/**
* 新增分组
*/
@RequiresPermissions("airline:group:add")
@Log(title = "新增分组", businessType = BusinessType.INSERT)
// @RequiresPermissions("airline:group:add")
// @Log(title = "新增分组", businessType = BusinessType.INSERT)
@PostMapping
@Operation(summary = "新增分组")
@Operation(summary = "新增分组")
public AjaxResult add(@Validated @RequestBody AirlineFileGroupVO group) {
group.setUserId(SecurityUtils.getUserId());
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.toDTO(group);
if (!iAirlineFileGroupService.checkGroupNameUnique(dto)) {
group.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.to(group);
if (iAirlineFileGroupService.checkGroupNameUnique(dto)) {
return error("新增分组'" + group.getGroupName() + "'失败,分组名称已存在");
}
return toAjax(iAirlineFileGroupService.insertGroup(dto));
@ -81,14 +81,14 @@ public class AirlineFileGroupController extends BaseController {
/**
* 修改分组
*/
@RequiresPermissions("airline:group:edit")
@Log(title = "修改分组", businessType = BusinessType.UPDATE)
// @RequiresPermissions("airline:group:edit")
// @Log(title = "修改分组", businessType = BusinessType.UPDATE)
@PutMapping
@Operation(summary = "修改分组")
@Operation(summary = "修改分组")
public AjaxResult edit(@Validated @RequestBody AirlineFileGroupVO group) {
group.setUserId(SecurityUtils.getUserId());
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.toDTO(group);
if (!iAirlineFileGroupService.checkGroupNameUnique(dto)) {
group.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.to(group);
if (iAirlineFileGroupService.checkGroupNameUnique(dto)) {
return error("修改分组'" + group.getGroupName() + "'失败,分组名称已存在");
}
return toAjax(iAirlineFileGroupService.updateGroup(dto));
@ -97,12 +97,27 @@ public class AirlineFileGroupController extends BaseController {
/**
* 删除分组前端校验分组下是否有航线弹出确认删除提示如果确认会将分组及航线一起删除
*/
@RequiresPermissions("airline:group:remove")
@Log(title = "删除分组", businessType = BusinessType.DELETE)
@DeleteMapping("/{groupId}")
@Operation(summary = "删除分组")
public AjaxResult remove(@PathVariable Long groupId) {
// @RequiresPermissions("airline:group:remove")
// @Log(title = "删除分组", businessType = BusinessType.DELETE)
@DeleteMapping("/delete/{groupId}")
@Operation(summary = "删除分组")
public AjaxResult removeByQueryParam(@PathVariable("groupId") Long groupId) {
return toAjax(iAirlineFileGroupService.deletegroupById(SecurityUtils.getUserId(), groupId));
}
/**
* 根据用户ID查询所有符合条件的航线包含分组信息
*
* @param dto 查询条件
* @return 航线列表
*/
@PostMapping("/airlineList")
@Operation(summary = "根据用户ID查询所有符合条件的航线")
public TableDataInfo selectAirlineListByUserId(AirlineFileDTO dto) {
startPage();
dto.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
List<AirlineFileDTO> list = iAirlineFileGroupService.selectAirlineListByUserId(dto);
return getDataTable(list);
}
}

View File

@ -1,6 +1,9 @@
package com.ruoyi.airline.controller;
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.ruoyi.airline.api.domain.AirlineFileGroupInfoVO;
import com.ruoyi.airline.api.domain.AirlineFileVO;
import com.ruoyi.airline.controller.convert.AirlineFileControllerConvert;
import com.ruoyi.airline.controller.convert.AirlineFileGroupInfoControllerConvert;
import com.ruoyi.airline.service.api.IAirlineFileGroupInfoService;
import com.ruoyi.airline.service.api.IAirlineFileService;
@ -10,13 +13,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;
/**
@ -25,7 +27,7 @@ import java.util.List;
* @author 拓恒
*/
@RestController
@RequestMapping("/airline/fileGroupInfo")
@RequestMapping("/fileGroupInfo")
@Tag(name = "分组航线管理")
public class AirlineFileGroupInfoController extends BaseController {
@ -43,9 +45,26 @@ public class AirlineFileGroupInfoController extends BaseController {
* @param groupId 分组ID
* @return
*/
@RequiresPermissions("airline:groupInfo:list")
@GetMapping()
public TableDataInfo selectGroupInfoListById(Long groupId) {
// @RequiresPermissions("airline:groupInfo:list")
@GetMapping("/{groupId}")
@Operation(summary = "编辑航线文件内容,生产航点新文件")
public TableDataInfo selectGroupInfoListById(@PathVariable("groupId") Long groupId) {
startPage();
List<AirlineFileGroupInfoDTO> list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId);
// List<AirlineFileGroupInfoVO> result = AirlineFileGroupInfoControllerConvert.fromList(list);
return getDataTable(list);
}
/**
* 获取航线文件分组列表,根据用户Id查询分组使用查询参数
*
* @param groupId 分组ID
* @return
*/
// @RequiresPermissions("airline:groupInfo:list")
@GetMapping
@Operation(summary = "编辑航线文件内容,生产航点新文件")
public TableDataInfo selectGroupInfoListByQueryId(@RequestParam("groupId") Long groupId) {
startPage();
List<AirlineFileGroupInfoDTO> list = iAirlineFileGroupInfoService.selectGroupInfoListById(groupId);
List<AirlineFileGroupInfoVO> result = AirlineFileGroupInfoControllerConvert.toApiDomainList(list);
@ -60,31 +79,141 @@ public class AirlineFileGroupInfoController extends BaseController {
*
* @param file
*/
@PostMapping("/parseAndUpload")
public AjaxResult parseAndUpload(@RequestParam("file") MultipartFile file, Long groupId) throws IOException {
AirlineFileDTO dto = iAirlineFileService.parseAndUplload(file);
AirlineFileDTO result = iAirlineFileService.save(dto);
@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, groupId);
AirlineFileGroupInfoDTO infoDTO = new AirlineFileGroupInfoDTO();
infoDTO.setGroupId(groupId);
infoDTO.setAirlineId(result.getId());
return success(iAirlineFileGroupInfoService.save(infoDTO));
infoDTO.setAirlineFileDTO(dto);
AirlineFileDTO result = iAirlineFileGroupInfoService.save(infoDTO);
return success(AirlineFileControllerConvert.from(result));
}
/**
* 在当前分组下添加初始航线空的航线
*
* @param vo 实体对象
* @return
*/
@PostMapping("/add")
public AjaxResult add(@RequestBody AirlineFileGroupInfoVO vo) throws IOException {
@PostMapping()
@Operation(summary = "在当前分组下添加初始航线,必须上传分组ID")
public AjaxResult add(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException {
if (vo.getGroupId() == null) {
throw new BaseException("分组ID不能为空");
}
AirlineFileGroupInfoDTO dto = AirlineFileGroupInfoControllerConvert.toDTO(vo);
AirlineFileGroupInfoDTO result = iAirlineFileGroupInfoService.save(dto);
return success(AirlineFileGroupInfoControllerConvert.toVO(result));
AirlineFileGroupInfoDTO infoDTO = AirlineFileGroupInfoControllerConvert.to(vo);
AirlineFileDTO result = iAirlineFileGroupInfoService.save(infoDTO);
return success(AirlineFileControllerConvert.from(result));
}
/***
* 删除分组详情
* @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.to(vo);
Long result = iAirlineFileGroupInfoService.deleteGroupInfo(dto);
if (result > 0) {
return success(result);
}
throw new BaseException("删除失败");
}
/***
* 批量删除分组详情
* @param airLineIds
* @return
* @throws BaseException
*/
@DeleteMapping("/batchDelete/{groupId}")
@Operation(summary = "批量删除分组详情")
public AjaxResult delete(@RequestBody List<Long> airLineIds, @PathVariable("groupId") Long groupId) throws BaseException {
if (groupId == null) {
throw new BaseException("分组ID不能为空");
}
if (CollectionUtils.isEmpty(airLineIds)) {
throw new BaseException("没有需要删除的航线");
}
Long result = iAirlineFileGroupInfoService.deleteGroupInfoBatch(airLineIds, groupId);
if (result > 0) {
return success(result);
}
throw new BaseException("删除失败");
}
/***
* 移动分组详情到新分组
* @param vo
* @param groupId
* @return
* @throws BaseException
*/
@PostMapping("/move/{groupId}")
@Operation(summary = "移动分组详情到新分组")
public AjaxResult move(@RequestBody AirlineFileGroupInfoVO vo, @PathVariable("groupId") Long groupId) throws BaseException {
AirlineFileGroupInfoDTO dto = AirlineFileGroupInfoControllerConvert.to(vo);
Long result = iAirlineFileGroupInfoService.moveGroupInfo(
dto, groupId
);
if (result > 0) {
return success(result);
}
throw new BaseException("移动失败");
}
@PostMapping("/move/{groupId}/{newGroupId}")
@Operation(summary = "批量移动分组详情到新分组")
public AjaxResult batchMove(@RequestBody List<Long> airlines, @PathVariable("groupId") Long groupId, @PathVariable("newGroupId") Long newGroupId) throws BaseException {
if (groupId == null) {
throw new BaseException("原分组ID不能为空");
}
if (newGroupId == null) {
throw new BaseException("新分组ID不能为空");
}
if (CollectionUtils.isEmpty(airlines)) {
throw new BaseException("没有需要移动的航线");
}
Long result = iAirlineFileGroupInfoService.batchMoveGroupInfo(
airlines, groupId, newGroupId
);
if (result > 0) {
return success(result);
}
throw new BaseException("移动失败");
}
// 增加根据分组下的航线id进行批量导出并且支持zip压缩上传到minos将下载地址返回给前端
/**
* 批量导出航线并上传到minio
*
* @param airLineIds 航线ID列表
* @param groupId 分组ID
* @return 下载地址
* @throws BaseException
*/
@PostMapping("/batchExport/{groupId}")
@Operation(summary = "批量导出航线并上传到minio")
public AjaxResult batchExportAirlines(@RequestBody List<Long> airLineIds, @PathVariable("groupId") Long groupId) throws BaseException {
if (groupId == null) {
throw new BaseException("分组ID不能为空");
}
if (airLineIds == null || airLineIds.isEmpty()) {
throw new BaseException("没有需要导出的航线");
}
String downloadUrl = iAirlineFileGroupInfoService.batchExportAirlines(airLineIds, groupId);
return success(downloadUrl);
}
}

View File

@ -0,0 +1,154 @@
package com.ruoyi.airline.controller;
import com.ruoyi.airline.api.domain.AirlineMarkerGroupDetailVO;
import com.ruoyi.airline.api.domain.AirlineMarkerVO;
import com.ruoyi.airline.controller.convert.AirlineMarkerControllerConvert;
import com.ruoyi.airline.controller.convert.AirlineMarkerGroupDetailControllerConvert;
import com.ruoyi.airline.service.api.IAirlineMarkerGroupInfoService;
import com.ruoyi.airline.service.api.IAirlineMarkerService;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupInfoDTO;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.utils.SecurityUtils;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 标注管理
*
* @author 拓恒
*/
@RestController
@RequestMapping("/marker")
@Tag(name = "标注管理")
public class AirlineMarkerController extends BaseController {
@Autowired
private IAirlineMarkerService iAirlineMarkerService;
@Autowired
private IAirlineMarkerGroupInfoService iAirlineMarkerGroupInfoService;
/**
* 新增标注
*/
@PostMapping
@Operation(summary = "新增标注")
public AjaxResult add(@Validated @RequestBody AirlineMarkerVO marker) {
marker.setCreateBy(SecurityUtils.getUserId().toString());
marker.setUpdateBy(SecurityUtils.getUserId().toString());
AirlineMarkerDTO dto = AirlineMarkerControllerConvert.to(marker);
return toAjax(iAirlineMarkerGroupInfoService.insertMarker(dto));
}
/**
* 删除标注软删除
*/
@DeleteMapping("/{id}")
@Operation(summary = "删除标注")
public AjaxResult remove(@PathVariable Long id) {
AirlineMarkerDTO dto = new AirlineMarkerDTO();
dto.setId(id);
dto.setUpdateBy(SecurityUtils.getUserId().toString());
return toAjax(iAirlineMarkerGroupInfoService.deleteMarker(dto));
}
/**
* 修改标注
*/
@PutMapping
@Operation(summary = "修改标注")
public AjaxResult edit(@Validated @RequestBody AirlineMarkerVO marker) {
marker.setUpdateBy(SecurityUtils.getUserId().toString());
AirlineMarkerDTO dto = AirlineMarkerControllerConvert.to(marker);
return toAjax(iAirlineMarkerService.updateMarker(dto));
}
/**
* 批量删除标注
*
* @param markerIds 标注ID列表
* @return 删除结果
*/
@DeleteMapping("/batchDeleteMarker")
@Operation(summary = "批量删除标注")
public AjaxResult batchDeleteMarker(@RequestBody List<Long> markerIds) {
if (markerIds == null || markerIds.isEmpty()) {
return error("没有需要删除的标注");
}
int result = iAirlineMarkerGroupInfoService.batchDeleteMarker(markerIds);
if (result > 0) {
return success("删除成功,共删除 " + result + " 个标注");
}
return error("删除失败");
}
/**
* 获取用户下所有可用标注
*/
@GetMapping("/user-available")
@Operation(summary = "获取用户下所有可用标注")
public AjaxResult getUserAvailableMarkers(AirlineMarkerVO vo) {
AirlineMarkerDTO dto = AirlineMarkerControllerConvert.to(vo);
dto.setCreateBy(SecurityUtils.getUserId().toString());
List<AirlineMarkerDTO> dtoList = iAirlineMarkerGroupInfoService.selectAllAvailableMarkers(dto);
List<AirlineMarkerVO> result = AirlineMarkerControllerConvert.fromList(dtoList);
return success(result);
}
/**
* 获取全部可用标注
*/
@GetMapping("/all-available")
@Operation(summary = "获取全部可用标注")
public AjaxResult getAllAvailableMarkers(AirlineMarkerVO vo) {
AirlineMarkerDTO dto = AirlineMarkerControllerConvert.to(vo);
dto.setStatus(1);
List<AirlineMarkerDTO> dtoList = iAirlineMarkerGroupInfoService.selectAllAvailableMarkers(dto);
List<AirlineMarkerVO> result = AirlineMarkerControllerConvert.fromList(dtoList);
return success(result);
}
/**
* 获取标注详情
*/
@GetMapping("/{groupId}")
@Operation(summary = "按照空域分组查询所有的标准信息")
public AjaxResult getInfo(@PathVariable Long groupId) {
AirlineMarkerGroupInfoDTO dto = iAirlineMarkerGroupInfoService.selectMarkersByGroupId(groupId);
// 使用转换类进行转换
AirlineMarkerGroupDetailVO result = AirlineMarkerGroupDetailControllerConvert.from(dto);
return success(result);
}
/**
* 批量移动分组的接口
*/
@PostMapping("/move/{targetGroupId}")
@Operation(summary = "批量移动标注到指定分组")
public AjaxResult batchMoveToGroup(@RequestBody List<Long> markerIds, @PathVariable("targetGroupId") Long targetGroupId) {
if (targetGroupId == null) {
return error("目标分组ID不能为空");
}
if (markerIds == null || markerIds.isEmpty()) {
return error("没有需要移动的标注");
}
int result = iAirlineMarkerGroupInfoService.batchMoveMarkersToGroup(markerIds, targetGroupId);
if (result > 0) {
return success("移动成功,共移动 " + result + " 个标注");
}
return error("移动失败");
}
}

View File

@ -0,0 +1,123 @@
package com.ruoyi.airline.controller;
import com.ruoyi.airline.api.domain.AirlineMarkerGroupVO;
import com.ruoyi.airline.api.domain.AirlineMarkerVO;
import com.ruoyi.airline.controller.convert.AirlineMarkerControllerConvert;
import com.ruoyi.airline.controller.convert.AirlineMarkerGroupControllerConvert;
import com.ruoyi.airline.service.api.IAirlineMarkerGroupService;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupDTO;
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.utils.SecurityUtils;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 标注分组
*
* @author 拓恒
*/
@RestController
@RequestMapping("/markerGroup")
@Tag(name = "标注分组管理")
public class AirlineMarkerGroupController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(AirlineMarkerGroupController.class);
@Autowired
private IAirlineMarkerGroupService iAirlineMarkerGroupService;
/**
* 获取标注分组列表
*
* @param markerGroupVO 查询条件
*/
@GetMapping()
@Operation(summary = "获取所有的标注分组")
public TableDataInfo index(AirlineMarkerGroupVO markerGroupVO) {
startPage();
AirlineMarkerGroupDTO dto = AirlineMarkerGroupControllerConvert.to(markerGroupVO);
List<AirlineMarkerGroupDTO> list = iAirlineMarkerGroupService.selectGroupList(dto);
List<AirlineMarkerGroupVO> result = AirlineMarkerGroupControllerConvert.toApiDomainList(list);
return getDataTable(result);
}
/**
* 新增分组
*/
@PostMapping
@Operation(summary = "新增分组")
public AjaxResult add(@Validated @RequestBody AirlineMarkerGroupVO group) {
group.setCreateBy(SecurityUtils.getUserId().toString());
group.setUpdateBy(SecurityUtils.getUserId().toString());
AirlineMarkerGroupDTO dto = AirlineMarkerGroupControllerConvert.to(group);
if (iAirlineMarkerGroupService.checkGroupNameUnique(dto)) {
return error("新增分组'" + group.getName() + "'失败,分组名称已存在");
}
return toAjax(iAirlineMarkerGroupService.insertGroup(dto));
}
/**
* 修改分组
*/
@PutMapping
@Operation(summary = "修改分组")
public AjaxResult edit(@Validated @RequestBody AirlineMarkerGroupVO group) {
group.setUpdateBy(SecurityUtils.getUserId().toString());
AirlineMarkerGroupDTO dto = AirlineMarkerGroupControllerConvert.to(group);
if (iAirlineMarkerGroupService.checkGroupNameUnique(dto)) {
return error("修改分组'" + group.getName() + "'失败,分组名称已存在");
}
return toAjax(iAirlineMarkerGroupService.updateGroup(dto));
}
/**
* 删除分组
*/
@DeleteMapping("/delete/{id}")
@Operation(summary = "删除分组")
public AjaxResult removeByQueryParam(@PathVariable Long id) {
return toAjax(iAirlineMarkerGroupService.deleteGroupById(id));
}
/**
* 批量删除分组
*/
@DeleteMapping("/batchDelete")
@Operation(summary = "批量删除分组")
public AjaxResult batchRemove(@RequestBody List<Long> groupIds) {
return toAjax(iAirlineMarkerGroupService.batchDeleteGroup(groupIds));
}
/**
* 根据ID查询分组
*/
@GetMapping("/get/{id}")
@Operation(summary = "根据ID查询分组")
public AjaxResult getInfo(@PathVariable Long id) {
AirlineMarkerGroupDTO dto = iAirlineMarkerGroupService.selectGroupById(id);
AirlineMarkerGroupVO result = AirlineMarkerGroupControllerConvert.from(dto);
return success(result);
}
/**
* 在指定分组下新增标注
*/
@PostMapping("/addMarker/{id}")
@Operation(summary = "在指定分组下新增标注")
public AjaxResult addMarker(@PathVariable Long id, @Validated @RequestBody AirlineMarkerVO marker) {
marker.setCreateBy(SecurityUtils.getUserId().toString());
marker.setUpdateBy(SecurityUtils.getUserId().toString());
AirlineMarkerDTO dto = AirlineMarkerControllerConvert.to(marker);
return toAjax(iAirlineMarkerGroupService.insertMarkerWithGroup(id, dto));
}
}

View File

@ -1,70 +0,0 @@
package com.ruoyi.airline.controller;
import com.ruoyi.common.core.domain.R;
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.InnerAuth;
import com.ruoyi.airline.api.domain.AirlineTempVO;
import com.ruoyi.airline.controller.convert.AirlineTempControllerConvert;
import com.ruoyi.airline.service.api.IAirlineTempService;
import com.ruoyi.airline.service.dto.AirlineTempDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 航线临时表Controller
*
* @author ruoyi
* @date 2026-01-17
*/
@RestController
@RequestMapping("/airline/temp")
public class AirlineTempController extends BaseController
{
@Autowired
private IAirlineTempService airlineTempService;
/**
* 查询航线临时表列表
*/
@GetMapping("/list")
public TableDataInfo list(AirlineTempVO airlineTemp)
{
startPage();
// API Domain Service DTO
AirlineTempDTO dto = AirlineTempControllerConvert.toDTO(airlineTemp);
List<AirlineTempDTO> dtoList = airlineTempService.selectAirlineTempList(dto);
// Service DTO API Domain
List<AirlineTempVO> list = AirlineTempControllerConvert.toApiDomainList(dtoList);
return getDataTable(list);
}
/**
* 获取航线临时表详细信息内部调用
*/
@InnerAuth
@GetMapping(value = "/{id}")
public R<AirlineTempVO> getAirlineById(@PathVariable("id") String id)
{
AirlineTempDTO dto = airlineTempService.selectAirlineTempById(id);
AirlineTempVO airlineTemp = AirlineTempControllerConvert.toVO(dto);
return R.ok(airlineTemp);
}
/**
* 获取航线临时表详细信息外部调用
*/
@GetMapping(value = "/info/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
AirlineTempDTO dto = airlineTempService.selectAirlineTempById(id);
AirlineTempVO airlineTemp = AirlineTempControllerConvert.toVO(dto);
return success(airlineTemp);
}
}

View File

@ -0,0 +1,44 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.api.domain.AirLinePointVO;
import com.ruoyi.airline.service.dto.AirLinePointDTO;
import java.util.List;
/**
* 航线航点Controller转换类
* 用于Controller层VO和Service层DTO之间的转换
*
* @author ruoyi
* @date 2026-01-26
*/
public class AirLinePointControllerConvert extends BaseConvert<AirLinePointDTO, AirLinePointVO>
{
private static final AirLinePointControllerConvert INSTANCE = new AirLinePointControllerConvert();
private AirLinePointControllerConvert() {
super(AirLinePointDTO.class, AirLinePointVO.class);
}
public static AirLinePointVO from(AirLinePointDTO dto)
{
return INSTANCE.innerFrom(dto);
}
public static AirLinePointDTO to(AirLinePointVO vo)
{
return INSTANCE.innerTo(vo);
}
public static List<AirLinePointVO> fromList(List<AirLinePointDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirLinePointDTO> toList(List<AirLinePointVO> voList)
{
return INSTANCE.innerToList(voList);
}
}

View File

@ -0,0 +1,140 @@
package com.ruoyi.airline.controller.convert;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.airline.api.domain.AirlineAreaVO;
import com.ruoyi.airline.api.domain.AirlineAreaTimeRuleVO;
import com.ruoyi.airline.controller.convert.AirlineAreaTimeRuleControllerConvert;
import com.ruoyi.airline.service.dto.AirlineAreaDTO;
import com.ruoyi.airline.service.dto.AirlineAreaTimeRuleDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 空域Controller转换类
* 用于API VO和Service DTO之间的转换
*
* @author ruoyi
* @date 2026-02-25
*/
public class AirlineAreaControllerConvert extends BaseConvert<AirlineAreaDTO, AirlineAreaVO>
{
private static final Logger log = LoggerFactory.getLogger(AirlineAreaControllerConvert.class);
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final AirlineAreaControllerConvert INSTANCE = new AirlineAreaControllerConvert();
private AirlineAreaControllerConvert() {
super(AirlineAreaDTO.class, AirlineAreaVO.class);
}
public static AirlineAreaVO from(AirlineAreaDTO dto)
{
return INSTANCE.innerFrom(dto);
}
public static AirlineAreaDTO to(AirlineAreaVO vo)
{
return INSTANCE.innerTo(vo);
}
public static List<AirlineAreaVO> fromList(List<AirlineAreaDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineAreaDTO> toList(List<AirlineAreaVO> voList)
{
return INSTANCE.innerToList(voList);
}
@Override
protected AirlineAreaVO innerFrom(AirlineAreaDTO dto) {
if (dto == null) {
return null;
}
AirlineAreaVO vo = new AirlineAreaVO();
vo.setId(dto.getId());
vo.setName(dto.getName());
vo.setAreaType(dto.getAreaType());
vo.setStatus(dto.getStatus());
vo.setShape(dto.getShape());
vo.setAreaArea(dto.getAreaArea());
vo.setAreaPerimeter(dto.getAreaPerimeter());
vo.setRadius(dto.getRadius());
vo.setMinHeight(dto.getMinHeight());
vo.setMaxHeight(dto.getMaxHeight());
vo.setRemark(dto.getRemark());
// 转换时间规则列表
if (dto.getTimeRules() != null && !dto.getTimeRules().isEmpty()) {
List<AirlineAreaTimeRuleVO> timeRuleVOs = AirlineAreaTimeRuleControllerConvert.fromList(dto.getTimeRules());
vo.setTimeRules(timeRuleVOs);
}
// 将字符串转换为 List<PointInfo>
if (dto.getPoints() != null && !dto.getPoints().isEmpty()) {
try {
List<AirlineAreaVO.PointInfo> pointsList = objectMapper.readValue(
dto.getPoints(),
objectMapper.getTypeFactory().constructCollectionType(List.class, AirlineAreaVO.PointInfo.class)
);
vo.setPoints(pointsList);
} catch (JsonProcessingException e) {
log.error("转换坐标点信息失败: {}", e.getMessage());
}
}
return vo;
}
@Override
protected AirlineAreaDTO innerTo(AirlineAreaVO vo) {
if (vo == null) {
return null;
}
log.info("AirlineAreaControllerConvert.innerTo - vo.getName(): {}, vo.getAreaType(): {}, vo.getStatus(): {}",
vo.getName(), vo.getAreaType(), vo.getStatus());
AirlineAreaDTO dto = new AirlineAreaDTO();
dto.setId(vo.getId());
dto.setName(vo.getName());
dto.setAreaType(vo.getAreaType());
dto.setStatus(vo.getStatus());
dto.setShape(vo.getShape());
dto.setAreaArea(vo.getAreaArea());
dto.setAreaPerimeter(vo.getAreaPerimeter());
dto.setRadius(vo.getRadius());
dto.setMinHeight(vo.getMinHeight());
dto.setMaxHeight(vo.getMaxHeight());
dto.setRemark(vo.getRemark());
// 转换时间规则列表
if (vo.getTimeRules() != null && !vo.getTimeRules().isEmpty()) {
List<AirlineAreaTimeRuleDTO> timeRuleDTOs = AirlineAreaTimeRuleControllerConvert.toList(vo.getTimeRules());
dto.setTimeRules(timeRuleDTOs);
}
// List<PointInfo> 转换为字符串
if (vo.getPoints() != null && !vo.getPoints().isEmpty()) {
try {
String pointsJson = objectMapper.writeValueAsString(vo.getPoints());
dto.setPoints(pointsJson);
} catch (JsonProcessingException e) {
log.error("转换坐标点信息失败: {}", e.getMessage());
dto.setPoints("[]"); // Default to empty array
}
} else {
dto.setPoints("[]"); // Default to empty array
}
log.info("AirlineAreaControllerConvert.innerTo - dto.getName(): {}, dto.getAreaType(): {}, dto.getStatus(): {}",
dto.getName(), dto.getAreaType(), dto.getStatus());
return dto;
}
}

View File

@ -0,0 +1,52 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirlineAreaGroupVO;
import com.ruoyi.airline.service.dto.AirlineAreaGroupDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import java.util.List;
/**
* 空域分组Controller转换类
* 用于Controller VO和Service DTO之间的转换
*
* @author ruoyi
* @date 2026-02-25
*/
public class AirlineAreaGroupControllerConvert extends BaseConvert<AirlineAreaGroupDTO, AirlineAreaGroupVO>
{
private static final AirlineAreaGroupControllerConvert INSTANCE = new AirlineAreaGroupControllerConvert();
private AirlineAreaGroupControllerConvert() {
super(AirlineAreaGroupDTO.class, AirlineAreaGroupVO.class);
}
public static AirlineAreaGroupVO from(AirlineAreaGroupDTO dto)
{
return INSTANCE.innerFrom(dto);
}
public static AirlineAreaGroupDTO to(AirlineAreaGroupVO vo)
{
return INSTANCE.innerTo(vo);
}
public static List<AirlineAreaGroupVO> fromList(List<AirlineAreaGroupDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineAreaGroupDTO> toList(List<AirlineAreaGroupVO> voList)
{
return INSTANCE.innerToList(voList);
}
public static List<AirlineAreaGroupVO> toApiDomainList(List<AirlineAreaGroupDTO> dtoList) {
if (dtoList == null) {
return null;
}
return fromList(dtoList);
}
}

View File

@ -0,0 +1,81 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirlineAreaGroupDetailVO;
import com.ruoyi.airline.service.dto.AirlineAreaDTO;
import com.ruoyi.airline.service.dto.AirlineAreaGroupDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
* 空域分组详情Controller转换类
* 用于Service DTO和API VO之间的转换
*
* @author ruoyi
* @date 2026-02-25
*/
public class AirlineAreaGroupDetailControllerConvert extends BaseConvert<AirlineAreaGroupDTO, AirlineAreaGroupDetailVO>
{
private static final Logger log = LoggerFactory.getLogger(AirlineAreaGroupDetailControllerConvert.class);
private static final AirlineAreaGroupDetailControllerConvert INSTANCE = new AirlineAreaGroupDetailControllerConvert();
private AirlineAreaGroupDetailControllerConvert() {
super(AirlineAreaGroupDTO.class, AirlineAreaGroupDetailVO.class);
}
public static AirlineAreaGroupDetailVO from(AirlineAreaGroupDTO dto)
{
return INSTANCE.innerFrom(dto);
}
public static AirlineAreaGroupDTO to(AirlineAreaGroupDetailVO vo)
{
return INSTANCE.innerTo(vo);
}
public static List<AirlineAreaGroupDetailVO> fromList(List<AirlineAreaGroupDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineAreaGroupDTO> toList(List<AirlineAreaGroupDetailVO> voList)
{
return INSTANCE.innerToList(voList);
}
@Override
protected AirlineAreaGroupDetailVO innerFrom(AirlineAreaGroupDTO dto) {
if (dto == null) {
return null;
}
AirlineAreaGroupDetailVO result = new AirlineAreaGroupDetailVO();
result.setGroupId(dto.getGroupId());
if (dto.getGroupInfos() != null && !dto.getGroupInfos().isEmpty()) {
List<com.ruoyi.airline.api.domain.AirlineAreaVO> airspaceList = new ArrayList<>();
for (AirlineAreaDTO area : dto.getGroupInfos()) {
// 使用 AirlineAreaControllerConvert 进行转换
com.ruoyi.airline.api.domain.AirlineAreaVO vo = AirlineAreaControllerConvert.from(area);
airspaceList.add(vo);
}
result.setAirspaceList(airspaceList);
}
return result;
}
@Override
protected AirlineAreaGroupDTO innerTo(AirlineAreaGroupDetailVO vo) {
if (vo == null) {
return null;
}
AirlineAreaGroupDTO dto = new AirlineAreaGroupDTO();
dto.setGroupId(vo.getGroupId());
// 这里不需要转换 airspaceList groupInfos因为通常是从服务层到控制层的转换
return dto;
}
}

View File

@ -0,0 +1,146 @@
package com.ruoyi.airline.controller.convert;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.airline.api.domain.AirlineAreaTimeRuleVO;
import com.ruoyi.airline.service.dto.AirlineAreaTimeRuleDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 空域时间规则 Controller 转换类
* 用于 API VO Service DTO 之间的转换
*
* @author 拓恒
*/
public class AirlineAreaTimeRuleControllerConvert extends BaseConvert<AirlineAreaTimeRuleDTO, AirlineAreaTimeRuleVO>
{
private static final Logger log = LoggerFactory.getLogger(AirlineAreaTimeRuleControllerConvert.class);
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final AirlineAreaTimeRuleControllerConvert INSTANCE = new AirlineAreaTimeRuleControllerConvert();
private AirlineAreaTimeRuleControllerConvert() {
super(AirlineAreaTimeRuleDTO.class, AirlineAreaTimeRuleVO.class);
}
public static AirlineAreaTimeRuleVO from(AirlineAreaTimeRuleDTO dto)
{
return INSTANCE.innerFrom(dto);
}
public static AirlineAreaTimeRuleDTO to(AirlineAreaTimeRuleVO vo)
{
return INSTANCE.innerTo(vo);
}
public static List<AirlineAreaTimeRuleVO> fromList(List<AirlineAreaTimeRuleDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineAreaTimeRuleDTO> toList(List<AirlineAreaTimeRuleVO> voList)
{
return INSTANCE.innerToList(voList);
}
@Override
protected AirlineAreaTimeRuleVO innerFrom(AirlineAreaTimeRuleDTO dto) {
if (dto == null) {
return null;
}
AirlineAreaTimeRuleVO vo = new AirlineAreaTimeRuleVO();
vo.setId(dto.getId());
vo.setAreaId(dto.getAreaId());
vo.setRestrictType(dto.getRestrictType());
vo.setGranularity(dto.getGranularity());
vo.setRepetFrequency(dto.getRepetFrequency());
vo.setRemark(dto.getRemark());
// 将字符串转换为 Object
if (dto.getDateRange() != null && !dto.getDateRange().isEmpty()) {
try {
Object dateRange = objectMapper.readValue(dto.getDateRange(), Object.class);
vo.setDateRange(dateRange);
} catch (JsonProcessingException e) {
log.error("转换日期范围失败: {}", e.getMessage());
}
}
if (dto.getTimeRange() != null && !dto.getTimeRange().isEmpty()) {
try {
Object timeRange = objectMapper.readValue(dto.getTimeRange(), Object.class);
vo.setTimeRange(timeRange);
} catch (JsonProcessingException e) {
log.error("转换时间范围失败: {}", e.getMessage());
}
}
if (dto.getGranularityTimes() != null && !dto.getGranularityTimes().isEmpty()) {
try {
Object granularityTimes = objectMapper.readValue(dto.getGranularityTimes(), Object.class);
vo.setGranularityTimes(granularityTimes);
} catch (JsonProcessingException e) {
log.error("转换重复粒度具体时间失败: {}", e.getMessage());
}
}
return vo;
}
@Override
protected AirlineAreaTimeRuleDTO innerTo(AirlineAreaTimeRuleVO vo) {
if (vo == null) {
return null;
}
AirlineAreaTimeRuleDTO dto = new AirlineAreaTimeRuleDTO();
dto.setId(vo.getId());
dto.setAreaId(vo.getAreaId());
dto.setRestrictType(vo.getRestrictType());
dto.setGranularity(vo.getGranularity());
dto.setRepetFrequency(vo.getRepetFrequency());
dto.setRemark(vo.getRemark());
// Object 转换为字符串
if (vo.getDateRange() != null) {
try {
String dateRangeJson = objectMapper.writeValueAsString(vo.getDateRange());
dto.setDateRange(dateRangeJson);
} catch (JsonProcessingException e) {
log.error("转换日期范围失败: {}", e.getMessage());
dto.setDateRange("[]"); // Default to empty array
}
} else {
dto.setDateRange("[]"); // Default to empty array
}
if (vo.getTimeRange() != null) {
try {
String timeRangeJson = objectMapper.writeValueAsString(vo.getTimeRange());
dto.setTimeRange(timeRangeJson);
} catch (JsonProcessingException e) {
log.error("转换时间范围失败: {}", e.getMessage());
dto.setTimeRange("[]"); // Default to empty array
}
} else {
dto.setTimeRange("[]"); // Default to empty array
}
if (vo.getGranularityTimes() != null) {
try {
String granularityTimesJson = objectMapper.writeValueAsString(vo.getGranularityTimes());
dto.setGranularityTimes(granularityTimesJson);
} catch (JsonProcessingException e) {
log.error("转换重复粒度具体时间失败: {}", e.getMessage());
dto.setGranularityTimes("[]"); // Default to empty array
}
} else {
dto.setGranularityTimes("[]"); // Default to empty array
}
return dto;
}
}

View File

@ -1,95 +1,43 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.api.domain.AirlineDataVO;
import com.ruoyi.airline.service.dto.AirlineDataDTO;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线数据Controller转换类
* 用于Controller VO和Service DTO之间的转换
*
* @author ruoyi
* @author 拓恒
* @date 2026-01-17
*/
public class AirlineDataControllerConvert
public class AirlineDataControllerConvert extends BaseConvert<AirlineDataDTO, AirlineDataVO>
{
/**
* 将Service DTO转换为Controller VO
*
* @param dto Service DTO
* @return Controller VO
*/
public static AirlineDataVO toVO(AirlineDataDTO dto)
{
if (dto == null) {
return null;
}
AirlineDataVO vo = new AirlineDataVO();
vo.setId(dto.getId());
vo.setFlightNumber(dto.getFlightNumber());
vo.setDepartureCity(dto.getDepartureCity());
vo.setArrivalCity(dto.getArrivalCity());
vo.setAirspeed(dto.getAirspeed());
vo.setVelocity(dto.getVelocity());
vo.setVspeed(dto.getVspeed());
vo.setHspeed(dto.getHspeed());
return vo;
private static final AirlineDataControllerConvert INSTANCE = new AirlineDataControllerConvert();
private AirlineDataControllerConvert() {
super(AirlineDataDTO.class, AirlineDataVO.class);
}
/**
* 将Controller VO转换为Service DTO
*
* @param vo Controller VO
* @return Service DTO
*/
public static AirlineDataDTO toDTO(AirlineDataVO vo)
public static AirlineDataVO from(AirlineDataDTO dto)
{
if (vo == null) {
return null;
}
AirlineDataDTO dto = new AirlineDataDTO();
dto.setId(vo.getId());
dto.setFlightNumber(vo.getFlightNumber());
dto.setDepartureCity(vo.getDepartureCity());
dto.setArrivalCity(vo.getArrivalCity());
dto.setAirspeed(vo.getAirspeed());
dto.setVelocity(vo.getVelocity());
dto.setVspeed(vo.getVspeed());
dto.setHspeed(vo.getHspeed());
return dto;
return INSTANCE.innerFrom(dto);
}
/**
* 将Service DTO列表转换为Controller VO列表
*
* @param dtoList Service DTO列表
* @return Controller VO列表
*/
public static List<AirlineDataVO> toVOList(List<AirlineDataDTO> dtoList)
public static AirlineDataDTO to(AirlineDataVO vo)
{
if (dtoList == null || dtoList.isEmpty()) {
return null;
}
return dtoList.stream()
.map(AirlineDataControllerConvert::toVO)
.collect(Collectors.toList());
return INSTANCE.innerTo(vo);
}
/**
* 将Controller VO列表转换为Service DTO列表
*
* @param voList Controller VO列表
* @return Service DTO列表
*/
public static List<AirlineDataDTO> toDTOList(List<AirlineDataVO> voList)
public static List<AirlineDataVO> fromList(List<AirlineDataDTO> dtoList)
{
if (voList == null || voList.isEmpty()) {
return null;
}
return voList.stream()
.map(AirlineDataControllerConvert::toDTO)
.collect(Collectors.toList());
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineDataDTO> toList(List<AirlineDataVO> voList)
{
return INSTANCE.innerToList(voList);
}
}

View File

@ -1,7 +1,11 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirLinePointVO;
import com.ruoyi.airline.api.domain.AirlineFileVO;
import com.ruoyi.airline.service.dto.AirLinePointDTO;
import com.ruoyi.airline.service.dto.AirlineFileDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.stream.Collectors;
@ -13,78 +17,52 @@ import java.util.stream.Collectors;
* @author 拓恒
* @date 2026-01-17
*/
public class AirlineFileControllerConvert {
public class AirlineFileControllerConvert extends BaseConvert<AirlineFileDTO, AirlineFileVO>
{
/**
* 将Service DTO转换为Controller VO
*
* @param dto Service DTO
* @return Controller VO
*/
public static AirlineFileVO toVO(AirlineFileDTO dto) {
if (dto == null) {
return null;
}
AirlineFileVO vo = new AirlineFileVO();
vo.setId(dto.getId());
vo.setFileName(dto.getFileName());
vo.setFileUrl(dto.getFileUrl());
vo.setType(dto.getType());
vo.setLinePointDtoList(dto.getLinePointDtoList());
vo.setStatus(dto.getStatus());
vo.setDjiRthAltitude(dto.getDjiRthAltitude());
return vo;
private static final AirlineFileControllerConvert INSTANCE = new AirlineFileControllerConvert();
private AirlineFileControllerConvert() {
super(AirlineFileDTO.class, AirlineFileVO.class);
}
/**
* 将Controller VO转换为Service DTO
*
* @param vo Controller VO
* @return Service DTO
*/
public static AirlineFileDTO toDTO(AirlineFileVO vo) {
public static AirlineFileVO from(AirlineFileDTO dto)
{
return INSTANCE.innerFrom(dto);
}
public static AirlineFileDTO to(AirlineFileVO vo)
{
if (vo == null) {
return null;
}
AirlineFileDTO dto = new AirlineFileDTO();
dto.setId(vo.getId());
dto.setFileName(vo.getFileName());
dto.setFileUrl(vo.getFileUrl());
dto.setType(vo.getType());
dto.setLinePointDtoList(vo.getLinePointDtoList());
dto.setStatus(vo.getStatus());
dto.setDjiRthAltitude(vo.getDjiRthAltitude());
BeanUtils.copyProperties(vo, dto);
if (vo.getLinePointVOList() != null) {
dto.setLinePointDtoList(vo.getLinePointVOList().stream()
.map(AirlineFileControllerConvert::convertPoint)
.collect(Collectors.toList()));
}
return dto;
}
/**
* 将Service DTO列表转换为Controller VO列表
*
* @param dtoList Service DTO列表
* @return Controller VO列表
*/
public static List<AirlineFileVO> toVOList(List<AirlineFileDTO> dtoList) {
if (dtoList == null || dtoList.isEmpty()) {
private static AirLinePointDTO convertPoint(AirLinePointVO vo) {
if (vo == null) {
return null;
}
return dtoList.stream()
.map(AirlineFileControllerConvert::toVO)
.collect(Collectors.toList());
AirLinePointDTO dto = new AirLinePointDTO();
BeanUtils.copyProperties(vo, dto);
return dto;
}
/**
* 将Controller VO列表转换为Service DTO列表
*
* @param voList Controller VO列表
* @return Service DTO列表
*/
public static List<AirlineFileDTO> toDTOList(List<AirlineFileVO> voList) {
if (voList == null || voList.isEmpty()) {
return null;
}
return voList.stream()
.map(AirlineFileControllerConvert::toDTO)
.collect(Collectors.toList());
public static List<AirlineFileVO> fromList(List<AirlineFileDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineFileDTO> toList(List<AirlineFileVO> voList)
{
return INSTANCE.innerToList(voList);
}
public static List<AirlineFileVO> toApiDomainList(List<AirlineFileDTO> dtoList) {
@ -92,6 +70,6 @@ public class AirlineFileControllerConvert {
{
return null;
}
return dtoList.stream().map(AirlineFileControllerConvert::toVO).collect(Collectors.toList());
return fromList(dtoList);
}
}

View File

@ -1,103 +1,51 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirlineFileGroupVO;
import com.ruoyi.airline.api.domain.AirlineFileVO;
import com.ruoyi.airline.service.dto.AirlineFileDTO;
import com.ruoyi.airline.service.dto.AirlineFileGroupDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线文件分组Domain转换类
* 用于Domain模型和Mapper实体之间的转换
*
* @author ruoyi
* @author 拓恒
* @date 2026-01-17
*/
public class AirlineFileGroupControllerConvert {
public class AirlineFileGroupControllerConvert extends BaseConvert<AirlineFileGroupDTO, AirlineFileGroupVO> {
/**
* 将Service DTO转换为Controller VO
*
* @param dto Service DTO
* @return Controller VO
*/
public static AirlineFileGroupVO toVO(AirlineFileGroupDTO dto) {
if (dto == null) {
return null;
}
AirlineFileGroupVO vo = new AirlineFileGroupVO();
vo.setGroupId(dto.getGroupId());
vo.setGroupName(dto.getGroupName());
vo.setUserId(dto.getUserId());
vo.setCreateBy(dto.getCreateBy());
vo.setCreateTime(dto.getCreateTime());
vo.setUpdateBy(dto.getUpdateBy());
vo.setUpdateTime(dto.getUpdateTime());
vo.setRemark(dto.getRemark());
private static final AirlineFileGroupControllerConvert INSTANCE = new AirlineFileGroupControllerConvert();
private AirlineFileGroupControllerConvert() {
super(AirlineFileGroupDTO.class, AirlineFileGroupVO.class);
}
public static AirlineFileGroupVO from(AirlineFileGroupDTO dto) {
AirlineFileGroupVO vo = INSTANCE.innerFrom(dto);
vo.setGroupInfos(AirlineFileControllerConvert.fromList(dto.getGroupInfos()));
return vo;
}
/**
* 将Controller VO转换为Service DTO
*
* @param vo Controller VO
* @return Service DTO
*/
public static AirlineFileGroupDTO toDTO(AirlineFileGroupVO vo) {
if (vo == null) {
return null;
}
AirlineFileGroupDTO dto = new AirlineFileGroupDTO();
dto.setGroupId(vo.getGroupId());
dto.setGroupName(vo.getGroupName());
dto.setUserId(vo.getUserId());
dto.setCreateBy(vo.getCreateBy());
dto.setCreateTime(vo.getCreateTime());
dto.setUpdateBy(vo.getUpdateBy());
dto.setUpdateTime(vo.getUpdateTime());
dto.setRemark(vo.getRemark());
public static AirlineFileGroupDTO to(AirlineFileGroupVO vo) {
AirlineFileGroupDTO dto = INSTANCE.innerTo(vo);
dto.setGroupInfos(AirlineFileControllerConvert.toList(vo.getGroupInfos()));
return dto;
}
/**
* 将Service DTO列表转换为Controller VO列表
*
* @param dtoList Service DTO列表
* @return Controller VO列表
*/
public static List<AirlineFileGroupVO> toVOList(List<AirlineFileGroupDTO> dtoList) {
if (dtoList == null || dtoList.isEmpty()) {
return null;
}
return dtoList.stream()
.map(AirlineFileGroupControllerConvert::toVO)
.collect(Collectors.toList());
public static List<AirlineFileGroupVO> fromList(List<AirlineFileGroupDTO> dtoList) {
return INSTANCE.innerFromList(dtoList);
}
/**
* 将Controller VO列表转换为Service DTO列表
*
* @param voList Controller VO列表
* @return Service DTO列表
*/
public static List<AirlineFileGroupDTO> toDTOList(List<AirlineFileGroupVO> voList) {
if (voList == null || voList.isEmpty()) {
return null;
}
return voList.stream()
.map(AirlineFileGroupControllerConvert::toDTO)
.collect(Collectors.toList());
public static List<AirlineFileGroupDTO> toList(List<AirlineFileGroupVO> voList) {
return INSTANCE.innerToList(voList);
}
public static List<AirlineFileGroupVO> toApiDomainList(List<AirlineFileGroupDTO> dtoList) {
if (dtoList == null)
{
public static List<AirlineFileGroupVO> toApiDomainList(List<AirlineFileGroupDTO> dtoList) {
if (dtoList == null) {
return null;
}
return dtoList.stream().map(AirlineFileGroupControllerConvert::toVO).collect(Collectors.toList());
return fromList(dtoList);
}
}

View File

@ -1,13 +1,14 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.api.domain.AirlineFileGroupInfoVO;
import com.ruoyi.airline.api.domain.AirlineFileGroupVO;
import com.ruoyi.airline.service.convert.AirlineFileServiceConvert;
import com.ruoyi.airline.service.dto.AirlineFileGroupDTO;
import com.ruoyi.airline.service.dto.AirlineFileGroupInfoDTO;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线文件Domain转换类
@ -16,86 +17,44 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2026-01-17
*/
public class AirlineFileGroupInfoControllerConvert {
public class AirlineFileGroupInfoControllerConvert extends BaseConvert<AirlineFileGroupInfoDTO, AirlineFileGroupInfoVO>
{
/**
* 将Service DTO转换为Controller VO
*
* @param dto Service DTO
* @return Controller VO
*/
public static AirlineFileGroupInfoVO toVO(AirlineFileGroupInfoDTO dto) {
if (dto == null) {
return null;
}
AirlineFileGroupInfoVO vo = new AirlineFileGroupInfoVO();
vo.setId(dto.getId());
vo.setGroupId(dto.getGroupId());
vo.setCreateBy(dto.getCreateBy());
vo.setCreateTime(dto.getCreateTime());
vo.setUpdateBy(dto.getUpdateBy());
vo.setUpdateTime(dto.getUpdateTime());
vo.setRemark(dto.getRemark());
return vo;
private static final AirlineFileGroupInfoControllerConvert INSTANCE = new AirlineFileGroupInfoControllerConvert();
private AirlineFileGroupInfoControllerConvert() {
super(AirlineFileGroupInfoDTO.class, AirlineFileGroupInfoVO.class);
}
/**
* 将Controller VO转换为Service DTO
*
* @param vo Controller VO
* @return Service DTO
*/
public static AirlineFileGroupInfoDTO toDTO(AirlineFileGroupInfoVO vo) {
if (vo == null) {
return null;
}
AirlineFileGroupInfoDTO dto = new AirlineFileGroupInfoDTO();
dto.setId(vo.getId());
dto.setGroupId(vo.getGroupId());
dto.setCreateBy(vo.getCreateBy());
dto.setCreateTime(vo.getCreateTime());
dto.setUpdateBy(vo.getUpdateBy());
dto.setUpdateTime(vo.getUpdateTime());
dto.setRemark(vo.getRemark());
public static AirlineFileGroupInfoVO from(AirlineFileGroupInfoDTO dto)
{
AirlineFileGroupInfoVO vo = INSTANCE.innerFrom(dto);
vo.setAirlineFileVO(AirlineFileControllerConvert.from(dto.getAirlineFileDTO()));
return vo;
}
public static AirlineFileGroupInfoDTO to(AirlineFileGroupInfoVO vo)
{
AirlineFileGroupInfoDTO dto = INSTANCE.innerTo(vo);
dto.setAirlineFileDTO(AirlineFileControllerConvert.to(vo.getAirlineFileVO()));
return dto;
}
/**
* 将Service DTO列表转换为Controller VO列表
*
* @param dtoList Service DTO列表
* @return Controller VO列表
*/
public static List<AirlineFileGroupInfoVO> toVOList(List<AirlineFileGroupInfoDTO> dtoList) {
if (dtoList == null || dtoList.isEmpty()) {
return null;
}
return dtoList.stream()
.map(AirlineFileGroupInfoControllerConvert::toVO)
.collect(Collectors.toList());
public static List<AirlineFileGroupInfoVO> fromList(List<AirlineFileGroupInfoDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
/**
* 将Controller VO列表转换为Service DTO列表
*
* @param voList Controller VO列表
* @return Service DTO列表
*/
public static List<AirlineFileGroupInfoDTO> toDTOList(List<AirlineFileGroupInfoVO> voList) {
if (voList == null || voList.isEmpty()) {
return null;
}
return voList.stream()
.map(AirlineFileGroupInfoControllerConvert::toDTO)
.collect(Collectors.toList());
public static List<AirlineFileGroupInfoDTO> toList(List<AirlineFileGroupInfoVO> voList)
{
return INSTANCE.innerToList(voList);
}
public static List<AirlineFileGroupInfoVO> toApiDomainList(List<AirlineFileGroupInfoDTO> dtoList) {
if (dtoList == null)
{
return null;
}
return dtoList.stream().map(AirlineFileGroupInfoControllerConvert::toVO).collect(Collectors.toList());
return fromList(dtoList);
}
}

View File

@ -0,0 +1,115 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirlineMarkerVO;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.stream.Collectors;
/**
* 标注Controller转换类
* 用于API VO和Service DTO之间的转换
*
* @author 拓恒
*/
public class AirlineMarkerControllerConvert extends BaseConvert<AirlineMarkerDTO, AirlineMarkerVO>
{
private static final Logger log = LoggerFactory.getLogger(AirlineMarkerControllerConvert.class);
private static final AirlineMarkerControllerConvert INSTANCE = new AirlineMarkerControllerConvert();
private AirlineMarkerControllerConvert() {
super(AirlineMarkerDTO.class, AirlineMarkerVO.class);
}
public static AirlineMarkerVO from(AirlineMarkerDTO dto) {
return INSTANCE.innerFrom(dto);
}
public static AirlineMarkerDTO to(AirlineMarkerVO vo) {
return INSTANCE.innerTo(vo);
}
public static List<AirlineMarkerVO> fromList(List<AirlineMarkerDTO> dtoList) {
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineMarkerDTO> toList(List<AirlineMarkerVO> voList) {
return INSTANCE.innerToList(voList);
}
@Override
protected AirlineMarkerVO innerFrom(AirlineMarkerDTO dto) {
if (dto == null) {
return null;
}
AirlineMarkerVO vo = new AirlineMarkerVO();
vo.setId(dto.getId());
vo.setMarkerName(dto.getMarkerName());
vo.setMarkerType(dto.getMarkerType());
vo.setStatus(dto.getStatus());
vo.setColor(dto.getColor());
vo.setIcon(dto.getIcon());
vo.setFontSize(dto.getFontSize());
// 转换coordinates
if (dto.getCoordinates() != null) {
vo.setCoordinates(dto.getCoordinates().stream()
.map(point -> {
AirlineMarkerVO.PointInfo voPoint = new AirlineMarkerVO.PointInfo();
voPoint.setLatitude(point.getLatitude());
voPoint.setLongitude(point.getLongitude());
voPoint.setAsl(point.getAsl());
return voPoint;
})
.collect(Collectors.toList()));
}
vo.setDescription(dto.getDescription());
vo.setGroupId(dto.getGroupId());
vo.setCreateBy(dto.getCreateBy());
vo.setCreateTime(dto.getCreateTime());
vo.setUpdateBy(dto.getUpdateBy());
vo.setUpdateTime(dto.getUpdateTime());
return vo;
}
@Override
protected AirlineMarkerDTO innerTo(AirlineMarkerVO vo) {
if (vo == null) {
return null;
}
AirlineMarkerDTO dto = new AirlineMarkerDTO();
dto.setId(vo.getId());
dto.setMarkerName(vo.getMarkerName());
dto.setMarkerType(vo.getMarkerType());
dto.setStatus(vo.getStatus());
dto.setColor(vo.getColor());
dto.setIcon(vo.getIcon());
dto.setFontSize(vo.getFontSize());
// 转换coordinates
if (vo.getCoordinates() != null) {
dto.setCoordinates(vo.getCoordinates().stream()
.map(point -> {
AirlineMarkerDTO.PointInfo dtoPoint = new AirlineMarkerDTO.PointInfo();
dtoPoint.setLatitude(point.getLatitude());
dtoPoint.setLongitude(point.getLongitude());
dtoPoint.setAsl(point.getAsl());
return dtoPoint;
})
.collect(Collectors.toList()));
}
dto.setDescription(vo.getDescription());
dto.setGroupId(vo.getGroupId());
dto.setCreateBy(vo.getCreateBy());
dto.setCreateTime(vo.getCreateTime());
dto.setUpdateBy(vo.getUpdateBy());
dto.setUpdateTime(vo.getUpdateTime());
return dto;
}
}

View File

@ -0,0 +1,51 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirlineMarkerGroupVO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupDTO;
import com.ruoyi.common.core.utils.BaseConvert;
import java.util.List;
/**
* 标注分组Controller转换类
* 用于Controller VO和Service DTO之间的转换
*
* @author 拓恒
*/
public class AirlineMarkerGroupControllerConvert extends BaseConvert<AirlineMarkerGroupDTO, AirlineMarkerGroupVO>
{
private static final AirlineMarkerGroupControllerConvert INSTANCE = new AirlineMarkerGroupControllerConvert();
private AirlineMarkerGroupControllerConvert() {
super(AirlineMarkerGroupDTO.class, AirlineMarkerGroupVO.class);
}
public static AirlineMarkerGroupVO from(AirlineMarkerGroupDTO dto)
{
return INSTANCE.innerFrom(dto);
}
public static AirlineMarkerGroupDTO to(AirlineMarkerGroupVO vo)
{
return INSTANCE.innerTo(vo);
}
public static List<AirlineMarkerGroupVO> fromList(List<AirlineMarkerGroupDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineMarkerGroupDTO> toList(List<AirlineMarkerGroupVO> voList)
{
return INSTANCE.innerToList(voList);
}
public static List<AirlineMarkerGroupVO> toApiDomainList(List<AirlineMarkerGroupDTO> dtoList) {
if (dtoList == null) {
return null;
}
return fromList(dtoList);
}
}

View File

@ -0,0 +1,58 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.airline.api.domain.AirlineMarkerGroupDetailVO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupInfoDTO;
import com.ruoyi.common.core.utils.BaseConvert;
/**
* 标注分组详情Controller转换类
* 用于API VO和Service DTO之间的转换
*
* @author 拓恒
*/
public class AirlineMarkerGroupDetailControllerConvert extends BaseConvert<AirlineMarkerGroupInfoDTO, AirlineMarkerGroupDetailVO>
{
private static final AirlineMarkerGroupDetailControllerConvert INSTANCE = new AirlineMarkerGroupDetailControllerConvert();
private AirlineMarkerGroupDetailControllerConvert() {
super(AirlineMarkerGroupInfoDTO.class, AirlineMarkerGroupDetailVO.class);
}
public static AirlineMarkerGroupDetailVO from(AirlineMarkerGroupInfoDTO dto) {
return INSTANCE.innerFrom(dto);
}
public static AirlineMarkerGroupInfoDTO to(AirlineMarkerGroupDetailVO vo) {
return INSTANCE.innerTo(vo);
}
@Override
protected AirlineMarkerGroupDetailVO innerFrom(AirlineMarkerGroupInfoDTO dto) {
if (dto == null) {
return null;
}
AirlineMarkerGroupDetailVO vo = new AirlineMarkerGroupDetailVO();
vo.setGroupId(dto.getGroupId());
if (dto.getGroupInfos() != null) {
vo.setAirspaceList(dto.getGroupInfos().stream()
.map(AirlineMarkerControllerConvert::from)
.collect(java.util.stream.Collectors.toList()));
}
return vo;
}
@Override
protected AirlineMarkerGroupInfoDTO innerTo(AirlineMarkerGroupDetailVO vo) {
if (vo == null) {
return null;
}
AirlineMarkerGroupInfoDTO dto = new AirlineMarkerGroupInfoDTO();
dto.setGroupId(vo.getGroupId());
if (vo.getAirspaceList() != null) {
dto.setGroupInfos(vo.getAirspaceList().stream()
.map(AirlineMarkerControllerConvert::to)
.collect(java.util.stream.Collectors.toList()));
}
return dto;
}
}

View File

@ -1,11 +1,10 @@
package com.ruoyi.airline.controller.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.api.domain.AirlineTempVO;
import com.ruoyi.airline.service.dto.AirlineTempDTO;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线临时表Controller层转换器
@ -14,45 +13,40 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2026-01-17
*/
public class AirlineTempControllerConvert
public class AirlineTempControllerConvert extends BaseConvert<AirlineTempDTO, AirlineTempVO>
{
/**
* DTO API Domain
*/
public static AirlineTempVO toVO(AirlineTempDTO dto)
{
if (dto == null)
{
return null;
}
AirlineTempVO apiDomain = new AirlineTempVO();
BeanUtils.copyProperties(dto, apiDomain);
return apiDomain;
private static final AirlineTempControllerConvert INSTANCE = new AirlineTempControllerConvert();
private AirlineTempControllerConvert() {
super(AirlineTempDTO.class, AirlineTempVO.class);
}
/**
* API Domain DTO
*/
public static AirlineTempDTO toDTO(AirlineTempVO apiDomain)
public static AirlineTempVO from(AirlineTempDTO dto)
{
if (apiDomain == null)
{
return null;
}
AirlineTempDTO dto = new AirlineTempDTO();
BeanUtils.copyProperties(apiDomain, dto);
return dto;
return INSTANCE.innerFrom(dto);
}
public static AirlineTempDTO to(AirlineTempVO vo)
{
return INSTANCE.innerTo(vo);
}
public static List<AirlineTempVO> fromList(List<AirlineTempDTO> dtoList)
{
return INSTANCE.innerFromList(dtoList);
}
public static List<AirlineTempDTO> toList(List<AirlineTempVO> voList)
{
return INSTANCE.innerToList(voList);
}
/**
* DTO List API Domain List
*/
public static List<AirlineTempVO> toApiDomainList(List<AirlineTempDTO> dtoList)
{
if (dtoList == null)
{
return null;
}
return dtoList.stream().map(AirlineTempControllerConvert::toVO).collect(Collectors.toList());
return fromList(dtoList);
}
}

View File

@ -0,0 +1,32 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineArea;
import java.util.List;
/**
* 空域管理
*
* @author 拓恒
*/
public interface IAirlineAreaDomain {
int insertArea(AirlineArea model);
int updateArea(AirlineArea model);
int deleteArea(AirlineArea model);
List<AirlineArea> selectAreaList(AirlineArea model);
AirlineArea selectAreaById(Long id);
List<AirlineArea> selectAreaListByIds(List<Long> ids);
/**
* 根据用户ID查询空域列表
* @param model 查询条件
* @return 空域列表
*/
List<AirlineArea> selectAreaListByUserId(AirlineArea model);
}

View File

@ -0,0 +1,36 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineArea;
import com.ruoyi.airline.domain.model.AirlineAreaGroup;
import java.util.List;
/**
* 空域分组管理
*
* @author 拓恒
*/
public interface IAirlineAreaGroupDomain {
/**
* 软删除
* @param model
* @return
*/
int deletegroup(AirlineAreaGroup model);
/**
* 检查当前用户下分组名称是否唯一
* @param model
* @return
*/
boolean checkgroupNameUnique(AirlineAreaGroup model);
int updateGroup(AirlineAreaGroup model);
int insertGroup(AirlineAreaGroup model);
List<AirlineAreaGroup> selectGroupList(AirlineAreaGroup model);
List<AirlineArea> selectAirlineListByUserId(AirlineArea model);
}

View File

@ -0,0 +1,23 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineAreaGroupInfo;
import java.util.List;
/**
* 空域分组明细管理
*
* @author 拓恒
*/
public interface IAirlineAreaGroupInfoDomain {
int insertGroupInfo(AirlineAreaGroupInfo model);
int deleteGroupInfo(AirlineAreaGroupInfo model);
List<AirlineAreaGroupInfo> selectGroupInfoList(AirlineAreaGroupInfo model);
List<Long> selectAreaIdsByGroupId(Long groupId);
List<AirlineAreaGroupInfo> selectGroupInfoListById(Long groupId);
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineAreaTimeRule;
import java.util.List;
/**
* 空域时间规则领域接口
*
* @author 拓恒
*/
public interface IAirlineAreaTimeRuleDomain {
int insertTimeRule(AirlineAreaTimeRule model);
int updateTimeRule(AirlineAreaTimeRule model);
int deleteTimeRule(AirlineAreaTimeRule model);
List<AirlineAreaTimeRule> selectTimeRuleList(AirlineAreaTimeRule model);
AirlineAreaTimeRule selectTimeRuleById(Long id);
List<AirlineAreaTimeRule> selectTimeRuleListByAreaId(Long areaId);
int deleteTimeRuleByAreaId(Long areaId);
}

View File

@ -16,5 +16,11 @@ public interface IAirlineFileDomain {
List<AirlineFile> selectFileListByIds(List<Long> ids);
AirlineFile save(AirlineFile model);
Long save(AirlineFile model);
List<AirlineFile> selectFileNameLike(String name);
List<AirlineFile> selectFileNameLikeByGroupId(String name, Long groupId);
Long update(AirlineFile model);
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineFile;
import com.ruoyi.airline.domain.model.AirlineFileGroup;
import java.util.List;
@ -31,4 +32,6 @@ public interface IAirlineFileGroupDomain {
int insertGroup(AirlineFileGroup model);
List<AirlineFileGroup> selectGroupList(AirlineFileGroup model);
List<AirlineFile> selectAirlineListByUserId(AirlineFile model);
}

View File

@ -19,7 +19,45 @@ public interface IAirlineFileGroupInfoDomain {
*
* @param dto
*/
int deleteGroupInfo(AirlineFileGroupInfo dto);
Long deleteGroupInfo(AirlineFileGroupInfo dto);
AirlineFileGroupInfo save(AirlineFileGroupInfo model);
Long save(AirlineFileGroupInfo model);
/**
* 检查是否存在相同的groupId和airlineId
*
* @param groupId 分组ID
* @param airlineId 航线ID
* @return 是否存在
*/
boolean existsByGroupIdAndAirlineId(Long groupId, Long airlineId);
/**
* 移动分组详情到新分组
*
* @param oldGroupId 原分组ID
* @param newGroupId 新分组ID
* @param airlineId 航线文件ID
* @return 结果
*/
Long moveGroupInfo(Long oldGroupId, Long newGroupId, Long airlineId);
/**
* 批量删除分组详情
*
* @param airLineIds 航线ID列表
* @param groupId 分组ID
* @return 结果
*/
Long deleteGroupInfoBatch(List<Long> airLineIds, Long groupId);
/**
* 批量移动分组详情到新分组
*
* @param oldGroupId 原分组ID
* @param newGroupId 新分组ID
* @param airLineIds 航线ID列表
* @return 结果
*/
Long batchMoveGroupInfo(Long oldGroupId, Long newGroupId, List<Long> airLineIds);
}

View File

@ -0,0 +1,41 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineMarker;
import java.util.List;
/**
* 标注管理
*
* @author 拓恒
*/
public interface IAirlineMarkerDomain {
int insertMarker(AirlineMarker model);
int updateMarker(AirlineMarker model);
int deleteMarker(AirlineMarker model);
List<AirlineMarker> selectMarkerList(AirlineMarker model);
AirlineMarker selectMarkerById(Long id);
AirlineMarker selectMarker(AirlineMarker marker);
List<AirlineMarker> selectMarkerListByIds(List<Long> ids);
/**
* 根据用户ID查询标注列表
* @param model 查询条件
* @return 标注列表
*/
List<AirlineMarker> selectMarkerListByUserId(AirlineMarker model);
/**
* 查询所有可用标注关联分组信息表
* @param model 查询条件
* @return 标注列表
*/
List<AirlineMarker> selectAllAvailableMarkers(AirlineMarker model);
}

View File

@ -0,0 +1,38 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineMarker;
import com.ruoyi.airline.domain.model.AirlineMarkerGroup;
import java.util.List;
/**
* 标注分组管理
*
* @author 拓恒
*/
public interface IAirlineMarkerGroupDomain {
/**
* 软删除
* @param model
* @return
*/
int deleteGroup(AirlineMarkerGroup model);
/**
* 检查分组名称是否唯一
* @param model
* @return
*/
boolean checkGroupNameUnique(AirlineMarkerGroup model);
int updateGroup(AirlineMarkerGroup model);
int insertGroup(AirlineMarkerGroup model);
List<AirlineMarkerGroup> selectGroupList(AirlineMarkerGroup model);
AirlineMarkerGroup selectGroupById(Long id);
List<AirlineMarker> selectMarkerListByUserId(AirlineMarker model);
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.airline.domain.api;
import com.ruoyi.airline.domain.model.AirlineMarkerGroupInfo;
import java.util.List;
/**
* 标注分组明细管理
*
* @author 拓恒
*/
public interface IAirlineMarkerGroupInfoDomain {
int insertMarkerGroupInfo(AirlineMarkerGroupInfo model);
int deleteMarkerGroupInfo(AirlineMarkerGroupInfo model);
List<AirlineMarkerGroupInfo> selectMarkerGroupInfoList(AirlineMarkerGroupInfo model);
List<Long> selectMarkerIdsByGroupId(Long groupId);
int deleteByGroupId(Long groupId);
int deleteByMarkerId(Long markerId);
int batchInsertMarkerGroupInfo(List<AirlineMarkerGroupInfo> list);
}

View File

@ -0,0 +1,93 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineArea;
import com.ruoyi.airline.mapper.entity.AirlineAreaEntity;
import java.util.List;
/**
* 空域Domain转换类
* 用于Domain模型和Mapper实体之间的转换
*
* @author ruoyi
* @date 2026-02-25
*/
public class AirlineAreaDomainConvert extends BaseConvert<AirlineAreaEntity, AirlineArea>
{
private static final AirlineAreaDomainConvert INSTANCE = new AirlineAreaDomainConvert();
private AirlineAreaDomainConvert() {
super(AirlineAreaEntity.class, AirlineArea.class);
}
public static AirlineArea from(AirlineAreaEntity entity)
{
return INSTANCE.innerFrom(entity);
}
public static AirlineAreaEntity to(AirlineArea model)
{
return INSTANCE.innerTo(model);
}
public static List<AirlineArea> fromList(List<AirlineAreaEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineAreaEntity> toList(List<AirlineArea> modelList)
{
return INSTANCE.innerToList(modelList);
}
@Override
protected AirlineArea innerFrom(AirlineAreaEntity entity) {
if (entity == null) {
return null;
}
AirlineArea model = new AirlineArea();
model.setId(entity.getId());
model.setName(entity.getName());
model.setAreaType(entity.getAreaType());
model.setStatus(entity.getStatus());
model.setPoints(entity.getPoints());
model.setShape(entity.getShape());
model.setAreaArea(entity.getAreaArea());
model.setAreaPerimeter(entity.getAreaPerimeter());
model.setRadius(entity.getRadius());
model.setMinHeight(entity.getMinHeight());
model.setMaxHeight(entity.getMaxHeight());
model.setRemark(entity.getRemark());
model.setCreateBy(entity.getCreateBy());
model.setCreateTime(entity.getCreateTime());
model.setUpdateBy(entity.getUpdateBy());
model.setUpdateTime(entity.getUpdateTime());
return model;
}
@Override
protected AirlineAreaEntity innerTo(AirlineArea model) {
if (model == null) {
return null;
}
AirlineAreaEntity entity = new AirlineAreaEntity();
entity.setId(model.getId());
entity.setName(model.getName());
entity.setAreaType(model.getAreaType());
entity.setStatus(model.getStatus());
entity.setPoints(model.getPoints());
entity.setShape(model.getShape());
entity.setAreaArea(model.getAreaArea());
entity.setAreaPerimeter(model.getAreaPerimeter());
entity.setRadius(model.getRadius());
entity.setMinHeight(model.getMinHeight());
entity.setMaxHeight(model.getMaxHeight());
entity.setRemark(model.getRemark());
entity.setCreateBy(model.getCreateBy());
entity.setCreateTime(model.getCreateTime());
entity.setUpdateBy(model.getUpdateBy());
entity.setUpdateTime(model.getUpdateTime());
return entity;
}
}

View File

@ -0,0 +1,43 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineAreaGroup;
import com.ruoyi.airline.mapper.entity.AirlineAreaGroupEntity;
import java.util.List;
/**
* 空域分组Domain转换类
* 用于Domain模型和Mapper实体之间的转换
*
* @author ruoyi
* @date 2026-02-25
*/
public class AirlineAreaGroupDomainConvert extends BaseConvert<AirlineAreaGroupEntity, AirlineAreaGroup>
{
private static final AirlineAreaGroupDomainConvert INSTANCE = new AirlineAreaGroupDomainConvert();
private AirlineAreaGroupDomainConvert() {
super(AirlineAreaGroupEntity.class, AirlineAreaGroup.class);
}
public static AirlineAreaGroup from(AirlineAreaGroupEntity entity)
{
return INSTANCE.innerFrom(entity);
}
public static AirlineAreaGroupEntity to(AirlineAreaGroup model)
{
return INSTANCE.innerTo(model);
}
public static List<AirlineAreaGroup> fromList(List<AirlineAreaGroupEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineAreaGroupEntity> toList(List<AirlineAreaGroup> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -0,0 +1,43 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineAreaGroupInfo;
import com.ruoyi.airline.mapper.entity.AirlineAreaGroupInfoEntity;
import java.util.List;
/**
* 空域分组明细Domain转换类
* 用于Domain模型和Mapper实体之间的转换
*
* @author ruoyi
* @date 2026-02-25
*/
public class AirlineAreaGroupInfoDomainConvert extends BaseConvert<AirlineAreaGroupInfoEntity, AirlineAreaGroupInfo>
{
private static final AirlineAreaGroupInfoDomainConvert INSTANCE = new AirlineAreaGroupInfoDomainConvert();
private AirlineAreaGroupInfoDomainConvert() {
super(AirlineAreaGroupInfoEntity.class, AirlineAreaGroupInfo.class);
}
public static AirlineAreaGroupInfo from(AirlineAreaGroupInfoEntity entity)
{
return INSTANCE.innerFrom(entity);
}
public static AirlineAreaGroupInfoEntity to(AirlineAreaGroupInfo model)
{
return INSTANCE.innerTo(model);
}
public static List<AirlineAreaGroupInfo> fromList(List<AirlineAreaGroupInfoEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineAreaGroupInfoEntity> toList(List<AirlineAreaGroupInfo> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -0,0 +1,86 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineAreaTimeRule;
import com.ruoyi.airline.mapper.entity.AirlineAreaTimeRuleEntity;
import java.util.List;
/**
* 空域时间规则 Domain 转换类
* 用于 Domain 模型和 Mapper 实体之间的转换
*
* @author 拓恒
*/
public class AirlineAreaTimeRuleDomainConvert extends BaseConvert<AirlineAreaTimeRuleEntity, AirlineAreaTimeRule>
{
private static final AirlineAreaTimeRuleDomainConvert INSTANCE = new AirlineAreaTimeRuleDomainConvert();
private AirlineAreaTimeRuleDomainConvert() {
super(AirlineAreaTimeRuleEntity.class, AirlineAreaTimeRule.class);
}
public static AirlineAreaTimeRule from(AirlineAreaTimeRuleEntity entity)
{
return INSTANCE.innerFrom(entity);
}
public static AirlineAreaTimeRuleEntity to(AirlineAreaTimeRule model)
{
return INSTANCE.innerTo(model);
}
public static List<AirlineAreaTimeRule> fromList(List<AirlineAreaTimeRuleEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineAreaTimeRuleEntity> toList(List<AirlineAreaTimeRule> modelList)
{
return INSTANCE.innerToList(modelList);
}
@Override
protected AirlineAreaTimeRule innerFrom(AirlineAreaTimeRuleEntity entity) {
if (entity == null) {
return null;
}
AirlineAreaTimeRule model = new AirlineAreaTimeRule();
model.setId(entity.getId());
model.setAreaId(entity.getAreaId());
model.setRestrictType(entity.getRestrictType());
model.setDateRange(entity.getDateRange());
model.setTimeRange(entity.getTimeRange());
model.setGranularity(entity.getGranularity());
model.setRepetFrequency(entity.getRepetFrequency());
model.setGranularityTimes(entity.getGranularityTimes());
model.setRemark(entity.getRemark());
model.setCreateBy(entity.getCreateBy());
model.setCreateTime(entity.getCreateTime());
model.setUpdateBy(entity.getUpdateBy());
model.setUpdateTime(entity.getUpdateTime());
return model;
}
@Override
protected AirlineAreaTimeRuleEntity innerTo(AirlineAreaTimeRule model) {
if (model == null) {
return null;
}
AirlineAreaTimeRuleEntity entity = new AirlineAreaTimeRuleEntity();
entity.setId(model.getId());
entity.setAreaId(model.getAreaId());
entity.setRestrictType(model.getRestrictType());
entity.setDateRange(model.getDateRange());
entity.setTimeRange(model.getTimeRange());
entity.setGranularity(model.getGranularity());
entity.setRepetFrequency(model.getRepetFrequency());
entity.setGranularityTimes(model.getGranularityTimes());
entity.setRemark(model.getRemark());
entity.setCreateBy(model.getCreateBy());
entity.setCreateTime(model.getCreateTime());
entity.setUpdateBy(model.getUpdateBy());
entity.setUpdateTime(model.getUpdateTime());
return entity;
}
}

View File

@ -1,10 +1,10 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineData;
import com.ruoyi.airline.mapper.entity.AirlineDataEntity;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线数据Domain转换类
@ -13,69 +13,31 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2026-01-17
*/
public class AirlineDataDomainConvert
public class AirlineDataDomainConvert extends BaseConvert<AirlineDataEntity, AirlineData>
{
/**
* 将Domain模型转换为Mapper实体
*
* @param model Domain模型
* @return Mapper实体
*/
public static AirlineDataEntity toEntity(AirlineData model)
{
if (model == null) {
return null;
}
AirlineDataEntity entity = new AirlineDataEntity();
private static final AirlineDataDomainConvert INSTANCE = new AirlineDataDomainConvert();
return entity;
private AirlineDataDomainConvert() {
super(AirlineDataEntity.class, AirlineData.class);
}
/**
* 将Mapper实体转换为Domain模型
*
* @param entity Mapper实体
* @return Domain模型
*/
public static AirlineData toModel(AirlineDataEntity entity)
public static AirlineData from(AirlineDataEntity entity)
{
if (entity == null) {
return null;
}
AirlineData model = new AirlineData();
return model;
return INSTANCE.innerFrom(entity);
}
/**
* 将Mapper实体列表转换为Domain模型列表
*
* @param entityList Mapper实体列表
* @return Domain模型列表
*/
public static List<AirlineData> toModelList(List<AirlineDataEntity> entityList)
public static AirlineDataEntity to(AirlineData model)
{
if (entityList == null || entityList.isEmpty()) {
return null;
}
return entityList.stream()
.map(AirlineDataDomainConvert::toModel)
.collect(Collectors.toList());
return INSTANCE.innerTo(model);
}
/**
* 将Domain模型列表转换为Mapper实体列表
*
* @param modelList Domain模型列表
* @return Mapper实体列表
*/
public static List<AirlineDataEntity> toEntityList(List<AirlineData> modelList)
public static List<AirlineData> fromList(List<AirlineDataEntity> entityList)
{
if (modelList == null || modelList.isEmpty()) {
return null;
}
return modelList.stream()
.map(AirlineDataDomainConvert::toEntity)
.collect(Collectors.toList());
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineDataEntity> toList(List<AirlineData> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -1,10 +1,10 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineFile;
import com.ruoyi.airline.mapper.entity.AirlineFileEntity;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线文件Domain转换类
@ -13,85 +13,31 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2026-01-17
*/
public class AirlineFileDomainConvert {
public class AirlineFileDomainConvert extends BaseConvert<AirlineFileEntity, AirlineFile>
{
private static final AirlineFileDomainConvert INSTANCE = new AirlineFileDomainConvert();
/**
* 将Domain模型转换为Mapper实体
*
* @param model Domain模型
* @return Mapper实体
*/
public static AirlineFileEntity toEntity(AirlineFile model) {
if (model == null) {
return null;
}
AirlineFileEntity entity = new AirlineFileEntity();
entity.setId(model.getId());
entity.setFileName(model.getFileName());
entity.setFileUrl(model.getFileUrl());
entity.setType(model.getType());
entity.setSource(model.getSource());
entity.setStatus(model.getStatus());
entity.setFileMd5(model.getFileMd5());
entity.setCreateBy(model.getCreateBy());
entity.setUpdateBy(model.getUpdateBy());
entity.setRemark(model.getRemark());
return entity;
private AirlineFileDomainConvert() {
super(AirlineFileEntity.class, AirlineFile.class);
}
/**
* 将Mapper实体转换为Domain模型
*
* @param entity Mapper实体
* @return Domain模型
*/
public static AirlineFile toModel(AirlineFileEntity entity) {
if (entity == null) {
return null;
}
AirlineFile model = new AirlineFile();
model.setId(entity.getId());
model.setFileName(entity.getFileName());
model.setFileUrl(entity.getFileUrl());
model.setType(entity.getType());
model.setSource(entity.getSource());
model.setStatus(entity.getStatus());
model.setFileMd5(entity.getFileMd5());
model.setCreateBy(entity.getCreateBy());
model.setCreateTime(entity.getCreateTime() != null ? entity.getCreateTime().toString() : null);
model.setUpdateBy(entity.getUpdateBy());
model.setUpdateTime(entity.getUpdateTime() != null ? entity.getUpdateTime().toString() : null);
model.setRemark(entity.getRemark());
return model;
public static AirlineFile from(AirlineFileEntity entity)
{
return INSTANCE.innerFrom(entity);
}
/**
* 将Mapper实体列表转换为Domain模型列表
*
* @param entityList Mapper实体列表
* @return Domain模型列表
*/
public static List<AirlineFile> toModelList(List<AirlineFileEntity> entityList) {
if (entityList == null || entityList.isEmpty()) {
return null;
}
return entityList.stream()
.map(AirlineFileDomainConvert::toModel)
.collect(Collectors.toList());
public static AirlineFileEntity to(AirlineFile model)
{
return INSTANCE.innerTo(model);
}
/**
* 将Domain模型列表转换为Mapper实体列表
*
* @param modelList Domain模型列表
* @return Mapper实体列表
*/
public static List<AirlineFileEntity> toEntityList(List<AirlineFile> modelList) {
if (modelList == null || modelList.isEmpty()) {
return null;
}
return modelList.stream()
.map(AirlineFileDomainConvert::toEntity)
.collect(Collectors.toList());
public static List<AirlineFile> fromList(List<AirlineFileEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineFileEntity> toList(List<AirlineFile> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -1,11 +1,11 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineFileGroup;
import com.ruoyi.airline.mapper.entity.AirlineFileGroupEntity;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线文件分组Domain转换类
@ -14,77 +14,31 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2026-01-17
*/
public class AirlineFileGroupDomainConvert {
public class AirlineFileGroupDomainConvert extends BaseConvert<AirlineFileGroupEntity, AirlineFileGroup>
{
private static final AirlineFileGroupDomainConvert INSTANCE = new AirlineFileGroupDomainConvert();
/**
* 将Domain模型转换为Mapper实体
*
* @param model Domain模型
* @return Mapper实体
*/
public static AirlineFileGroupEntity toEntity(AirlineFileGroup model) {
if (model == null) {
return null;
}
AirlineFileGroupEntity entity = new AirlineFileGroupEntity();
entity.setGroupId(model.getGroupId());
entity.setGroupName(model.getGroupName());
entity.setUserId(model.getUserId());
entity.setCreateBy(model.getCreateBy());
entity.setUpdateBy(model.getUpdateBy());
entity.setRemark(model.getRemark());
return entity;
private AirlineFileGroupDomainConvert() {
super(AirlineFileGroupEntity.class, AirlineFileGroup.class);
}
/**
* 将Mapper实体转换为Domain模型
*
* @param entity Mapper实体
* @return Domain模型
*/
public static AirlineFileGroup toModel(AirlineFileGroupEntity entity) {
if (entity == null) {
return null;
}
AirlineFileGroup model = new AirlineFileGroup();
model.setGroupId(entity.getGroupId());
model.setGroupName(entity.getGroupName());
model.setUserId(entity.getUserId());
model.setCreateBy(entity.getCreateBy());
model.setCreateTime(entity.getCreateTime() != null ? entity.getCreateTime(): null);
model.setUpdateBy(entity.getUpdateBy());
model.setUpdateTime(entity.getUpdateTime() != null ? entity.getUpdateTime(): null);
model.setRemark(entity.getRemark());
return model;
public static AirlineFileGroup from(AirlineFileGroupEntity entity)
{
return INSTANCE.innerFrom(entity);
}
/**
* 将Mapper实体列表转换为Domain模型列表
*
* @param entityList Mapper实体列表
* @return Domain模型列表
*/
public static List<AirlineFileGroup> toModelList(List<AirlineFileGroupEntity> entityList) {
if (entityList == null || entityList.isEmpty()) {
return null;
}
return entityList.stream()
.map(AirlineFileGroupDomainConvert::toModel)
.collect(Collectors.toList());
public static AirlineFileGroupEntity to(AirlineFileGroup model)
{
return INSTANCE.innerTo(model);
}
/**
* 将Domain模型列表转换为Mapper实体列表
*
* @param modelList Domain模型列表
* @return Mapper实体列表
*/
public static List<AirlineFileGroupEntity> toEntityList(List<AirlineFileGroup> modelList) {
if (modelList == null || modelList.isEmpty()) {
return null;
}
return modelList.stream()
.map(AirlineFileGroupDomainConvert::toEntity)
.collect(Collectors.toList());
public static List<AirlineFileGroup> fromList(List<AirlineFileGroupEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineFileGroupEntity> toList(List<AirlineFileGroup> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -1,11 +1,11 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineFileGroupInfo;
import com.ruoyi.airline.mapper.entity.AirlineFileGroupInfoEntity;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线文件Domain转换类
@ -14,69 +14,31 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2026-01-17
*/
public class AirlineFileGroupInfoDomainConvert {
public class AirlineFileGroupInfoDomainConvert extends BaseConvert<AirlineFileGroupInfoEntity, AirlineFileGroupInfo>
{
private static final AirlineFileGroupInfoDomainConvert INSTANCE = new AirlineFileGroupInfoDomainConvert();
/**
* 将Domain模型转换为Mapper实体
*
* @param model Domain模型
* @return Mapper实体
*/
public static AirlineFileGroupInfoEntity toEntity(AirlineFileGroupInfo model) {
if (model == null) {
return null;
}
AirlineFileGroupInfoEntity entity = new AirlineFileGroupInfoEntity();
entity.setId(model.getId());
entity.setGroupId(model.getGroupId());
entity.setAirlineId(model.getAirlineId());
return entity;
private AirlineFileGroupInfoDomainConvert() {
super(AirlineFileGroupInfoEntity.class, AirlineFileGroupInfo.class);
}
/**
* 将Mapper实体转换为Domain模型
*
* @param entity Mapper实体
* @return Domain模型
*/
public static AirlineFileGroupInfo toModel(AirlineFileGroupInfoEntity entity) {
if (entity == null) {
return null;
}
AirlineFileGroupInfo model = new AirlineFileGroupInfo();
model.setId(entity.getId());
model.setGroupId(entity.getGroupId());
model.setAirlineId(entity.getAirlineId());
return model;
public static AirlineFileGroupInfo from(AirlineFileGroupInfoEntity entity)
{
return INSTANCE.innerFrom(entity);
}
/**
* 将Mapper实体列表转换为Domain模型列表
*
* @param entityList Mapper实体列表
* @return Domain模型列表
*/
public static List<AirlineFileGroupInfo> toModelList(List<AirlineFileGroupInfoEntity> entityList) {
if (entityList == null || entityList.isEmpty()) {
return null;
}
return entityList.stream()
.map(AirlineFileGroupInfoDomainConvert::toModel)
.collect(Collectors.toList());
public static AirlineFileGroupInfoEntity to(AirlineFileGroupInfo model)
{
return INSTANCE.innerTo(model);
}
/**
* 将Domain模型列表转换为Mapper实体列表
*
* @param modelList Domain模型列表
* @return Mapper实体列表
*/
public static List<AirlineFileGroupInfoEntity> toEntityList(List<AirlineFileGroupInfo> modelList) {
if (modelList == null || modelList.isEmpty()) {
return null;
}
return modelList.stream()
.map(AirlineFileGroupInfoDomainConvert::toEntity)
.collect(Collectors.toList());
public static List<AirlineFileGroupInfo> fromList(List<AirlineFileGroupInfoEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineFileGroupInfoEntity> toList(List<AirlineFileGroupInfo> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -0,0 +1,105 @@
package com.ruoyi.airline.domain.convert;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineMarker;
import com.ruoyi.airline.mapper.entity.AirlineMarkerEntity;
import java.util.List;
/**
* 标注Domain转换类
* 用于Domain模型和Mapper实体之间的转换
*
* @author 拓恒
*/
public class AirlineMarkerDomainConvert extends BaseConvert<AirlineMarkerEntity, AirlineMarker>
{
private static final AirlineMarkerDomainConvert INSTANCE = new AirlineMarkerDomainConvert();
private static final ObjectMapper objectMapper = new ObjectMapper();
private AirlineMarkerDomainConvert() {
super(AirlineMarkerEntity.class, AirlineMarker.class);
}
public static AirlineMarker from(AirlineMarkerEntity entity) {
return INSTANCE.innerFrom(entity);
}
public static AirlineMarkerEntity to(AirlineMarker model) {
return INSTANCE.innerTo(model);
}
public static List<AirlineMarker> fromList(List<AirlineMarkerEntity> entityList) {
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineMarkerEntity> toList(List<AirlineMarker> modelList) {
return INSTANCE.innerToList(modelList);
}
@Override
protected AirlineMarker innerFrom(AirlineMarkerEntity entity) {
if (entity == null) {
return null;
}
AirlineMarker model = new AirlineMarker();
model.setId(entity.getId());
model.setMarkerName(entity.getMarkerName());
model.setMarkerType(entity.getMarkerType());
model.setStatus(entity.getStatus());
model.setColor(entity.getColor());
model.setIcon(entity.getIcon());
model.setFontSize(entity.getFontSize());
// 从JSON字符串转换为List<PointInfo>
if (entity.getCoordinates() != null) {
try {
model.setCoordinates(objectMapper.readValue(entity.getCoordinates(), objectMapper.getTypeFactory().constructCollectionType(List.class, AirlineMarker.PointInfo.class)));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
model.setDescription(entity.getDescription());
model.setCreateBy(entity.getCreateBy());
model.setCreateTime(entity.getCreateTime());
model.setUpdateBy(entity.getUpdateBy());
model.setUpdateTime(entity.getUpdateTime());
model.setRemark(entity.getRemark());
return model;
}
@Override
protected AirlineMarkerEntity innerTo(AirlineMarker model) {
if (model == null) {
return null;
}
AirlineMarkerEntity entity = new AirlineMarkerEntity();
entity.setId(model.getId());
entity.setMarkerName(model.getMarkerName());
entity.setMarkerType(model.getMarkerType());
entity.setStatus(model.getStatus());
entity.setColor(model.getColor());
entity.setIcon(model.getIcon());
entity.setFontSize(model.getFontSize());
// 从List<PointInfo>转换为JSON字符串
if (model.getCoordinates() != null) {
try {
entity.setCoordinates(objectMapper.writeValueAsString(model.getCoordinates()));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
entity.setDescription(model.getDescription());
entity.setCreateBy(model.getCreateBy());
entity.setCreateTime(model.getCreateTime());
entity.setUpdateBy(model.getUpdateBy());
entity.setUpdateTime(model.getUpdateTime());
entity.setRemark(model.getRemark());
return entity;
}
}

View File

@ -0,0 +1,42 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineMarkerGroup;
import com.ruoyi.airline.mapper.entity.AirlineMarkerGroupEntity;
import java.util.List;
/**
* 标注分组Domain转换类
* 用于Domain模型和Mapper实体之间的转换
*
* @author 拓恒
*/
public class AirlineMarkerGroupDomainConvert extends BaseConvert<AirlineMarkerGroupEntity, AirlineMarkerGroup>
{
private static final AirlineMarkerGroupDomainConvert INSTANCE = new AirlineMarkerGroupDomainConvert();
private AirlineMarkerGroupDomainConvert() {
super(AirlineMarkerGroupEntity.class, AirlineMarkerGroup.class);
}
public static AirlineMarkerGroup from(AirlineMarkerGroupEntity entity)
{
return INSTANCE.innerFrom(entity);
}
public static AirlineMarkerGroupEntity to(AirlineMarkerGroup model)
{
return INSTANCE.innerTo(model);
}
public static List<AirlineMarkerGroup> fromList(List<AirlineMarkerGroupEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineMarkerGroupEntity> toList(List<AirlineMarkerGroup> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -0,0 +1,42 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineMarkerGroupInfo;
import com.ruoyi.airline.mapper.entity.AirlineMarkerGroupInfoEntity;
import java.util.List;
/**
* 标注分组明细Domain转换类
* 用于Domain模型和Mapper实体之间的转换
*
* @author 拓恒
*/
public class AirlineMarkerGroupInfoDomainConvert extends BaseConvert<AirlineMarkerGroupInfoEntity, AirlineMarkerGroupInfo>
{
private static final AirlineMarkerGroupInfoDomainConvert INSTANCE = new AirlineMarkerGroupInfoDomainConvert();
private AirlineMarkerGroupInfoDomainConvert() {
super(AirlineMarkerGroupInfoEntity.class, AirlineMarkerGroupInfo.class);
}
public static AirlineMarkerGroupInfo from(AirlineMarkerGroupInfoEntity entity)
{
return INSTANCE.innerFrom(entity);
}
public static AirlineMarkerGroupInfoEntity to(AirlineMarkerGroupInfo model)
{
return INSTANCE.innerTo(model);
}
public static List<AirlineMarkerGroupInfo> fromList(List<AirlineMarkerGroupInfoEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineMarkerGroupInfoEntity> toList(List<AirlineMarkerGroupInfo> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -1,11 +1,10 @@
package com.ruoyi.airline.domain.convert;
import com.ruoyi.common.core.utils.BaseConvert;
import com.ruoyi.airline.domain.model.AirlineTemp;
import com.ruoyi.airline.mapper.entity.AirlineTempEntity;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.stream.Collectors;
/**
* 航线临时表Domain层转换器
@ -14,45 +13,31 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2026-01-17
*/
public class AirlineTempDomainConvert
public class AirlineTempDomainConvert extends BaseConvert<AirlineTempEntity, AirlineTemp>
{
/**
* Entity Model
*/
public static AirlineTemp toModel(AirlineTempEntity entity)
{
if (entity == null)
{
return null;
}
AirlineTemp model = new AirlineTemp();
BeanUtils.copyProperties(entity, model);
return model;
private static final AirlineTempDomainConvert INSTANCE = new AirlineTempDomainConvert();
private AirlineTempDomainConvert() {
super(AirlineTempEntity.class, AirlineTemp.class);
}
/**
* Model Entity
*/
public static AirlineTempEntity toEntity(AirlineTemp model)
public static AirlineTemp from(AirlineTempEntity entity)
{
if (model == null)
{
return null;
}
AirlineTempEntity entity = new AirlineTempEntity();
BeanUtils.copyProperties(model, entity);
return entity;
return INSTANCE.innerFrom(entity);
}
/**
* Entity List Model List
*/
public static List<AirlineTemp> toModelList(List<AirlineTempEntity> entityList)
public static AirlineTempEntity to(AirlineTemp model)
{
if (entityList == null)
{
return null;
}
return entityList.stream().map(AirlineTempDomainConvert::toModel).collect(Collectors.toList());
return INSTANCE.innerTo(model);
}
public static List<AirlineTemp> fromList(List<AirlineTempEntity> entityList)
{
return INSTANCE.innerFromList(entityList);
}
public static List<AirlineTempEntity> toList(List<AirlineTemp> modelList)
{
return INSTANCE.innerToList(modelList);
}
}

View File

@ -0,0 +1,69 @@
package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineAreaDomain;
import com.ruoyi.airline.domain.convert.AirlineAreaDomainConvert;
import com.ruoyi.airline.domain.model.AirlineArea;
import com.ruoyi.airline.mapper.AirlineAreaMapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 空域管理
*
* @author 拓恒
*/
@Component
public class AirlineAreaDomainImpl implements IAirlineAreaDomain {
@Autowired
private AirlineAreaMapper airlineAreaMapper;
@Override
public int insertArea(AirlineArea model) {
AirlineAreaEntity entity = AirlineAreaDomainConvert.to(model);
int result = airlineAreaMapper.insertArea(entity);
// 将自增的 ID 设置回 model 对象
if (result > 0 && entity.getId() != null) {
model.setId(entity.getId());
}
return result;
}
@Override
public int updateArea(AirlineArea model) {
AirlineAreaEntity entity = AirlineAreaDomainConvert.to(model);
return airlineAreaMapper.updateArea(entity);
}
@Override
public int deleteArea(AirlineArea model) {
AirlineAreaEntity entity = AirlineAreaDomainConvert.to(model);
return airlineAreaMapper.deleteArea(entity);
}
@Override
public List<AirlineArea> selectAreaList(AirlineArea model) {
AirlineAreaEntity entity = AirlineAreaDomainConvert.to(model);
return AirlineAreaDomainConvert.fromList(airlineAreaMapper.selectAreaList(entity));
}
@Override
public AirlineArea selectAreaById(Long id) {
AirlineAreaEntity entity = airlineAreaMapper.selectAreaById(id);
return AirlineAreaDomainConvert.from(entity);
}
@Override
public List<AirlineArea> selectAreaListByIds(List<Long> ids) {
return AirlineAreaDomainConvert.fromList(airlineAreaMapper.selectAreaListByIds(ids));
}
@Override
public List<AirlineArea> selectAreaListByUserId(AirlineArea model) {
AirlineAreaEntity entity = AirlineAreaDomainConvert.to(model);
return AirlineAreaDomainConvert.fromList(airlineAreaMapper.selectAreaListByUserId(entity));
}
}

View File

@ -0,0 +1,64 @@
package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineAreaGroupDomain;
import com.ruoyi.airline.domain.convert.AirlineAreaGroupDomainConvert;
import com.ruoyi.airline.domain.convert.AirlineAreaDomainConvert;
import com.ruoyi.airline.domain.model.AirlineArea;
import com.ruoyi.airline.domain.model.AirlineAreaGroup;
import com.ruoyi.airline.mapper.AirlineAreaGroupMapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaEntity;
import com.ruoyi.airline.mapper.entity.AirlineAreaGroupEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 空域分组管理
*
* @author 拓恒
*/
@Component
public class AirlineAreaGroupDomainImpl implements IAirlineAreaGroupDomain {
@Autowired
private AirlineAreaGroupMapper airlineAreaGroupMapper;
@Override
public int deletegroup(AirlineAreaGroup model) {
model.setDelFlag(1L);
AirlineAreaGroupEntity entity = AirlineAreaGroupDomainConvert.to(model);
return airlineAreaGroupMapper.deletegroup(entity);
}
@Override
public boolean checkgroupNameUnique(AirlineAreaGroup model) {
AirlineAreaGroupEntity entity = AirlineAreaGroupDomainConvert.to(model);
return airlineAreaGroupMapper.checkgroupNameUnique(entity) > 0;
}
@Override
public int updateGroup(AirlineAreaGroup model) {
AirlineAreaGroupEntity entity = AirlineAreaGroupDomainConvert.to(model);
return airlineAreaGroupMapper.updateGroup(entity);
}
@Override
public int insertGroup(AirlineAreaGroup model) {
AirlineAreaGroupEntity entity = AirlineAreaGroupDomainConvert.to(model);
return airlineAreaGroupMapper.insertGroup(entity);
}
@Override
public List<AirlineAreaGroup> selectGroupList(AirlineAreaGroup model) {
AirlineAreaGroupEntity entity = AirlineAreaGroupDomainConvert.to(model);
return AirlineAreaGroupDomainConvert.fromList(airlineAreaGroupMapper.selectGroupList(entity));
}
@Override
public List<AirlineArea> selectAirlineListByUserId(AirlineArea model) {
// 这里需要在 AirlineAreaGroupMapper 中添加对应的方法
// 暂时返回空列表后续需要实现
return null;
}
}

View File

@ -0,0 +1,56 @@
package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineAreaGroupInfoDomain;
import com.ruoyi.airline.domain.convert.AirlineAreaGroupInfoDomainConvert;
import com.ruoyi.airline.domain.model.AirlineAreaGroupInfo;
import com.ruoyi.airline.mapper.AirlineAreaGroupInfoMapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaGroupInfoEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 空域分组明细管理
*
* @author 拓恒
*/
@Component
public class AirlineAreaGroupInfoDomainImpl implements IAirlineAreaGroupInfoDomain {
@Autowired
private AirlineAreaGroupInfoMapper airlineAreaGroupInfoMapper;
@Override
public int insertGroupInfo(AirlineAreaGroupInfo model) {
model.setDelFlag(0L);
AirlineAreaGroupInfoEntity entity = AirlineAreaGroupInfoDomainConvert.to(model);
return airlineAreaGroupInfoMapper.insertGroupInfo(entity);
}
@Override
public int deleteGroupInfo(AirlineAreaGroupInfo model) {
model.setDelFlag(1L);
AirlineAreaGroupInfoEntity entity = AirlineAreaGroupInfoDomainConvert.to(model);
return airlineAreaGroupInfoMapper.deleteGroupInfo(entity);
}
@Override
public List<AirlineAreaGroupInfo> selectGroupInfoList(AirlineAreaGroupInfo model) {
AirlineAreaGroupInfoEntity entity = AirlineAreaGroupInfoDomainConvert.to(model);
return AirlineAreaGroupInfoDomainConvert.fromList(airlineAreaGroupInfoMapper.selectGroupInfoList(entity));
}
@Override
public List<Long> selectAreaIdsByGroupId(Long groupId) {
return airlineAreaGroupInfoMapper.selectAreaIdsByGroupId(groupId);
}
@Override
public List<AirlineAreaGroupInfo> selectGroupInfoListById(Long groupId) {
AirlineAreaGroupInfo model = new AirlineAreaGroupInfo();
model.setGroupId(groupId);
AirlineAreaGroupInfoEntity entity = AirlineAreaGroupInfoDomainConvert.to(model);
return AirlineAreaGroupInfoDomainConvert.fromList(airlineAreaGroupInfoMapper.selectGroupInfoList(entity));
}
}

View File

@ -0,0 +1,68 @@
package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineAreaTimeRuleDomain;
import com.ruoyi.airline.domain.convert.AirlineAreaTimeRuleDomainConvert;
import com.ruoyi.airline.domain.model.AirlineAreaTimeRule;
import com.ruoyi.airline.mapper.AirlineAreaTimeRuleMapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaTimeRuleEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 空域时间规则领域实现
*
* @author 拓恒
*/
@Component
public class AirlineAreaTimeRuleDomainImpl implements IAirlineAreaTimeRuleDomain {
@Autowired
private AirlineAreaTimeRuleMapper airlineAreaTimeRuleMapper;
@Override
public int insertTimeRule(AirlineAreaTimeRule model) {
AirlineAreaTimeRuleEntity entity = AirlineAreaTimeRuleDomainConvert.to(model);
int result = airlineAreaTimeRuleMapper.insertTimeRule(entity);
// 将自增的 ID 设置回 model 对象
if (result > 0 && entity.getId() != null) {
model.setId(entity.getId());
}
return result;
}
@Override
public int updateTimeRule(AirlineAreaTimeRule model) {
AirlineAreaTimeRuleEntity entity = AirlineAreaTimeRuleDomainConvert.to(model);
return airlineAreaTimeRuleMapper.updateTimeRule(entity);
}
@Override
public int deleteTimeRule(AirlineAreaTimeRule model) {
AirlineAreaTimeRuleEntity entity = AirlineAreaTimeRuleDomainConvert.to(model);
return airlineAreaTimeRuleMapper.deleteTimeRule(entity);
}
@Override
public List<AirlineAreaTimeRule> selectTimeRuleList(AirlineAreaTimeRule model) {
AirlineAreaTimeRuleEntity entity = AirlineAreaTimeRuleDomainConvert.to(model);
return AirlineAreaTimeRuleDomainConvert.fromList(airlineAreaTimeRuleMapper.selectTimeRuleList(entity));
}
@Override
public AirlineAreaTimeRule selectTimeRuleById(Long id) {
AirlineAreaTimeRuleEntity entity = airlineAreaTimeRuleMapper.selectTimeRuleById(id);
return AirlineAreaTimeRuleDomainConvert.from(entity);
}
@Override
public List<AirlineAreaTimeRule> selectTimeRuleListByAreaId(Long areaId) {
return AirlineAreaTimeRuleDomainConvert.fromList(airlineAreaTimeRuleMapper.selectTimeRuleListByAreaId(areaId));
}
@Override
public int deleteTimeRuleByAreaId(Long areaId) {
return airlineAreaTimeRuleMapper.deleteTimeRuleByAreaId(areaId);
}
}

View File

@ -31,9 +31,9 @@ public class AirlineDataDomainImpl implements IAirlineDataDomain
@Override
public List<AirlineData> selectAirlineDataList(AirlineData airlineData)
{
AirlineDataEntity entity = AirlineDataDomainConvert.toEntity(airlineData);
AirlineDataEntity entity = AirlineDataDomainConvert.to(airlineData);
List<AirlineDataEntity> entityList = airlineDataMapper.selectAirlineDataList(entity);
return AirlineDataDomainConvert.toModelList(entityList);
return AirlineDataDomainConvert.fromList(entityList);
}
/**
@ -46,7 +46,7 @@ public class AirlineDataDomainImpl implements IAirlineDataDomain
public AirlineData selectAirlineDataById(Long id)
{
AirlineDataEntity entity = airlineDataMapper.selectAirlineDataById(id);
return AirlineDataDomainConvert.toModel(entity);
return AirlineDataDomainConvert.from(entity);
}

View File

@ -24,12 +24,31 @@ public class AirlineFileDomainImpl implements IAirlineFileDomain {
@Override
public List<AirlineFile> selectFileListByIds(List<Long> ids) {
return AirlineFileDomainConvert.toModelList(airlineFileMapper.selectFileListByIds(ids));
return AirlineFileDomainConvert.fromList(airlineFileMapper.selectFileListByIds(ids));
}
@Override
public AirlineFile save(AirlineFile model) {
AirlineFileEntity entity = AirlineFileDomainConvert.toEntity(model);
return AirlineFileDomainConvert.toModel(airlineFileMapper.save(entity));
public Long save(AirlineFile model) {
AirlineFileEntity entity = AirlineFileDomainConvert.to(model);
airlineFileMapper.save(entity);
return entity.getId();
}
@Override
public List<AirlineFile> selectFileNameLike(String name) {
return AirlineFileDomainConvert.fromList(airlineFileMapper.selectFileNameLike(name));
}
@Override
public List<AirlineFile> selectFileNameLikeByGroupId(String name, Long groupId) {
return AirlineFileDomainConvert.fromList(airlineFileMapper.selectFileNameLikeByGroupId(groupId, name));
}
@Override
public Long update(AirlineFile model) {
AirlineFileEntity entity = AirlineFileDomainConvert.to(model);
return airlineFileMapper.update(entity);
}
}

View File

@ -2,8 +2,11 @@ package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineFileGroupDomain;
import com.ruoyi.airline.domain.convert.AirlineFileGroupDomainConvert;
import com.ruoyi.airline.domain.convert.AirlineFileDomainConvert;
import com.ruoyi.airline.domain.model.AirlineFile;
import com.ruoyi.airline.domain.model.AirlineFileGroup;
import com.ruoyi.airline.mapper.AirlineFileGroupMapper;
import com.ruoyi.airline.mapper.entity.AirlineFileEntity;
import com.ruoyi.airline.mapper.entity.AirlineFileGroupEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -24,31 +27,37 @@ public class AirlineFileGroupDomainImpl implements IAirlineFileGroupDomain {
@Override
public int deletegroup(AirlineFileGroup model) {
model.setDelFlag(1L);
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.toEntity(model);
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
return airlineFileGroupMapper.deletegroup(entity);
}
@Override
public boolean checkgroupNameUnique(AirlineFileGroup model) {
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.toEntity(model);
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
return airlineFileGroupMapper.checkgroupNameUnique(entity) > 0;
}
@Override
public int updateGroup(AirlineFileGroup model) {
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.toEntity(model);
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
return airlineFileGroupMapper.updateGroup(entity);
}
@Override
public int insertGroup(AirlineFileGroup model) {
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.toEntity(model);
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
return airlineFileGroupMapper.insertGroup(entity);
}
@Override
public List<AirlineFileGroup> selectGroupList(AirlineFileGroup model) {
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.toEntity(model);
return AirlineFileGroupDomainConvert.toModelList(airlineFileGroupMapper.selectGroupList(entity));
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
return AirlineFileGroupDomainConvert.fromList(airlineFileGroupMapper.selectGroupList(entity));
}
@Override
public List<AirlineFile> selectAirlineListByUserId(AirlineFile model) {
AirlineFileEntity entity = AirlineFileDomainConvert.to(model);
return AirlineFileDomainConvert.fromList(airlineFileGroupMapper.selectAirlineListByUserId(entity));
}
}

View File

@ -26,21 +26,46 @@ public class AirlineFileGroupInfoDomainImpl implements IAirlineFileGroupInfoDoma
public List<AirlineFileGroupInfo> selectGroupInfoListById(Long groupId) {
AirlineFileGroupInfo dto = new AirlineFileGroupInfo();
dto.setGroupId(groupId);
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.toEntity(dto);
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.to(dto);
List<AirlineFileGroupInfoEntity> entities = airlineFileGroupInfoMapper.selectGroupList(Entity);
return AirlineFileGroupInfoDomainConvert.toModelList(entities);
return AirlineFileGroupInfoDomainConvert.fromList(entities);
}
@Override
public int deleteGroupInfo(AirlineFileGroupInfo model) {
public Long deleteGroupInfo(AirlineFileGroupInfo model) {
model.setDelFlag(1L);
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.toEntity(model);
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.to(model);
return airlineFileGroupInfoMapper.deleteGroupInfo(Entity);
}
@Override
public AirlineFileGroupInfo save(AirlineFileGroupInfo model) {
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.toEntity(model);
public Long save(AirlineFileGroupInfo model) {
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.to(model);
return airlineFileGroupInfoMapper.save(Entity);
}
@Override
public boolean existsByGroupIdAndAirlineId(Long groupId, Long airlineId) {
AirlineFileGroupInfo model = new AirlineFileGroupInfo();
model.setGroupId(groupId);
model.setAirlineId(airlineId);
AirlineFileGroupInfoEntity entity = AirlineFileGroupInfoDomainConvert.to(model);
int count = airlineFileGroupInfoMapper.countByGroupIdAndAirlineId(entity);
return count > 0;
}
@Override
public Long moveGroupInfo(Long oldGroupId, Long newGroupId, Long airlineId) {
return airlineFileGroupInfoMapper.updateGroupId(oldGroupId, newGroupId, airlineId);
}
@Override
public Long deleteGroupInfoBatch(List<Long> airLineIds, Long groupId) {
return airlineFileGroupInfoMapper.deleteGroupInfoBatch(airLineIds, groupId);
}
@Override
public Long batchMoveGroupInfo(Long oldGroupId, Long newGroupId, List<Long> airLineIds) {
return airlineFileGroupInfoMapper.batchUpdateGroupId(oldGroupId, newGroupId, airLineIds);
}
}

View File

@ -0,0 +1,87 @@
package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineMarkerDomain;
import com.ruoyi.airline.domain.convert.AirlineMarkerDomainConvert;
import com.ruoyi.airline.domain.model.AirlineMarker;
import com.ruoyi.airline.mapper.AirlineMarkerMapper;
import com.ruoyi.airline.mapper.entity.AirlineMarkerEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 标注管理
*
* @author 拓恒
*/
@Component
public class AirlineMarkerDomainImpl implements IAirlineMarkerDomain {
@Autowired
private AirlineMarkerMapper airlineMarkerMapper;
@Override
public int insertMarker(AirlineMarker model) {
AirlineMarkerEntity entity = AirlineMarkerDomainConvert.to(model);
int result = airlineMarkerMapper.insertMarker(entity);
if (result > 0 && entity.getId() != null) {
model.setId(entity.getId());
}
return result;
}
@Override
public int updateMarker(AirlineMarker model) {
AirlineMarkerEntity entity = AirlineMarkerDomainConvert.to(model);
return airlineMarkerMapper.updateMarker(entity);
}
@Override
public int deleteMarker(AirlineMarker model) {
AirlineMarkerEntity entity = AirlineMarkerDomainConvert.to(model);
return airlineMarkerMapper.deleteMarker(entity);
}
@Override
public List<AirlineMarker> selectMarkerList(AirlineMarker model) {
AirlineMarkerEntity entity = AirlineMarkerDomainConvert.to(model);
return AirlineMarkerDomainConvert.fromList(airlineMarkerMapper.selectMarkerList(entity));
}
@Override
public AirlineMarker selectMarkerById(Long id) {
AirlineMarkerEntity entity = airlineMarkerMapper.selectMarkerById(id);
return AirlineMarkerDomainConvert.from(entity);
}
@Override
public AirlineMarker selectMarker(AirlineMarker marker) {
if (marker == null) {
return null;
}
AirlineMarkerEntity entity = AirlineMarkerDomainConvert.to(marker);
List<AirlineMarkerEntity> list = airlineMarkerMapper.selectMarkerList(entity);
if (list != null && !list.isEmpty()) {
return AirlineMarkerDomainConvert.from(list.get(0));
}
return null;
}
@Override
public List<AirlineMarker> selectMarkerListByIds(List<Long> ids) {
return AirlineMarkerDomainConvert.fromList(airlineMarkerMapper.selectMarkerListByIds(ids));
}
@Override
public List<AirlineMarker> selectMarkerListByUserId(AirlineMarker model) {
AirlineMarkerEntity entity = AirlineMarkerDomainConvert.to(model);
return AirlineMarkerDomainConvert.fromList(airlineMarkerMapper.selectMarkerListByUserId(entity));
}
@Override
public List<AirlineMarker> selectAllAvailableMarkers(AirlineMarker model) {
AirlineMarkerEntity entity = AirlineMarkerDomainConvert.to(model);
return AirlineMarkerDomainConvert.fromList(airlineMarkerMapper.selectAllAvailableMarkers(entity));
}
}

View File

@ -0,0 +1,70 @@
package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineMarkerGroupDomain;
import com.ruoyi.airline.domain.convert.AirlineMarkerGroupDomainConvert;
import com.ruoyi.airline.domain.convert.AirlineMarkerDomainConvert;
import com.ruoyi.airline.domain.model.AirlineMarker;
import com.ruoyi.airline.domain.model.AirlineMarkerGroup;
import com.ruoyi.airline.mapper.AirlineMarkerGroupMapper;
import com.ruoyi.airline.mapper.entity.AirlineMarkerEntity;
import com.ruoyi.airline.mapper.entity.AirlineMarkerGroupEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 标注分组管理
*
* @author 拓恒
*/
@Component
public class AirlineMarkerGroupDomainImpl implements IAirlineMarkerGroupDomain {
@Autowired
private AirlineMarkerGroupMapper airlineMarkerGroupMapper;
@Override
public int deleteGroup(AirlineMarkerGroup model) {
model.setDelFlag(1L);
AirlineMarkerGroupEntity entity = AirlineMarkerGroupDomainConvert.to(model);
return airlineMarkerGroupMapper.deleteGroup(entity);
}
@Override
public boolean checkGroupNameUnique(AirlineMarkerGroup model) {
AirlineMarkerGroupEntity entity = AirlineMarkerGroupDomainConvert.to(model);
return airlineMarkerGroupMapper.checkGroupNameUnique(entity) > 0;
}
@Override
public int updateGroup(AirlineMarkerGroup model) {
AirlineMarkerGroupEntity entity = AirlineMarkerGroupDomainConvert.to(model);
return airlineMarkerGroupMapper.updateGroup(entity);
}
@Override
public int insertGroup(AirlineMarkerGroup model) {
AirlineMarkerGroupEntity entity = AirlineMarkerGroupDomainConvert.to(model);
return airlineMarkerGroupMapper.insertGroup(entity);
}
@Override
public List<AirlineMarkerGroup> selectGroupList(AirlineMarkerGroup model) {
AirlineMarkerGroupEntity entity = AirlineMarkerGroupDomainConvert.to(model);
return AirlineMarkerGroupDomainConvert.fromList(airlineMarkerGroupMapper.selectGroupList(entity));
}
@Override
public AirlineMarkerGroup selectGroupById(Long id) {
AirlineMarkerGroupEntity entity = airlineMarkerGroupMapper.selectGroupById(id);
return AirlineMarkerGroupDomainConvert.from(entity);
}
@Override
public List<AirlineMarker> selectMarkerListByUserId(AirlineMarker model) {
// 这里需要在 AirlineMarkerGroupMapper 中添加对应的方法
// 暂时返回空列表后续需要实现
return null;
}
}

View File

@ -0,0 +1,64 @@
package com.ruoyi.airline.domain.impl;
import com.ruoyi.airline.domain.api.IAirlineMarkerGroupInfoDomain;
import com.ruoyi.airline.domain.convert.AirlineMarkerGroupInfoDomainConvert;
import com.ruoyi.airline.domain.model.AirlineMarkerGroupInfo;
import com.ruoyi.airline.mapper.AirlineMarkerGroupInfoMapper;
import com.ruoyi.airline.mapper.entity.AirlineMarkerGroupInfoEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 标注分组明细管理
*
* @author 拓恒
*/
@Component
public class AirlineMarkerGroupInfoDomainImpl implements IAirlineMarkerGroupInfoDomain {
@Autowired
private AirlineMarkerGroupInfoMapper airlineMarkerGroupInfoMapper;
@Override
public int insertMarkerGroupInfo(AirlineMarkerGroupInfo model) {
model.setDelFlag(0L);
AirlineMarkerGroupInfoEntity entity = AirlineMarkerGroupInfoDomainConvert.to(model);
return airlineMarkerGroupInfoMapper.insertMarkerGroupInfo(entity);
}
@Override
public int deleteMarkerGroupInfo(AirlineMarkerGroupInfo model) {
model.setDelFlag(1L);
AirlineMarkerGroupInfoEntity entity = AirlineMarkerGroupInfoDomainConvert.to(model);
return airlineMarkerGroupInfoMapper.deleteMarkerGroupInfo(entity);
}
@Override
public List<AirlineMarkerGroupInfo> selectMarkerGroupInfoList(AirlineMarkerGroupInfo model) {
AirlineMarkerGroupInfoEntity entity = AirlineMarkerGroupInfoDomainConvert.to(model);
return AirlineMarkerGroupInfoDomainConvert.fromList(airlineMarkerGroupInfoMapper.selectMarkerGroupInfoList(entity));
}
@Override
public List<Long> selectMarkerIdsByGroupId(Long groupId) {
return airlineMarkerGroupInfoMapper.selectMarkerIdsByGroupId(groupId);
}
@Override
public int deleteByGroupId(Long groupId) {
return airlineMarkerGroupInfoMapper.deleteByGroupId(groupId);
}
@Override
public int deleteByMarkerId(Long markerId) {
return airlineMarkerGroupInfoMapper.deleteByMarkerId(markerId);
}
@Override
public int batchInsertMarkerGroupInfo(List<AirlineMarkerGroupInfo> list) {
List<AirlineMarkerGroupInfoEntity> entityList = AirlineMarkerGroupInfoDomainConvert.toList(list);
return airlineMarkerGroupInfoMapper.batchInsertMarkerGroupInfo(entityList);
}
}

View File

@ -25,15 +25,15 @@ public class AirlineTempDomainImpl implements IAirlineTempDomain
@Override
public List<AirlineTemp> selectAirlineTempList(AirlineTemp airlineTempModel)
{
AirlineTempEntity entity = AirlineTempDomainConvert.toEntity(airlineTempModel);
AirlineTempEntity entity = AirlineTempDomainConvert.to(airlineTempModel);
List<AirlineTempEntity> entityList = airlineTempMapper.selectAirlineTempList(entity);
return AirlineTempDomainConvert.toModelList(entityList);
return AirlineTempDomainConvert.fromList(entityList);
}
@Override
public AirlineTemp selectAirlineTempById(String id)
{
AirlineTempEntity entity = airlineTempMapper.selectAirlineTempById(id);
return AirlineTempDomainConvert.toModel(entity);
return AirlineTempDomainConvert.from(entity);
}
}

View File

@ -0,0 +1,78 @@
package com.ruoyi.airline.domain.model;
/**
* 航线航点VO
*
* @author 拓恒
* @date 2026-01-17
*/
import lombok.Data;
import java.io.Serializable;
@Data
public class AirLinePoint implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 序号
*/
private Integer id;
/**
* 动作id
*/
private Integer command;
/**
* 经纬度 +-180
*/
private String lat;
/**
* 经纬度 +-90
*/
private String lon;
/**
* 高度
*/
private Integer alt;
/**
* 悬停时间s
*/
private String loiterTime;
/**
* 相机俯仰角
*/
private String cameraPitch;
/**
* 相机滚动角
*/
private String cameraRoll;
/**
* 相机偏航角
*/
private String cameraYaw;
/**
* 挂载控制 1 相机
*/
private Integer sessionControl;
/**
* 相机指令 1 拍照
*/
private Integer shootCommand;
/**
* 绝对变焦 目前 1-10
*/
private Integer zoomAbsolute;
/***
* 转动方向 -1逆时针 1相对机场方向 硬件定义的
*/
private Integer rotateDirection;
}

View File

@ -0,0 +1,95 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 空域
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineArea extends ExBaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 空域名称
*/
private String name;
/**
* 空域类型
*/
private String areaType;
/**
* 1 启用 0 停用默认启用
*/
private Integer status;
/**
* 空域点列表
*/
private String points;
/**
* 形状
*/
private String shape;
/**
* 面积
*/
private Double areaArea;
/**
* 周长
*/
private Double areaPerimeter;
/**
* 半径
*/
private Double radius;
/**
* 最小高度
*/
private Double minHeight;
/**
* 最大高度
*/
private Double maxHeight;
/**
* 备注
*/
private String remark;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.append("areaType", getAreaType())
.append("status", getStatus())
.append("points", getPoints())
.append("shape", getShape())
.append("areaArea", getAreaArea())
.append("areaPerimeter", getAreaPerimeter())
.append("radius", getRadius())
.append("minHeight", getMinHeight())
.append("maxHeight", getMaxHeight())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,53 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;
/**
* 空域分组
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineAreaGroup extends ExBaseEntity {
/**
* 用户ID
*/
private Long groupId;
/**
* 分组名称
*/
private String groupName;
/**
* 用户ID分组自带用户归属后期权限都是基于用户ID进行
*/
private Long userId;
/**
* 组关联的空域
*/
private List<AirlineArea> groupInfos;
/**
* 空域数量
*/
private Integer areaCount;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("groupId", getGroupId())
.append("groupName", getGroupName())
.append("userId", getUserId())
.append("areaCount", getAreaCount())
.toString();
}
}

View File

@ -0,0 +1,40 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 空域分组明细
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineAreaGroupInfo extends ExBaseEntity {
/**
* id,主键
*/
private Long id;
/**
* 用户ID
*/
private Long groupId;
/**
* 空域id
*/
private Long areaId;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("groupId", getGroupId())
.append("areaId", getAreaId())
.toString();
}
}

View File

@ -0,0 +1,76 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 空域时间规则领域模型
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineAreaTimeRule extends ExBaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 空域ID
*/
private Long areaId;
/**
* 限制类型0是永久 1单次2自定义
*/
private Integer restrictType;
/**
* 日期范围
*/
private String dateRange;
/**
* 时间范围
*/
private String timeRange;
/**
* 重复粒度值0,1,2: restrictType=0时生效
*/
private Integer granularity;
/**
* 粒度循环周期整数值每1天每1周每1个月
*/
private Integer repetFrequency;
/**
* 重复粒度具体时间 granularity = 0时该值为空不生效granularity = 1时granularityTimes最多7个值1,2,3,4,5,6,7分别周一周二周日granularity = 2时granularityTimes最多12个值1,2,3,4,5,6,712分别是1月2月.12月
*/
private String granularityTimes;
/**
* 备注
*/
private String remark;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("areaId", getAreaId())
.append("restrictType", getRestrictType())
.append("dateRange", getDateRange())
.append("timeRange", getTimeRange())
.append("granularity", getGranularity())
.append("repetFrequency", getRepetFrequency())
.append("granularityTimes", getGranularityTimes())
.append("remark", getRemark())
.toString();
}
}

View File

@ -1,6 +1,7 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.airline.api.domain.AirLinePointVO;
import com.ruoyi.common.core.web.domain.BaseEntity;
import lombok.Data;
import java.util.List;
@ -13,13 +14,16 @@ import java.util.List;
* @date 2026-01-17
*/
@Data
public class AirlineFile {
public class AirlineFile extends BaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 航线名称
*/
private String name;
/**
* 文件名称
*/
@ -41,7 +45,7 @@ public class AirlineFile {
/**
* 航线类型1,航点航线;2,指点航线;3,指面航线
*/
private Integer type;
private String type;
/**
* 文件备注
@ -56,7 +60,7 @@ public class AirlineFile {
/**
* 航线点列表
*/
private List<AirLinePointVO> linePointDtoList;
private List<AirLinePoint> linePointDtoList;
/**
* 数据来源
@ -73,6 +77,31 @@ public class AirlineFile {
*/
private String fileMd5;
/**
* 爬升模式
*/
private String climbMode;
/**
* 海拔高度
*/
private Double altitude;
/**
* 飞行速度
*/
private Double flightSpeed;
/**
* 全局航点高度
*/
private Double globalWaypointHeight;
/**
* 拍照模式
*/
private String photoMode;
/**
* 大疆航线对应的oss地址可能存kmz也可能存waypoint要看fileUrl存的是啥这个字段存反的
*/
@ -99,29 +128,21 @@ public class AirlineFile {
private Integer autoTakePhotoInterval;
/**
* 创建者
* 分组ID
*/
private String createBy;
private Long groupId;
/**
* 创建时间
* 分组名称
*/
private String createTime;
private String groupName;
/**
* 更新者
* 用户ID分组自带用户归属 后期权限都是基于用户ID进行
*/
private String updateBy;
private Long userId;
/**
* 更新时间
*/
private String updateTime;
/**
* 备注
*/
private String remark;
@Override
@ -130,18 +151,26 @@ public class AirlineFile {
"id=" + id +
", fileName='" + fileName + '\'' +
", fileUrl='" + fileUrl + '\'' +
", type=" + type +
", type=" + type + '\'' +
", note='" + note + '\'' +
", distance=" + distance +
", linePointDtoList=" + linePointDtoList +
", source='" + source + '\'' +
", status=" + status +
", fileMd5='" + fileMd5 + '\'' +
", climbMode='" + climbMode + '\'' +
", altitude=" + altitude +
", flightSpeed=" + flightSpeed +
", globalWaypointHeight=" + globalWaypointHeight +
", photoMode='" + photoMode + '\'' +
", djiFileUrl='" + djiFileUrl + '\'' +
", djiRthAltitude=" + djiRthAltitude +
", turnRadius=" + turnRadius +
", autoTakePhoto=" + autoTakePhoto +
", autoTakePhotoInterval=" + autoTakePhotoInterval +
", groupId=" + groupId +
", groupName='" + groupName + '\'' +
", userId=" + userId +
'}';
}
}

View File

@ -3,6 +3,7 @@ package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -11,6 +12,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineFileGroup extends ExBaseEntity {
/**
@ -22,10 +24,11 @@ public class AirlineFileGroup extends ExBaseEntity {
* 分组名称
*/
private String groupName;
/**
* 用户ID分组自带用户归属 后期权限都是基于用户ID进行
* 航线数量
*/
private Long userId;
private Integer airlineCount;
@Override
@ -33,7 +36,7 @@ public class AirlineFileGroup extends ExBaseEntity {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("groupId", getGroupId())
.append("groupName", getGroupName())
.append("userId", getUserId())
.append("airlineCount", getAirlineCount())
.toString();
}
}

View File

@ -1,6 +1,5 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -29,6 +28,7 @@ public class AirlineFileGroupInfo extends ExBaseEntity {
*/
private Long airlineId;
private AirlineFile airlineFile;
@Override
public String toString() {

View File

@ -0,0 +1,102 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;
/**
* 标注
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineMarker extends ExBaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 标注名称
*/
private String markerName;
/**
* 标注类型
*/
private String markerType;
/**
* 1 启用 0 停用默认启用
*/
private Integer status;
/**
* 颜色
*/
private String color;
/**
* 图标
*/
private String icon;
/**
* 字体大小
*/
private Integer fontSize;
/**
* 经纬度格式[,,asl高度]
*/
private List<PointInfo> coordinates;
/**
* 简介
*/
private String description;
/**
* 备注
*/
private String remark;
@Data
public static class PointInfo {
/**
* 纬度
*/
private Double latitude;
/**
* 经度
*/
private Double longitude;
/**
* 海拔高度
*/
private Double asl;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("markerName", getMarkerName())
.append("markerType", getMarkerType())
.append("status", getStatus())
.append("color", getColor())
.append("icon", getIcon())
.append("fontSize", getFontSize())
.append("coordinates", getCoordinates())
.append("description", getDescription())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,47 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;
/**
* 标注分组
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineMarkerGroup extends ExBaseEntity {
/**
* 分组ID
*/
private Long id;
/**
* 分组名称
*/
private String name;
/**
* 组关联的标注
*/
private List<AirlineMarker> groupInfos;
/**
* 标注数量
*/
private Integer markerCount;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.append("markerCount", getMarkerCount())
.toString();
}
}

View File

@ -0,0 +1,40 @@
package com.ruoyi.airline.domain.model;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 标注分组明细
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineMarkerGroupInfo extends ExBaseEntity {
/**
* id,主键
*/
private Long id;
/**
* 分组ID
*/
private Long groupId;
/**
* 标注id
*/
private Long markerId;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("groupId", getGroupId())
.append("markerId", getMarkerId())
.toString();
}
}

View File

@ -158,4 +158,18 @@ public class KmlActionActuatorFuncParam {
@XStreamAlias("wpml:recordPointCloudOperate")
private String recordPointCloudOperate;
// 间隔拍照参数
@XStreamAlias("wpml:photoTime")
private String photoTime;
@XStreamAlias("wpml:photoDistance")
private String photoDistance;
@XStreamAlias("wpml:photoType")
private String photoType;
@XStreamAlias("wpml:droneYaw")
private String droneYaw;
}

View File

@ -1,4 +1,4 @@
package com.ruoyi.airline.domain.uitl;
package com.ruoyi.airline.domain.util;
import com.ruoyi.airline.domain.model.kml.*;

View File

@ -1,7 +1,7 @@
package com.ruoyi.airline.domain.uitl;
package com.ruoyi.airline.domain.util;
import com.ruoyi.airline.api.domain.AirLinePointVO;
import com.ruoyi.airline.domain.model.kml.*;
import com.ruoyi.airline.service.dto.AirLinePointDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
@ -22,20 +22,23 @@ public class WayPointUitls {
* @return
*/
public static byte[] kmz2waypoint(KmlInfo kmlInfo) {
public static String kmz2waypoint(KmlInfo kmlInfo) {
//准备一个waypoint文件的标头文本
StringBuilder waypointBuilder = new StringBuilder("QGC WPL 110\n");
// 重置全局id计数器
//定义waypoint的航点对象集合备用
List<AirLinePointVO> linePoints = new ArrayList<>();
List<AirLinePointDTO> linePoints = new ArrayList<>();
//m3和m4TD的机型可以从missionConfig获取部分基础数据
KmlMissionConfig missionConfig = kmlInfo.getDocument().getKmlMissionConfig();
//其他场景下都可以从missionConfig 拿航点和动作集合
List<KmlPlacemark> placeMarkList = kmlInfo.getDocument().getFolder().getPlacemarkList();
if (placeMarkList == null || placeMarkList.isEmpty()) {
return "";
}
//获取kml文件中的第一个坐标
String[] takeoffCoords;
if (missionConfig.getTakeOffRefPoint() != null) {
takeoffCoords = missionConfig.getTakeOffRefPoint().split(",");
} else {
// M300/M350使用第一个航点的坐标
@ -67,7 +70,7 @@ public class WayPointUitls {
String[] coords = cleanCoords.split(",");
// 基础航点安全点22和结束点20之间的其他16普通航点
AirLinePointVO waypoint = buildPoint(
AirLinePointDTO waypoint = buildPoint(
16,
coords[1], coords[0],
(int) Float.parseFloat(placeMark.getHeight()),
@ -98,16 +101,16 @@ public class WayPointUitls {
// 5. 生成Waypoints文件内容
for (int i = 0; i < linePoints.size(); i++) {
AirLinePointVO point = linePoints.get(i);
AirLinePointDTO point = linePoints.get(i);
waypointBuilder.append(formatWaypointLine(point, i)).append("\n");
}
return waypointBuilder.toString().getBytes();
return waypointBuilder.toString();
}
// 格式化航点行直接使用DTO字段
public static String formatWaypointLine(AirLinePointVO point, Integer index) {
public static String formatWaypointLine(AirLinePointDTO point, Integer index) {
switch (point.getCommand()) {
case 16:
if (index == 0) {
@ -161,13 +164,41 @@ public class WayPointUitls {
case 20: // 返航 使用的是第一个航点的经纬度和高度
return String.format("%d\t0\t3\t20\t0\t0\t0\t0\t%s\t%s\t%d.000000\t1", index, point.getLat(), point.getLon(), point.getAlt());
case 4000: // 飞行器偏航角
return String.format(Locale.US,
"%d\t0\t3\t4000\t0\t%s\t0\t0\t0\t0\t0.000000\t1",
index, point.getDroneYaw());
case 5000: // 开始等时间隔拍照
log.info("处理5000命令photoTime={}, photoType={}", point.getPhotoTime(), point.getPhotoType());
return String.format(Locale.US,
"%d\t0\t3\t5000\t%s\t0\t%s\t0\t0\t0\t0.000000\t1",
index,
point.getPhotoTime() != null ? String.valueOf(point.getPhotoTime()) : "0",
point.getPhotoType() != null ? String.valueOf(point.getPhotoType()) : "0");
case 6000: // 开始等间距隔拍照
return String.format(Locale.US,
"%d\t0\t3\t6000\t%s\t0\t%s\t0\t0\t0\t0.000000\t1",
index,
point.getPhotoDistance() != null ? String.valueOf(point.getPhotoDistance()) : "0",
point.getPhotoType() != null ? String.valueOf(point.getPhotoType()) : "0");
case 7000: // 结束间隔拍照
return String.format(Locale.US,
"%d\t0\t3\t2501\t0\t0\t0\t0\t0\t0\t0.000000\t1", index);
case 8000: // 全景拍照
return String.format(Locale.US,
"%d\t0\t3\t2501\t0\t0\t0\t0\t0\t0\t0.000000\t1", index);
default:
throw new IllegalArgumentException("未知命令: " + point.getCommand());
}
}
// 动作解析逻辑
public static void processActions(KmlAction action, List<AirLinePointVO> linePoints) {
public static void processActions(KmlAction action, List<AirLinePointDTO> linePoints) {
//kmz航线的动作code
String actionType = action.getActionActuatorFunc();
@ -270,6 +301,66 @@ public class WayPointUitls {
));
break;
case "panoPhoto":
// 全景拍照命令8000
linePoints.add(buildPoint(
8000,
"0", "0", 0,
"0", "0", "0", "0",
0, 0, 0
));
break;
case "startTimeIntervalPhoto":
// 开始等时间隔拍照命令5000
linePoints.add(buildPoint(
5000,
"0", "0", 0,
"0", "0", "0", "0",
0, 0, 0,
actionActuatorFuncParam.getPhotoTime() != null ? Integer.parseInt(actionActuatorFuncParam.getPhotoTime()) : null,
null,
actionActuatorFuncParam.getPhotoType() != null ? Integer.parseInt(actionActuatorFuncParam.getPhotoType()) : null,
null
));
break;
case "startDistanceIntervalPhoto":
// 开始等间距隔拍照命令6000
linePoints.add(buildPoint(
6000,
"0", "0", 0,
"0", "0", "0", "0",
0, 0, 0,
null,
actionActuatorFuncParam.getPhotoDistance() != null ? Integer.parseInt(actionActuatorFuncParam.getPhotoDistance()) : null,
actionActuatorFuncParam.getPhotoType() != null ? Integer.parseInt(actionActuatorFuncParam.getPhotoType()) : null,
null
));
break;
case "stopIntervalPhoto":
// 结束间隔拍照命令7000
linePoints.add(buildPoint(
7000,
"0", "0", 0,
"0", "0", "0", "0",
0, 0, 0
));
break;
case "aircraftYaw":
// 飞行器偏航角命令4000
linePoints.add(buildPoint(
4000,
"0", "0", 0,
"0", "0", "0", "0",
0, 0, 0,
null, null, null,
actionActuatorFuncParam.getDroneYaw()
));
break;
default:
log.error("未知动作类型: {}", actionType);
}
@ -277,10 +368,10 @@ public class WayPointUitls {
//构建waypoint航点
public static AirLinePointVO buildPoint(int command, String lat, String lon, int alt,
public static AirLinePointDTO buildPoint(int command, String lat, String lon, int alt,
String loiterTime, String cameraPitch, String cameraRoll, String cameraYaw,
int sessionControl, int zoomAbsolute, int rotateDirection) {
AirLinePointVO point = new AirLinePointVO();
AirLinePointDTO point = new AirLinePointDTO();
point.setCommand(command);
point.setLat(lat);
point.setLon(lon);
@ -295,5 +386,19 @@ public class WayPointUitls {
return point;
}
//构建waypoint航点带间隔拍照参数
public static AirLinePointDTO buildPoint(int command, String lat, String lon, int alt,
String loiterTime, String cameraPitch, String cameraRoll, String cameraYaw,
int sessionControl, int zoomAbsolute, int rotateDirection,
Integer photoTime, Integer photoDistance, Integer photoType, String droneYaw) {
AirLinePointDTO point = buildPoint(command, lat, lon, alt, loiterTime, cameraPitch, cameraRoll, cameraYaw,
sessionControl, zoomAbsolute, rotateDirection);
point.setPhotoTime(photoTime);
point.setPhotoDistance(photoDistance);
point.setPhotoType(photoType);
point.setDroneYaw(droneYaw);
return point;
}
}

View File

@ -0,0 +1,21 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaGroupInfoEntity;
import java.util.List;
/**
* 空域分组明细表 airline_area_group_info
*
* @author 拓恒
*/
public interface AirlineAreaGroupInfoMapper {
int insertGroupInfo(AirlineAreaGroupInfoEntity entity);
int deleteGroupInfo(AirlineAreaGroupInfoEntity entity);
List<AirlineAreaGroupInfoEntity> selectGroupInfoList(AirlineAreaGroupInfoEntity entity);
List<Long> selectAreaIdsByGroupId(Long groupId);
}

View File

@ -0,0 +1,25 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaGroupEntity;
import java.util.List;
/**
* 空域分组表 airline_area_group
*
* @author 拓恒
*/
public interface AirlineAreaGroupMapper {
int checkgroupNameUnique(AirlineAreaGroupEntity model);
int deletegroup(AirlineAreaGroupEntity entity);
int updateGroup(AirlineAreaGroupEntity entity);
int insertGroup(AirlineAreaGroupEntity entity);
List<AirlineAreaGroupEntity> selectGroupList(AirlineAreaGroupEntity entity);
AirlineAreaGroupEntity selectGroupById(Long groupId);
}

View File

@ -0,0 +1,32 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaEntity;
import java.util.List;
/**
* 空域列表 airline_area
*
* @author 拓恒
*/
public interface AirlineAreaMapper {
int insertArea(AirlineAreaEntity entity);
int updateArea(AirlineAreaEntity entity);
int deleteArea(AirlineAreaEntity entity);
List<AirlineAreaEntity> selectAreaList(AirlineAreaEntity entity);
AirlineAreaEntity selectAreaById(Long id);
List<AirlineAreaEntity> selectAreaListByIds(List<Long> ids);
/**
* 根据用户ID查询空域列表
* @param entity 查询条件
* @return 空域列表
*/
List<AirlineAreaEntity> selectAreaListByUserId(AirlineAreaEntity entity);
}

View File

@ -0,0 +1,27 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineAreaTimeRuleEntity;
import java.util.List;
/**
* 空域时间规则 Mapper
*
* @author 拓恒
*/
public interface AirlineAreaTimeRuleMapper {
int insertTimeRule(AirlineAreaTimeRuleEntity entity);
int updateTimeRule(AirlineAreaTimeRuleEntity entity);
int deleteTimeRule(AirlineAreaTimeRuleEntity entity);
List<AirlineAreaTimeRuleEntity> selectTimeRuleList(AirlineAreaTimeRuleEntity entity);
AirlineAreaTimeRuleEntity selectTimeRuleById(Long id);
List<AirlineAreaTimeRuleEntity> selectTimeRuleListByAreaId(Long areaId);
int deleteTimeRuleByAreaId(Long areaId);
}

View File

@ -15,7 +15,44 @@ public interface AirlineFileGroupInfoMapper {
List<AirlineFileGroupInfoEntity> selectGroupList(AirlineFileGroupInfoEntity entity);
int deleteGroupInfo(AirlineFileGroupInfoEntity entity);
Long deleteGroupInfo(AirlineFileGroupInfoEntity entity);
AirlineFileGroupInfo save(AirlineFileGroupInfoEntity entity);
Long save(AirlineFileGroupInfoEntity entity);
/**
* 检查是否存在相同的groupId和airlineId
*
* @param entity 包含groupId和airlineId的实体
* @return 存在的记录数
*/
int countByGroupIdAndAirlineId(AirlineFileGroupInfoEntity entity);
/**
* 更新分组ID将航线文件从一个分组移动到另一个分组
*
* @param oldGroupId 原分组ID
* @param newGroupId 新分组ID
* @param airlineId 航线文件ID
* @return 影响的行数
*/
Long updateGroupId(Long oldGroupId, Long newGroupId, Long airlineId);
/**
* 批量删除分组详情
*
* @param airLineIds 航线ID列表
* @param groupId 分组ID
* @return 影响的行数
*/
Long deleteGroupInfoBatch(List<Long> airLineIds, Long groupId);
/**
* 批量更新分组ID将航线文件从一个分组移动到另一个分组
*
* @param oldGroupId 原分组ID
* @param newGroupId 新分组ID
* @param airLineIds 航线文件ID列表
* @return 影响的行数
*/
Long batchUpdateGroupId(Long oldGroupId, Long newGroupId, List<Long> airLineIds);
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineFileEntity;
import com.ruoyi.airline.mapper.entity.AirlineFileGroupEntity;
import java.util.List;
@ -20,4 +21,6 @@ public interface AirlineFileGroupMapper {
int insertGroup(AirlineFileGroupEntity entity);
List<AirlineFileGroupEntity> selectGroupList(AirlineFileGroupEntity entity);
List<AirlineFileEntity> selectAirlineListByUserId(AirlineFileEntity entity);
}

View File

@ -13,7 +13,20 @@ import java.util.List;
public interface AirlineFileMapper {
AirlineFileEntity save(AirlineFileEntity entity);
Long save(AirlineFileEntity entity);
List<AirlineFileEntity> selectFileListByIds(List<Long> ids);
List<AirlineFileEntity> selectFileNameLike(String name);
/**
* 根据分组ID和航线名称模糊查询航线文件
*
* @param groupId 分组ID
* @param name 航线名称
* @return 航线文件列表
*/
List<AirlineFileEntity> selectFileNameLikeByGroupId(Long groupId, String name);
Long update(AirlineFileEntity entity);
}

View File

@ -0,0 +1,52 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineMarkerGroupInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 标注分组明细表 airline_marker_group_info
*
* @author 拓恒
*/
@Mapper
public interface AirlineMarkerGroupInfoMapper {
int insertMarkerGroupInfo(AirlineMarkerGroupInfoEntity entity);
int deleteMarkerGroupInfo(AirlineMarkerGroupInfoEntity entity);
List<AirlineMarkerGroupInfoEntity> selectMarkerGroupInfoList(AirlineMarkerGroupInfoEntity entity);
AirlineMarkerGroupInfoEntity selectMarkerGroupInfoById(Long id);
/**
* 根据分组ID删除标注分组信息
* @param groupId 分组ID
* @return 影响行数
*/
int deleteByGroupId(@Param("groupId") Long groupId);
/**
* 根据标注ID删除标注分组信息
* @param markerId 标注ID
* @return 影响行数
*/
int deleteByMarkerId(@Param("markerId") Long markerId);
/**
* 根据分组ID查询标注ID列表
* @param groupId 分组ID
* @return 标注ID列表
*/
List<Long> selectMarkerIdsByGroupId(@Param("groupId") Long groupId);
/**
* 批量插入标注分组信息
* @param list 标注分组信息列表
* @return 影响行数
*/
int batchInsertMarkerGroupInfo(@Param("list") List<AirlineMarkerGroupInfoEntity> list);
}

View File

@ -0,0 +1,25 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineMarkerGroupEntity;
import java.util.List;
/**
* 标注分组表 airline_marker_group
*
* @author 拓恒
*/
public interface AirlineMarkerGroupMapper {
int checkGroupNameUnique(AirlineMarkerGroupEntity model);
int deleteGroup(AirlineMarkerGroupEntity entity);
int updateGroup(AirlineMarkerGroupEntity entity);
int insertGroup(AirlineMarkerGroupEntity entity);
List<AirlineMarkerGroupEntity> selectGroupList(AirlineMarkerGroupEntity entity);
AirlineMarkerGroupEntity selectGroupById(Long id);
}

View File

@ -0,0 +1,39 @@
package com.ruoyi.airline.mapper;
import com.ruoyi.airline.mapper.entity.AirlineMarkerEntity;
import java.util.List;
/**
* 标注表 airline_marker
*
* @author 拓恒
*/
public interface AirlineMarkerMapper {
int insertMarker(AirlineMarkerEntity entity);
int updateMarker(AirlineMarkerEntity entity);
int deleteMarker(AirlineMarkerEntity entity);
List<AirlineMarkerEntity> selectMarkerList(AirlineMarkerEntity entity);
AirlineMarkerEntity selectMarkerById(Long id);
List<AirlineMarkerEntity> selectMarkerListByIds(List<Long> ids);
/**
* 根据用户ID查询标注列表
* @param entity 查询条件
* @return 标注列表
*/
List<AirlineMarkerEntity> selectMarkerListByUserId(AirlineMarkerEntity entity);
/**
* 查询所有可用标注关联分组信息表
* @param entity 查询条件
* @return 标注列表
*/
List<AirlineMarkerEntity> selectAllAvailableMarkers(AirlineMarkerEntity entity);
}

View File

@ -0,0 +1,88 @@
package com.ruoyi.airline.mapper.entity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 空域列表 airline_area
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineAreaEntity extends ExBaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 空域名称
*/
private String name;
/**
* 空域类型
*/
private String areaType;
/**
* 1 启用 0 停用默认启用
*/
private Integer status;
/**
* 空域点列表
*/
private String points;
/**
* 形状
*/
private String shape;
/**
* 面积
*/
private Double areaArea;
/**
* 周长
*/
private Double areaPerimeter;
/**
* 半径
*/
private Double radius;
/**
* 最小高度
*/
private Double minHeight;
/**
* 最大高度
*/
private Double maxHeight;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.append("areaType", getAreaType())
.append("status", getStatus())
.append("points", getPoints())
.append("shape", getShape())
.append("areaArea", getAreaArea())
.append("areaPerimeter", getAreaPerimeter())
.append("radius", getRadius())
.append("minHeight", getMinHeight())
.append("maxHeight", getMaxHeight())
.toString();
}
}

View File

@ -0,0 +1,40 @@
package com.ruoyi.airline.mapper.entity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 空域分组表 airline_area_group
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineAreaGroupEntity extends ExBaseEntity {
/**
* 用户ID
*/
private Long groupId;
/**
* 分组名称
*/
private String groupName;
/**
* 用户ID分组自带用户归属后期权限都是基于用户ID进行
*/
private Long userId;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("groupId", getGroupId())
.append("groupName", getGroupName())
.append("userId", getUserId())
.toString();
}
}

View File

@ -0,0 +1,40 @@
package com.ruoyi.airline.mapper.entity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 空域分组明细表 airline_area_group_info
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineAreaGroupInfoEntity extends ExBaseEntity {
/**
* id,主键
*/
private Long id;
/**
* 用户ID
*/
private Long groupId;
/**
* 空域id
*/
private Long areaId;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("groupId", getGroupId())
.append("areaId", getAreaId())
.toString();
}
}

View File

@ -0,0 +1,76 @@
package com.ruoyi.airline.mapper.entity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 空域时间规则表 airline_area_time_rule
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineAreaTimeRuleEntity extends ExBaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 空域ID
*/
private Long areaId;
/**
* 限制类型0是永久 1单次2自定义
*/
private Integer restrictType;
/**
* 日期范围
*/
private String dateRange;
/**
* 时间范围
*/
private String timeRange;
/**
* 重复粒度值0,1,2: restrictType=0时生效
*/
private Integer granularity;
/**
* 粒度循环周期整数值每1天每1周每1个月
*/
private Integer repetFrequency;
/**
* 重复粒度具体时间 granularity = 0时该值为空不生效granularity = 1时granularityTimes最多7个值1,2,3,4,5,6,7分别周一周二周日granularity = 2时granularityTimes最多12个值1,2,3,4,5,6,712分别是1月2月.12月
*/
private String granularityTimes;
/**
* 备注
*/
private String remark;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("areaId", getAreaId())
.append("restrictType", getRestrictType())
.append("dateRange", getDateRange())
.append("timeRange", getTimeRange())
.append("granularity", getGranularity())
.append("repetFrequency", getRepetFrequency())
.append("granularityTimes", getGranularityTimes())
.append("remark", getRemark())
.toString();
}
}

View File

@ -54,7 +54,7 @@ public class AirlineFileEntity extends BaseEntity {
/**
* 航线类型1,航点航线;2,指点航线;3,指面航线
*/
private Integer type;
private String type;
/**
* 数据来源
@ -71,5 +71,45 @@ public class AirlineFileEntity extends BaseEntity {
*/
private String fileMd5;
/**
* 爬升模式
*/
private String climbMode;
/**
* 海拔高度
*/
private Double altitude;
/**
* 飞行速度
*/
private Double flightSpeed;
/**
* 全局航点高度
*/
private Double globalWaypointHeight;
/**
* 拍照模式
*/
private String photoMode;
/**
* 分组ID
*/
private Long groupId;
/**
* 分组名称
*/
private String groupName;
/**
* 用户ID分组自带用户归属 后期权限都是基于用户ID进行
*/
private Long userId;
}

View File

@ -23,10 +23,11 @@ public class AirlineFileGroupEntity extends ExBaseEntity {
* 分组名称
*/
private String groupName;
/**
* 用户ID分组自带用户归属 后期权限都是基于用户ID进行
* 航线数量
*/
private Long userId;
private Integer airlineCount;
@Override
@ -34,7 +35,6 @@ public class AirlineFileGroupEntity extends ExBaseEntity {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("groupId", getGroupId())
.append("groupName", getGroupName())
.append("userId", getUserId())
.toString();
}
}

View File

@ -0,0 +1,76 @@
package com.ruoyi.airline.mapper.entity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 标注表 airline_marker
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineMarkerEntity extends ExBaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 标注名称
*/
private String markerName;
/**
* 标注类型
*/
private String markerType;
/**
* 1 启用 0 停用默认启用
*/
private Integer status;
/**
* 颜色
*/
private String color;
/**
* 图标
*/
private String icon;
/**
* 字体大小
*/
private Integer fontSize;
/**
* 经纬度格式[,,asl高度]
*/
private String coordinates;
/**
* 简介
*/
private String description;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("markerName", getMarkerName())
.append("markerType", getMarkerType())
.append("status", getStatus())
.append("color", getColor())
.append("icon", getIcon())
.append("fontSize", getFontSize())
.append("coordinates", getCoordinates())
.append("description", getDescription())
.toString();
}
}

View File

@ -0,0 +1,34 @@
package com.ruoyi.airline.mapper.entity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 标注分组表 airline_marker_group
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineMarkerGroupEntity extends ExBaseEntity {
/**
* 分组ID
*/
private Long id;
/**
* 分组名称
*/
private String name;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.toString();
}
}

View File

@ -0,0 +1,40 @@
package com.ruoyi.airline.mapper.entity;
import com.ruoyi.common.core.web.domain.ExBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 标注分组明细表 airline_marker_group_info
*
* @author 拓恒
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AirlineMarkerGroupInfoEntity extends ExBaseEntity {
/**
* id,主键
*/
private Long id;
/**
* 分组ID
*/
private Long groupId;
/**
* 标注id
*/
private Long markerId;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("groupId", getGroupId())
.append("markerId", getMarkerId())
.toString();
}
}

View File

@ -0,0 +1,21 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineAreaGroupInfoDTO;
import java.util.List;
/**
* 空域分组明细管理
*
* @author 拓恒
*/
public interface IAirlineAreaGroupInfoService {
int insertGroupInfo(AirlineAreaGroupInfoDTO groupInfo);
int deleteGroupInfo(Long userId, Long groupId, Long areaId);
List<AirlineAreaGroupInfoDTO> selectGroupInfoList(AirlineAreaGroupInfoDTO dto);
List<Long> selectAreaIdsByGroupId(Long groupId);
}

View File

@ -0,0 +1,90 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineAreaDTO;
import com.ruoyi.airline.service.dto.AirlineAreaGroupDTO;
import java.util.List;
/**
* 空域分组管理
*
* @author 拓恒
*/
public interface IAirlineAreaGroupService {
int deletegroupById(Long userId, Long groupId);
/**
* 检查名称是否已经存在
* @param group
* @return
*/
boolean checkGroupNameUnique(AirlineAreaGroupDTO group);
int updateGroup(AirlineAreaGroupDTO group);
int insertGroup(AirlineAreaGroupDTO group);
List<AirlineAreaGroupDTO> selectGroupList(AirlineAreaGroupDTO dto);
// AirlineAreaGroupDTO selectAirLineListsByGroupId(Long userId, Long groupId);
// List<AirlineAreaDTO> selectAirlineListByUserId(AirlineAreaDTO dto);
/**
* 按照空域分组查询所有的空域信息包含坐标点信息
* @param userId 用户ID
* @param groupId 分组ID
* @return 空域分组详情
*/
AirlineAreaGroupDTO selectAirspaceListByGroupId(Long userId, Long groupId);
/**
* 修改空域信息包含坐标点信息
* @param area 空域信息
* @return 修改结果
*/
int updateAreaWithPoints(AirlineAreaDTO area);
/**
* 在指定分组下新增空域
* @param groupId 分组ID
* @param area 空域信息
* @return 新增结果
*/
int insertAreaWithGroup(Long groupId, AirlineAreaDTO area);
/**
* 删除空域软删除
*
* @param areaId 空域ID
* @return 删除结果
*/
int deleteArea(Long areaId);
/**
* 批量移动空域到新分组
*
* @param areaIds 空域ID列表
* @param oldGroupId 原分组ID
* @param newGroupId 新分组ID
* @return 移动结果
*/
int batchMoveAreaToNewGroup(List<Long> areaIds, Long oldGroupId, Long newGroupId);
/**
* 根据用户ID查询空域列表支持名称模糊查询
*
* @param dto 查询条件
* @return 空域列表
*/
List<AirlineAreaDTO> selectAreaListByUserId(AirlineAreaDTO dto);
/**
* 批量删除空域
*
* @param areaIds 空域ID列表
* @return 删除数量
*/
int batchDeleteArea(List<Long> areaIds);
}

View File

@ -0,0 +1,23 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineAreaDTO;
import java.util.List;
/**
* 空域管理
*
* @author 拓恒
*/
public interface IAirlineAreaService {
int insertArea(AirlineAreaDTO area);
int updateArea(AirlineAreaDTO area);
int deleteArea(Long id);
List<AirlineAreaDTO> selectAreaList(AirlineAreaDTO dto);
AirlineAreaDTO selectAreaById(Long id);
}

View File

@ -0,0 +1,29 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineAreaTimeRuleDTO;
import java.util.List;
/**
* 空域时间规则服务接口
*
* @author 拓恒
*/
public interface IAirlineAreaTimeRuleService {
int insertTimeRule(AirlineAreaTimeRuleDTO dto);
int updateTimeRule(AirlineAreaTimeRuleDTO dto);
int deleteTimeRule(Long id);
List<AirlineAreaTimeRuleDTO> selectTimeRuleList(AirlineAreaTimeRuleDTO dto);
AirlineAreaTimeRuleDTO selectTimeRuleById(Long id);
List<AirlineAreaTimeRuleDTO> selectTimeRuleListByAreaId(Long areaId);
int deleteTimeRuleByAreaId(Long areaId);
int batchInsertTimeRule(Long areaId, List<AirlineAreaTimeRuleDTO> timeRules);
}

View File

@ -1,10 +1,9 @@
package com.ruoyi.airline.service.api;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.airline.service.dto.AirlineFileDTO;
import com.ruoyi.airline.service.dto.AirlineFileGroupInfoDTO;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.exception.base.BaseException;
import java.io.IOException;
import java.util.List;
/**
@ -13,9 +12,47 @@ import java.util.List;
* @author 拓恒
*/
public interface IAirlineFileGroupInfoService {
List<AirlineFileGroupInfoDTO> selectGroupInfoListById(Long groupId);
List<AirlineFileGroupInfoDTO> selectGroupInfoListById(Long groupId);
AirlineFileGroupInfoDTO save(AirlineFileGroupInfoDTO dto) throws IOException;
AirlineFileDTO save(AirlineFileGroupInfoDTO dto) throws BaseException;
Long deleteGroupInfo(AirlineFileGroupInfoDTO dto) throws BaseException;
/**
* * 移动分组详情到新分组
* @param dto
* @param groupId
* @return
* @throws BaseException
*/
Long moveGroupInfo(AirlineFileGroupInfoDTO dto, Long groupId) throws BaseException;
/**
* 批量删除分组详情
* @param airLineIds 航线ID列表
* @param groupId 分组ID
* @return
* @throws BaseException
*/
Long deleteGroupInfoBatch(List<Long> airLineIds, Long groupId) throws BaseException;
/**
* 批量移动分组详情到新分组
* @param airLineIds 航线ID列表
* @param groupId 原分组ID
* @param newGroupId 新分组ID
* @return
* @throws BaseException
*/
Long batchMoveGroupInfo(List<Long> airLineIds, Long groupId, Long newGroupId) throws BaseException;
/**
* 批量导出航线并上传到minio
* @param airLineIds 航线ID列表
* @param groupId 分组ID
* @return 下载地址
* @throws BaseException
*/
String batchExportAirlines(List<Long> airLineIds, Long groupId) throws BaseException;
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineFileDTO;
import com.ruoyi.airline.service.dto.AirlineFileGroupDTO;
import java.util.List;
@ -27,4 +28,6 @@ public interface IAirlineFileGroupService {
List<AirlineFileGroupDTO> selectGroupList(AirlineFileGroupDTO dto);
AirlineFileGroupDTO selectAirLineListsByGroupId(Long userId, Long groupId);
List<AirlineFileDTO> selectAirlineListByUserId(AirlineFileDTO dto);
}

View File

@ -16,7 +16,13 @@ public interface IAirlineFileService {
AirlineFileDTO save(AirlineFileDTO dto);
AirlineFileDTO parseAndUplload(MultipartFile file);
AirlineFileDTO parseAndUplload(MultipartFile file, Long groupId);
AirlineFileDTO createOrupdate(AirlineFileDTO airlineFile) throws IOException;
AirlineFileDTO selectById(Long airlineId);
String getNewFileNameLikeByGroupId(String name, Long groupId);
Long update(AirlineFileDTO airlineFile);
}

View File

@ -0,0 +1,48 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupInfoDTO;
import java.util.List;
/**
* 标注分组明细管理
*
* @author 拓恒
*/
public interface IAirlineMarkerGroupInfoService {
int insertMarker(AirlineMarkerDTO dto);
int deleteMarker(AirlineMarkerDTO dto);
int batchDeleteMarker(List<Long> markerIds);
/**
* 根据分组ID查询标注列表
* @param groupId 分组ID
* @return 标注分组详情
*/
AirlineMarkerGroupInfoDTO selectMarkersByGroupId(Long groupId);
/**
* 获取用户下所有可用标注
* @return 标注列表
*/
List<AirlineMarkerDTO> selectUserAvailableMarkers();
/**
* 获取全部可用标注
* @param dto 查询条件
* @return 标注列表
*/
List<AirlineMarkerDTO> selectAllAvailableMarkers(AirlineMarkerDTO dto);
/**
* 批量移动标注到指定分组
* @param markerIds 标注ID列表
* @param targetGroupId 目标分组ID
* @return 移动成功的数量
*/
int batchMoveMarkersToGroup(List<Long> markerIds, Long targetGroupId);
}

View File

@ -0,0 +1,71 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import com.ruoyi.airline.service.dto.AirlineMarkerGroupDTO;
import java.util.List;
/**
* 标注分组管理
*
* @author 拓恒
*/
public interface IAirlineMarkerGroupService {
/**
* 删除分组软删除
* @param id 分组ID
* @return 删除结果
*/
int deleteGroupById(Long id);
/**
* 检查分组名称是否唯一
* @param group 分组信息
* @return 是否唯一
*/
boolean checkGroupNameUnique(AirlineMarkerGroupDTO group);
/**
* 更新分组
* @param group 分组信息
* @return 更新结果
*/
int updateGroup(AirlineMarkerGroupDTO group);
/**
* 新增分组
* @param group 分组信息
* @return 新增结果
*/
int insertGroup(AirlineMarkerGroupDTO group);
/**
* 查询分组列表
* @param dto 查询条件
* @return 分组列表
*/
List<AirlineMarkerGroupDTO> selectGroupList(AirlineMarkerGroupDTO dto);
/**
* 根据ID查询分组
* @param id 分组ID
* @return 分组信息
*/
AirlineMarkerGroupDTO selectGroupById(Long id);
/**
* 在指定分组下新增标注
* @param id 分组ID
* @param marker 标注信息
* @return 新增结果
*/
int insertMarkerWithGroup(Long id, AirlineMarkerDTO marker);
/**
* 批量删除分组
* @param groupIds 分组ID列表
* @return 删除数量
*/
int batchDeleteGroup(List<Long> groupIds);
}

View File

@ -0,0 +1,17 @@
package com.ruoyi.airline.service.api;
import com.ruoyi.airline.service.dto.AirlineMarkerDTO;
import java.util.List;
/**
* 标注管理
*
* @author 拓恒
*/
public interface IAirlineMarkerService {
int updateMarker(AirlineMarkerDTO marker);
}

Some files were not shown because too many files have changed in this diff Show More