增加蛙跳接口
This commit is contained in:
parent
b7e2733345
commit
388cfd2845
|
|
@ -95,4 +95,5 @@ public interface BusinessConstant {
|
|||
String GEO_MODEL_DISK_UPLOAD_PATH = "/geo_model";
|
||||
String VIDEO_COVER_SUFFIX = "_cover.jpeg";
|
||||
String DJI_SIGN = "DJI";
|
||||
String MIAO_SUAN_SIGN = "MIAO_SUAN";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.multictrl.modules.business.controller;
|
||||
|
||||
import com.multictrl.common.annotation.ApiOrder;
|
||||
import com.multictrl.common.annotation.DataFilter;
|
||||
import com.multictrl.common.annotation.LogOperation;
|
||||
import com.multictrl.common.constant.Constant;
|
||||
import com.multictrl.common.page.PageData;
|
||||
|
|
@ -46,8 +47,10 @@ public class DockController {
|
|||
@Parameter(name = Constant.LIMIT, description = "每页显示记录数"),
|
||||
@Parameter(name = "key", description = "机库名称、机库SN码")
|
||||
})
|
||||
@DataFilter
|
||||
@RequiresPermissions("bus:dock:page")
|
||||
public Result<PageData<DockDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
|
||||
params.put("scenario", "inspection");
|
||||
PageData<DockDTO> page = dockService.pageList(params);
|
||||
|
||||
return new Result<PageData<DockDTO>>().ok(page);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,139 @@
|
|||
package com.multictrl.modules.business.controller;
|
||||
|
||||
import com.multictrl.common.annotation.ApiOrder;
|
||||
import com.multictrl.common.annotation.DataFilter;
|
||||
import com.multictrl.common.annotation.LogOperation;
|
||||
import com.multictrl.common.constant.Constant;
|
||||
import com.multictrl.common.page.PageData;
|
||||
import com.multictrl.common.utils.Result;
|
||||
import com.multictrl.common.validator.AssertUtils;
|
||||
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.multi.MultiDockDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDeviceDTO;
|
||||
import com.multictrl.modules.business.service.MultiService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 阿罗斯机场蛙跳任务
|
||||
*
|
||||
* @author Sdy
|
||||
* @since 1.0.0 2026/6/8
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("business/multi")
|
||||
@Tag(name = "机场蛙跳任务")
|
||||
@ApiOrder(21)
|
||||
@RequiredArgsConstructor
|
||||
public class MultiController {
|
||||
private final MultiService multiService;
|
||||
|
||||
@GetMapping("page")
|
||||
@Operation(summary = "蛙跳设备分页列表")
|
||||
@Parameters({
|
||||
@Parameter(name = Constant.PAGE, description = "当前页码,从1开始"),
|
||||
@Parameter(name = Constant.LIMIT, description = "每页显示记录数"),
|
||||
@Parameter(name = "key", description = "机库名称、机库SN码")
|
||||
})
|
||||
@DataFilter
|
||||
@RequiresPermissions("bus:dock:page")
|
||||
public Result<PageData<DockDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
|
||||
params.put("scenario", "multi");
|
||||
PageData<DockDTO> page = multiService.pageList(params);
|
||||
|
||||
return new Result<PageData<DockDTO>>().ok(page);
|
||||
}
|
||||
|
||||
@GetMapping("pageMultiGroup")
|
||||
@Operation(summary = "蛙跳组分页列表")
|
||||
@Parameters({
|
||||
@Parameter(name = Constant.PAGE, description = "当前页码,从1开始"),
|
||||
@Parameter(name = Constant.LIMIT, description = "每页显示记录数"),
|
||||
@Parameter(name = "name", description = "蛙跳组名")
|
||||
})
|
||||
@DataFilter
|
||||
@RequiresPermissions("bus:dock:pageMultiGroup")
|
||||
public Result<PageData<MultiGroupDTO>> pageMultiGroup(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
|
||||
PageData<MultiGroupDTO> page = multiService.pageMultiGroup(params);
|
||||
|
||||
return new Result<PageData<MultiGroupDTO>>().ok(page);
|
||||
}
|
||||
|
||||
@PostMapping("/saveMultiGroup")
|
||||
@Operation(summary = "新增蛙跳组")
|
||||
@LogOperation("新增蛙跳组")
|
||||
@RequiresPermissions("bus:multi:saveMultiGroup")
|
||||
public Result<Object> saveMultiGroup(@RequestBody MultiGroupDTO dto) {
|
||||
//效验数据
|
||||
ValidatorUtils.validateEntity(dto, AddGroup.class);
|
||||
multiService.saveMultiGroup(dto);
|
||||
|
||||
return new Result<>();
|
||||
}
|
||||
|
||||
@PutMapping("/updateMultiGroup")
|
||||
@Operation(summary = "修改蛙跳组")
|
||||
@LogOperation("修改蛙跳组")
|
||||
@RequiresPermissions("bus:multi:updateMultiGroup")
|
||||
public Result<Object> updateMultiGroup(@RequestBody MultiGroupDTO dto) {
|
||||
//效验数据
|
||||
ValidatorUtils.validateEntity(dto, UpdateGroup.class);
|
||||
multiService.updateMultiGroup(dto);
|
||||
|
||||
return new Result<>();
|
||||
}
|
||||
|
||||
@DeleteMapping("/deleteMultiGroup")
|
||||
@Operation(summary = "删除蛙跳组")
|
||||
@LogOperation("删除蛙跳组")
|
||||
@RequiresPermissions("bus:multi:deleteMultiGroup")
|
||||
public Result<Object> deleteMultiGroup(@RequestBody List<Long> ids) {
|
||||
AssertUtils.isListEmpty(ids, "ids");
|
||||
multiService.deleteMultiGroup(ids);
|
||||
|
||||
return new Result<>();
|
||||
}
|
||||
|
||||
@PostMapping("/saveMultiGroupDevice")
|
||||
@Operation(summary = "蛙跳组绑定设备")
|
||||
@LogOperation("蛙跳组绑定设备")
|
||||
@RequiresPermissions("bus:multi:saveMultiGroupDevice")
|
||||
public Result<Object> saveMultiGroupDevice(@RequestBody MultiGroupDeviceDTO dto) {
|
||||
//效验数据
|
||||
ValidatorUtils.validateEntity(dto, AddGroup.class);
|
||||
multiService.saveMultiGroupDevice(dto);
|
||||
|
||||
return new Result<>();
|
||||
}
|
||||
|
||||
@DeleteMapping("/updateMultiGroupDevice")
|
||||
@Operation(summary = "蛙跳组解绑设备")
|
||||
@LogOperation("蛙跳组解绑设备")
|
||||
@RequiresPermissions("bus:multi:updateMultiGroupDevice")
|
||||
public Result<Object> updateMultiGroupDevice(@RequestBody List<Long> ids) {
|
||||
//效验数据
|
||||
AssertUtils.isListEmpty(ids, "ids");
|
||||
multiService.deleteMultiGroupDevice(ids);
|
||||
|
||||
return new Result<>();
|
||||
}
|
||||
|
||||
@GetMapping("/getMultiGroupDockList")
|
||||
@Operation(summary = "获取蛙跳组机库列表")
|
||||
public Result<List<DockDTO>> getMultiGroupDockList(@RequestParam String multiGroupId) {
|
||||
List<DockDTO> list = multiService.getMultiGroupDockList(multiGroupId);
|
||||
return new Result<List<DockDTO>>().ok(list);
|
||||
}
|
||||
}
|
||||
|
|
@ -55,8 +55,8 @@ public class DockDTO implements Serializable {
|
|||
@Schema(description = "机库型号")
|
||||
private String dockModel;
|
||||
|
||||
@NotBlank(message = "{dock.model.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@Schema(description = "使用场景")
|
||||
@NotBlank(message = "{dock.scenario.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@Schema(description = "使用场景 inspection:巡检 multi:蛙跳")
|
||||
private String scenario;
|
||||
|
||||
@NotNull(message = "{dept.id.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
|
|
@ -115,7 +115,7 @@ public class DockDTO implements Serializable {
|
|||
@Schema(hidden = true)
|
||||
@AssertTrue(message = "机库型号不能为空", groups = {AddGroup.class, UpdateGroup.class})
|
||||
public boolean isDockModelValid() {
|
||||
if (!BusinessConstant.DJI_SIGN.equals(dockType)) {
|
||||
if (!BusinessConstant.DJI_SIGN.equals(dockType) && !BusinessConstant.MIAO_SUAN_SIGN.equals(dockType)) {
|
||||
return StringUtils.isNotBlank(dockModel);
|
||||
} else {
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ import lombok.Data;
|
|||
@Schema(name = "蛙跳组信息")
|
||||
public class MultiGroupDTO {
|
||||
|
||||
@Null(message = "{id.null}", groups = AddGroup.class)
|
||||
@NotNull(message = "{id.require}", groups = UpdateGroup.class)
|
||||
@Schema(description = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 蛙跳组名称
|
||||
*/
|
||||
|
|
@ -33,4 +38,8 @@ public class MultiGroupDTO {
|
|||
@Schema(description = "蛙跳组备注说明")
|
||||
private String groupMark;
|
||||
|
||||
@NotNull(message = "{dept.id.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@JsonProperty(required = true)
|
||||
@Schema(description = "所属部门")
|
||||
private Long deptId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,10 @@ import com.multictrl.common.validator.group.AddGroup;
|
|||
import com.multictrl.common.validator.group.UpdateGroup;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
|
|
@ -26,7 +29,7 @@ public class MultiGroupDeviceDTO {
|
|||
/**
|
||||
* 网关sn
|
||||
*/
|
||||
@NotBlank(message = "{gateway.sns.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@NotEmpty(message = "{gateway.sns.require}", groups = {AddGroup.class, UpdateGroup.class})
|
||||
@JsonProperty(required = true)
|
||||
@Schema(description = "设备网关sn列表")
|
||||
private List<String> gatewaySns;
|
||||
|
|
|
|||
|
|
@ -32,14 +32,14 @@ public class DockEntity extends BaseEntity {
|
|||
/**
|
||||
* 机库类型
|
||||
*
|
||||
* dock
|
||||
* dock(AROS DJI)
|
||||
* pilot
|
||||
* miao_suan
|
||||
* MIAO_SUAN
|
||||
*/
|
||||
private String dockType;
|
||||
/**
|
||||
* 使用场景
|
||||
* null或者 inspection 巡检
|
||||
* inspection 巡检
|
||||
* multi 蛙跳
|
||||
*/
|
||||
private String scenario;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.multictrl.modules.business.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.multictrl.common.entity.BaseEntity;
|
||||
import java.util.Date;
|
||||
|
|
@ -25,9 +27,11 @@ public class MultiGroupDeviceEntity extends BaseEntity {
|
|||
/**
|
||||
* 更新者
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Long updater;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateDate;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.multictrl.modules.business.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.multictrl.common.entity.BaseEntity;
|
||||
import java.util.Date;
|
||||
|
|
@ -28,6 +30,8 @@ public class MultiGroupEntity extends BaseEntity {
|
|||
*/
|
||||
private Long deptId;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Long updater;
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateDate;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package com.multictrl.modules.business.service;
|
||||
|
||||
import com.multictrl.common.utils.Result;
|
||||
import com.multictrl.common.page.PageData;
|
||||
import com.multictrl.modules.business.dto.DockDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiDockDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDeviceDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiTaskDTO;
|
||||
import com.multictrl.modules.business.entity.DockEntity;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 阿罗斯机场 蛙跳 充电机库 Ars550 换电机库 Ars600
|
||||
|
|
@ -16,7 +18,9 @@ import java.util.List;
|
|||
*/
|
||||
public interface MultiService {
|
||||
|
||||
List<MultiDockDTO> getDockList();
|
||||
PageData<DockDTO> pageList(Map<String, Object> params);
|
||||
|
||||
PageData<MultiGroupDTO> pageMultiGroup(Map<String, Object> params);
|
||||
|
||||
void saveMultiGroup(MultiGroupDTO multiGroupDTO);
|
||||
|
||||
|
|
@ -24,7 +28,12 @@ public interface MultiService {
|
|||
|
||||
void updateMultiGroup(MultiGroupDTO multiGroupDTO);
|
||||
|
||||
void updateMultiGroupDevice(MultiGroupDeviceDTO multiGroupDeviceDTO);
|
||||
// void updateMultiGroupDevice(MultiGroupDeviceDTO multiGroupDeviceDTO);
|
||||
void deleteMultiGroupDevice(List<Long> ids);
|
||||
|
||||
void deleteMultiGroup(List<Long> ids);
|
||||
|
||||
List<DockDTO> getMultiGroupDockList(String multiGroupId);
|
||||
|
||||
String privateMultiDockTaskFlightTaskCheck(MultiTaskDTO multiTaskDTO);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
|||
import cn.hutool.json.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.multictrl.common.annotation.DataFilter;
|
||||
import com.multictrl.common.constant.BusinessConstant;
|
||||
import com.multictrl.common.constant.DJIImage;
|
||||
import com.multictrl.common.constant.DockMode;
|
||||
|
|
@ -50,11 +49,17 @@ public class DockServiceImpl extends CrudServiceImpl<DockDao, DockEntity, DockDT
|
|||
public QueryWrapper<DockEntity> getWrapper(Map<String, Object> params) {
|
||||
String id = (String) params.get("id");
|
||||
String key = (String) params.get("key");
|
||||
String scenario = (String) params.get("scenario");
|
||||
Object dockSns = params.get("dockSns");
|
||||
|
||||
QueryWrapper<DockEntity> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq(StrUtil.isNotBlank(id), "id", id);
|
||||
wrapper.eq(StrUtil.isNotBlank(scenario), "scenario", scenario);
|
||||
wrapper.and(StrUtil.isNotBlank(key), qw ->
|
||||
qw.like("dock_name", key).or().eq("dock_sn", key));
|
||||
if (dockSns != null) {
|
||||
wrapper.notIn("dock_sn", (List<String>) dockSns);
|
||||
}
|
||||
wrapper.orderByDesc("update_date");
|
||||
|
||||
return wrapper;
|
||||
|
|
@ -82,7 +87,6 @@ public class DockServiceImpl extends CrudServiceImpl<DockDao, DockEntity, DockDT
|
|||
}
|
||||
|
||||
@Override
|
||||
@DataFilter
|
||||
public PageData<DockDTO> pageList(Map<String, Object> params) {
|
||||
PageData<DockDTO> page = page(params);
|
||||
for (DockDTO dockDTO : page.getList()) {
|
||||
|
|
|
|||
|
|
@ -1,27 +1,50 @@
|
|||
package com.multictrl.modules.business.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.multictrl.common.constant.BusinessConstant;
|
||||
import com.multictrl.common.constant.Constant;
|
||||
import com.multictrl.common.constant.DJIImage;
|
||||
import com.multictrl.common.constant.DockMode;
|
||||
import com.multictrl.common.exception.ErrorCode;
|
||||
import com.multictrl.common.exception.RenException;
|
||||
import com.multictrl.common.page.PageData;
|
||||
import com.multictrl.common.utils.CacheUtils;
|
||||
import com.multictrl.common.utils.ConvertUtils;
|
||||
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.flight.FlightExecute;
|
||||
import com.multictrl.modules.business.dto.multi.MultiDockDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiGroupDeviceDTO;
|
||||
import com.multictrl.modules.business.dto.multi.MultiTaskDTO;
|
||||
import com.multictrl.modules.business.dto.multi.PrivateMultiFlightBindDockInfo;
|
||||
import com.multictrl.modules.business.entity.DeviceDicEntity;
|
||||
import com.multictrl.modules.business.entity.DockDeviceEntity;
|
||||
import com.multictrl.modules.business.entity.MultiGroupDeviceEntity;
|
||||
import com.multictrl.modules.business.entity.MultiGroupEntity;
|
||||
import com.multictrl.modules.business.service.DJIBaseService;
|
||||
import com.multictrl.modules.business.service.DockService;
|
||||
import com.multictrl.modules.business.service.MultiService;
|
||||
import com.multictrl.modules.business.service.RouteFlightService;
|
||||
import jakarta.annotation.Resource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.multictrl.modules.sys.dao.SysDictDataDao;
|
||||
import com.multictrl.modules.sys.entity.SysDictDataEntity;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 阿罗斯机场 蛙跳
|
||||
|
|
@ -31,49 +54,112 @@ import org.springframework.stereotype.Service;
|
|||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class MultiServiceImpl implements MultiService {
|
||||
|
||||
@Resource
|
||||
MultiGroupDao multiGroupDao;
|
||||
@Resource
|
||||
MultiGroupDeviceDao multiGroupDeviceDao;
|
||||
@Resource
|
||||
DJIBaseService djiBaseService;
|
||||
@Resource
|
||||
RouteFlightService routeFlightService;
|
||||
|
||||
private static final String MIAO_SUAN = "miao_suan";
|
||||
|
||||
private final MultiGroupDao multiGroupDao;
|
||||
private final MultiGroupDeviceDao multiGroupDeviceDao;
|
||||
private final DJIBaseService djiBaseService;
|
||||
private final RouteFlightService routeFlightService;
|
||||
private final DockService dockService;
|
||||
private final SysDictDataDao dictDataDao;
|
||||
|
||||
@Override
|
||||
public List<MultiDockDTO> getDockList() {
|
||||
return List.of();
|
||||
public PageData<DockDTO> pageList(Map<String, Object> params) {
|
||||
List<MultiGroupDeviceEntity> multiGroupDeviceEntities = multiGroupDeviceDao.selectList(null);
|
||||
List<String> dockSns = null;
|
||||
if (CollUtil.isNotEmpty(multiGroupDeviceEntities)) {
|
||||
dockSns = multiGroupDeviceEntities.stream().map(MultiGroupDeviceEntity::getGatewaySn).toList();
|
||||
}
|
||||
params.put("dockSns", dockSns);
|
||||
PageData<DockDTO> page = dockService.page(params);
|
||||
addDockProperty(page.getList());
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageData<MultiGroupDTO> pageMultiGroup(Map<String, Object> params) {
|
||||
long curPage = 1;
|
||||
long limit = 10;
|
||||
if (params.get(Constant.PAGE) != null) {
|
||||
curPage = Long.parseLong((String) params.get(Constant.PAGE));
|
||||
}
|
||||
if (params.get(Constant.LIMIT) != null) {
|
||||
limit = Long.parseLong((String) params.get(Constant.LIMIT));
|
||||
}
|
||||
//分页对象
|
||||
Page<MultiGroupEntity> page = new Page<>(curPage, limit);
|
||||
String groupName = (String) params.get("name");
|
||||
Page<MultiGroupEntity> selectPage = multiGroupDao.selectPage(page,
|
||||
new QueryWrapper<MultiGroupEntity>()
|
||||
.eq(StrUtil.isNotBlank(groupName), "group_name", groupName)
|
||||
.orderByDesc("update_date"));
|
||||
return new PageData<>(ConvertUtils.sourceToTarget(selectPage.getRecords(), MultiGroupDTO.class), selectPage.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveMultiGroup(MultiGroupDTO multiGroupDTO) {
|
||||
|
||||
MultiGroupEntity entity = ConvertUtils.sourceToTarget(multiGroupDTO, MultiGroupEntity.class);
|
||||
multiGroupDao.insert(entity);
|
||||
}
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void saveMultiGroupDevice(MultiGroupDeviceDTO multiGroupDeviceDTO) {
|
||||
|
||||
Long groudId = multiGroupDeviceDTO.getGroudId();
|
||||
for (String gatewaySn : multiGroupDeviceDTO.getGatewaySns()) {
|
||||
MultiGroupDeviceEntity deviceEntity = new MultiGroupDeviceEntity();
|
||||
deviceEntity.setGroudId(groudId);
|
||||
deviceEntity.setGatewaySn(gatewaySn);
|
||||
multiGroupDeviceDao.insert(deviceEntity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMultiGroup(MultiGroupDTO multiGroupDTO) {
|
||||
MultiGroupEntity entity = ConvertUtils.sourceToTarget(multiGroupDTO, MultiGroupEntity.class);
|
||||
multiGroupDao.updateById(entity);
|
||||
}
|
||||
|
||||
/*@Override
|
||||
public void updateMultiGroupDevice(MultiGroupDeviceDTO multiGroupDeviceDTO) {
|
||||
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public void deleteMultiGroupDevice(List<Long> ids) {
|
||||
multiGroupDeviceDao.deleteByIds(ids);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void deleteMultiGroup(List<Long> ids) {
|
||||
//删除组
|
||||
multiGroupDao.deleteByIds(ids);
|
||||
|
||||
//删除机库组关系
|
||||
multiGroupDeviceDao.delete(new QueryWrapper<MultiGroupDeviceEntity>().in("group_id", ids));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMultiGroupDevice(MultiGroupDeviceDTO multiGroupDeviceDTO) {
|
||||
|
||||
public List<DockDTO> getMultiGroupDockList(String multiGroupId) {
|
||||
List<MultiGroupDeviceEntity> multiGroupDeviceEntities = multiGroupDeviceDao.selectList(new QueryWrapper<MultiGroupDeviceEntity>()
|
||||
.eq("group_id", multiGroupId).orderByDesc("update_date"));
|
||||
if (CollUtil.isEmpty(multiGroupDeviceEntities)) {
|
||||
return List.of();
|
||||
}
|
||||
List<String> dockSns = multiGroupDeviceEntities.stream().map(MultiGroupDeviceEntity::getGatewaySn).toList();
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("dockSns", dockSns);
|
||||
List<DockDTO> list = dockService.list(params);
|
||||
addDockProperty(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String privateMultiDockTaskFlightTaskCheck(MultiTaskDTO multiTaskDTO) {
|
||||
for (MultiDockDTO multiDockDTO : multiTaskDTO.getDocks()) {
|
||||
if (multiDockDTO.getDockType().equals(MIAO_SUAN)) {
|
||||
if (multiDockDTO.getDockType().equals(BusinessConstant.MIAO_SUAN_SIGN)) {
|
||||
continue;
|
||||
}
|
||||
String result = privateMultiDockTaskFlightTaskCheck(multiDockDTO.getDockSn());
|
||||
|
|
@ -86,23 +172,23 @@ public class MultiServiceImpl implements MultiService {
|
|||
public String privateMultiDockFlightTaskOutbound(MultiTaskDTO multiTaskDTO) {
|
||||
//第一步,调用所有机场出库
|
||||
for (MultiDockDTO multiDockDTO : multiTaskDTO.getDocks()) {
|
||||
if (multiDockDTO.getDockType().equals(MIAO_SUAN)) {
|
||||
if (multiDockDTO.getDockType().equals(BusinessConstant.MIAO_SUAN_SIGN)) {
|
||||
continue;
|
||||
}
|
||||
boolean need_drone_open = multiDockDTO.getDockSn()
|
||||
.equals(multiTaskDTO.getMiaoSuanLocatedDock().getDockSn());
|
||||
.equals(multiTaskDTO.getMiaoSuanLocatedDock().getDockSn());
|
||||
String result = privateMultiDockFlightTaskOutbound(multiDockDTO.getDockSn(),
|
||||
need_drone_open, multiTaskDTO.getMiaoSuan().getDockSn(), multiTaskDTO.getTaskId());
|
||||
need_drone_open, multiTaskDTO.getMiaoSuan().getDockSn(), multiTaskDTO.getTaskId());
|
||||
log.info("privateMultiDockFlightTaskOutbound-> 调用所有机场出库 dockSn:{},result:{}",
|
||||
multiDockDTO.getDockSn(),
|
||||
result);
|
||||
multiDockDTO.getDockSn(),
|
||||
result);
|
||||
}
|
||||
//第二步,检查机库各传感器状态,是否已经出库完成,180秒内
|
||||
int tryCount = 180;
|
||||
while (tryCount-- > 0) {
|
||||
boolean allFinished = true;
|
||||
for (MultiDockDTO multiDockDTO : multiTaskDTO.getDocks()) {
|
||||
if (multiDockDTO.getDockType().equals(MIAO_SUAN)) {
|
||||
if (multiDockDTO.getDockType().equals(BusinessConstant.MIAO_SUAN_SIGN)) {
|
||||
continue;
|
||||
}
|
||||
Object o;
|
||||
|
|
@ -115,8 +201,8 @@ public class MultiServiceImpl implements MultiService {
|
|||
//putter_state 推杆状态 {"0":"关闭","1":"打开","2":"半开","3":"推杆状态异常"}
|
||||
int putter_state = jsonObject.getInt("putter_state");
|
||||
log.info(
|
||||
"privateMultiDockFlightTaskOutbound-> 检查机库各传感器状态,是否已经出库完成 dockSn:{},cover_state:{},putter_state:{}"
|
||||
, multiDockDTO.getDockSn(), cover_state, putter_state);
|
||||
"privateMultiDockFlightTaskOutbound-> 检查机库各传感器状态,是否已经出库完成 dockSn:{},cover_state:{},putter_state:{}"
|
||||
, multiDockDTO.getDockSn(), cover_state, putter_state);
|
||||
allFinished = allFinished && cover_state == 1 && putter_state == 1;
|
||||
}
|
||||
if (allFinished) {
|
||||
|
|
@ -133,7 +219,7 @@ public class MultiServiceImpl implements MultiService {
|
|||
//获取每个机库的 经纬度/高度/备降点经纬度/备降点高度
|
||||
List<PrivateMultiFlightBindDockInfo> privateMultiFlightBindDockInfos = new ArrayList<>();
|
||||
for (MultiDockDTO multiDockDTO : multiTaskDTO.getDocks()) {
|
||||
if (multiDockDTO.getDockType().equals(MIAO_SUAN)) {
|
||||
if (multiDockDTO.getDockType().equals(BusinessConstant.MIAO_SUAN_SIGN)) {
|
||||
continue;
|
||||
}
|
||||
Object o;
|
||||
|
|
@ -148,11 +234,11 @@ public class MultiServiceImpl implements MultiService {
|
|||
privateMultiFlightBindDockInfo.setHeight(jsonObject.getDouble("height"));
|
||||
JSONObject alternate_land_point = jsonObject.getJSONObject("alternate_land_point");
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_longitude(
|
||||
alternate_land_point.getDouble("longitude"));
|
||||
alternate_land_point.getDouble("longitude"));
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_latitude(alternate_land_point.getDouble("latitude"));
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_height(alternate_land_point.getDouble("height"));
|
||||
privateMultiFlightBindDockInfo.setAlternate_land_point_safe_land_height(
|
||||
alternate_land_point.getDouble("safe_land_height"));
|
||||
alternate_land_point.getDouble("safe_land_height"));
|
||||
privateMultiFlightBindDockInfos.add(privateMultiFlightBindDockInfo);
|
||||
}
|
||||
flightExecute.setPrivateMultiFlightBindDockInfos(privateMultiFlightBindDockInfos);
|
||||
|
|
@ -165,22 +251,22 @@ public class MultiServiceImpl implements MultiService {
|
|||
public String privateMultiDockFlightTaskInbound(MultiTaskDTO multiTaskDTO) {
|
||||
//第一步,调用所有机场入库
|
||||
for (MultiDockDTO multiDockDTO : multiTaskDTO.getDocks()) {
|
||||
if (multiDockDTO.getDockType().equals(MIAO_SUAN)) {
|
||||
if (multiDockDTO.getDockType().equals(BusinessConstant.MIAO_SUAN_SIGN)) {
|
||||
continue;
|
||||
}
|
||||
boolean need_drone_close = multiDockDTO.getDockSn()
|
||||
.equals(multiTaskDTO.getMiaoSuanLocatedDock().getDockSn());
|
||||
.equals(multiTaskDTO.getMiaoSuanLocatedDock().getDockSn());
|
||||
String result = privateMultiDockFlightTaskInbound(multiDockDTO.getDockSn(),
|
||||
need_drone_close, multiTaskDTO.getMiaoSuan().getDockSn(), multiTaskDTO.getTaskId());
|
||||
need_drone_close, multiTaskDTO.getMiaoSuan().getDockSn(), multiTaskDTO.getTaskId());
|
||||
log.info("privateMultiDockFlightTaskInbound-> dockSn:{},result:{}", multiDockDTO.getDockSn(),
|
||||
result);
|
||||
result);
|
||||
}
|
||||
//第二步,判断所有机场的门都关闭了
|
||||
int tryCount = 180;
|
||||
while (tryCount-- > 0) {
|
||||
boolean allFinished = true;
|
||||
for (MultiDockDTO multiDockDTO : multiTaskDTO.getDocks()) {
|
||||
if (multiDockDTO.getDockType().equals(MIAO_SUAN)) {
|
||||
if (multiDockDTO.getDockType().equals(BusinessConstant.MIAO_SUAN_SIGN)) {
|
||||
continue;
|
||||
}
|
||||
Object o;
|
||||
|
|
@ -191,8 +277,8 @@ public class MultiServiceImpl implements MultiService {
|
|||
//cover_state 舱盖状态 {"0":"关闭","1":"打开","2":"半开","3":"舱盖状态异常"}
|
||||
int cover_state = jsonObject.getInt("cover_state");
|
||||
log.info(
|
||||
"privateMultiDockFlightTaskInbound-> 检查机库各传感器状态,是否已经入库完成 dockSn:{},cover_state:{}"
|
||||
, multiDockDTO.getDockSn(), cover_state);
|
||||
"privateMultiDockFlightTaskInbound-> 检查机库各传感器状态,是否已经入库完成 dockSn:{},cover_state:{}"
|
||||
, multiDockDTO.getDockSn(), cover_state);
|
||||
allFinished = allFinished && cover_state == 0;
|
||||
}
|
||||
if (allFinished) {
|
||||
|
|
@ -211,7 +297,7 @@ public class MultiServiceImpl implements MultiService {
|
|||
}
|
||||
|
||||
private String privateMultiDockFlightTaskOutbound(String dockSn, boolean need_drone_open, String psdk_sn,
|
||||
String task_id) {
|
||||
String task_id) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.set("need_drone_open", need_drone_open);
|
||||
jsonObject.set("psdk_sn", psdk_sn);
|
||||
|
|
@ -220,7 +306,7 @@ public class MultiServiceImpl implements MultiService {
|
|||
}
|
||||
|
||||
private String privateMultiDockFlightTaskInbound(String dockSn, boolean need_drone_close, String psdk_sn,
|
||||
String task_id) {
|
||||
String task_id) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.set("need_drone_close", need_drone_close);
|
||||
jsonObject.set("psdk_sn", psdk_sn);
|
||||
|
|
@ -228,4 +314,28 @@ public class MultiServiceImpl implements MultiService {
|
|||
return djiBaseService.executeAndReturnResult(dockSn, "private_multi_doc_dask_flighttask_inbound", jsonObject);
|
||||
}
|
||||
|
||||
//机库增加属性
|
||||
private void addDockProperty(List<DockDTO> dockDTOList) {
|
||||
for (DockDTO dockDTO : dockDTOList) {
|
||||
Integer dockModeCode = djiBaseService.getDockModeCode(dockDTO.getDockSn());
|
||||
dockDTO.setDockMode(DockMode.getDescByCode(dockModeCode));
|
||||
dockDTO.setOnline(djiBaseService.isDockOnline(dockDTO.getDockSn()));
|
||||
String dockType = dockDTO.getDockType();
|
||||
if (BusinessConstant.MIAO_SUAN_SIGN.equals(dockType)) {
|
||||
List<SysDictDataEntity> list = dictDataDao.selectList(new QueryWrapper<SysDictDataEntity>()
|
||||
.eq("dict_value", dockType).orderByAsc("create_date"));
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
dockDTO.setImgUrl(BusinessConstant.IMAGE_PATH + list.get(0).getImageUrl());
|
||||
}
|
||||
} else {
|
||||
String dockModel = dockDTO.getDockModel();
|
||||
List<SysDictDataEntity> list = dictDataDao.selectList(new QueryWrapper<SysDictDataEntity>()
|
||||
.eq("dict_value", dockModel).orderByAsc("create_date"));
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
dockDTO.setImgUrl(BusinessConstant.IMAGE_PATH + list.get(0).getImageUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ dock.name.require=\u673A\u5E93\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
|||
dock.sn.require=\u673A\u5E93SN\u7801\u4E0D\u80FD\u4E3A\u7A7A
|
||||
dock.type.require=\u673A\u5E93\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
dock.model.require=\u673A\u5E93\u578B\u53F7\u4E0D\u80FD\u4E3A\u7A7A
|
||||
dock.scenario.require=\u673A\u5E93\u4F7F\u7528\u573A\u666F\u4E0D\u80FD\u4E3A\u7A7A
|
||||
|
||||
route.name.require=\u822A\u7EBF\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
route.type.require=\u822A\u7EBF\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
|
|
|
|||
|
|
@ -2177,18 +2177,16 @@ ALTER TABLE "public"."bus_geo_photo"
|
|||
ADD CONSTRAINT "uav_mode_pkey" PRIMARY KEY ("id");
|
||||
|
||||
|
||||
|
||||
|
||||
-- 20260605 aros 蛙跳 by zhangchuang
|
||||
ALTER TABLE public.bus_dock
|
||||
ADD scenario varchar(128) NULL;
|
||||
COMMENT
|
||||
ON COLUMN public.bus_dock.scenario IS '使用场景';
|
||||
ON COLUMN public.bus_dock.scenario IS '使用场景 null或者 inspection 巡检 multi 蛙跳';
|
||||
|
||||
|
||||
CREATE TABLE public.bus_multi_group
|
||||
(
|
||||
id int8 NOT NULL,
|
||||
id int8 NOT NULL,
|
||||
group_name varchar(128) NOT NULL,
|
||||
group_mark varchar(256) NULL,
|
||||
dept_id int8 NULL,
|
||||
|
|
@ -2250,3 +2248,19 @@ COMMENT
|
|||
ON COLUMN public.bus_multi_group_device.updater IS '更新人';
|
||||
COMMENT
|
||||
ON COLUMN public.bus_multi_group_device.update_date IS '更新时间';
|
||||
|
||||
--2026/06/09
|
||||
INSERT INTO "public"."sys_dict_type" ("id", "dict_type", "dict_name", "remark", "sort", "creator", "create_date",
|
||||
"updater", "update_date")
|
||||
VALUES (2063906301022359553, 'multiDock', '蛙跳机库', '', 3, 1067246875800000001, '2026-06-08 16:49:42.345',
|
||||
1067246875800000001, '2026-06-08 16:49:42.345');
|
||||
INSERT INTO "public"."sys_dict_data" ("id", "dict_type_id", "dict_label", "dict_value", "remark", "sort", "creator",
|
||||
"create_date", "updater", "update_date", "image_url")
|
||||
VALUES (2063906448900935682, 2063906301022359553, '阿罗斯', 'AROS', '', 0, 1067246875800000001,
|
||||
'2026-06-08 16:50:17.602', 1067246875800000001, '2026-06-08 16:50:17.602', 'source-material/Aros.png');
|
||||
INSERT INTO "public"."sys_dict_data" ("id", "dict_type_id", "dict_label", "dict_value", "remark", "sort", "creator",
|
||||
"create_date", "updater", "update_date", "image_url")
|
||||
VALUES (2063906540177379330, 2063906301022359553, '妙算', 'MIAO_SUAN', '', 1, 1067246875800000001,
|
||||
'2026-06-08 16:50:39.364', 1067246875800000001, '2026-06-08 16:52:08.349',
|
||||
'source-material/miao_suan.png');
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 141 KiB |
Loading…
Reference in New Issue