|
|
@ -13,6 +13,7 @@ import org.dromara.common.core.constant.BusinessConstants; |
|
|
|
import org.dromara.common.core.constant.DeviceQrtzConstants; |
|
|
|
|
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|
|
|
import org.dromara.common.redis.utils.RedisOpsUtils; |
|
|
|
import org.dromara.common.satoken.utils.LoginHelper; |
|
|
|
|
|
|
|
import org.dromara.common.sdk.cloudapi.wayline.*; |
|
|
@ -48,6 +49,10 @@ import java.time.LocalDateTime; |
|
|
|
import java.time.LocalTime; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.ExecutorService; |
|
|
|
import java.util.concurrent.Executors; |
|
|
|
import java.util.concurrent.ExecutorService; |
|
|
|
import java.util.concurrent.Executors; |
|
|
|
|
|
|
|
/** |
|
|
|
* @auther yq |
|
|
@ -70,6 +75,8 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { |
|
|
|
// @DubboReference
|
|
|
|
// private RemoteBusinessTaskService remoteBusinessTaskService;
|
|
|
|
|
|
|
|
private ExecutorService executor = Executors.newFixedThreadPool(5); |
|
|
|
|
|
|
|
@Autowired |
|
|
|
RemoteBusinessTaskFeign remoteBusinessTaskFeign; |
|
|
|
|
|
|
@ -272,59 +279,71 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public DeviceQrtzFileEntity getDeviceQrtzFileEntity(DeviceDTO device) { |
|
|
|
if(StrUtil.isNotEmpty(device.getDeviceSn())){ |
|
|
|
// 获取当前日期
|
|
|
|
LocalDateTime currentDate = LocalDateTime.now(); |
|
|
|
// 定义日期格式
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
|
|
|
DateTimeFormatter formatterS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
|
|
|
// 格式化当前日期
|
|
|
|
String formattedDate = currentDate.format(formatter); |
|
|
|
List<DeviceQrtzFileEntity> qrtzFileEntityList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>().eq("device_sn", device.getDeviceSn()).eq("exec_date", formattedDate).eq("status", DeviceQrtzConstants.QRTZ_FILE_STATUS_1).orderByAsc("sort")); |
|
|
|
if(!qrtzFileEntityList.isEmpty()){ |
|
|
|
DeviceQrtzFileEntity deviceQrtzFileEntity = qrtzFileEntityList.get(0); |
|
|
|
List<DeviceQrtzDateEntity> qrtzDateEntityList = deviceQrtzDateMapper.listDeviceQrtzDateByQrtzAndDate(deviceQrtzFileEntity.getQrtzId()); |
|
|
|
if(!qrtzDateEntityList.isEmpty()){ |
|
|
|
// 获取当前日期和时间
|
|
|
|
for (DeviceQrtzDateEntity qrtzDate : qrtzDateEntityList) { |
|
|
|
if (!currentDate.isBefore(Convert.toLocalDateTime(qrtzDate.getStartDate())) && !currentDate.isAfter(Convert.toLocalDateTime(qrtzDate.getEndDate()))){ |
|
|
|
//获取航线数据发送之类
|
|
|
|
WaylineFileEntity waylineFileEntity = waylineFileMapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getWaylineId, deviceQrtzFileEntity.getWaylineId())); |
|
|
|
if(waylineFileEntity == null){ |
|
|
|
//更改为异常,当前航线不存在
|
|
|
|
deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_0); |
|
|
|
deviceQrtzFileMapper.updateById(deviceQrtzFileEntity); |
|
|
|
continue; |
|
|
|
} |
|
|
|
//获取是否是工单航线,是修改状态
|
|
|
|
remoteBusinessTaskFeign.updateTaskStatus(deviceQrtzFileEntity.getWaylineId(), BusinessConstants.TASK_STATUS_2,null,null); |
|
|
|
CreateJobParam createJobParam = new CreateJobParam(); |
|
|
|
try { |
|
|
|
createJobParam.setName(deviceQrtzFileEntity.getWaylineName()+""+currentDate.format(formatterS)); |
|
|
|
createJobParam.setFileId(deviceQrtzFileEntity.getWaylineId()); |
|
|
|
createJobParam.setDockSn(device.getDeviceSn()); |
|
|
|
createJobParam.setWaylineType(WaylineTypeEnum.find(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); |
|
|
|
flightTaskService.publishFlightTask(device.getWorkspaceId(),createJobParam); |
|
|
|
}catch (Exception e){ |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return null; |
|
|
|
public void getDeviceQrtzFileEntity(DeviceDTO device) { |
|
|
|
if (!StrUtil.isNotEmpty(device.getDeviceSn())) { |
|
|
|
return; |
|
|
|
} |
|
|
|
if (RedisOpsUtils.checkExist(device.getDeviceSn())) { |
|
|
|
return; |
|
|
|
} |
|
|
|
RedisOpsUtils.setWithExpire(device.getDeviceSn(), device, 180); |
|
|
|
executor.execute(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
try { |
|
|
|
// 获取当前日期
|
|
|
|
LocalDateTime currentDate = LocalDateTime.now(); |
|
|
|
// 定义日期格式
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
|
|
|
DateTimeFormatter formatterS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
|
|
|
// 格式化当前日期
|
|
|
|
String formattedDate = currentDate.format(formatter); |
|
|
|
List<DeviceQrtzFileEntity> qrtzFileEntityList = deviceQrtzFileMapper.selectList(new QueryWrapper<DeviceQrtzFileEntity>().eq("device_sn", device.getDeviceSn()).eq("exec_date", formattedDate).eq("status", DeviceQrtzConstants.QRTZ_FILE_STATUS_1).orderByAsc("sort")); |
|
|
|
if (!qrtzFileEntityList.isEmpty()) { |
|
|
|
DeviceQrtzFileEntity deviceQrtzFileEntity = qrtzFileEntityList.get(0); |
|
|
|
List<DeviceQrtzDateEntity> qrtzDateEntityList = deviceQrtzDateMapper.listDeviceQrtzDateByQrtzAndDate(deviceQrtzFileEntity.getQrtzId()); |
|
|
|
if (!qrtzDateEntityList.isEmpty()) { |
|
|
|
// 获取当前日期和时间
|
|
|
|
for (DeviceQrtzDateEntity qrtzDate : qrtzDateEntityList) { |
|
|
|
if (!currentDate.isBefore(Convert.toLocalDateTime(qrtzDate.getStartDate())) && !currentDate.isAfter(Convert.toLocalDateTime(qrtzDate.getEndDate()))) { |
|
|
|
//获取航线数据发送之类
|
|
|
|
WaylineFileEntity waylineFileEntity = waylineFileMapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getWaylineId, deviceQrtzFileEntity.getWaylineId())); |
|
|
|
if (waylineFileEntity == null) { |
|
|
|
//更改为异常,当前航线不存在
|
|
|
|
deviceQrtzFileEntity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_0); |
|
|
|
deviceQrtzFileMapper.updateById(deviceQrtzFileEntity); |
|
|
|
continue; |
|
|
|
} |
|
|
|
//获取是否是工单航线,是修改状态
|
|
|
|
// remoteBusinessTaskService.updateTaskStatus(deviceQrtzFileEntity.getWaylineId(), BusinessConstants.TASK_STATUS_2, null, null);
|
|
|
|
CreateJobParam createJobParam = new CreateJobParam(); |
|
|
|
try { |
|
|
|
createJobParam.setName(deviceQrtzFileEntity.getWaylineName() + "" + currentDate.format(formatterS)); |
|
|
|
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); |
|
|
|
flightTaskService.publishFlightTask(device.getWorkspaceId(), createJobParam,deviceQrtzFileEntity.getNickName()); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
throw new RuntimeException(e); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|