From 91d72f3df45dfc6b64c98911aa35b32f54bfb851 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 26 Mar 2025 17:33:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4:=E8=87=AA=E5=8A=A8=E9=A3=9E?= =?UTF-8?q?=E8=A1=8C=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/DeviceQrtzConstants.java | 26 ++++++ .../controller/DeviceQrtzController.java | 79 +++++++++++++++-- .../manage/model/dto/DeviceQrtzFileDTO.java | 19 +++-- .../model/entity/DeviceQrtzFileEntity.java | 4 +- .../manage/service/IDeviceQrtzService.java | 6 ++ .../service/impl/DeviceQrtzServiceImpl.java | 84 +++++++++++++++++++ 6 files changed, 199 insertions(+), 19 deletions(-) create mode 100644 dk-common/common-core/src/main/java/org/dromara/common/core/constant/DeviceQrtzConstants.java diff --git a/dk-common/common-core/src/main/java/org/dromara/common/core/constant/DeviceQrtzConstants.java b/dk-common/common-core/src/main/java/org/dromara/common/core/constant/DeviceQrtzConstants.java new file mode 100644 index 0000000..567a291 --- /dev/null +++ b/dk-common/common-core/src/main/java/org/dromara/common/core/constant/DeviceQrtzConstants.java @@ -0,0 +1,26 @@ +package org.dromara.common.core.constant; + +/** + * @auther yq + * @data 2025/3/26 + */ +public interface DeviceQrtzConstants { + + /** + * 任务状态 状态(1-使用,2-暂停,0-异常暂停) + * */ + int QRTZ_STATUS_0=0; + int QRTZ_STATUS_1=1; + int QRTZ_STATUS_2=2; + + /** + * + * 任务航线状态 状态(1-暂未飞行,2-正在飞行,3-飞行结束,0-异常暂停) + * */ + + int QRTZ_FILE_STATUS_0=0; + int QRTZ_FILE_STATUS_1=1; + int QRTZ_FILE_STATUS_2=2; + int QRTZ_FILE_STATUS_3=3; + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java index 4c923c1..79cabc0 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java @@ -15,6 +15,7 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.sample.manage.model.dto.DeviceQrtzDTO; +import org.dromara.sample.manage.model.dto.DeviceQrtzFileDTO; import org.dromara.sample.manage.model.entity.DeviceQrtzEntity; import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity; import org.dromara.sample.manage.service.IDeviceQrtzService; @@ -43,7 +44,7 @@ public class DeviceQrtzController extends BaseController { /** - *自动飞行设备列表 + *自动飞行任务列表 * */ @SaCheckPermission("devict:qrtz:list") @GetMapping(value = "/page") @@ -65,7 +66,7 @@ public class DeviceQrtzController extends BaseController { } /** - * 设备定时飞行详情 + * 任务定时飞行详情 * * @param id 主键 */ @@ -78,7 +79,7 @@ public class DeviceQrtzController extends BaseController { } /** - * 自动飞行编辑 + * 自动飞行任务编辑 */ @SaCheckPermission("devict:qrtz:edit") @Log(title = "自动飞行编辑", businessType = BusinessType.UPDATE) @@ -87,11 +88,27 @@ public class DeviceQrtzController extends BaseController { public R edit(@Validated(EditGroup.class) @RequestBody DeviceQrtzEntity entity) { return toAjax(deviceQrtzService.updateByBo(entity)); } + /** - * 自动飞行新增 + * 自动飞行任务启停 + * @param status 1-使用,2-暂停 + * @param id 主键 + */ + @SaCheckPermission("devict:qrtz:edit") + @Log(title = "自动飞行任务启停", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("status") + public R status(@Validated@NotNull(message = "任务id不能为空") Long id ,@NotNull(message = "状态不能为空") Integer status) { + return toAjax(deviceQrtzService.update(id,status)); + } + + + + /** + * 自动飞行任务新增 */ @SaCheckPermission("devict:qrtz:add") - @Log(title = "自动飞行新增", businessType = BusinessType.INSERT) + @Log(title = "自动飞行任务新增", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody DeviceQrtzDTO deviceQrtzDTO) { @@ -99,15 +116,61 @@ public class DeviceQrtzController extends BaseController { } /** - * 自动飞行删除 + * 自动飞行任务删除 * * @param ids 主键串 */ - @SaCheckPermission("system:client:remove") - @Log(title = "自动飞行删除", businessType = BusinessType.DELETE) + @SaCheckPermission("devict:qrtz:remove") + @Log(title = "自动飞行任务删除", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(deviceQrtzService.deleteIds(List.of(ids))); } + + /** 自动飞行-新增航线*/ + @SaCheckPermission("devict:qrtz:add") + @Log(title = "自动飞行新增航线", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/addFileList") + public R addFileList(@Validated(AddGroup.class) @RequestBody DeviceQrtzFileDTO deviceQrtzFileDTO) { + return toAjax(deviceQrtzService.addFileList(deviceQrtzFileDTO)); + } + + + /** 自动飞行-复制航线*/ + @SaCheckPermission("devict:qrtz:copy") + @Log(title = "自动飞行新增航线", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/copy") + public R copy(@Validated@NotNull(message = "任务id不能为空") Long qrtzId ,@NotNull(message = "请选择原来的时间") String starDate,@NotNull(message ="请选择新的时间") String endDate) { + return toAjax(deviceQrtzService.copy(qrtzId,starDate,endDate)); + } + + /** + * 自动飞行航线删除 + * + * @param id + */ + @SaCheckPermission("devict:qrtz:remove") + @Log(title = "自动飞行航线删除", businessType = BusinessType.DELETE) + @DeleteMapping("/fileRemove/{id}") + public R fileRemove(@NotEmpty(message = "主键不能为空") + @PathVariable Long id) { + return toAjax(deviceQrtzService.fileRemove(id)); + } + + + /** + * 自动飞行编辑航线排序 + * @param id 主键id + * @param sort 排序 + * */ + @SaCheckPermission("devict:qrtz:edit") + @Log(title = "自动飞行编辑航线排序", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/fileSort") + public R fileSort(@Validated@NotNull(message = "主键id不能为空") Long id ,@NotNull(message = "排序") Integer sort) { + return toAjax(deviceQrtzService.fileSort(id,sort)); + } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzFileDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzFileDTO.java index 0033b2c..22ddf03 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzFileDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzFileDTO.java @@ -3,6 +3,7 @@ package org.dromara.sample.manage.model.dto; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,27 +25,27 @@ public class DeviceQrtzFileDTO { */ private String id; - private String qrtzId; + @NotNull(message = "任务id不能为空" ) + private Long qrtzId; - private String fileId; + private String waylineId; private String waylineName; - private String sort; + private Integer sort; private Integer status; - @TableField(exist = false) - private Integer fileNumber; - - @TableField(exist = false) - private String fileStr; + private Integer fileNumber; + /**多选 逗号隔开*/ + @NotNull(message = "waylineId 多选逗号隔开" ) + private String waylineIdStr; /** * 飞行时间 */ @@ -54,7 +55,7 @@ public class DeviceQrtzFileDTO { /** * 执行时间 */ - + @NotNull(message = "计划日期不能为空" ) private Date execDate; /** diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java index 0badac3..6f43149 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java @@ -33,13 +33,13 @@ public class DeviceQrtzFileEntity implements Serializable { private Long qrtzId; - private String fileId; + private String waylineId; private String waylineName; - private String sort; + private Integer sort; private Integer status; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java index 2631adb..bcd2f01 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java @@ -43,6 +43,12 @@ public interface IDeviceQrtzService { void jobWayline(DeviceDTO deviceDTO); Boolean updateByBo(DeviceQrtzEntity entity); + Boolean update(Long id ,Integer status); Boolean add( DeviceQrtzDTO deviceQrtzDTO); Boolean deleteIds(Collection ids); + Boolean fileRemove(Long id); + Boolean addFileList(DeviceQrtzFileDTO deviceQrtzFileDTO); + + Boolean copy(Long qrtzId ,String starDate,String endDate); + Boolean fileSort(Long id ,Integer sort); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java index a62fa5f..ba62b61 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java @@ -1,9 +1,12 @@ package org.dromara.sample.manage.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.dromara.common.core.constant.DeviceQrtzConstants; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; @@ -21,6 +24,8 @@ import org.dromara.sample.manage.service.IDeviceQrtzDateService; import org.dromara.sample.manage.service.IDeviceQrtzFileService; import org.dromara.sample.manage.service.IDeviceQrtzService; import org.dromara.sample.manage.service.IDeviceService; +import org.dromara.sample.wayline.mapper.IWaylineFileMapper; +import org.dromara.sample.wayline.model.entity.WaylineFileEntity; import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,6 +51,8 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { private IDeviceQrtzFileMapper deviceQrtzFileMapper; @Autowired private IDeviceQrtzDateService deviceQrtzDateService; + @Autowired + private IWaylineFileMapper waylineFileMapper; @Override public TableDataInfo listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) { @@ -124,6 +131,14 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { return deviceQrtzMapper.updateById(entity)>0; } + @Override + public Boolean update(Long id, Integer status) { + DeviceQrtzEntity entity = new DeviceQrtzEntity(); + entity.setId(id); + entity.setStatus(status); + return deviceQrtzMapper.updateById(entity)>0; + } + @Override public Boolean add( DeviceQrtzDTO deviceQrtzDTO) { @@ -152,4 +167,73 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { } return deviceQrtzMapper.deleteBatchIds(ids)>0; } + + @Override + public Boolean fileRemove(Long id) { + return deviceQrtzFileMapper.deleteById(id)>0; + } + + @Override + public Boolean addFileList(DeviceQrtzFileDTO deviceQrtzFileDTO) { + int sort=1; + List selectList = deviceQrtzFileMapper.selectList(new QueryWrapper() + .eq("qrtz_id", deviceQrtzFileDTO.getQrtzId()).eq("exec_date",deviceQrtzFileDTO.getExecDate()) + .orderByDesc("sort")); + if(!CollectionUtils.isEmpty(selectList)){ + Integer number =selectList.get(0).getSort(); + if(ObjectUtil.isNotEmpty(number)){ + sort=number+1; + } + } + for (String waylineId : deviceQrtzFileDTO.getWaylineIdStr().split(",")) { + DeviceQrtzFileEntity entity = new DeviceQrtzFileEntity(); + QueryWrapper queryWrapper = new QueryWrapper().eq("wayline_id", waylineId); + WaylineFileEntity fileEntity = waylineFileMapper.selectOne(queryWrapper); + entity.setQrtzId(deviceQrtzFileDTO.getQrtzId()); + entity.setWaylineId(waylineId); + entity.setWaylineName(fileEntity.getName()); + try { + entity.setSort(sort); + entity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_1); + entity.setExecDate(deviceQrtzFileDTO.getExecDate()); + + sort=sort+1; + deviceQrtzFileMapper.insert(entity); + }catch (Exception e){ + throw new RuntimeException("航线{"+fileEntity.getName()+"}已报错,需要重新添加,报错信息:"+e.getMessage()); + } + + } + return true; + } + + @Override + public Boolean copy(Long qrtzId, String starDate, String endDate) { + List selectList = deviceQrtzFileMapper.selectList(new QueryWrapper() + .eq("qrtz_id", qrtzId).eq("exec_date",starDate)); + if(!selectList.isEmpty()){ + List entityList = selectList.stream().map(e -> { + DeviceQrtzFileEntity entity = new DeviceQrtzFileEntity(); + entity.setQrtzId(e.getQrtzId()); + entity.setWaylineId(e.getWaylineId()); + entity.setWaylineName(e.getWaylineName()); + entity.setSort(e.getSort()); + entity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_1); + entity.setExecDate(Convert.toDate(endDate)); + return entity; + }).toList(); + return deviceQrtzFileMapper.insert(entityList).size()>0; + }else { + throw new RuntimeException("未获取到需要复制的航线"); + } + + } + + @Override + public Boolean fileSort(Long id, Integer sort) { + DeviceQrtzFileEntity entity = new DeviceQrtzFileEntity(); + entity.setSort(sort); + entity.setId(id); + return deviceQrtzFileMapper.updateById(entity)>0; + } }