Compare commits
102 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
435ed1c62f | |
|
|
d4253be537 | |
|
|
ce41e4a490 | |
|
|
c7793d7c71 | |
|
|
e761efb850 | |
|
|
7c77837cf5 | |
|
|
c767572a9f | |
|
|
3f87e669d5 | |
|
|
8e1550a045 | |
|
|
9fd2b1f6d7 | |
|
|
1be9f626a0 | |
|
|
395397fedc | |
|
|
755cd26ddb | |
|
|
cac50ce393 | |
|
|
d56262fc34 | |
|
|
7a661add52 | |
|
|
249215edd1 | |
|
|
b3cd8d8965 | |
|
|
7d3d36eb0f | |
|
|
c794a06e7a | |
|
|
337694250a | |
|
|
73e1deae4e | |
|
|
0fd39cf7f3 | |
|
|
ca98f67f13 | |
|
|
0820951503 | |
|
|
9718e3ae41 | |
|
|
3ccdb8ed5a | |
|
|
bb7363bd74 | |
|
|
d1398b5991 | |
|
|
0da4f1f8d4 | |
|
|
4a6cb25af2 | |
|
|
78428c9e98 | |
|
|
79fcee731d | |
|
|
081261e750 | |
|
|
ba86a0d011 | |
|
|
f9494ee635 | |
|
|
d32d652ba2 | |
|
|
c647948ca9 | |
|
|
291b3e1b7b | |
|
|
ce52499b3e | |
|
|
7583f3f98e | |
|
|
d0cc06c353 | |
|
|
aa5a6641d7 | |
|
|
4491b34704 | |
|
|
38661172ed | |
|
|
c0d7b808ad | |
|
|
a7cea1a5fb | |
|
|
c2145cf08e | |
|
|
9f14494575 | |
|
|
cc559f4cb1 | |
|
|
43c4b027bc | |
|
|
4fd0ee3c4e | |
|
|
c2cc12eeda | |
|
|
40645de69c | |
|
|
cc1f539a82 | |
|
|
f2b97009ab | |
|
|
bd79084fa0 | |
|
|
fc0e317432 | |
|
|
7252f19a4b | |
|
|
888659deae | |
|
|
89f8739c18 | |
|
|
9a4fa70463 | |
|
|
11336eaea1 | |
|
|
1d25c15369 | |
|
|
7da906c608 | |
|
|
ae03e92685 | |
|
|
b9eded75c7 | |
|
|
9f11633445 | |
|
|
f2f849c6e6 | |
|
|
b0e873e9d4 | |
|
|
f27bfc33a2 | |
|
|
c136e237fb | |
|
|
b03e858b3b | |
|
|
7e426b3bc7 | |
|
|
ea0a741933 | |
|
|
32ce1b3383 | |
|
|
2377e3e41e | |
|
|
5e34d029b6 | |
|
|
272aaa637e | |
|
|
bf42d6b13e | |
|
|
2202f4b034 | |
|
|
bf538371d7 | |
|
|
8e1f5c622a | |
|
|
a01ec7becd | |
|
|
99e961c476 | |
|
|
8e83c0adc1 | |
|
|
b9a4eefa4b | |
|
|
dee7f20935 | |
|
|
d2d265ec91 | |
|
|
d957404beb | |
|
|
9c1a5dca5b | |
|
|
4110db19f7 | |
|
|
f9babad49d | |
|
|
acc087cd72 | |
|
|
4d4b85dd7f | |
|
|
5acb3656d3 | |
|
|
551d5149b6 | |
|
|
105836f2b8 | |
|
|
c22b38ccbb | |
|
|
62e235baab | |
|
|
3d2ee17339 | |
|
|
afdc3056ec |
24
pom.xml
24
pom.xml
|
|
@ -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>
|
||||
|
|
@ -70,13 +75,30 @@
|
|||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-log</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- xml文件转化 -->
|
||||
<dependency>
|
||||
<groupId>com.thoughtworks.xstream</groupId>
|
||||
<artifactId>xstream</artifactId>
|
||||
<version>1.4.20</version>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common Swagger -->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-swagger</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Flyway Database Migration -->
|
||||
<dependency>
|
||||
<groupId>org.flywaydb</groupId>
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
ddddda
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
package com.ruoyi.airline;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import com.ruoyi.common.security.annotation.EnableCustomConfig;
|
||||
import com.ruoyi.common.security.annotation.EnableRyFeignClients;
|
||||
|
||||
/**
|
||||
* 系统模块
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@EnableCustomConfig
|
||||
@EnableRyFeignClients
|
||||
@SpringBootApplication
|
||||
public class Application
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
SpringApplication.run(Application.class, args);
|
||||
System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙ \n" +
|
||||
" .-------. ____ __ \n" +
|
||||
" | _ _ \\ \\ \\ / / \n" +
|
||||
" | ( ' ) | \\ _. / ' \n" +
|
||||
" |(_ o _) / _( )_ .' \n" +
|
||||
" | (_,_).' __ ___(_ o _)' \n" +
|
||||
" | |\\ \\ | || |(_,_)' \n" +
|
||||
" | | \\ `' /| `-' / \n" +
|
||||
" | | \\ / \\ / \n" +
|
||||
" ''-' `'-' `-..-' ");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package com.ruoyi.airline;
|
||||
|
||||
import com.ruoyi.common.security.annotation.EnableCustomConfig;
|
||||
import com.ruoyi.common.security.annotation.EnableRyFeignClients;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* 航线模块应用启动类
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableCustomConfig
|
||||
@EnableRyFeignClients
|
||||
public class TuohengAirlineApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(TuohengAirlineApplication.class, args);
|
||||
}
|
||||
}
|
||||
|
|
@ -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("删除失败");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
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;
|
||||
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.log.annotation.Log;
|
||||
import com.ruoyi.common.log.enums.BusinessType;
|
||||
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 java.io.IOException;
|
||||
|
||||
/**
|
||||
* 航线文件Controller
|
||||
*
|
||||
* @author 拓恒
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/file")
|
||||
@Tag(name = "航线管理")
|
||||
public class AirlineFileController extends BaseController {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(AirlineFileController.class);
|
||||
|
||||
|
||||
@Autowired
|
||||
private IAirlineFileService airlineFileService;
|
||||
|
||||
|
||||
/**
|
||||
* 编辑航线文件信息
|
||||
*
|
||||
* @param entity 实体对象
|
||||
* @return
|
||||
*/
|
||||
// @RequiresPermissions("airline:file:edit")
|
||||
// @Log(title = "修改航线属性", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/edit")
|
||||
@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("/createOrUpdate")
|
||||
@Operation(summary = "编辑航线文件内容,生产航点新文件")
|
||||
public AjaxResult createOrUpdate(@RequestBody AirlineFileVO vo) {
|
||||
AirlineFileDTO airlineFile = AirlineFileControllerConvert.to(vo);
|
||||
try {
|
||||
return success(airlineFileService.createOrupdate(airlineFile));
|
||||
} catch (IOException e) {
|
||||
throw new BaseException("更新航线失败", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
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.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("/fileGroup")
|
||||
@Tag(name = "航线分组管理")
|
||||
public class AirlineFileGroupController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private IAirlineFileGroupService iAirlineFileGroupService;
|
||||
|
||||
|
||||
/**
|
||||
* 获取航线文件分组列表,根据用户Id查询分组
|
||||
*
|
||||
* @param airlineFileVO 查询条件
|
||||
* @return
|
||||
*/
|
||||
// @RequiresPermissions("airline:group:list")
|
||||
@GetMapping()
|
||||
@Operation(summary = "获取所有的航线分组")
|
||||
public TableDataInfo index(AirlineFileGroupVO airlineFileVO) {
|
||||
startPage();
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据分组编号获取详细信息
|
||||
*/
|
||||
// @RequiresPermissions("airline:group:query")
|
||||
@GetMapping(value = "/{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)
|
||||
@PostMapping
|
||||
@Operation(summary = "新增分组")
|
||||
public AjaxResult add(@Validated @RequestBody AirlineFileGroupVO group) {
|
||||
group.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
|
||||
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.to(group);
|
||||
if (iAirlineFileGroupService.checkGroupNameUnique(dto)) {
|
||||
return error("新增分组'" + group.getGroupName() + "'失败,分组名称已存在");
|
||||
}
|
||||
return toAjax(iAirlineFileGroupService.insertGroup(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分组
|
||||
*/
|
||||
// @RequiresPermissions("airline:group:edit")
|
||||
// @Log(title = "修改分组", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
@Operation(summary = "修改分组")
|
||||
public AjaxResult edit(@Validated @RequestBody AirlineFileGroupVO group) {
|
||||
group.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
|
||||
AirlineFileGroupDTO dto = AirlineFileGroupControllerConvert.to(group);
|
||||
if (iAirlineFileGroupService.checkGroupNameUnique(dto)) {
|
||||
return error("修改分组'" + group.getGroupName() + "'失败,分组名称已存在");
|
||||
}
|
||||
return toAjax(iAirlineFileGroupService.updateGroup(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除分组,前端校验分组下是否有航线弹出确认删除提示,如果确认会将分组及航线一起删除。
|
||||
*/
|
||||
// @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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
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;
|
||||
import com.ruoyi.airline.service.dto.AirlineFileDTO;
|
||||
import com.ruoyi.airline.service.dto.AirlineFileGroupInfoDTO;
|
||||
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 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.util.List;
|
||||
|
||||
/**
|
||||
* 航线分组
|
||||
*
|
||||
* @author 拓恒
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/fileGroupInfo")
|
||||
@Tag(name = "分组航线管理")
|
||||
public class AirlineFileGroupInfoController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private IAirlineFileGroupInfoService iAirlineFileGroupInfoService;
|
||||
|
||||
@Autowired
|
||||
private IAirlineFileService iAirlineFileService;
|
||||
|
||||
|
||||
/**
|
||||
* 获取航线文件分组列表,根据用户Id查询分组
|
||||
*
|
||||
* @param groupId 分组ID
|
||||
* @return
|
||||
*/
|
||||
// @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);
|
||||
return getDataTable(result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* kmz航线文件,并转换成waypoint上传 ,仅仅返航URL
|
||||
* <p>
|
||||
* kmz类似zip,一般情况下内部包含kml和wpml两个文件
|
||||
*
|
||||
* @param file
|
||||
*/
|
||||
@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.setAirlineFileDTO(dto);
|
||||
AirlineFileDTO result = iAirlineFileGroupInfoService.save(infoDTO);
|
||||
return success(AirlineFileControllerConvert.from(result));
|
||||
}
|
||||
|
||||
/**
|
||||
* 在当前分组下添加初始航线(空的航线)
|
||||
*
|
||||
* @param vo 实体对象
|
||||
*/
|
||||
@PostMapping()
|
||||
@Operation(summary = "在当前分组下添加初始航线,必须上传分组ID")
|
||||
public AjaxResult add(@RequestBody AirlineFileGroupInfoVO vo) throws BaseException {
|
||||
if (vo.getGroupId() == null) {
|
||||
throw new BaseException("分组ID不能为空");
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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("移动失败");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +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;
|
||||
|
||||
/**
|
||||
* 航线数据Controller转换类
|
||||
* 用于Controller VO和Service DTO之间的转换
|
||||
*
|
||||
* @author 拓恒
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineDataControllerConvert extends BaseConvert<AirlineDataDTO, AirlineDataVO>
|
||||
{
|
||||
private static final AirlineDataControllerConvert INSTANCE = new AirlineDataControllerConvert();
|
||||
|
||||
private AirlineDataControllerConvert() {
|
||||
super(AirlineDataDTO.class, AirlineDataVO.class);
|
||||
}
|
||||
|
||||
public static AirlineDataVO from(AirlineDataDTO dto)
|
||||
{
|
||||
return INSTANCE.innerFrom(dto);
|
||||
}
|
||||
|
||||
public static AirlineDataDTO to(AirlineDataVO vo)
|
||||
{
|
||||
return INSTANCE.innerTo(vo);
|
||||
}
|
||||
|
||||
public static List<AirlineDataVO> fromList(List<AirlineDataDTO> dtoList)
|
||||
{
|
||||
return INSTANCE.innerFromList(dtoList);
|
||||
}
|
||||
|
||||
public static List<AirlineDataDTO> toList(List<AirlineDataVO> voList)
|
||||
{
|
||||
return INSTANCE.innerToList(voList);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 航线文件Controller转换类
|
||||
* 用于Controller VO和Service DTO之间的转换
|
||||
*
|
||||
* @author 拓恒
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineFileControllerConvert extends BaseConvert<AirlineFileDTO, AirlineFileVO>
|
||||
{
|
||||
|
||||
private static final AirlineFileControllerConvert INSTANCE = new AirlineFileControllerConvert();
|
||||
|
||||
private AirlineFileControllerConvert() {
|
||||
super(AirlineFileDTO.class, AirlineFileVO.class);
|
||||
}
|
||||
|
||||
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();
|
||||
BeanUtils.copyProperties(vo, dto);
|
||||
if (vo.getLinePointVOList() != null) {
|
||||
dto.setLinePointDtoList(vo.getLinePointVOList().stream()
|
||||
.map(AirlineFileControllerConvert::convertPoint)
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
return dto;
|
||||
}
|
||||
|
||||
private static AirLinePointDTO convertPoint(AirLinePointVO vo) {
|
||||
if (vo == null) {
|
||||
return null;
|
||||
}
|
||||
AirLinePointDTO dto = new AirLinePointDTO();
|
||||
BeanUtils.copyProperties(vo, dto);
|
||||
return dto;
|
||||
}
|
||||
|
||||
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) {
|
||||
if (dtoList == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return fromList(dtoList);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
package com.ruoyi.airline.controller.convert;
|
||||
|
||||
import com.ruoyi.airline.api.domain.AirlineFileGroupVO;
|
||||
import com.ruoyi.airline.service.dto.AirlineFileGroupDTO;
|
||||
import com.ruoyi.common.core.utils.BaseConvert;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线文件分组Domain转换类
|
||||
* 用于Domain模型和Mapper实体之间的转换
|
||||
*
|
||||
* @author 拓恒
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineFileGroupControllerConvert extends BaseConvert<AirlineFileGroupDTO, AirlineFileGroupVO> {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public static AirlineFileGroupDTO to(AirlineFileGroupVO vo) {
|
||||
AirlineFileGroupDTO dto = INSTANCE.innerTo(vo);
|
||||
dto.setGroupInfos(AirlineFileControllerConvert.toList(vo.getGroupInfos()));
|
||||
return dto;
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroupVO> fromList(List<AirlineFileGroupDTO> dtoList) {
|
||||
return INSTANCE.innerFromList(dtoList);
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroupDTO> toList(List<AirlineFileGroupVO> voList) {
|
||||
return INSTANCE.innerToList(voList);
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroupVO> toApiDomainList(List<AirlineFileGroupDTO> dtoList) {
|
||||
if (dtoList == null) {
|
||||
return null;
|
||||
}
|
||||
return fromList(dtoList);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 航线文件Domain转换类
|
||||
* 用于Domain模型和Mapper实体之间的转换
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineFileGroupInfoControllerConvert extends BaseConvert<AirlineFileGroupInfoDTO, AirlineFileGroupInfoVO>
|
||||
{
|
||||
|
||||
private static final AirlineFileGroupInfoControllerConvert INSTANCE = new AirlineFileGroupInfoControllerConvert();
|
||||
|
||||
private AirlineFileGroupInfoControllerConvert() {
|
||||
super(AirlineFileGroupInfoDTO.class, AirlineFileGroupInfoVO.class);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroupInfoVO> fromList(List<AirlineFileGroupInfoDTO> dtoList)
|
||||
{
|
||||
return INSTANCE.innerFromList(dtoList);
|
||||
}
|
||||
|
||||
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 fromList(dtoList);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.ruoyi.airline.domain.api;
|
||||
|
||||
import com.ruoyi.airline.domain.model.AirlineData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线数据Domain接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public interface IAirlineDataDomain
|
||||
{
|
||||
/**
|
||||
* 查询航线数据列表
|
||||
*
|
||||
* @param airlineData 航线数据
|
||||
* @return 航线数据集合
|
||||
*/
|
||||
List<AirlineData> selectAirlineDataList(AirlineData airlineData);
|
||||
|
||||
/**
|
||||
* 根据ID查询航线数据
|
||||
*
|
||||
* @param id 主键ID
|
||||
* @return 航线数据
|
||||
*/
|
||||
AirlineData selectAirlineDataById(Long id);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.ruoyi.airline.domain.api;
|
||||
|
||||
import com.ruoyi.airline.domain.model.AirlineFile;
|
||||
import com.ruoyi.airline.service.dto.AirlineFileDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线文件领域接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public interface IAirlineFileDomain {
|
||||
|
||||
|
||||
List<AirlineFile> selectFileListByIds(List<Long> ids);
|
||||
|
||||
Long save(AirlineFile model);
|
||||
|
||||
List<AirlineFile> selectFileNameLike(String name);
|
||||
|
||||
List<AirlineFile> selectFileNameLikeByGroupId(String name, Long groupId);
|
||||
|
||||
Long update(AirlineFile model);
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package com.ruoyi.airline.domain.api;
|
||||
|
||||
import com.ruoyi.airline.domain.model.AirlineFile;
|
||||
import com.ruoyi.airline.domain.model.AirlineFileGroup;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线分组
|
||||
*
|
||||
* @author 拓恒
|
||||
*/
|
||||
public interface IAirlineFileGroupDomain {
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
int deletegroup(AirlineFileGroup model);
|
||||
|
||||
|
||||
/**
|
||||
* 检查当前用户下分组名称是否唯一
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
boolean checkgroupNameUnique(AirlineFileGroup model);
|
||||
|
||||
int updateGroup(AirlineFileGroup model);
|
||||
|
||||
int insertGroup(AirlineFileGroup model);
|
||||
|
||||
List<AirlineFileGroup> selectGroupList(AirlineFileGroup model);
|
||||
|
||||
List<AirlineFile> selectAirlineListByUserId(AirlineFile model);
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
package com.ruoyi.airline.domain.api;
|
||||
|
||||
import com.ruoyi.airline.domain.model.AirlineFileGroupInfo;
|
||||
import com.ruoyi.airline.service.dto.AirlineFileGroupInfoDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线分组明细
|
||||
*
|
||||
* @author 拓恒
|
||||
*/
|
||||
public interface IAirlineFileGroupInfoDomain {
|
||||
|
||||
List<AirlineFileGroupInfo> selectGroupInfoListById(Long groupId);
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @param dto
|
||||
*/
|
||||
Long deleteGroupInfo(AirlineFileGroupInfo dto);
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.ruoyi.airline.domain.constant;
|
||||
|
||||
|
||||
public class FileTypeConstants {
|
||||
|
||||
/**
|
||||
* kmz 文件本质上是zip文件
|
||||
*/
|
||||
public static final String KMZ = "zip";
|
||||
|
||||
/**
|
||||
* kml 文件
|
||||
*/
|
||||
public static final String KML = "kml";
|
||||
|
||||
|
||||
/**
|
||||
* wpml 文件
|
||||
*/
|
||||
public static final String WPML = "wpml";
|
||||
|
||||
|
||||
/**
|
||||
* 航线导入支持的文件类型
|
||||
*/
|
||||
public static final String ROUTE_SUPPORT_TYPE = "kml,zip";
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 航线数据Domain转换类
|
||||
* 用于Domain模型和Mapper实体之间的转换
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineDataDomainConvert extends BaseConvert<AirlineDataEntity, AirlineData>
|
||||
{
|
||||
private static final AirlineDataDomainConvert INSTANCE = new AirlineDataDomainConvert();
|
||||
|
||||
private AirlineDataDomainConvert() {
|
||||
super(AirlineDataEntity.class, AirlineData.class);
|
||||
}
|
||||
|
||||
public static AirlineData from(AirlineDataEntity entity)
|
||||
{
|
||||
return INSTANCE.innerFrom(entity);
|
||||
}
|
||||
|
||||
public static AirlineDataEntity to(AirlineData model)
|
||||
{
|
||||
return INSTANCE.innerTo(model);
|
||||
}
|
||||
|
||||
public static List<AirlineData> fromList(List<AirlineDataEntity> entityList)
|
||||
{
|
||||
return INSTANCE.innerFromList(entityList);
|
||||
}
|
||||
|
||||
public static List<AirlineDataEntity> toList(List<AirlineData> modelList)
|
||||
{
|
||||
return INSTANCE.innerToList(modelList);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 航线文件Domain转换类
|
||||
* 用于Domain模型和Mapper实体之间的转换
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineFileDomainConvert extends BaseConvert<AirlineFileEntity, AirlineFile>
|
||||
{
|
||||
private static final AirlineFileDomainConvert INSTANCE = new AirlineFileDomainConvert();
|
||||
|
||||
private AirlineFileDomainConvert() {
|
||||
super(AirlineFileEntity.class, AirlineFile.class);
|
||||
}
|
||||
|
||||
public static AirlineFile from(AirlineFileEntity entity)
|
||||
{
|
||||
return INSTANCE.innerFrom(entity);
|
||||
}
|
||||
|
||||
public static AirlineFileEntity to(AirlineFile model)
|
||||
{
|
||||
return INSTANCE.innerTo(model);
|
||||
}
|
||||
|
||||
public static List<AirlineFile> fromList(List<AirlineFileEntity> entityList)
|
||||
{
|
||||
return INSTANCE.innerFromList(entityList);
|
||||
}
|
||||
|
||||
public static List<AirlineFileEntity> toList(List<AirlineFile> modelList)
|
||||
{
|
||||
return INSTANCE.innerToList(modelList);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 航线文件分组Domain转换类
|
||||
* 用于Domain模型和Mapper实体之间的转换
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineFileGroupDomainConvert extends BaseConvert<AirlineFileGroupEntity, AirlineFileGroup>
|
||||
{
|
||||
private static final AirlineFileGroupDomainConvert INSTANCE = new AirlineFileGroupDomainConvert();
|
||||
|
||||
private AirlineFileGroupDomainConvert() {
|
||||
super(AirlineFileGroupEntity.class, AirlineFileGroup.class);
|
||||
}
|
||||
|
||||
public static AirlineFileGroup from(AirlineFileGroupEntity entity)
|
||||
{
|
||||
return INSTANCE.innerFrom(entity);
|
||||
}
|
||||
|
||||
public static AirlineFileGroupEntity to(AirlineFileGroup model)
|
||||
{
|
||||
return INSTANCE.innerTo(model);
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroup> fromList(List<AirlineFileGroupEntity> entityList)
|
||||
{
|
||||
return INSTANCE.innerFromList(entityList);
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroupEntity> toList(List<AirlineFileGroup> modelList)
|
||||
{
|
||||
return INSTANCE.innerToList(modelList);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 航线文件Domain转换类
|
||||
* 用于Domain模型和Mapper实体之间的转换
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineFileGroupInfoDomainConvert extends BaseConvert<AirlineFileGroupInfoEntity, AirlineFileGroupInfo>
|
||||
{
|
||||
private static final AirlineFileGroupInfoDomainConvert INSTANCE = new AirlineFileGroupInfoDomainConvert();
|
||||
|
||||
private AirlineFileGroupInfoDomainConvert() {
|
||||
super(AirlineFileGroupInfoEntity.class, AirlineFileGroupInfo.class);
|
||||
}
|
||||
|
||||
public static AirlineFileGroupInfo from(AirlineFileGroupInfoEntity entity)
|
||||
{
|
||||
return INSTANCE.innerFrom(entity);
|
||||
}
|
||||
|
||||
public static AirlineFileGroupInfoEntity to(AirlineFileGroupInfo model)
|
||||
{
|
||||
return INSTANCE.innerTo(model);
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroupInfo> fromList(List<AirlineFileGroupInfoEntity> entityList)
|
||||
{
|
||||
return INSTANCE.innerFromList(entityList);
|
||||
}
|
||||
|
||||
public static List<AirlineFileGroupInfoEntity> toList(List<AirlineFileGroupInfo> modelList)
|
||||
{
|
||||
return INSTANCE.innerToList(modelList);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package com.ruoyi.airline.domain.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Author: 吴彬
|
||||
* @CreateTime: 2023-06-29 15:24
|
||||
* @Description: 航线文件类型枚举
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public enum AirlineFileTypeEnum {
|
||||
|
||||
NORMAL(1,"普通航线"),
|
||||
|
||||
POINT(2,"指点"),
|
||||
|
||||
PLANE(3,"指面"),
|
||||
|
||||
;
|
||||
|
||||
AirlineFileTypeEnum(int code, String description){
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
@Getter
|
||||
private int code;
|
||||
|
||||
@Getter
|
||||
private String description;
|
||||
|
||||
}
|
||||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package com.ruoyi.airline.domain.impl;
|
||||
|
||||
import com.ruoyi.airline.domain.api.IAirlineDataDomain;
|
||||
import com.ruoyi.airline.domain.model.AirlineData;
|
||||
import com.ruoyi.airline.mapper.AirlineDataMapper;
|
||||
import com.ruoyi.airline.mapper.entity.AirlineDataEntity;
|
||||
import com.ruoyi.airline.domain.convert.AirlineDataDomainConvert;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线数据Domain实现类
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
@Component
|
||||
public class AirlineDataDomainImpl implements IAirlineDataDomain
|
||||
{
|
||||
@Autowired
|
||||
private AirlineDataMapper airlineDataMapper;
|
||||
|
||||
/**
|
||||
* 查询航线数据列表
|
||||
*
|
||||
* @param airlineData 航线数据
|
||||
* @return 航线数据集合
|
||||
*/
|
||||
@Override
|
||||
public List<AirlineData> selectAirlineDataList(AirlineData airlineData)
|
||||
{
|
||||
AirlineDataEntity entity = AirlineDataDomainConvert.to(airlineData);
|
||||
List<AirlineDataEntity> entityList = airlineDataMapper.selectAirlineDataList(entity);
|
||||
return AirlineDataDomainConvert.fromList(entityList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询航线数据
|
||||
*
|
||||
* @param id 主键ID
|
||||
* @return 航线数据
|
||||
*/
|
||||
@Override
|
||||
public AirlineData selectAirlineDataById(Long id)
|
||||
{
|
||||
AirlineDataEntity entity = airlineDataMapper.selectAirlineDataById(id);
|
||||
return AirlineDataDomainConvert.from(entity);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package com.ruoyi.airline.domain.impl;
|
||||
|
||||
import com.ruoyi.airline.domain.api.IAirlineFileDomain;
|
||||
import com.ruoyi.airline.domain.convert.AirlineFileDomainConvert;
|
||||
import com.ruoyi.airline.domain.model.AirlineFile;
|
||||
import com.ruoyi.airline.mapper.AirlineFileMapper;
|
||||
import com.ruoyi.airline.mapper.entity.AirlineFileEntity;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线文件领域实现类
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
@Component
|
||||
public class AirlineFileDomainImpl implements IAirlineFileDomain {
|
||||
|
||||
@Autowired
|
||||
private AirlineFileMapper airlineFileMapper;
|
||||
|
||||
@Override
|
||||
public List<AirlineFile> selectFileListByIds(List<Long> ids) {
|
||||
return AirlineFileDomainConvert.fromList(airlineFileMapper.selectFileListByIds(ids));
|
||||
}
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
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;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线分组
|
||||
*
|
||||
* @author 拓恒
|
||||
*/
|
||||
@Component
|
||||
public class AirlineFileGroupDomainImpl implements IAirlineFileGroupDomain {
|
||||
|
||||
@Autowired
|
||||
private AirlineFileGroupMapper airlineFileGroupMapper;
|
||||
|
||||
@Override
|
||||
public int deletegroup(AirlineFileGroup model) {
|
||||
model.setDelFlag(1L);
|
||||
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
|
||||
return airlineFileGroupMapper.deletegroup(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkgroupNameUnique(AirlineFileGroup model) {
|
||||
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
|
||||
return airlineFileGroupMapper.checkgroupNameUnique(entity) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateGroup(AirlineFileGroup model) {
|
||||
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
|
||||
return airlineFileGroupMapper.updateGroup(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertGroup(AirlineFileGroup model) {
|
||||
AirlineFileGroupEntity entity = AirlineFileGroupDomainConvert.to(model);
|
||||
return airlineFileGroupMapper.insertGroup(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AirlineFileGroup> selectGroupList(AirlineFileGroup model) {
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
package com.ruoyi.airline.domain.impl;
|
||||
|
||||
import com.ruoyi.airline.domain.api.IAirlineFileGroupInfoDomain;
|
||||
import com.ruoyi.airline.domain.convert.AirlineFileGroupInfoDomainConvert;
|
||||
import com.ruoyi.airline.domain.model.AirlineFileGroupInfo;
|
||||
import com.ruoyi.airline.mapper.AirlineFileGroupInfoMapper;
|
||||
import com.ruoyi.airline.mapper.entity.AirlineFileGroupInfoEntity;
|
||||
import com.ruoyi.airline.service.dto.AirlineFileGroupInfoDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线分组明细
|
||||
*
|
||||
* @author 拓恒
|
||||
*/
|
||||
@Component
|
||||
public class AirlineFileGroupInfoDomainImpl implements IAirlineFileGroupInfoDomain {
|
||||
|
||||
@Autowired
|
||||
private AirlineFileGroupInfoMapper airlineFileGroupInfoMapper;
|
||||
|
||||
@Override
|
||||
public List<AirlineFileGroupInfo> selectGroupInfoListById(Long groupId) {
|
||||
AirlineFileGroupInfo dto = new AirlineFileGroupInfo();
|
||||
dto.setGroupId(groupId);
|
||||
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.to(dto);
|
||||
List<AirlineFileGroupInfoEntity> entities = airlineFileGroupInfoMapper.selectGroupList(Entity);
|
||||
return AirlineFileGroupInfoDomainConvert.fromList(entities);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long deleteGroupInfo(AirlineFileGroupInfo model) {
|
||||
model.setDelFlag(1L);
|
||||
AirlineFileGroupInfoEntity Entity = AirlineFileGroupInfoDomainConvert.to(model);
|
||||
return airlineFileGroupInfoMapper.deleteGroupInfo(Entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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,7。。12分别是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();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
package com.ruoyi.airline.domain.model;
|
||||
|
||||
/**
|
||||
* 航线数据模型
|
||||
* Domain 层模型,用于业务逻辑处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
public class AirlineData
|
||||
{
|
||||
/** 主键ID */
|
||||
private Long id;
|
||||
|
||||
/** 航班号 */
|
||||
private String flightNumber;
|
||||
|
||||
/** 起飞城市 */
|
||||
private String departureCity;
|
||||
|
||||
/** 到达城市 */
|
||||
private String arrivalCity;
|
||||
|
||||
/** 空气速度 */
|
||||
private Double airspeed;
|
||||
|
||||
/** 速度 */
|
||||
private Double velocity;
|
||||
|
||||
/** 垂直速度 */
|
||||
private Double vspeed;
|
||||
|
||||
/** 水平速度 */
|
||||
private Double hspeed;
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFlightNumber()
|
||||
{
|
||||
return flightNumber;
|
||||
}
|
||||
|
||||
public void setFlightNumber(String flightNumber)
|
||||
{
|
||||
this.flightNumber = flightNumber;
|
||||
}
|
||||
|
||||
public String getDepartureCity()
|
||||
{
|
||||
return departureCity;
|
||||
}
|
||||
|
||||
public void setDepartureCity(String departureCity)
|
||||
{
|
||||
this.departureCity = departureCity;
|
||||
}
|
||||
|
||||
public String getArrivalCity()
|
||||
{
|
||||
return arrivalCity;
|
||||
}
|
||||
|
||||
public void setArrivalCity(String arrivalCity)
|
||||
{
|
||||
this.arrivalCity = arrivalCity;
|
||||
}
|
||||
|
||||
public Double getAirspeed()
|
||||
{
|
||||
return airspeed;
|
||||
}
|
||||
|
||||
public void setAirspeed(Double airspeed)
|
||||
{
|
||||
this.airspeed = airspeed;
|
||||
}
|
||||
|
||||
public Double getVelocity()
|
||||
{
|
||||
return velocity;
|
||||
}
|
||||
|
||||
public void setVelocity(Double velocity)
|
||||
{
|
||||
this.velocity = velocity;
|
||||
}
|
||||
|
||||
public Double getVspeed()
|
||||
{
|
||||
return vspeed;
|
||||
}
|
||||
|
||||
public void setVspeed(Double vspeed)
|
||||
{
|
||||
this.vspeed = vspeed;
|
||||
}
|
||||
|
||||
public Double getHspeed()
|
||||
{
|
||||
return hspeed;
|
||||
}
|
||||
|
||||
public void setHspeed(Double hspeed)
|
||||
{
|
||||
this.hspeed = hspeed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "AirlineData{" +
|
||||
"id=" + id +
|
||||
", flightNumber='" + flightNumber + '\'' +
|
||||
", departureCity='" + departureCity + '\'' +
|
||||
", arrivalCity='" + arrivalCity + '\'' +
|
||||
", airspeed=" + airspeed +
|
||||
", velocity=" + velocity +
|
||||
", vspeed=" + vspeed +
|
||||
", hspeed=" + hspeed +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
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;
|
||||
|
||||
/**
|
||||
* 航线文件领域模型
|
||||
* Domain 层模型,用于业务逻辑处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-17
|
||||
*/
|
||||
@Data
|
||||
public class AirlineFile extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
/**
|
||||
* 航线名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
/**
|
||||
* 飞行器厂商
|
||||
*/
|
||||
private String airVendor;
|
||||
|
||||
/**
|
||||
* 飞行器类型
|
||||
*/
|
||||
private String airType;
|
||||
/**
|
||||
* 文件地址
|
||||
*/
|
||||
private String fileUrl;
|
||||
|
||||
/**
|
||||
* 航线类型:1,航点航线;2,指点航线;3,指面航线
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 文件备注
|
||||
*/
|
||||
private String note;
|
||||
|
||||
/**
|
||||
* 航线距离
|
||||
*/
|
||||
private Double distance;
|
||||
|
||||
/**
|
||||
* 航线点列表
|
||||
*/
|
||||
private List<AirLinePoint> linePointDtoList;
|
||||
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
private String source;
|
||||
|
||||
/**
|
||||
* 1 启用 0 停用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 航线文件对应的 MD5指纹
|
||||
*/
|
||||
private String fileMd5;
|
||||
|
||||
/**
|
||||
* 爬升模式
|
||||
*/
|
||||
private String climbMode;
|
||||
|
||||
/**
|
||||
* 海拔高度
|
||||
*/
|
||||
private Double altitude;
|
||||
|
||||
/**
|
||||
* 飞行速度
|
||||
*/
|
||||
private Double flightSpeed;
|
||||
|
||||
/**
|
||||
* 全局航点高度
|
||||
*/
|
||||
private Double globalWaypointHeight;
|
||||
|
||||
/**
|
||||
* 拍照模式
|
||||
*/
|
||||
private String photoMode;
|
||||
|
||||
/**
|
||||
* 大疆航线对应的oss地址(可能存kmz也可能存waypoint,要看fileUrl存的是啥,这个字段存反的)
|
||||
*/
|
||||
private String djiFileUrl;
|
||||
|
||||
/**
|
||||
* kmz航线的全局高度
|
||||
*/
|
||||
private Integer djiRthAltitude;
|
||||
|
||||
/**
|
||||
* 航线转弯类型 1-直线,2-协调转弯
|
||||
*/
|
||||
private Integer turnRadius;
|
||||
|
||||
/**
|
||||
* 是否需要自动拍照
|
||||
*/
|
||||
private Integer autoTakePhoto;
|
||||
|
||||
/**
|
||||
* 自动拍照间隔时间(秒)
|
||||
*/
|
||||
private Integer autoTakePhotoInterval;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 用户ID,分组自带用户归属。 后期权限都是基于用户ID进行
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AirlineFile{" +
|
||||
"id=" + id +
|
||||
", fileName='" + fileName + '\'' +
|
||||
", fileUrl='" + fileUrl + '\'' +
|
||||
", 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 +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
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 AirlineFileGroup extends ExBaseEntity {
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 航线数量
|
||||
*/
|
||||
private Integer airlineCount;
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("groupId", getGroupId())
|
||||
.append("groupName", getGroupName())
|
||||
.append("airlineCount", getAirlineCount())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
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 AirlineFileGroupInfo extends ExBaseEntity {
|
||||
/**
|
||||
* id,主键,用于order by 排序
|
||||
*/
|
||||
private Long id;
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 航线id
|
||||
*/
|
||||
private Long airlineId;
|
||||
|
||||
private AirlineFile airlineFile;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("groupId", getGroupId())
|
||||
.append("airlineId", getAirlineId())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
package com.ruoyi.airline.domain.model;
|
||||
|
||||
import com.ruoyi.airline.domain.model.kml.NewGeoPoint;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 航线文件
|
||||
*/
|
||||
@Data
|
||||
public class KmlParams {
|
||||
/**
|
||||
* 无人机类型 91
|
||||
*/
|
||||
private Integer droneType;
|
||||
|
||||
/**
|
||||
* 无人机子类型 1
|
||||
*/
|
||||
private Integer subDroneType;
|
||||
|
||||
/**
|
||||
* 相机枚举值 type 机场2为81
|
||||
*/
|
||||
private Integer payloadType;
|
||||
|
||||
/**
|
||||
* 相机枚举值 subtype 机场2为0
|
||||
*/
|
||||
private Integer payloadSubEnumType;
|
||||
|
||||
/**
|
||||
* 相机枚举值 gimbalindex 机场2为0
|
||||
*/
|
||||
private Integer payloadPosition;
|
||||
|
||||
/**
|
||||
* 航点执行高度
|
||||
*/
|
||||
private Integer executeHeight;
|
||||
|
||||
/**
|
||||
* 航点飞行速度
|
||||
*/
|
||||
private Integer autoFlightSpeed;
|
||||
|
||||
/**
|
||||
* 图片存储类型
|
||||
*/
|
||||
private String imageFormat;
|
||||
|
||||
/**
|
||||
* 机场经度
|
||||
*/
|
||||
private String airportLongitude;
|
||||
|
||||
/**
|
||||
* 机场纬度
|
||||
*/
|
||||
private String airportLatitude;
|
||||
|
||||
/**
|
||||
* 椭球高度 地表高度 可以先给默认值
|
||||
*/
|
||||
private String airportHeight;
|
||||
|
||||
/**
|
||||
* 航线航点
|
||||
*/
|
||||
private List<NewGeoPoint> pointList;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:action")
|
||||
public class KmlAction {
|
||||
|
||||
@XStreamAlias("wpml:actionId")
|
||||
private String actionId;
|
||||
|
||||
@XStreamAlias("wpml:actionActuatorFunc")
|
||||
private String actionActuatorFunc;
|
||||
|
||||
@XStreamAlias("wpml:actionActuatorFuncParam")
|
||||
private KmlActionActuatorFuncParam actionActuatorFuncParam;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:actionActuatorFuncParam")
|
||||
public class KmlActionActuatorFuncParam {
|
||||
|
||||
// takePhoto & startRecord & stopRecord
|
||||
|
||||
@XStreamAlias("wpml:payloadPositionIndex")
|
||||
private String payloadPositionIndex;
|
||||
|
||||
@XStreamAlias("wpml:fileSuffix")
|
||||
private String fileSuffix;
|
||||
|
||||
@XStreamAlias("wpml:payloadLensIndex")
|
||||
private String payloadLensIndex;
|
||||
|
||||
@XStreamAlias("wpml:useGlobalPayloadLensIndex")
|
||||
private String useGlobalPayloadLensIndex;
|
||||
|
||||
// focus
|
||||
|
||||
@XStreamAlias("wpml:isPointFocus")
|
||||
private String isPointFocus;
|
||||
|
||||
@XStreamAlias("wpml:focusX")
|
||||
private String focusX;
|
||||
|
||||
@XStreamAlias("wpml:focusY")
|
||||
private String focusY;
|
||||
|
||||
@XStreamAlias("wpml:focusRegionWidth")
|
||||
private String focusRegionWidth;
|
||||
|
||||
@XStreamAlias("wpml:focusRegionHeight")
|
||||
private String focusRegionHeight;
|
||||
|
||||
@XStreamAlias("wpml:isInfiniteFocus")
|
||||
private String isInfiniteFocus;
|
||||
|
||||
// zoom
|
||||
|
||||
@XStreamAlias("wpml:focalLength")
|
||||
private String focalLength;
|
||||
|
||||
// customDirName
|
||||
|
||||
@XStreamAlias("wpml:directoryName")
|
||||
private String directoryName;
|
||||
|
||||
// gimbalRotate & gimbalEvenlyRotate
|
||||
|
||||
@XStreamAlias("wpml:gimbalHeadingYawBase")
|
||||
private String gimbalHeadingYawBase;
|
||||
|
||||
@XStreamAlias("wpml:gimbalRotateMode")
|
||||
private String gimbalRotateMode;
|
||||
|
||||
@XStreamAlias("wpml:gimbalPitchRotateEnable")
|
||||
private String gimbalPitchRotateEnable;
|
||||
|
||||
@XStreamAlias("wpml:gimbalPitchRotateAngle")
|
||||
private String gimbalPitchRotateAngle;
|
||||
|
||||
@XStreamAlias("wpml:gimbalRollRotateEnable")
|
||||
private String gimbalRollRotateEnable;
|
||||
|
||||
@XStreamAlias("wpml:gimbalRollRotateAngle")
|
||||
private String gimbalRollRotateAngle;
|
||||
|
||||
@XStreamAlias("wpml:gimbalYawRotateEnable")
|
||||
private String gimbalYawRotateEnable;
|
||||
|
||||
@XStreamAlias("wpml:gimbalYawRotateAngle")
|
||||
private String gimbalYawRotateAngle;
|
||||
|
||||
@XStreamAlias("wpml:gimbalRotateTimeEnable")
|
||||
private String gimbalRotateTimeEnable;
|
||||
|
||||
@XStreamAlias("wpml:gimbalRotateTime")
|
||||
private String gimbalRotateTime;
|
||||
|
||||
// rotateYaw
|
||||
|
||||
@XStreamAlias("wpml:aircraftHeading")
|
||||
private String aircraftHeading;
|
||||
|
||||
@XStreamAlias("wpml:aircraftPathMode")
|
||||
private String aircraftPathMode;
|
||||
|
||||
// hover
|
||||
|
||||
@XStreamAlias("wpml:hoverTime")
|
||||
private String hoverTime;
|
||||
|
||||
// orientedShoot
|
||||
|
||||
@XStreamAlias("wpml:accurateFrameValid")
|
||||
private String accurateFrameValid;
|
||||
|
||||
@XStreamAlias("wpml:targetAngle")
|
||||
private String targetAngle;
|
||||
|
||||
@XStreamAlias("wpml:actionUUID")
|
||||
private String actionUUID;
|
||||
|
||||
@XStreamAlias("wpml:imageWidth")
|
||||
private String imageWidth;
|
||||
|
||||
@XStreamAlias("wpml:imageHeight")
|
||||
private String imageHeight;
|
||||
|
||||
@XStreamAlias("wpml:AFPos")
|
||||
private String AFPos;
|
||||
|
||||
@XStreamAlias("wpml:gimbalPort")
|
||||
private String gimbalPort;
|
||||
|
||||
@XStreamAlias("wpml:orientedCameraType")
|
||||
private String orientedCameraType;
|
||||
|
||||
@XStreamAlias("wpml:orientedFilePath")
|
||||
private String orientedFilePath;
|
||||
|
||||
@XStreamAlias("wpml:orientedFileMD5")
|
||||
private String orientedFileMD5;
|
||||
|
||||
@XStreamAlias("wpml:orientedFileSize")
|
||||
private String orientedFileSize;
|
||||
|
||||
@XStreamAlias("wpml:orientedFileSuffix")
|
||||
private String orientedFileSuffix;
|
||||
|
||||
@XStreamAlias("wpml:orientedCameraApertue")
|
||||
private String orientedCameraApertue;
|
||||
|
||||
@XStreamAlias("wpml:orientedCameraLuminance")
|
||||
private String orientedCameraLuminance;
|
||||
|
||||
@XStreamAlias("wpml:orientedCameraShutterTime")
|
||||
private String orientedCameraShutterTime;
|
||||
|
||||
@XStreamAlias("wpml:orientedCameraISO")
|
||||
private String orientedCameraISO;
|
||||
|
||||
@XStreamAlias("wpml:orientedPhotoMode")
|
||||
private String orientedPhotoMode;
|
||||
|
||||
// panoShot
|
||||
|
||||
@XStreamAlias("wpml:panoShotSubMode")
|
||||
private String panoShotSubMode;
|
||||
|
||||
// recordPointCloud
|
||||
|
||||
@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;
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:actionGroup")
|
||||
public class KmlActionGroup {
|
||||
|
||||
@XStreamAlias("wpml:actionGroupId")
|
||||
private String actionGroupId;
|
||||
|
||||
@XStreamAlias("wpml:actionGroupStartIndex")
|
||||
private String actionGroupStartIndex;
|
||||
|
||||
@XStreamAlias("wpml:actionGroupEndIndex")
|
||||
private String actionGroupEndIndex;
|
||||
|
||||
@XStreamAlias("wpml:actionGroupMode")
|
||||
private String actionGroupMode;
|
||||
|
||||
@XStreamAlias("wpml:actionTrigger")
|
||||
private KmlActionTrigger actionTrigger;
|
||||
|
||||
@XStreamAlias("wpml:action")
|
||||
private List<KmlAction> action;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:actionTrigger")
|
||||
public class KmlActionTrigger {
|
||||
|
||||
@XStreamAlias("wpml:actionTriggerType")
|
||||
private String actionTriggerType;
|
||||
|
||||
@XStreamAlias("wpml:actionTriggerParam")
|
||||
private String actionTriggerParam;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("Document")
|
||||
public class KmlDocument {
|
||||
|
||||
@XStreamAlias("wpml:author")
|
||||
private String author;
|
||||
|
||||
@XStreamAlias("wpml:createTime")
|
||||
private String createTime;
|
||||
|
||||
@XStreamAlias("wpml:updateTime")
|
||||
private String updateTime;
|
||||
|
||||
@XStreamAlias("wpml:missionConfig")
|
||||
private KmlMissionConfig kmlMissionConfig;
|
||||
|
||||
@XStreamAlias("Folder")
|
||||
private KmlFolder folder;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:droneInfo")
|
||||
public class KmlDroneInfo {
|
||||
|
||||
@XStreamAlias("wpml:droneEnumValue")
|
||||
private String droneEnumValue;
|
||||
|
||||
@XStreamAlias("wpml:droneSubEnumValue")
|
||||
private String droneSubEnumValue;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamImplicit;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 模板信息
|
||||
*/
|
||||
@Data
|
||||
@XStreamAlias("Folder")
|
||||
public class KmlFolder {
|
||||
|
||||
/**
|
||||
* 预定义模板类型 必填
|
||||
* waypoint:航点飞行
|
||||
* mapping2d:建图航拍
|
||||
* mapping3d:倾斜摄影
|
||||
* mappingStrip:航带飞行
|
||||
*/
|
||||
@XStreamAlias("wpml:templateType")
|
||||
private String templateType;
|
||||
|
||||
/**
|
||||
* 模板ID 必填
|
||||
* 0 0开始
|
||||
*/
|
||||
@XStreamAlias("wpml:templateId")
|
||||
private String templateId;
|
||||
|
||||
// 以下为 wpml 文件使用
|
||||
/**
|
||||
* 执行高度模式
|
||||
* WGS84:椭球高模式
|
||||
* relativeToStartPoint:相对起飞点高度模式
|
||||
* realTimeFollowSurface: 使用实时仿地模式,仅支持M3E/M3T/M3M
|
||||
*/
|
||||
@XStreamAlias("wpml:executeHeightMode")
|
||||
private String executeHeightMode;
|
||||
|
||||
/**
|
||||
* 航线ID 0开始
|
||||
*/
|
||||
@XStreamAlias("wpml:waylineId")
|
||||
private String waylineId;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@XStreamAlias("wpml:distance")
|
||||
private String distance;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@XStreamAlias("wpml:duration")
|
||||
private String duration;
|
||||
|
||||
|
||||
|
||||
|
||||
@XStreamAlias("wpml:waylineCoordinateSysParam")
|
||||
private KmlWayLineCoordinateSysParam waylineCoordinateSysParam;
|
||||
|
||||
/**
|
||||
* 全局航线飞行速度 m/s 必填
|
||||
*/
|
||||
@XStreamAlias("wpml:autoFlightSpeed")
|
||||
private String autoFlightSpeed;
|
||||
|
||||
/**
|
||||
* 全局航线高度(相对起飞点高度)
|
||||
*/
|
||||
@XStreamAlias("wpml:globalHeight")
|
||||
private String globalHeight;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@XStreamAlias("wpml:caliFlightEnable")
|
||||
private String caliFlightEnable;
|
||||
|
||||
/**
|
||||
* 云台俯仰角控制模式
|
||||
* manual:手动控制。飞行器从一个航点飞向下一个航点的过程中,支持用户手动控制云台的俯仰角度。若无用户控制,则保持飞离航点时的云台俯仰角度。
|
||||
* usePointSetting:依照每个航点设置。飞行器从一个航点飞向下一个航点的过程中,云台俯仰角均匀过渡至下一个航点的俯仰角。
|
||||
*/
|
||||
@XStreamAlias("wpml:gimbalPitchMode")
|
||||
private String gimbalPitchMode;
|
||||
|
||||
|
||||
//以下为航点飞行模板元素
|
||||
/**
|
||||
* 全局偏航角模式参数
|
||||
*/
|
||||
@XStreamAlias("wpml:globalWaypointHeadingParam")
|
||||
private KmlGlobalWaypointHeadingParam globalWaypointHeadingParam;
|
||||
|
||||
/**
|
||||
* 全局航点类型(全局航点转弯模式)
|
||||
* coordinateTurn:协调转弯,不过点,提前转弯
|
||||
* toPointAndStopWithDiscontinuityCurvature:直线飞行,飞行器到点停
|
||||
* toPointAndStopWithContinuityCurvature:曲线飞行,飞行器到点停
|
||||
* toPointAndPassWithContinuityCurvature:曲线飞行,飞行器过点不停
|
||||
*/
|
||||
@XStreamAlias("wpml:globalWaypointTurnMode")
|
||||
private String globalWaypointTurnMode;
|
||||
|
||||
/**
|
||||
* 全局航段轨迹是否尽量贴合直线
|
||||
* 0:航段轨迹全程为曲线
|
||||
* 1:航段轨迹尽量贴合两点连线
|
||||
*/
|
||||
@XStreamAlias("wpml:globalUseStraightLine")
|
||||
private String globalUseStraightLine;
|
||||
|
||||
/**
|
||||
* 航点信息(包括航点经纬度和高度等)
|
||||
*/
|
||||
@XStreamImplicit(itemFieldName = "Placemark")
|
||||
private List<KmlPlacemark> placemarkList;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* 航线初始动作
|
||||
* *注:该元素用于规划一系列初始动作,在航线开始前执行。航线中断恢复时,先执行初始动作,再执行航点动作
|
||||
*/
|
||||
@XStreamAlias("wpml:startActionGroup")
|
||||
private KmlActionGroup actionGroup;
|
||||
|
||||
|
||||
/**
|
||||
* 负载数据
|
||||
*/
|
||||
@XStreamAlias("wpml:payloadParam")
|
||||
private KmlPayloadParam payloadParam;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 全局偏航角模式参数
|
||||
*/
|
||||
@Data
|
||||
@XStreamAlias("wpml:globalWaypointHeadingParam")
|
||||
public class KmlGlobalWaypointHeadingParam {
|
||||
|
||||
/**
|
||||
* fixed:固定为用户设置的偏航角
|
||||
* followWayline:偏航角跟随航线
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingMode")
|
||||
private String waypointHeadingMode;
|
||||
|
||||
/**
|
||||
* 不知道啥 默认0
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingAngle")
|
||||
private String waypointHeadingAngle;
|
||||
|
||||
/**
|
||||
* 不知道啥 默认0.000000,0.000000,0.000000
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointPoiPoint")
|
||||
private String waypointPoiPoint;
|
||||
|
||||
/**
|
||||
* 不知道啥 followBadArc
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingPathMode")
|
||||
private String waypointHeadingPathMode;
|
||||
|
||||
/**
|
||||
* 不知道啥 默认0
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingPoiIndex")
|
||||
private String waypointHeadingPoiIndex;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("kml")
|
||||
public class KmlInfo {
|
||||
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("xmlns")
|
||||
private String xmlns = "http://www.opengis.net/kml/2.2";
|
||||
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("xmlns:wpml")
|
||||
private String wpml = "http://www.dji.com/wpmz/1.0.4";
|
||||
|
||||
@XStreamAlias("Document")
|
||||
private KmlDocument document;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:missionConfig")
|
||||
public class KmlMissionConfig {
|
||||
|
||||
@XStreamAlias("wpml:flyToWaylineMode")
|
||||
private String flyToWayLineMode;
|
||||
|
||||
@XStreamAlias("wpml:finishAction")
|
||||
private String finishAction;
|
||||
|
||||
@XStreamAlias("wpml:exitOnRCLost")
|
||||
private String exitOnRCLost;
|
||||
|
||||
@XStreamAlias("wpml:executeRCLostAction")
|
||||
private String executeRCLostAction;
|
||||
|
||||
@XStreamAlias("wpml:takeOffSecurityHeight")
|
||||
private String takeOffSecurityHeight;
|
||||
|
||||
@XStreamAlias("wpml:globalTransitionalSpeed")
|
||||
private String globalTransitionalSpeed;
|
||||
|
||||
@XStreamAlias("wpml:globalRTHHeight")
|
||||
private String globalRTHHeight;
|
||||
|
||||
@XStreamAlias("wpml:takeOffRefPoint")
|
||||
private String takeOffRefPoint;
|
||||
|
||||
@XStreamAlias("wpml:takeOffRefPointAGLHeight")
|
||||
private String takeOffRefPointAGLHeight;
|
||||
|
||||
@XStreamAlias("wpml:droneInfo")
|
||||
private KmlDroneInfo droneInfo;
|
||||
|
||||
@XStreamAlias("wpml:payloadInfo")
|
||||
private KmlPayloadInfo payloadInfo;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 负载机型信息 type-subtype-gimbalindex
|
||||
*/
|
||||
@Data
|
||||
@XStreamAlias("wpml:payloadInfo")
|
||||
public class KmlPayloadInfo {
|
||||
|
||||
/**
|
||||
* 相机枚举值 type
|
||||
*/
|
||||
@XStreamAlias("wpml:payloadEnumValue")
|
||||
private String payloadEnumValue;
|
||||
|
||||
/**
|
||||
* 相机枚举值 subtype
|
||||
*/
|
||||
@XStreamAlias("wpml:payloadSubEnumValue")
|
||||
private String payloadSubEnumValue;
|
||||
|
||||
/**
|
||||
* 相机枚举值 gimbalindex
|
||||
*/
|
||||
@XStreamAlias("wpml:payloadPositionIndex")
|
||||
private String payloadPositionIndex;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 负载设置
|
||||
*/
|
||||
@Data
|
||||
@XStreamAlias("wpml:payloadParam")
|
||||
public class KmlPayloadParam {
|
||||
|
||||
@XStreamAlias("wpml:payloadPositionIndex")
|
||||
private String payloadPositionIndex;
|
||||
|
||||
@XStreamAlias("wpml:focusMode")
|
||||
private String focusMode;
|
||||
|
||||
@XStreamAlias("wpml:meteringMode")
|
||||
private String meteringMode;
|
||||
|
||||
@XStreamAlias("wpml:dewarpingEnable")
|
||||
private String dewarpingEnable;
|
||||
|
||||
@XStreamAlias("wpml:returnMode")
|
||||
private String returnMode;
|
||||
|
||||
@XStreamAlias("wpml:samplingRate")
|
||||
private String samplingRate;
|
||||
|
||||
@XStreamAlias("wpml:scanningMode")
|
||||
private String scanningMode;
|
||||
|
||||
@XStreamAlias("wpml:modelColoringEnable")
|
||||
private String modelColoringEnable;
|
||||
|
||||
@XStreamAlias("wpml:imageFormat")
|
||||
private String imageFormat;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("Placemark")
|
||||
public class KmlPlacemark {
|
||||
|
||||
|
||||
/**
|
||||
* 航点经纬度<经度,纬度>
|
||||
*/
|
||||
@XStreamAlias("Point")
|
||||
private KmlPoint kmlPoint;
|
||||
|
||||
/**
|
||||
* 航点序号
|
||||
* 注:在一条航线内该ID唯一。该序号必须从0开始单调连续递增。
|
||||
*/
|
||||
@XStreamAlias("wpml:index")
|
||||
private String index;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@XStreamAlias("wpml:executeHeight")
|
||||
private String executeHeight;
|
||||
|
||||
|
||||
// 下面 wpml 文件使用
|
||||
/**
|
||||
* 航点高度(WGS84椭球高度)
|
||||
*/
|
||||
@XStreamAlias("wpml:ellipsoidHeight")
|
||||
private String ellipsoidHeight;
|
||||
|
||||
/**
|
||||
* 航点高度(EGM96海拔高度/相对起飞点高度/AGL相对地面高度
|
||||
*/
|
||||
@XStreamAlias("wpml:height")
|
||||
private String height;
|
||||
|
||||
/**
|
||||
* 航点飞行速度 1,15 默认10
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointSpeed")
|
||||
private String waypointSpeed;
|
||||
|
||||
/**
|
||||
* 偏航角模式参数
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingParam")
|
||||
private KmlWaypointHeadingParam waypointHeadingParam;
|
||||
|
||||
/**
|
||||
* 航点类型(航点转弯模式)
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointTurnParam")
|
||||
private KmlWaypointTurnParam waypointTurnParam;
|
||||
|
||||
/**
|
||||
* 是否使用全局高度 0, 1
|
||||
*/
|
||||
@XStreamAlias("wpml:useGlobalHeight")
|
||||
private String useGlobalHeight;
|
||||
|
||||
/**
|
||||
* 是否使用全局飞行速度 注:此处的全局飞行速度即“wpml:autoFlightSpeed”
|
||||
* 0:不使用全局设置
|
||||
* 1:使用全局设置
|
||||
*/
|
||||
@XStreamAlias("wpml:useGlobalSpeed")
|
||||
private String useGlobalSpeed;
|
||||
|
||||
/**
|
||||
* 是否使用全局偏航角模式参数 默认1
|
||||
* 0:不使用全局设置
|
||||
* 1:使用全局设置
|
||||
*/
|
||||
@XStreamAlias("wpml:useGlobalHeadingParam")
|
||||
private String useGlobalHeadingParam;
|
||||
|
||||
/**
|
||||
* 是否使用全局偏航角模式参数
|
||||
* 0:不使用全局设置
|
||||
* 1:使用全局设置
|
||||
*/
|
||||
@XStreamAlias("wpml:useGlobalTurnParam")
|
||||
private String useGlobalTurnParam;
|
||||
|
||||
/**
|
||||
* 该航段是否贴合直线
|
||||
* 0:航段轨迹全程为曲线
|
||||
* 1:航段轨迹尽量贴合两点连线
|
||||
* 注:当且仅当“wpml:waypointTurnParam”内"waypointTurnMode"被设置为“toPointAndStopWithContinuityCurvature”或“toPointAndPassWithContinuityCurvature”时必需。
|
||||
* 如果此元素被设置,则局部定义会覆盖全局定义。
|
||||
*/
|
||||
@XStreamAlias("wpml:useStraightLine")
|
||||
private String useStraightLine;
|
||||
|
||||
|
||||
/**
|
||||
* 航点云台俯仰角
|
||||
* 对应机型云台可转动范围
|
||||
*/
|
||||
@XStreamAlias("wpml:gimbalPitchAngle")
|
||||
private String gimbalPitchAngle;
|
||||
|
||||
/**
|
||||
* 动作集合
|
||||
*/
|
||||
@XStreamAlias("wpml:actionGroup")
|
||||
private KmlActionGroup actionGroup;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointGimbalHeadingParam")
|
||||
private KmlWaypointGimbalHeadingParam waypointGimbalHeadingParam;
|
||||
|
||||
/**
|
||||
* 是否危险点
|
||||
* 0:正常点,1:危险点
|
||||
*/
|
||||
@XStreamAlias("wpml:isRisky")
|
||||
private String isRisky;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointWorkType")
|
||||
private String waypointWorkType;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
|
||||
//@Data
|
||||
@XStreamAlias("Point")
|
||||
public class KmlPoint {
|
||||
|
||||
public String getCoordinates() {
|
||||
return coordinates;
|
||||
}
|
||||
|
||||
public void setCoordinates(String coordinates) {
|
||||
String replace = coordinates.replace("\n", "");
|
||||
this.coordinates = replace;
|
||||
}
|
||||
|
||||
@XStreamAlias("coordinates")
|
||||
private String coordinates;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 坐标系参数
|
||||
*/
|
||||
@Data
|
||||
@XStreamAlias("wpml:waylineCoordinateSysParam")
|
||||
public class KmlWayLineCoordinateSysParam {
|
||||
|
||||
@XStreamAlias("wpml:coordinateMode")
|
||||
private String coordinateMode;
|
||||
|
||||
@XStreamAlias("wpml:heightMode")
|
||||
private String heightMode;
|
||||
|
||||
@XStreamAlias("wpml:positioningType")
|
||||
private String positioningType;
|
||||
|
||||
@XStreamAlias("wpml:globalShootHeight")
|
||||
private String globalShootHeight;
|
||||
|
||||
@XStreamAlias("wpml:surfaceFollowModeEnable")
|
||||
private String surfaceFollowModeEnable;
|
||||
|
||||
@XStreamAlias("wpml:surfaceRelativeHeight")
|
||||
private String surfaceRelativeHeight;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:waypointGimbalHeadingParam")
|
||||
public class KmlWaypointGimbalHeadingParam {
|
||||
|
||||
@XStreamAlias("wpml:waypointGimbalPitchAngle")
|
||||
private String waypointGimbalPitchAngle;
|
||||
|
||||
@XStreamAlias("wpml:waypointGimbalYawAngle")
|
||||
private String waypointGimbalYawAngle;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:waypointHeadingParam")
|
||||
public class KmlWaypointHeadingParam {
|
||||
|
||||
/**
|
||||
* 不知道是啥 默认followWayline
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingMode")
|
||||
private String waypointHeadingMode;
|
||||
|
||||
/**
|
||||
* 不知道是啥 默认0
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingAngle")
|
||||
private String waypointHeadingAngle;
|
||||
|
||||
/**
|
||||
* 不知道是啥 默认 0.000000,0.000000,0.000000
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointPoiPoint")
|
||||
private String waypointPoiPoint;
|
||||
|
||||
/**
|
||||
* 不知道是啥 默认0
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingAngleEnable")
|
||||
private String waypointHeadingAngleEnable;
|
||||
|
||||
/**
|
||||
* 不知道是啥 默认 followBadArc
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingPathMode")
|
||||
private String waypointHeadingPathMode;
|
||||
|
||||
/**
|
||||
* 不知道是啥 默认 followBadArc 默认0
|
||||
*/
|
||||
@XStreamAlias("wpml:waypointHeadingPoiIndex")
|
||||
private String waypointHeadingPoiIndex;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@XStreamAlias("wpml:waypointTurnParam")
|
||||
public class KmlWaypointTurnParam {
|
||||
|
||||
@XStreamAlias("wpml:waypointTurnMode")
|
||||
private String waypointTurnMode;
|
||||
|
||||
@XStreamAlias("wpml:waypointTurnDampingDist")
|
||||
private String waypointTurnDampingDist;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 一个点
|
||||
*/
|
||||
@Data
|
||||
public class NewGeoPoint implements Serializable {
|
||||
|
||||
/**
|
||||
* 序号
|
||||
*/
|
||||
private int id;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private double longitude;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private double latitude;
|
||||
|
||||
/**
|
||||
* 航点动作
|
||||
*/
|
||||
private List<PointActionReq> actions ;
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class PointActionReq implements Serializable {
|
||||
/**
|
||||
* 动作编号
|
||||
*/
|
||||
private Integer actionIndex;
|
||||
|
||||
/**
|
||||
* 飞行器悬停等待时间
|
||||
*/
|
||||
private Integer hoverTime;
|
||||
|
||||
/**
|
||||
* 飞行器目标偏航角
|
||||
*/
|
||||
private Double aircraftHeading;
|
||||
|
||||
/**
|
||||
* 是否使用全局拍照模式 0:不使用 1:使用
|
||||
*/
|
||||
private Integer useGlobalImageFormat;
|
||||
|
||||
/**
|
||||
* 拍照模式(字典)
|
||||
*/
|
||||
private String imageFormat;
|
||||
|
||||
/**
|
||||
* 云台偏航角
|
||||
*/
|
||||
private Double gimbalYawRotateAngle;
|
||||
|
||||
/**
|
||||
* 云台俯仰角
|
||||
*/
|
||||
private Double gimbalPitchRotateAngle;
|
||||
|
||||
/**
|
||||
* 变焦焦距
|
||||
*/
|
||||
private Double zoom;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package com.ruoyi.airline.domain.model.kml;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class RoutePointReq implements Serializable {
|
||||
|
||||
/**
|
||||
* 航点编号
|
||||
*/
|
||||
private Integer routePointIndex;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private Double longitude;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private Double latitude;
|
||||
|
||||
/**
|
||||
* 高度
|
||||
*/
|
||||
private Double height;
|
||||
|
||||
|
||||
/**
|
||||
* 航点动作列表
|
||||
*/
|
||||
private List<PointActionReq> actions;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.ruoyi.airline.domain.util;
|
||||
|
||||
|
||||
import com.ruoyi.airline.domain.model.kml.*;
|
||||
import com.thoughtworks.xstream.XStream;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* 航线文件操作工具类
|
||||
*/
|
||||
public class KmlFileUtils {
|
||||
/**
|
||||
* kml文件解析
|
||||
*
|
||||
* @param inputStream 输入
|
||||
* @return 输出
|
||||
*/
|
||||
public static KmlInfo parseKml(InputStream inputStream) {
|
||||
XStream xStream = new XStream();
|
||||
xStream.allowTypes(new Class[]{KmlInfo.class, KmlAction.class, KmlWayLineCoordinateSysParam.class, KmlPoint.class});
|
||||
xStream.alias("kml", KmlInfo.class);
|
||||
xStream.processAnnotations(KmlInfo.class);
|
||||
xStream.autodetectAnnotations(true);
|
||||
xStream.ignoreUnknownElements();
|
||||
xStream.addImplicitCollection(KmlActionGroup.class, "action");
|
||||
|
||||
return (KmlInfo) xStream.fromXML(inputStream);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,404 @@
|
|||
package com.ruoyi.airline.domain.util;
|
||||
|
||||
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;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class WayPointUitls {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(WayPointUitls.class);
|
||||
|
||||
/**
|
||||
* kmz转换waypoint,并同时上传到OSS,返回两个url
|
||||
*
|
||||
* @param kmlInfo
|
||||
* @return
|
||||
*/
|
||||
|
||||
public static String kmz2waypoint(KmlInfo kmlInfo) {
|
||||
//准备一个waypoint文件的标头文本
|
||||
StringBuilder waypointBuilder = new StringBuilder("QGC WPL 110\n");
|
||||
// 重置全局id计数器
|
||||
//定义waypoint的航点对象集合备用
|
||||
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:使用第一个航点的坐标
|
||||
KmlPlacemark kmlPlacemark = placeMarkList.get(0);
|
||||
String[] coords = kmlPlacemark.getKmlPoint().getCoordinates()
|
||||
.replaceAll("[\\n ]", "")
|
||||
.split(",");
|
||||
takeoffCoords = new String[]{coords[1], coords[0]}; // 纬度, 经度
|
||||
}
|
||||
|
||||
//1.设置waypoint文件的起飞点(第一个command 16 ,不需要高度)
|
||||
linePoints.add(buildPoint(16,
|
||||
takeoffCoords[0], takeoffCoords[1], 0,
|
||||
null, null, null, null, 0, 0, 0
|
||||
));
|
||||
|
||||
//2.设置waypoint文件的安全高度点(command 22,需要高度,使用第一个航点的高度)
|
||||
linePoints.add(buildPoint(22,
|
||||
takeoffCoords[0], takeoffCoords[1],
|
||||
Math.round(Float.parseFloat(placeMarkList.get(0).getHeight())), //高度转换成整数
|
||||
null, null, null, null, 0, 0, 0
|
||||
));
|
||||
|
||||
//3.处理普通航点和航线动作
|
||||
for (KmlPlacemark placeMark : placeMarkList) {
|
||||
// 航点坐标(纬度+经度的排布顺序)
|
||||
KmlPoint point = placeMark.getKmlPoint();
|
||||
String cleanCoords = point.getCoordinates().replaceAll("[\n ]", "");
|
||||
String[] coords = cleanCoords.split(",");
|
||||
|
||||
// 基础航点(安全点22和结束点20之间的其他16普通航点)
|
||||
AirLinePointDTO waypoint = buildPoint(
|
||||
16,
|
||||
coords[1], coords[0],
|
||||
(int) Float.parseFloat(placeMark.getHeight()),
|
||||
null, null, null, null, 0, 0, 0
|
||||
);
|
||||
linePoints.add(waypoint);
|
||||
|
||||
// 解析该航点对应的附加动作(如拍照、悬停等)
|
||||
//先判断动作组有没有动作
|
||||
KmlActionGroup actionGroup = placeMark.getActionGroup();
|
||||
if (!ObjectUtils.isEmpty(actionGroup)) {
|
||||
// 获取动作组中的动作列表
|
||||
List<KmlAction> actionList = actionGroup.getAction();
|
||||
|
||||
//动作组没有动作也结束动作组合
|
||||
if (!CollectionUtils.isEmpty(actionList)) {
|
||||
// 遍历所有动作
|
||||
for (KmlAction action : actionList) {
|
||||
// 使用全局id累加
|
||||
processActions(action, linePoints);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 返航点(command 20)
|
||||
linePoints.add(buildPoint(20, takeoffCoords[0], takeoffCoords[1], Math.round(Float.parseFloat(placeMarkList.get(0).getHeight())), null, null, null, null, 0, 0, 0));
|
||||
|
||||
// 5. 生成Waypoints文件内容
|
||||
for (int i = 0; i < linePoints.size(); i++) {
|
||||
AirLinePointDTO point = linePoints.get(i);
|
||||
waypointBuilder.append(formatWaypointLine(point, i)).append("\n");
|
||||
}
|
||||
|
||||
return waypointBuilder.toString();
|
||||
|
||||
}
|
||||
|
||||
// 格式化航点行(直接使用DTO字段)
|
||||
public static String formatWaypointLine(AirLinePointDTO point, Integer index) {
|
||||
switch (point.getCommand()) {
|
||||
case 16:
|
||||
if (index == 0) {
|
||||
// 标准航点(第一个16航点的时候,字段3是0)
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t0\t16\t0\t0\t0\t0\t%s\t%s\t%d.000000\t1",
|
||||
index, point.getLat(), point.getLon(), point.getAlt());
|
||||
} else {
|
||||
//其他16的时候,字段3是3
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t16\t0\t0\t0\t0\t%s\t%s\t%d.000000\t1",
|
||||
index, point.getLat(), point.getLon(), point.getAlt());
|
||||
}
|
||||
case 22: // 安全高度
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t22\t0\t0\t0\t0\t%s\t%s\t%d.000000\t1",
|
||||
index, point.getLat(), point.getLon(), point.getAlt());
|
||||
|
||||
case 93: // 悬停(参数1=悬停时间)
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t93\t%s\t0\t0\t0\t0\t0\t0.000000\t1", index, point.getLoiterTime());
|
||||
|
||||
case 203: // 拍照(没有参数,只是个触发点)
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t203\t0\t0\t0\t0\t0\t0\t0.000000\t1", index);
|
||||
|
||||
case 205: // 云台角度(参数1=俯仰角,参数3=偏航角)
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t205\t%s\t0\t%s\t0\t0\t0\t0.000000\t1",
|
||||
index, point.getCameraPitch(), point.getCameraYaw());
|
||||
|
||||
case 115: // 旋转无人机(参数1=索引,参数2=角度,参数3=速度写死5,参数4=方向写死1全都代表正向,角度自带正负值避免负负得正,参数5=1默认写死)
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t115\t%s\t5\t1\t1\t0\t0\t0.000000\t1",
|
||||
index, point.getCameraYaw());
|
||||
|
||||
case 531: // 变焦(第二个参数是变焦倍数)
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t531\t0\t%s\t0\t0\t0\t0\t0.000000\t1", index, point.getZoomAbsolute());
|
||||
|
||||
case 532: // 聚焦(没有参数)
|
||||
return String.format(Locale.US,
|
||||
"%d\t0\t3\t532\t0\t0\t0\t0\t0\t0\t0.000000\t1", index);
|
||||
|
||||
case 2500: // 视频录制(无参数)
|
||||
return String.format("%d\t0\t3\t2500\t0\t0\t0\t0\t0\t0\t0.000000\t1", index);
|
||||
|
||||
case 2501: // 结束录制(无参数)
|
||||
return String.format("%d\t0\t3\t2501\t0\t0\t0\t0\t0\t0\t0.000000\t1", index);
|
||||
|
||||
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<AirLinePointDTO> linePoints) {
|
||||
|
||||
//kmz航线的动作code
|
||||
String actionType = action.getActionActuatorFunc();
|
||||
//动作参数
|
||||
KmlActionActuatorFuncParam actionActuatorFuncParam = action.getActionActuatorFuncParam();
|
||||
|
||||
switch (actionType) {
|
||||
case "hover":
|
||||
// 悬停(命令93)
|
||||
linePoints.add(buildPoint(
|
||||
93,
|
||||
"0", "0", 0,
|
||||
actionActuatorFuncParam.getHoverTime(), // loiterTime(悬停时间/s)
|
||||
"0",
|
||||
"0",
|
||||
"0",
|
||||
0,
|
||||
0,
|
||||
0
|
||||
));
|
||||
break;
|
||||
|
||||
case "takePhoto":
|
||||
// 拍照动作(命令203) 没啥参数
|
||||
linePoints.add(buildPoint(
|
||||
203,
|
||||
"0", "0", 0,
|
||||
"0",
|
||||
"0",
|
||||
"0",
|
||||
"0",
|
||||
0,
|
||||
0,
|
||||
0
|
||||
));
|
||||
break;
|
||||
|
||||
case "startRecord":
|
||||
// 开始录像(命令2500)没啥参数
|
||||
linePoints.add(buildPoint(
|
||||
2500,
|
||||
"0", "0", 0,
|
||||
"0", "0", "0", "0",
|
||||
0, 0, 0
|
||||
));
|
||||
break;
|
||||
|
||||
case "stopRecord":
|
||||
// 结束录像(命令2501) 没啥参数
|
||||
linePoints.add(buildPoint(
|
||||
2501,
|
||||
"0", "0", 0,
|
||||
"0", "0", "0", "0",
|
||||
0, 0, 0
|
||||
));
|
||||
break;
|
||||
|
||||
case "zoom":
|
||||
// 变焦动作(通过命令531的参数6实现)
|
||||
linePoints.add(buildPoint(
|
||||
531,
|
||||
"0", "0", 0,
|
||||
"0", "0", "0", "0",
|
||||
0,
|
||||
Math.round(Float.parseFloat(actionActuatorFuncParam.getFocalLength()) / 24) //FocalLength=kmz的这个值的mm的焦距,除24(一般是最低焦距)取绝对值得到变倍整数
|
||||
, 0
|
||||
));
|
||||
break;
|
||||
|
||||
case "focus":
|
||||
// 聚焦动作(命令532) 没啥参数
|
||||
linePoints.add(buildPoint(
|
||||
532,
|
||||
"0", "0", 0,
|
||||
"0", "0", "0", "0",
|
||||
0, 0, 0
|
||||
));
|
||||
break;
|
||||
|
||||
case "gimbalRotate":
|
||||
// 云台控制(命令205)
|
||||
linePoints.add(buildPoint(
|
||||
205,
|
||||
"0", "0", 0,
|
||||
"0",
|
||||
String.valueOf(Math.round(Float.parseFloat(actionActuatorFuncParam.getGimbalPitchRotateAngle().toString()))), // 参数1=俯仰角 转换成整数
|
||||
"0",
|
||||
String.valueOf(Math.round(Float.parseFloat(actionActuatorFuncParam.getGimbalYawRotateAngle().toString()))), // 参数3=偏航角,转换成整数
|
||||
0, 0, 0
|
||||
));
|
||||
break;
|
||||
|
||||
case "rotateYaw":
|
||||
// 无人机旋转(命令115)
|
||||
linePoints.add(buildPoint(
|
||||
115,
|
||||
"0", "0", 0, "0", "0", "0",
|
||||
String.valueOf(Math.round(Float.parseFloat(actionActuatorFuncParam.getAircraftHeading().toString()))), //旋转角度(偏航角),转换成整数
|
||||
0, 0, "counterClockwise".equals(actionActuatorFuncParam.getAircraftPathMode()) ? -1 : 1 // 旋转方向(逆时针/顺时针)
|
||||
));
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//构建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) {
|
||||
AirLinePointDTO point = new AirLinePointDTO();
|
||||
point.setCommand(command);
|
||||
point.setLat(lat);
|
||||
point.setLon(lon);
|
||||
point.setAlt(alt);
|
||||
point.setLoiterTime(loiterTime);
|
||||
point.setCameraPitch(cameraPitch);
|
||||
point.setCameraRoll(cameraRoll);
|
||||
point.setCameraYaw(cameraYaw);
|
||||
point.setSessionControl(sessionControl);
|
||||
point.setZoomAbsolute(zoomAbsolute);
|
||||
point.setRotateDirection(rotateDirection);
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue