Compare commits
118 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
19b7aea902 | |
|
|
3b9d98e7d5 | |
|
|
18466c16bc | |
|
|
1144bf6280 | |
|
|
2bfdf6b1ba | |
|
|
93025e61a2 | |
|
|
a87cf1f88d | |
|
|
29cca79264 | |
|
|
894b69e2f2 | |
|
|
9e66797d4f | |
|
|
3ab65cbc74 | |
|
|
10fed354f8 | |
|
|
c440af9bed | |
|
|
e4f04856c3 | |
|
|
eee07c4590 | |
|
|
0f0ad750b3 | |
|
|
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 |
22
pom.xml
22
pom.xml
|
|
@ -23,6 +23,11 @@
|
||||||
<artifactId>tuoheng-api-airline</artifactId>
|
<artifactId>tuoheng-api-airline</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.ruoyi</groupId>
|
||||||
|
<artifactId>ruoyi-api-system</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- SpringCloud Alibaba Nacos -->
|
<!-- SpringCloud Alibaba Nacos -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba.cloud</groupId>
|
<groupId>com.alibaba.cloud</groupId>
|
||||||
|
|
@ -71,12 +76,29 @@
|
||||||
<artifactId>ruoyi-common-log</artifactId>
|
<artifactId>ruoyi-common-log</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- xml文件转化 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.thoughtworks.xstream</groupId>
|
||||||
|
<artifactId>xstream</artifactId>
|
||||||
|
<version>1.4.20</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- RuoYi Common Swagger -->
|
<!-- RuoYi Common Swagger -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<artifactId>ruoyi-common-swagger</artifactId>
|
<artifactId>ruoyi-common-swagger</artifactId>
|
||||||
</dependency>
|
</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 -->
|
<!-- Flyway Database Migration -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.flywaydb</groupId>
|
<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,125 @@
|
||||||
|
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 = "/{id}")
|
||||||
|
@Operation(summary = "根据分组ID 获取分组详情信息")
|
||||||
|
public AjaxResult getInfo(@PathVariable("id") Long id) {
|
||||||
|
return success(iAirlineFileGroupService.selectAirLineListsByGroupId(SecurityUtils.getUserId(), id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增分组
|
||||||
|
*/
|
||||||
|
// @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.getName() + "'失败,分组名称已存在");
|
||||||
|
}
|
||||||
|
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.getName() + "'失败,分组名称已存在");
|
||||||
|
}
|
||||||
|
return toAjax(iAirlineFileGroupService.updateGroup(dto));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除分组,前端校验分组下是否有航线弹出确认删除提示,如果确认会将分组及航线一起删除。
|
||||||
|
*/
|
||||||
|
// @RequiresPermissions("airline:group:remove")
|
||||||
|
// @Log(title = "删除分组", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/delete/{id}")
|
||||||
|
@Operation(summary = "删除分组")
|
||||||
|
public AjaxResult removeByQueryParam(@PathVariable("id") Long id) {
|
||||||
|
return toAjax(iAirlineFileGroupService.deletegroupById(SecurityUtils.getUserId(), id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID查询所有符合条件的航线
|
||||||
|
*
|
||||||
|
* @param dto 查询条件
|
||||||
|
* @return 航线列表
|
||||||
|
*/
|
||||||
|
@PostMapping("/airlineList")
|
||||||
|
@Operation(summary = "根据用户ID查询所有符合条件的航线")
|
||||||
|
public AjaxResult selectAirlineListByUserId(@RequestBody(required = false) AirlineFileDTO dto) {
|
||||||
|
if (dto == null) {
|
||||||
|
dto = new AirlineFileDTO();
|
||||||
|
}
|
||||||
|
dto.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
|
||||||
|
List<AirlineFileDTO> list = iAirlineFileGroupService.selectAirlineListByUserId(dto);
|
||||||
|
return success(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("删除失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户下所有可用标注
|
||||||
|
*/
|
||||||
|
@PostMapping("/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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取全部可用标注
|
||||||
|
*/
|
||||||
|
@PostMapping("/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,124 @@
|
||||||
|
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 = super.innerFrom(dto);
|
||||||
|
|
||||||
|
// 转换时间规则列表
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 复制创建者名称
|
||||||
|
vo.setCreateByName(dto.getCreateByName());
|
||||||
|
|
||||||
|
// 复制分组ID
|
||||||
|
vo.setGroupId(dto.getGroupId());
|
||||||
|
|
||||||
|
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 = super.innerTo(vo);
|
||||||
|
|
||||||
|
// 转换时间规则列表
|
||||||
|
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;
|
package com.ruoyi.airline.controller.convert;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.utils.BaseConvert;
|
||||||
import com.ruoyi.airline.api.domain.AirlineTempVO;
|
import com.ruoyi.airline.api.domain.AirlineTempVO;
|
||||||
import com.ruoyi.airline.service.dto.AirlineTempDTO;
|
import com.ruoyi.airline.service.dto.AirlineTempDTO;
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 航线临时表Controller层转换器
|
* 航线临时表Controller层转换器
|
||||||
|
|
@ -14,45 +13,40 @@ import java.util.stream.Collectors;
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2026-01-17
|
* @date 2026-01-17
|
||||||
*/
|
*/
|
||||||
public class AirlineTempControllerConvert
|
public class AirlineTempControllerConvert extends BaseConvert<AirlineTempDTO, AirlineTempVO>
|
||||||
{
|
{
|
||||||
/**
|
private static final AirlineTempControllerConvert INSTANCE = new AirlineTempControllerConvert();
|
||||||
* DTO 转 API Domain
|
|
||||||
*/
|
private AirlineTempControllerConvert() {
|
||||||
public static AirlineTempVO toVO(AirlineTempDTO dto)
|
super(AirlineTempDTO.class, AirlineTempVO.class);
|
||||||
{
|
|
||||||
if (dto == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
AirlineTempVO apiDomain = new AirlineTempVO();
|
|
||||||
BeanUtils.copyProperties(dto, apiDomain);
|
|
||||||
return apiDomain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static AirlineTempVO from(AirlineTempDTO dto)
|
||||||
* API Domain 转 DTO
|
|
||||||
*/
|
|
||||||
public static AirlineTempDTO toDTO(AirlineTempVO apiDomain)
|
|
||||||
{
|
{
|
||||||
if (apiDomain == null)
|
return INSTANCE.innerFrom(dto);
|
||||||
{
|
}
|
||||||
return null;
|
|
||||||
}
|
public static AirlineTempDTO to(AirlineTempVO vo)
|
||||||
AirlineTempDTO dto = new AirlineTempDTO();
|
{
|
||||||
BeanUtils.copyProperties(apiDomain, dto);
|
return INSTANCE.innerTo(vo);
|
||||||
return dto;
|
}
|
||||||
|
|
||||||
|
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)
|
public static List<AirlineTempVO> toApiDomainList(List<AirlineTempDTO> dtoList)
|
||||||
{
|
{
|
||||||
if (dtoList == null)
|
if (dtoList == null)
|
||||||
{
|
{
|
||||||
return 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,62 @@
|
||||||
|
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 newGroupId 新分组ID
|
||||||
|
* @param airlineId 航线文件ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
Long moveGroupInfo(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,95 @@
|
||||||
|
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.setGroupId(entity.getGroupId());
|
||||||
|
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.setGroupId(model.getGroupId());
|
||||||
|
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;
|
package com.ruoyi.airline.domain.convert;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.utils.BaseConvert;
|
||||||
import com.ruoyi.airline.domain.model.AirlineTemp;
|
import com.ruoyi.airline.domain.model.AirlineTemp;
|
||||||
import com.ruoyi.airline.mapper.entity.AirlineTempEntity;
|
import com.ruoyi.airline.mapper.entity.AirlineTempEntity;
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 航线临时表Domain层转换器
|
* 航线临时表Domain层转换器
|
||||||
|
|
@ -14,45 +13,31 @@ import java.util.stream.Collectors;
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2026-01-17
|
* @date 2026-01-17
|
||||||
*/
|
*/
|
||||||
public class AirlineTempDomainConvert
|
public class AirlineTempDomainConvert extends BaseConvert<AirlineTempEntity, AirlineTemp>
|
||||||
{
|
{
|
||||||
/**
|
private static final AirlineTempDomainConvert INSTANCE = new AirlineTempDomainConvert();
|
||||||
* Entity 转 Model
|
|
||||||
*/
|
private AirlineTempDomainConvert() {
|
||||||
public static AirlineTemp toModel(AirlineTempEntity entity)
|
super(AirlineTempEntity.class, AirlineTemp.class);
|
||||||
{
|
|
||||||
if (entity == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
AirlineTemp model = new AirlineTemp();
|
|
||||||
BeanUtils.copyProperties(entity, model);
|
|
||||||
return model;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static AirlineTemp from(AirlineTempEntity entity)
|
||||||
* Model 转 Entity
|
|
||||||
*/
|
|
||||||
public static AirlineTempEntity toEntity(AirlineTemp model)
|
|
||||||
{
|
{
|
||||||
if (model == null)
|
return INSTANCE.innerFrom(entity);
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
AirlineTempEntity entity = new AirlineTempEntity();
|
|
||||||
BeanUtils.copyProperties(model, entity);
|
|
||||||
return entity;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static AirlineTempEntity to(AirlineTemp model)
|
||||||
* Entity List 转 Model List
|
|
||||||
*/
|
|
||||||
public static List<AirlineTemp> toModelList(List<AirlineTempEntity> entityList)
|
|
||||||
{
|
{
|
||||||
if (entityList == null)
|
return INSTANCE.innerTo(model);
|
||||||
{
|
}
|
||||||
return null;
|
|
||||||
}
|
public static List<AirlineTemp> fromList(List<AirlineTempEntity> entityList)
|
||||||
return entityList.stream().map(AirlineTempDomainConvert::toModel).collect(Collectors.toList());
|
{
|
||||||
|
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 newGroupId, Long airlineId) {
|
||||||
|
return airlineFileGroupInfoMapper.updateGroupId(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
|
@Override
|
||||||
public List<AirlineTemp> selectAirlineTempList(AirlineTemp airlineTempModel)
|
public List<AirlineTemp> selectAirlineTempList(AirlineTemp airlineTempModel)
|
||||||
{
|
{
|
||||||
AirlineTempEntity entity = AirlineTempDomainConvert.toEntity(airlineTempModel);
|
AirlineTempEntity entity = AirlineTempDomainConvert.to(airlineTempModel);
|
||||||
List<AirlineTempEntity> entityList = airlineTempMapper.selectAirlineTempList(entity);
|
List<AirlineTempEntity> entityList = airlineTempMapper.selectAirlineTempList(entity);
|
||||||
return AirlineTempDomainConvert.toModelList(entityList);
|
return AirlineTempDomainConvert.fromList(entityList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AirlineTemp selectAirlineTempById(String id)
|
public AirlineTemp selectAirlineTempById(String id)
|
||||||
{
|
{
|
||||||
AirlineTempEntity entity = airlineTempMapper.selectAirlineTempById(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,100 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组ID
|
||||||
|
*/
|
||||||
|
private Long groupId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 空域名称
|
||||||
|
*/
|
||||||
|
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 id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 航线数量
|
||||||
|
*/
|
||||||
|
private Integer airlineCount;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
.append("id", getId())
|
||||||
|
.append("name", getName())
|
||||||
|
.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\t7000\t0\t0\t0\t0\t0\t0\t0.000000\t1", index);
|
||||||
|
|
||||||
|
case 8000: // 全景拍照
|
||||||
|
return String.format(Locale.US,
|
||||||
|
"%d\t0\t3\t8000\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