Browse Source

提交:自动飞行任务

pull/1/head
袁强 3 months ago
parent
commit
91d72f3df4
  1. 26
      dk-common/common-core/src/main/java/org/dromara/common/core/constant/DeviceQrtzConstants.java
  2. 79
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java
  3. 19
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceQrtzFileDTO.java
  4. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java
  5. 6
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java
  6. 84
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java

26
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;
}

79
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.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.sample.manage.model.dto.DeviceQrtzDTO; 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.DeviceQrtzEntity;
import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity; import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity;
import org.dromara.sample.manage.service.IDeviceQrtzService; import org.dromara.sample.manage.service.IDeviceQrtzService;
@ -43,7 +44,7 @@ public class DeviceQrtzController extends BaseController {
/** /**
*自动飞行设备列表 *自动飞行任务列表
* */ * */
@SaCheckPermission("devict:qrtz:list") @SaCheckPermission("devict:qrtz:list")
@GetMapping(value = "/page") @GetMapping(value = "/page")
@ -65,7 +66,7 @@ public class DeviceQrtzController extends BaseController {
} }
/** /**
* 设备定时飞行详情 * 任务定时飞行详情
* *
* @param id 主键 * @param id 主键
*/ */
@ -78,7 +79,7 @@ public class DeviceQrtzController extends BaseController {
} }
/** /**
* 自动飞行编辑 * 自动飞行任务编辑
*/ */
@SaCheckPermission("devict:qrtz:edit") @SaCheckPermission("devict:qrtz:edit")
@Log(title = "自动飞行编辑", businessType = BusinessType.UPDATE) @Log(title = "自动飞行编辑", businessType = BusinessType.UPDATE)
@ -87,11 +88,27 @@ public class DeviceQrtzController extends BaseController {
public R<Void> edit(@Validated(EditGroup.class) @RequestBody DeviceQrtzEntity entity) { public R<Void> edit(@Validated(EditGroup.class) @RequestBody DeviceQrtzEntity entity) {
return toAjax(deviceQrtzService.updateByBo(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<Void> status(@Validated@NotNull(message = "任务id不能为空") Long id ,@NotNull(message = "状态不能为空") Integer status) {
return toAjax(deviceQrtzService.update(id,status));
}
/** /**
* 自动飞行新增 * 自动飞行任务新增
*/ */
@SaCheckPermission("devict:qrtz:add") @SaCheckPermission("devict:qrtz:add")
@Log(title = "自动飞行新增", businessType = BusinessType.INSERT) @Log(title = "自动飞行任务新增", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping() @PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody DeviceQrtzDTO deviceQrtzDTO) { public R<Void> add(@Validated(AddGroup.class) @RequestBody DeviceQrtzDTO deviceQrtzDTO) {
@ -99,15 +116,61 @@ public class DeviceQrtzController extends BaseController {
} }
/** /**
* 自动飞行删除 * 自动飞行任务删除
* *
* @param ids 主键串 * @param ids 主键串
*/ */
@SaCheckPermission("system:client:remove") @SaCheckPermission("devict:qrtz:remove")
@Log(title = "自动飞行删除", businessType = BusinessType.DELETE) @Log(title = "自动飞行任务删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) { @PathVariable Long[] ids) {
return toAjax(deviceQrtzService.deleteIds(List.of(ids))); return toAjax(deviceQrtzService.deleteIds(List.of(ids)));
} }
/** 自动飞行-新增航线*/
@SaCheckPermission("devict:qrtz:add")
@Log(title = "自动飞行新增航线", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/addFileList")
public R<Void> 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<Void> 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<Void> 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<Void> fileSort(@Validated@NotNull(message = "主键id不能为空") Long id ,@NotNull(message = "排序") Integer sort) {
return toAjax(deviceQrtzService.fileSort(id,sort));
}
} }

19
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.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -24,27 +25,27 @@ public class DeviceQrtzFileDTO {
*/ */
private String id; private String id;
private String qrtzId;
@NotNull(message = "任务id不能为空" )
private Long qrtzId;
private String fileId;
private String waylineId;
private String waylineName; private String waylineName;
private String sort; private Integer sort;
private Integer status; 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; private Date execDate;
/** /**

4
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 Long qrtzId;
private String fileId; private String waylineId;
private String waylineName; private String waylineName;
private String sort; private Integer sort;
private Integer status; private Integer status;

6
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java

@ -43,6 +43,12 @@ public interface IDeviceQrtzService {
void jobWayline(DeviceDTO deviceDTO); void jobWayline(DeviceDTO deviceDTO);
Boolean updateByBo(DeviceQrtzEntity entity); Boolean updateByBo(DeviceQrtzEntity entity);
Boolean update(Long id ,Integer status);
Boolean add( DeviceQrtzDTO deviceQrtzDTO); Boolean add( DeviceQrtzDTO deviceQrtzDTO);
Boolean deleteIds(Collection<Long> ids); Boolean deleteIds(Collection<Long> ids);
Boolean fileRemove(Long id);
Boolean addFileList(DeviceQrtzFileDTO deviceQrtzFileDTO);
Boolean copy(Long qrtzId ,String starDate,String endDate);
Boolean fileSort(Long id ,Integer sort);
} }

84
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; 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 cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; 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.IDeviceQrtzFileService;
import org.dromara.sample.manage.service.IDeviceQrtzService; import org.dromara.sample.manage.service.IDeviceQrtzService;
import org.dromara.sample.manage.service.IDeviceService; 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.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -46,6 +51,8 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
private IDeviceQrtzFileMapper deviceQrtzFileMapper; private IDeviceQrtzFileMapper deviceQrtzFileMapper;
@Autowired @Autowired
private IDeviceQrtzDateService deviceQrtzDateService; private IDeviceQrtzDateService deviceQrtzDateService;
@Autowired
private IWaylineFileMapper waylineFileMapper;
@Override @Override
public TableDataInfo<DeviceQrtzEntity> listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) { public TableDataInfo<DeviceQrtzEntity> listManageDeviceQrtz(Page page, DeviceQrtzDTO deviceQrtzDTO) {
@ -124,6 +131,14 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
return deviceQrtzMapper.updateById(entity)>0; 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 @Override
public Boolean add( DeviceQrtzDTO deviceQrtzDTO) { public Boolean add( DeviceQrtzDTO deviceQrtzDTO) {
@ -152,4 +167,73 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
} }
return deviceQrtzMapper.deleteBatchIds(ids)>0; 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<DeviceQrtzFileEntity> selectList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>()
.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<WaylineFileEntity> queryWrapper = new QueryWrapper<WaylineFileEntity>().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<DeviceQrtzFileEntity> selectList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>()
.eq("qrtz_id", qrtzId).eq("exec_date",starDate));
if(!selectList.isEmpty()){
List<DeviceQrtzFileEntity> 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;
}
} }

Loading…
Cancel
Save