Browse Source

提交:无人机自动飞行逻辑修改

pull/6/head
袁强 1 month ago
parent
commit
0f261990f8
  1. 106
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java

106
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java

@ -154,12 +154,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
@Override @Override
public Boolean add( DeviceQrtzDTO deviceQrtzDTO) { public Boolean add( DeviceQrtzDTO deviceQrtzDTO) {
if(!CollectionUtils.isEmpty(deviceQrtzDTO.getDeviceQrtzDates())){
deviceQrtzDTO.getDeviceQrtzDates().forEach(e->{
e.setQrtzId(deviceQrtzDTO.getId());
deviceQrtzDateMapper.insert(e);
});
}
DeviceQrtzEntity entity = new DeviceQrtzEntity(); DeviceQrtzEntity entity = new DeviceQrtzEntity();
entity.setDeviceSn(deviceQrtzDTO.getDeviceSn()); entity.setDeviceSn(deviceQrtzDTO.getDeviceSn());
entity.setName(deviceQrtzDTO.getName()); entity.setName(deviceQrtzDTO.getName());
@ -169,7 +164,14 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
entity.setNickName(loginUser.getNickname()); entity.setNickName(loginUser.getNickname());
entity.setCreateDept(loginUser.getDeptId()); entity.setCreateDept(loginUser.getDeptId());
entity.setDeptName(loginUser.getDeptName()); entity.setDeptName(loginUser.getDeptName());
return deviceQrtzMapper.insert(entity)>0; int insert = deviceQrtzMapper.insert(entity);
if(!CollectionUtils.isEmpty(deviceQrtzDTO.getDeviceQrtzDates())){
deviceQrtzDTO.getDeviceQrtzDates().forEach(e->{
e.setQrtzId(entity.getId());
deviceQrtzDateMapper.insert(e);
});
}
return insert>0;
} }
@Override @Override
@ -190,7 +192,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
int sort=1; int sort=1;
Long qrtzId = Convert.toLong(map.get("qrtzId")); Long qrtzId = Convert.toLong(map.get("qrtzId"));
String deviceSn = Convert.toStr(map.get("deviceSn")); String deviceSn = Convert.toStr(map.get("deviceSn"));
Date execDate = Convert.toDate(map.get("execDate")); Date execDate = Convert.toDate(map.get("execDate"),new Date());
String waylineIdStr = Convert.toStr(map.get("waylineIdStr")); String waylineIdStr = Convert.toStr(map.get("waylineIdStr"));
List<DeviceQrtzFileEntity> selectList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>() List<DeviceQrtzFileEntity> selectList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>()
.eq("qrtz_id", qrtzId).eq("exec_date",execDate).orderByDesc("sort")); .eq("qrtz_id", qrtzId).eq("exec_date",execDate).orderByDesc("sort"));
@ -282,7 +284,6 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
if (RedisOpsUtils.checkExist(device.getDeviceSn())) { if (RedisOpsUtils.checkExist(device.getDeviceSn())) {
return; return;
} }
RedisOpsUtils.setWithExpire(device.getDeviceSn(), device, 180);
List<DeviceQrtzEntity> qrtzEntityList = deviceQrtzMapper.selectList(new LambdaQueryWrapper<DeviceQrtzEntity>().eq(DeviceQrtzEntity::getDeviceSn, device.getDeviceSn()).eq(DeviceQrtzEntity::getStatus, DeviceQrtzConstants.QRTZ_STATUS_1)); List<DeviceQrtzEntity> qrtzEntityList = deviceQrtzMapper.selectList(new LambdaQueryWrapper<DeviceQrtzEntity>().eq(DeviceQrtzEntity::getDeviceSn, device.getDeviceSn()).eq(DeviceQrtzEntity::getStatus, DeviceQrtzConstants.QRTZ_STATUS_1));
if(!qrtzEntityList.isEmpty()){ if(!qrtzEntityList.isEmpty()){
// 获取当前日期 // 获取当前日期
@ -292,57 +293,64 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService {
DateTimeFormatter formatterS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatterS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化当前日期 // 格式化当前日期
String formattedDate = currentDate.format(formatter); String formattedDate = currentDate.format(formatter);
List<DeviceQrtzFileEntity> qrtzFileEntityList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>().eq("device_sn", qrtzEntityList.get(0).getDeviceSn()).eq("exec_date", formattedDate).eq("qrtz_id",qrtzEntityList.get(0).getId()).eq("status", DeviceQrtzConstants.QRTZ_FILE_STATUS_1).orderByAsc("sort")); for (DeviceQrtzEntity deviceQrtzEntity : qrtzEntityList) {
if (!qrtzFileEntityList.isEmpty()) { List<DeviceQrtzDateEntity> qrtzDateEntityList = deviceQrtzDateMapper.listDeviceQrtzDateByQrtzAndDate(deviceQrtzEntity.getId());
DeviceQrtzFileEntity deviceQrtzFileEntity = qrtzFileEntityList.get(0); //判断下是否有时间
List<DeviceQrtzDateEntity> qrtzDateEntityList = deviceQrtzDateMapper.listDeviceQrtzDateByQrtzAndDate(deviceQrtzFileEntity.getQrtzId()); if(!qrtzDateEntityList.isEmpty()){
if (!qrtzDateEntityList.isEmpty()) { //遍历,当前时间是否在范围内
// 获取当前日期和时间
for (DeviceQrtzDateEntity qrtzDate : qrtzDateEntityList) { for (DeviceQrtzDateEntity qrtzDate : qrtzDateEntityList) {
//在里面执行航线,进行无人机飞行
if (!currentDate.isBefore(Convert.toLocalDateTime(qrtzDate.getStartDate())) && !currentDate.isAfter(Convert.toLocalDateTime(qrtzDate.getEndDate()))) { if (!currentDate.isBefore(Convert.toLocalDateTime(qrtzDate.getStartDate())) && !currentDate.isAfter(Convert.toLocalDateTime(qrtzDate.getEndDate()))) {
//获取航线数据发送之类 List<DeviceQrtzFileEntity> qrtzFileEntityList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>().eq("device_sn",deviceQrtzEntity.getDeviceSn()).eq("exec_date", formattedDate).eq("qrtz_id",deviceQrtzEntity.getId()).eq("status", DeviceQrtzConstants.QRTZ_FILE_STATUS_1).orderByAsc("sort"));
WaylineFileEntity waylineFileEntity = waylineFileMapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getWaylineId, deviceQrtzFileEntity.getWaylineId())); if(!qrtzFileEntityList.isEmpty()){
if (waylineFileEntity == null) { DeviceQrtzFileEntity deviceQrtzFileEntity = qrtzFileEntityList.get(0);
//更改为异常,当前航线不存在 //获取航线数据发送之类
deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_0); WaylineFileEntity waylineFileEntity = waylineFileMapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getWaylineId, deviceQrtzFileEntity.getWaylineId()));
deviceQrtzFileMapper.updateById(deviceQrtzFileEntity); if (waylineFileEntity == null) {
continue; //更改为异常,当前航线不存在
} deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_0);
//获取是否是工单航线,是修改状态
remoteBusinessTaskFeign.updateTaskStatus(deviceQrtzFileEntity.getWaylineId(), BusinessConstants.TASK_STATUS_2, null, null);
CreateJobParam createJobParam = new CreateJobParam();
try {
createJobParam.setName(deviceQrtzFileEntity.getWaylineName() + "" + currentDate.format(formatterS));
createJobParam.setWaylineName(deviceQrtzFileEntity.getWaylineName());
createJobParam.setFileId(deviceQrtzFileEntity.getWaylineId());
createJobParam.setDockSn(device.getDeviceSn());
createJobParam.setWaylineType(WaylineTypeEnum.find(Integer.parseInt(waylineFileEntity.getTemplateTypes())));
createJobParam.setTaskType(TaskTypeEnum.IMMEDIATE);
createJobParam.setJobId(UUID.randomUUID().toString());
//createJobParam.setRthAltitude();
createJobParam.setMinBatteryCapacity(50);
createJobParam.setJobType(WaylineJobTypeEnum.WISDOM_TASK);
createJobParam.setWaylinePrecisionType(WaylinePrecisionTypeEnum.RTK);
createJobParam.setOutOfControlAction(OutOfControlActionEnum.RETURN_TO_HOME);
createJobParam.setRthAltitude(120);
HttpResultResponse httpResultResponse = flightTaskService.publishFlightTask(device.getWorkspaceId(), createJobParam, deviceQrtzFileEntity.getNickName());
if(httpResultResponse.getCode() == 0){
deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_2);
deviceQrtzFileEntity.setFlightDate(new Date());
deviceQrtzFileMapper.updateById(deviceQrtzFileEntity); deviceQrtzFileMapper.updateById(deviceQrtzFileEntity);
continue; continue;
} }
deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_0); //获取是否是工单航线,是修改状态
deviceQrtzFileMapper.updateById(deviceQrtzFileEntity); remoteBusinessTaskFeign.updateTaskStatus(deviceQrtzFileEntity.getWaylineId(), BusinessConstants.TASK_STATUS_2, null, null);
} catch (Exception e) { CreateJobParam createJobParam = new CreateJobParam();
e.printStackTrace(); try {
createJobParam.setName(deviceQrtzFileEntity.getWaylineName() + "" + currentDate.format(formatterS));
createJobParam.setWaylineName(deviceQrtzFileEntity.getWaylineName());
createJobParam.setFileId(deviceQrtzFileEntity.getWaylineId());
createJobParam.setDockSn(device.getDeviceSn());
createJobParam.setWaylineType(WaylineTypeEnum.find(Integer.parseInt(waylineFileEntity.getTemplateTypes())));
createJobParam.setTaskType(TaskTypeEnum.IMMEDIATE);
createJobParam.setJobId(UUID.randomUUID().toString());
//createJobParam.setRthAltitude();
createJobParam.setMinBatteryCapacity(50);
createJobParam.setJobType(WaylineJobTypeEnum.WISDOM_TASK);
createJobParam.setWaylinePrecisionType(WaylinePrecisionTypeEnum.RTK);
createJobParam.setOutOfControlAction(OutOfControlActionEnum.RETURN_TO_HOME);
createJobParam.setRthAltitude(120);
HttpResultResponse httpResultResponse = flightTaskService.publishFlightTask(device.getWorkspaceId(), createJobParam, deviceQrtzFileEntity.getNickName());
if(httpResultResponse.getCode() == 0){
deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_2);
deviceQrtzFileEntity.setFlightDate(new Date());
deviceQrtzFileMapper.updateById(deviceQrtzFileEntity);
continue;
}
deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_0);
deviceQrtzFileMapper.updateById(deviceQrtzFileEntity);
RedisOpsUtils.setWithExpire(device.getDeviceSn(), device, 180);
return;
} catch (Exception e) {
e.printStackTrace();
}
} }
} }
} }
} }
} }
} }

Loading…
Cancel
Save