|
|
@ -1,6 +1,12 @@ |
|
|
|
package org.dromara.sample.control.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import org.dromara.common.satoken.utils.LoginHelper; |
|
|
|
import org.dromara.common.sdk.cloudapi.wayline.OutOfControlActionEnum; |
|
|
|
import org.dromara.common.sdk.cloudapi.wayline.TaskTypeEnum; |
|
|
|
import org.dromara.common.sdk.cloudapi.wayline.WaylineJobTypeEnum; |
|
|
|
import org.dromara.common.sdk.cloudapi.wayline.WaylineTypeEnum; |
|
|
|
import org.dromara.sample.manage.model.dto.DeviceDTO; |
|
|
|
import org.dromara.sample.manage.service.IDevicePayloadService; |
|
|
|
import org.dromara.sample.manage.service.IDeviceRedisService; |
|
|
@ -26,10 +32,16 @@ import org.dromara.sample.control.model.enums.DroneAuthorityEnum; |
|
|
|
import org.dromara.sample.control.model.enums.RemoteDebugMethodEnum; |
|
|
|
import org.dromara.sample.control.model.param.*; |
|
|
|
import org.dromara.sample.control.service.IControlService; |
|
|
|
import org.dromara.sample.wayline.mapper.IWaylineJobMapper; |
|
|
|
import org.dromara.sample.wayline.model.entity.WaylineJobEntity; |
|
|
|
import org.dromara.sample.wayline.model.enums.WaylineJobStatusEnum; |
|
|
|
import org.dromara.sample.wayline.service.IWaylineJobService; |
|
|
|
import org.dromara.system.api.model.LoginUser; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Qualifier; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.util.Date; |
|
|
|
import java.util.Objects; |
|
|
|
import java.util.Optional; |
|
|
|
import java.util.UUID; |
|
|
@ -69,6 +81,10 @@ public class ControlServiceImpl implements IControlService { |
|
|
|
@Qualifier("SDKWaylineService") |
|
|
|
private AbstractWaylineService abstractWaylineService; |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
private IWaylineJobMapper waylineJobMapper; |
|
|
|
|
|
|
|
private RemoteDebugHandler checkDebugCondition(String sn, RemoteDebugParam param, RemoteDebugMethodEnum controlMethodEnum) { |
|
|
|
RemoteDebugHandler handler = Objects.nonNull(controlMethodEnum.getClazz()) ? |
|
|
|
mapper.convertValue(Objects.nonNull(param) ? param : new Object(), controlMethodEnum.getClazz()) |
|
|
@ -163,17 +179,39 @@ public class ControlServiceImpl implements IControlService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public HttpResultResponse takeoffToPoint(String sn, TakeoffToPointParam param) { |
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
|
checkTakeoffCondition(sn); |
|
|
|
|
|
|
|
Optional<DeviceDTO> dockOpt = deviceRedisService.getDeviceOnline(sn); |
|
|
|
param.setFlightId(UUID.randomUUID().toString()); |
|
|
|
WaylineJobEntity waylineJobEntity = new WaylineJobEntity(); |
|
|
|
waylineJobEntity.setJobId(param.getFlightId()); |
|
|
|
waylineJobEntity.setName(dockOpt.get().getNickname()+ DateUtil.date(System.currentTimeMillis())); |
|
|
|
waylineJobEntity.setWaylineName(dockOpt.get().getNickname()+ DateUtil.date(System.currentTimeMillis())); |
|
|
|
waylineJobEntity.setDockSn(sn); |
|
|
|
waylineJobEntity.setWorkspaceId(dockOpt.get().getWorkspaceId()); |
|
|
|
waylineJobEntity.setTaskType(TaskTypeEnum.IMMEDIATE.getType()); |
|
|
|
waylineJobEntity.setWaylineType(WaylineTypeEnum.WAYPOINT.getValue()); |
|
|
|
waylineJobEntity.setUsername(loginUser.getUsername()); |
|
|
|
waylineJobEntity.setExecuteTime(new Date()); |
|
|
|
waylineJobEntity.setBeginTime(new Date()); |
|
|
|
waylineJobEntity.setStatus(WaylineJobStatusEnum.PENDING.getVal()); |
|
|
|
waylineJobEntity.setOutOfControlAction(OutOfControlActionEnum.RETURN_TO_HOME.getAction()); |
|
|
|
waylineJobEntity.setRthAltitude(Integer.parseInt(param.getRthAltitude().toString())); |
|
|
|
waylineJobEntity.setMediaCount(0); |
|
|
|
waylineJobEntity.setJobType(WaylineJobTypeEnum.PEOPLE_TASK.getType()); |
|
|
|
TopicServicesResponse<ServicesReplyData> response = abstractControlService.takeoffToPoint( |
|
|
|
SDKManager.getDeviceSDK(sn), mapper.convertValue(param, TakeoffToPointRequest.class)); |
|
|
|
ServicesReplyData reply = response.getData(); |
|
|
|
if (reply.getResult().isSuccess()) { |
|
|
|
waylineJobEntity.setCreateTime(new Date()); |
|
|
|
waylineJobMapper.insert(waylineJobEntity); |
|
|
|
} |
|
|
|
return reply.getResult().isSuccess() ? |
|
|
|
HttpResultResponse.success() |
|
|
|
: HttpResultResponse.error("无人机未能起飞。" + reply.getResult()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public HttpResultResponse seizeAuthority(String sn, DroneAuthorityEnum authority, DronePayloadParam param) { |
|
|
|
TopicServicesResponse<ServicesReplyData> response; |
|
|
|