parent
f4e0dae1b7
commit
0bdfd5a3b4
|
|
@ -11,6 +11,7 @@ import com.multictrl.common.validator.ValidatorUtils;
|
|||
import com.multictrl.common.validator.group.AddGroup;
|
||||
import com.multictrl.common.validator.group.UpdateGroup;
|
||||
import com.multictrl.modules.business.dto.DockDTO;
|
||||
import com.multictrl.modules.business.dto.MultiTestDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiDockDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDeviceDTO;
|
||||
|
|
@ -135,4 +136,12 @@ public class MultiController {
|
|||
List<DockDTO> list = multiService.getMultiGroupDockList(multiGroupId);
|
||||
return new Result<List<DockDTO>>().ok(list);
|
||||
}
|
||||
|
||||
@PostMapping("/multiGroupDockTest")
|
||||
@Operation(summary = "蛙跳组机库测试")
|
||||
public Result<String> multiGroupDockTest(MultiTestDTO dto) {
|
||||
String message = multiService.multiGroupDockTest(dto);
|
||||
|
||||
return new Result<String>().ok(message);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,10 @@ public class DockDTO implements Serializable {
|
|||
@Schema(description = "机库模式")
|
||||
private String dockMode;
|
||||
|
||||
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
|
||||
@Schema(description = "舱内是否有飞机")
|
||||
private Boolean hasUav;
|
||||
|
||||
@JsonIgnore
|
||||
@Schema(hidden = true)
|
||||
@AssertTrue(message = "机库型号不能为空", groups = {AddGroup.class, UpdateGroup.class})
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
package com.multictrl.modules.business.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 蛙跳组测试参数
|
||||
*
|
||||
* @author Sdy
|
||||
* @since 1.0.0 2026/6/22
|
||||
*/
|
||||
@Data
|
||||
@Schema(name = "蛙跳组测试参数")
|
||||
public class MultiTestDTO {
|
||||
|
||||
@Schema(description = "妙算SN")
|
||||
private String dockSn;
|
||||
|
||||
@Schema(description = "航线标识")
|
||||
private Long routeId;
|
||||
|
||||
@Schema(description = "经度1")
|
||||
private Double lon1;
|
||||
|
||||
@Schema(description = "纬度1")
|
||||
private Double lat1;
|
||||
|
||||
@Schema(description = "高度1")
|
||||
private Double height1;
|
||||
|
||||
@Schema(description = "经度2")
|
||||
private Double lon2;
|
||||
|
||||
@Schema(description = "纬度2")
|
||||
private Double lat2;
|
||||
|
||||
@Schema(description = "高度2")
|
||||
private Double height2;
|
||||
}
|
||||
|
|
@ -18,27 +18,27 @@ import lombok.Data;
|
|||
@Schema(name = "蛙跳组信息")
|
||||
public class MultiGroupDTO {
|
||||
|
||||
@Null(message = "{id.null}", groups = AddGroup.class)
|
||||
@NotNull(message = "{id.require}", groups = UpdateGroup.class)
|
||||
@Null(message = "主键必须为空", groups = AddGroup.class)
|
||||
@NotNull(message = "主键不能为空", groups = UpdateGroup.class)
|
||||
@Schema(description = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 蛙跳组名称
|
||||
*/
|
||||
@NotBlank(message = "{group.name.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@NotBlank(message = "蛙跳组名称不能为空", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@JsonProperty(required = true)
|
||||
@Schema(description = "蛙跳组名称")
|
||||
private String groupName;
|
||||
/**
|
||||
* 蛙跳组备注说明
|
||||
*/
|
||||
@NotBlank(message = "{group.mark.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@NotBlank(message = "蛙跳组备注不能为空", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@JsonProperty(required = true)
|
||||
@Schema(description = "蛙跳组备注说明")
|
||||
private String groupMark;
|
||||
|
||||
@NotNull(message = "{dept.id.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@NotNull(message = "所属部门不能为空", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@JsonProperty(required = true)
|
||||
@Schema(description = "所属部门")
|
||||
private Long deptId;
|
||||
|
|
|
|||
|
|
@ -53,6 +53,9 @@ public interface DJIBaseService {
|
|||
//机场是否在线
|
||||
Boolean isDockOnline(String dockSn);
|
||||
|
||||
//机场内是否有飞机
|
||||
Boolean isDockHasUav(String dockSn);
|
||||
|
||||
// 获取当前待回复命令信息(测试/模拟用)
|
||||
JSONObject getPendingCmd(String deviceSn);
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.multictrl.modules.business.service;
|
|||
|
||||
import com.multictrl.common.page.PageData;
|
||||
import com.multictrl.modules.business.dto.DockDTO;
|
||||
import com.multictrl.modules.business.dto.MultiTestDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiDockDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDeviceDTO;
|
||||
|
|
@ -41,4 +42,6 @@ public interface MultiService {
|
|||
|
||||
String privateMultiDockFlightTaskInbound(MultiTaskDTO multiTaskDTO);
|
||||
|
||||
//蛙跳机库测试
|
||||
String multiGroupDockTest(MultiTestDTO dto);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -258,4 +258,15 @@ public class DJIBaseServiceImpl implements DJIBaseService {
|
|||
Object object = CacheUtils.get(BusinessConstant.DOCK_OSD + dockSn);
|
||||
return object != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isDockHasUav(String dockSn) {
|
||||
Object o = CacheUtils.get(BusinessConstant.DOCK_OSD + dockSn);
|
||||
if (o != null) {
|
||||
JSONObject data = (JSONObject) o;
|
||||
Integer droneInDock = data.getInt("drone_in_dock");
|
||||
return droneInDock == 1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,10 +95,12 @@ public class DockServiceImpl extends CrudServiceImpl<DockDao, DockEntity, DockDT
|
|||
params.put("scenario", "inspection");
|
||||
PageData<DockDTO> page = page(params);
|
||||
for (DockDTO dockDTO : page.getList()) {
|
||||
Integer dockModeCode = djiBaseService.getDockModeCode(dockDTO.getDockSn());
|
||||
String dockSn = dockDTO.getDockSn();
|
||||
Integer dockModeCode = djiBaseService.getDockModeCode(dockSn);
|
||||
dockDTO.setDockMode(DockMode.getDescByCode(dockModeCode));
|
||||
dockDTO.setOnline(djiBaseService.isDockOnline(dockDTO.getDockSn()));
|
||||
List<DockDeviceEntity> deviceEntityList = dockDeviceDao.selectList(new QueryWrapper<DockDeviceEntity>().eq("parent_sn", dockDTO.getDockSn()));
|
||||
dockDTO.setOnline(djiBaseService.isDockOnline(dockSn));
|
||||
dockDTO.setHasUav(djiBaseService.isDockHasUav(dockSn));
|
||||
List<DockDeviceEntity> deviceEntityList = dockDeviceDao.selectList(new QueryWrapper<DockDeviceEntity>().eq("parent_sn", dockSn));
|
||||
for (DockDeviceEntity dockDevice : deviceEntityList) {
|
||||
String deviceModelKey = dockDevice.getDeviceModelKey();
|
||||
if (deviceModelKey.startsWith("0")) {
|
||||
|
|
@ -113,7 +115,7 @@ public class DockServiceImpl extends CrudServiceImpl<DockDao, DockEntity, DockDT
|
|||
}
|
||||
String dockType = dockDTO.getDockType();
|
||||
if (BusinessConstant.DJI_SIGN.equals(dockType)) {
|
||||
DockDeviceEntity dockDevice = dockDeviceDao.selectOne(new QueryWrapper<DockDeviceEntity>().eq("sn", dockDTO.getDockSn()));
|
||||
DockDeviceEntity dockDevice = dockDeviceDao.selectOne(new QueryWrapper<DockDeviceEntity>().eq("sn", dockSn));
|
||||
if (dockDevice != null) {
|
||||
dockDTO.setImgUrl(BusinessConstant.IMAGE_PATH + DJIImage.getImageUrlByName(dockDevice.getDeviceName()));
|
||||
dockDTO.setDockModel(dockDevice.getDeviceName());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.multictrl.modules.business.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
|
@ -15,6 +16,7 @@ import com.multictrl.common.utils.MessageUtils;
|
|||
import com.multictrl.modules.business.dao.MultiGroupDao;
|
||||
import com.multictrl.modules.business.dao.MultiGroupDeviceDao;
|
||||
import com.multictrl.modules.business.dto.DockDTO;
|
||||
import com.multictrl.modules.business.dto.MultiTestDTO;
|
||||
import com.multictrl.modules.business.dto.flight.FlightExecute;
|
||||
import com.multictrl.modules.business.dto.multi.MultiDockDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDTO;
|
||||
|
|
@ -291,6 +293,41 @@ public class MultiServiceImpl implements MultiService {
|
|||
return "流程结束";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String multiGroupDockTest(MultiTestDTO dto) {
|
||||
//第三步,下发航线给psdk
|
||||
FlightExecute flightExecute = new FlightExecute();
|
||||
flightExecute.setTaskId(IdUtil.fastSimpleUUID());
|
||||
flightExecute.setRouteId(dto.getRouteId());
|
||||
//获取每个机库的 经纬度/高度/备降点经纬度/备降点高度
|
||||
List<PrivateMultiFlightBindDockInfo> privateMultiFlightBindDockInfos = new ArrayList<>();
|
||||
PrivateMultiFlightBindDockInfo privateMultiFlightBindDockInfo = new PrivateMultiFlightBindDockInfo();
|
||||
privateMultiFlightBindDockInfo.setDock_sn("dock1");
|
||||
privateMultiFlightBindDockInfo.setLongitude(dto.getLon1());
|
||||
privateMultiFlightBindDockInfo.setLatitude(dto.getLat1());
|
||||
privateMultiFlightBindDockInfo.setHeight(dto.getHeight1());
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_longitude(dto.getLon1());
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_latitude(dto.getLat1());
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_height(dto.getHeight1());
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_safe_land_height(100d);
|
||||
privateMultiFlightBindDockInfos.add(privateMultiFlightBindDockInfo);
|
||||
|
||||
PrivateMultiFlightBindDockInfo privateMultiFlightBindDockInfo2 = new PrivateMultiFlightBindDockInfo();
|
||||
privateMultiFlightBindDockInfo2.setDock_sn("dock2");
|
||||
privateMultiFlightBindDockInfo2.setLongitude(dto.getLon2());
|
||||
privateMultiFlightBindDockInfo2.setLatitude(dto.getLat2());
|
||||
privateMultiFlightBindDockInfo2.setHeight(dto.getHeight2());
|
||||
privateMultiFlightBindDockInfo2.setAlternate_land_point_longitude(dto.getLon2());
|
||||
privateMultiFlightBindDockInfo2.setAlternate_land_point_latitude(dto.getLat2());
|
||||
privateMultiFlightBindDockInfo2.setAlternate_land_point_height(dto.getHeight2());
|
||||
privateMultiFlightBindDockInfo2.setAlternate_land_point_safe_land_height(100d);
|
||||
privateMultiFlightBindDockInfos.add(privateMultiFlightBindDockInfo2);
|
||||
flightExecute.setPrivateMultiFlightBindDockInfos(privateMultiFlightBindDockInfos);
|
||||
|
||||
log.info("privateMultiDockFlightTaskOutbound-> 下发航线给妙算 flightExecute:{}", flightExecute);
|
||||
return routeFlightService.flightExecute(dto.getDockSn(), flightExecute, true, FlightTaskType.ROUTE.getCode());
|
||||
}
|
||||
|
||||
private String privateMultiDockTaskFlightTaskCheck(String dockSn) {
|
||||
return djiBaseService.executeAndReturnResult(dockSn, "private_multi_dock_task_flighttask_check");
|
||||
}
|
||||
|
|
@ -316,9 +353,11 @@ public class MultiServiceImpl implements MultiService {
|
|||
//机库增加属性
|
||||
private void addDockProperty(List<DockDTO> dockDTOList) {
|
||||
for (DockDTO dockDTO : dockDTOList) {
|
||||
Integer dockModeCode = djiBaseService.getDockModeCode(dockDTO.getDockSn());
|
||||
String dockSn = dockDTO.getDockSn();
|
||||
Integer dockModeCode = djiBaseService.getDockModeCode(dockSn);
|
||||
dockDTO.setDockMode(DockMode.getDescByCode(dockModeCode));
|
||||
dockDTO.setOnline(djiBaseService.isDockOnline(dockDTO.getDockSn()));
|
||||
dockDTO.setOnline(djiBaseService.isDockOnline(dockSn));
|
||||
dockDTO.setHasUav(djiBaseService.isDockHasUav(dockSn));
|
||||
String dockType = dockDTO.getDockType();
|
||||
if (BusinessConstant.MIAO_SUAN_SIGN.equals(dockType)) {
|
||||
List<SysDictDataEntity> list = dictDataDao.selectList(new QueryWrapper<SysDictDataEntity>()
|
||||
|
|
|
|||
Loading…
Reference in New Issue