diff --git a/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java b/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java index c0a6fe7..aac039f 100644 --- a/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java +++ b/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java @@ -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"; } diff --git a/admin/src/main/java/com/multictrl/modules/business/controller/DockController.java b/admin/src/main/java/com/multictrl/modules/business/controller/DockController.java index 4fe63c3..6a706b4 100644 --- a/admin/src/main/java/com/multictrl/modules/business/controller/DockController.java +++ b/admin/src/main/java/com/multictrl/modules/business/controller/DockController.java @@ -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> page(@Parameter(hidden = true) @RequestParam Map params) { + params.put("scenario", "inspection"); PageData page = dockService.pageList(params); return new Result>().ok(page); diff --git a/admin/src/main/java/com/multictrl/modules/business/controller/MultiController.java b/admin/src/main/java/com/multictrl/modules/business/controller/MultiController.java new file mode 100644 index 0000000..63cba02 --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/controller/MultiController.java @@ -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> page(@Parameter(hidden = true) @RequestParam Map params) { + params.put("scenario", "multi"); + PageData page = multiService.pageList(params); + + return new Result>().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> pageMultiGroup(@Parameter(hidden = true) @RequestParam Map params) { + PageData page = multiService.pageMultiGroup(params); + + return new Result>().ok(page); + } + + @PostMapping("/saveMultiGroup") + @Operation(summary = "新增蛙跳组") + @LogOperation("新增蛙跳组") + @RequiresPermissions("bus:multi:saveMultiGroup") + public Result 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 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 deleteMultiGroup(@RequestBody List ids) { + AssertUtils.isListEmpty(ids, "ids"); + multiService.deleteMultiGroup(ids); + + return new Result<>(); + } + + @PostMapping("/saveMultiGroupDevice") + @Operation(summary = "蛙跳组绑定设备") + @LogOperation("蛙跳组绑定设备") + @RequiresPermissions("bus:multi:saveMultiGroupDevice") + public Result 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 updateMultiGroupDevice(@RequestBody List ids) { + //效验数据 + AssertUtils.isListEmpty(ids, "ids"); + multiService.deleteMultiGroupDevice(ids); + + return new Result<>(); + } + + @GetMapping("/getMultiGroupDockList") + @Operation(summary = "获取蛙跳组机库列表") + public Result> getMultiGroupDockList(@RequestParam String multiGroupId) { + List list = multiService.getMultiGroupDockList(multiGroupId); + return new Result>().ok(list); + } +} diff --git a/admin/src/main/java/com/multictrl/modules/business/dto/DockDTO.java b/admin/src/main/java/com/multictrl/modules/business/dto/DockDTO.java index a6d019c..8dcedd2 100644 --- a/admin/src/main/java/com/multictrl/modules/business/dto/DockDTO.java +++ b/admin/src/main/java/com/multictrl/modules/business/dto/DockDTO.java @@ -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; diff --git a/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDTO.java b/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDTO.java index 15535b7..79f78c6 100644 --- a/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDTO.java +++ b/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDTO.java @@ -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; } diff --git a/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDeviceDTO.java b/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDeviceDTO.java index 1476db3..55f8245 100644 --- a/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDeviceDTO.java +++ b/admin/src/main/java/com/multictrl/modules/business/dto/multi/MultiGroupDeviceDTO.java @@ -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 gatewaySns; diff --git a/admin/src/main/java/com/multictrl/modules/business/entity/DockEntity.java b/admin/src/main/java/com/multictrl/modules/business/entity/DockEntity.java index f1135ba..5227591 100644 --- a/admin/src/main/java/com/multictrl/modules/business/entity/DockEntity.java +++ b/admin/src/main/java/com/multictrl/modules/business/entity/DockEntity.java @@ -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; diff --git a/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupDeviceEntity.java b/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupDeviceEntity.java index 0240d58..91c69c6 100644 --- a/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupDeviceEntity.java +++ b/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupDeviceEntity.java @@ -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; } diff --git a/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupEntity.java b/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupEntity.java index 90e7096..1b2b456 100644 --- a/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupEntity.java +++ b/admin/src/main/java/com/multictrl/modules/business/entity/MultiGroupEntity.java @@ -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; } diff --git a/admin/src/main/java/com/multictrl/modules/business/service/MultiService.java b/admin/src/main/java/com/multictrl/modules/business/service/MultiService.java index 7c1ae52..5a3d3a9 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/MultiService.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/MultiService.java @@ -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 getDockList(); + PageData pageList(Map params); + + PageData pageMultiGroup(Map 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 ids); + + void deleteMultiGroup(List ids); + + List getMultiGroupDockList(String multiGroupId); String privateMultiDockTaskFlightTaskCheck(MultiTaskDTO multiTaskDTO); diff --git a/admin/src/main/java/com/multictrl/modules/business/service/impl/DockServiceImpl.java b/admin/src/main/java/com/multictrl/modules/business/service/impl/DockServiceImpl.java index 07f698c..53e0408 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/impl/DockServiceImpl.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/impl/DockServiceImpl.java @@ -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 getWrapper(Map 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 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) dockSns); + } wrapper.orderByDesc("update_date"); return wrapper; @@ -82,7 +87,6 @@ public class DockServiceImpl extends CrudServiceImpl pageList(Map params) { PageData page = page(params); for (DockDTO dockDTO : page.getList()) { diff --git a/admin/src/main/java/com/multictrl/modules/business/service/impl/MultiServiceImpl.java b/admin/src/main/java/com/multictrl/modules/business/service/impl/MultiServiceImpl.java index 9940e31..103a552 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/impl/MultiServiceImpl.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/impl/MultiServiceImpl.java @@ -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 getDockList() { - return List.of(); + public PageData pageList(Map params) { + List multiGroupDeviceEntities = multiGroupDeviceDao.selectList(null); + List dockSns = null; + if (CollUtil.isNotEmpty(multiGroupDeviceEntities)) { + dockSns = multiGroupDeviceEntities.stream().map(MultiGroupDeviceEntity::getGatewaySn).toList(); + } + params.put("dockSns", dockSns); + PageData page = dockService.page(params); + addDockProperty(page.getList()); + return page; + } + + @Override + public PageData pageMultiGroup(Map 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 page = new Page<>(curPage, limit); + String groupName = (String) params.get("name"); + Page selectPage = multiGroupDao.selectPage(page, + new QueryWrapper() + .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 ids) { + multiGroupDeviceDao.deleteByIds(ids); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteMultiGroup(List ids) { + //删除组 + multiGroupDao.deleteByIds(ids); + + //删除机库组关系 + multiGroupDeviceDao.delete(new QueryWrapper().in("group_id", ids)); } @Override - public void updateMultiGroupDevice(MultiGroupDeviceDTO multiGroupDeviceDTO) { - + public List getMultiGroupDockList(String multiGroupId) { + List multiGroupDeviceEntities = multiGroupDeviceDao.selectList(new QueryWrapper() + .eq("group_id", multiGroupId).orderByDesc("update_date")); + if (CollUtil.isEmpty(multiGroupDeviceEntities)) { + return List.of(); + } + List dockSns = multiGroupDeviceEntities.stream().map(MultiGroupDeviceEntity::getGatewaySn).toList(); + Map params = new HashMap<>(); + params.put("dockSns", dockSns); + List 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 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 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 list = dictDataDao.selectList(new QueryWrapper() + .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 list = dictDataDao.selectList(new QueryWrapper() + .eq("dict_value", dockModel).orderByAsc("create_date")); + if (CollUtil.isNotEmpty(list)) { + dockDTO.setImgUrl(BusinessConstant.IMAGE_PATH + list.get(0).getImageUrl()); + } + } + } + } + } diff --git a/common/src/main/resources/i18n/validation.properties b/common/src/main/resources/i18n/validation.properties index b7b90be..e155e63 100644 --- a/common/src/main/resources/i18n/validation.properties +++ b/common/src/main/resources/i18n/validation.properties @@ -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 diff --git a/prj-deploy/file/pgsql/init.sql b/prj-deploy/file/pgsql/init.sql index 9c89823..681360b 100644 --- a/prj-deploy/file/pgsql/init.sql +++ b/prj-deploy/file/pgsql/init.sql @@ -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, @@ -2249,4 +2247,20 @@ ON COLUMN public.bus_multi_group_device.create_date IS '创建时间'; COMMENT ON COLUMN public.bus_multi_group_device.updater IS '更新人'; COMMENT -ON COLUMN public.bus_multi_group_device.update_date IS '更新时间'; \ No newline at end of file +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'); + diff --git a/prj-deploy/file/source-material/miao_suan.png b/prj-deploy/file/source-material/miao_suan.png new file mode 100644 index 0000000..ae1c81f Binary files /dev/null and b/prj-deploy/file/source-material/miao_suan.png differ