package com.dji.sample.patches.utils;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.dji.sample.common.model.CustomClaim;
|
import com.dji.sample.patches.config.pojo.PatchesConfigPojo;
|
import com.dji.sample.patches.dao.ShpToDataSourceMapper;
|
import com.dji.sample.patches.model.entity.LotInfo;
|
import com.dji.sample.patches.xml.mode.XMLTemplateModel;
|
import com.dji.sample.patches.xml.utils.CreateWaylineFileUtils;
|
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
|
import com.dji.sample.wayline.model.entity.WaylineFileEntity;
|
import com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum;
|
import com.dji.sample.wayline.model.param.CreateJobParam;
|
import com.dji.sample.wayline.service.IWayLineTaskService;
|
import com.dji.sample.wayline.service.IWaylineFileService;
|
import com.dji.sample.wayline.service.IWaylineJobService;
|
import org.locationtech.jts.geom.Coordinate;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.multipart.MultipartFile;
|
import java.io.File;
|
import java.io.IOException;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.UUID;
|
|
import static com.dji.sample.patches.utils.MultipartFileTOFileUtil.convert;
|
import static com.dji.sample.patches.utils.ZipUtil.zipFolder;
|
import static com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum.TIMED;
|
import static com.dji.sample.wayline.model.enums.WaylineTemplateTypeEnum.WAYPOINT;
|
|
@Component
|
public class TimerUtil {
|
@Autowired
|
private ShpToDataSourceMapper shpToDataSourceMapper;
|
@Autowired
|
private PatchesConfigPojo patchesConfigPojo;
|
@Autowired
|
public IWaylineFileService waylineFileService;
|
@Autowired
|
private IWaylineJobService waylineJobService;
|
@Autowired
|
private IWayLineTaskService wayLineTaskService;
|
|
/**
|
* 定时
|
* @throws IOException
|
* @throws SQLException
|
*/
|
@Scheduled(cron = "0 25 14 * * ?")
|
public void myTask() throws IOException, SQLException {
|
//获取未规划的图斑集合
|
List<LotInfo> list = getNoPlan();
|
long timestamp = System.currentTimeMillis();
|
String waylineName = "云飞行调查" + timestamp;
|
String workspaceId ="4a574db8-4ad3-48f7-9f16-3edbcd8056e1";
|
//根据获取的图斑集合获得kmz航线文件
|
MultipartFile multipartFile = getFile(waylineName, list);
|
//上传航线文件
|
String waylineId=backWayline(multipartFile, waylineName, workspaceId, backclaim().getUsername());
|
//将为规划的图斑状态更新为已规划
|
updateStatu(list);
|
//调用publshFlightTask方法创建定时任务
|
waylineJobService.publishFlightTask(JobParam(waylineId), backclaim());
|
}
|
|
public MultipartFile getFile(String waylineName, List<LotInfo> list) throws IOException {
|
List<PointPO> coordinates = GeoToolsUtil.getRoutePointOrder(list, 28.218512, 115.856725497);
|
XMLTemplateModel xmlModel = XMLTemplateModel.init(coordinates, list);
|
CreateWaylineFileUtils.createWaylineFile(xmlModel, patchesConfigPojo.getTemplate(), patchesConfigPojo.getTargetTemplate(), patchesConfigPojo.getWaylines(), patchesConfigPojo.getTargetWaylines());
|
String destKMZFile = patchesConfigPojo.getDestKMZFile() + waylineName + ".kmz";
|
zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
|
MultipartFile multipartFile = convert(new File(destKMZFile));
|
return multipartFile;
|
}
|
|
public String backWayline(MultipartFile multipartFile, String waylineName, String workspaceId,String username) {
|
waylineFileService.importKmzFileBack(multipartFile, workspaceId,username);
|
WaylineFileEntity entity = waylineFileService.selectByName(waylineName);
|
try {
|
waylineFileService.getObjectUrl(workspaceId, entity.getWaylineId());
|
} catch (SQLException e) {
|
throw new RuntimeException(e);
|
}
|
return entity.getWaylineId();
|
}
|
|
public List<LotInfo> getNoPlan() {
|
return shpToDataSourceMapper.selectList(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getIsplan, 0));
|
}
|
|
public void updateStatu(List<LotInfo> list) {
|
for (LotInfo lotInfo : list) {
|
lotInfo.setIsplan(1);
|
shpToDataSourceMapper.updateById(lotInfo);
|
}
|
}
|
public CreateJobParam JobParam(String waylineId) {
|
List<List<Long>> listOfLists = new ArrayList<>();
|
List<Long> sublist = new ArrayList<>();
|
sublist.add(1714944600L); // 添加整数值
|
listOfLists.add(sublist);
|
List<Long> list = new ArrayList<>();
|
list.add(1714944600L);
|
CreateJobParam param = new CreateJobParam();
|
param.setName("云飞行调查");
|
param.setTaskType(TIMED);
|
param.setOutOfControlAction(0);
|
param.setRepFreType(3);
|
param.setRepFreVal(1);
|
param.setRepRuleType(1);
|
param.setExecuteStartTimeArr(listOfLists);
|
param.setRthAltitude(80);
|
param.setWaylineType(WAYPOINT);
|
param.setTaskPeriods(listOfLists);
|
param.setTaskDays(list);
|
param.setFileId(waylineId);
|
param.setDockSn("4TADKCMB010016");
|
return param;
|
}
|
public CustomClaim backclaim() {
|
CustomClaim claim=new CustomClaim();
|
claim.setId("1");
|
claim.setUsername("adminPC");
|
claim.setWorkspaceId("4a574db8-4ad3-48f7-9f16-3edbcd8056e1");
|
claim.setUserType(1);
|
return claim;
|
}
|
}
|