package org.sxkj.odm.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springblade.core.log.annotation.ApiLog;
|
import org.springblade.core.mp.support.Condition;
|
import org.springblade.core.mp.support.Query;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.utils.Func;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.sxkj.common.model.ResponseResult;
|
import org.sxkj.odm.entity.OdmTaskInfo;
|
import org.sxkj.odm.entity.PointParam;
|
import org.sxkj.odm.service.IOdmTaskInfoService;
|
import org.sxkj.odm.service.WebOdmSendRequest;
|
import org.sxkj.odm.vo.MapLatLng;
|
import org.sxkj.odm.vo.OdmTaskInfoQueryParam;
|
import org.sxkj.odm.vo.OdmTaskInfoVO;
|
import org.sxkj.tools.feign.IObjConvertClient;
|
import org.sxkj.system.vo.TreeVo;
|
import org.sxkj.tools.feign.ITifConvertClient;
|
import org.sxkj.tools.model.TifConvertResult;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
|
@Slf4j
|
@RestController
|
@RequestMapping("/odmTaskInfo/odmTaskInfo")
|
@Api(value = "odm任务", tags = "odm任务")
|
public class OdmTaskInfoController {
|
@Autowired
|
private WebOdmSendRequest sendRequest;
|
|
@Autowired
|
private IOdmTaskInfoService odmTaskInfoService;
|
|
@Autowired
|
private IObjConvertClient objConvertClient;
|
|
@Autowired
|
private ITifConvertClient tifConvertClient;
|
|
|
/**
|
* 自定义分页列表查询
|
*
|
* @param query
|
* @param odmTaskInfo
|
* @return
|
*/
|
@GetMapping("/page")
|
@ApiOperation(value = "自定义分页列表查询", notes = "传入odmTaskInfo")
|
public R selectDevicePage(Query query, OdmTaskInfoVO odmTaskInfo) {
|
IPage<OdmTaskInfoVO> page = odmTaskInfoService.selectOdmTaskInfoPage(Condition.getPage(query), odmTaskInfo);
|
return R.data(page);
|
}
|
|
/**
|
* odm 任务信息信息新增
|
*
|
* @param odmTaskInfo
|
* @return
|
*/
|
@ApiLog("odm 任务信息信息新增")
|
@ApiOperation(value = "odm 任务信息信息新增", notes = "传入odmTaskInfo")
|
@PostMapping("/add")
|
public R add(@RequestBody OdmTaskInfo odmTaskInfo) {
|
return R.status(odmTaskInfoService.save(odmTaskInfo));
|
}
|
|
|
/**
|
* 修改
|
*
|
* @param odmTaskInfo
|
* @return
|
*/
|
@PostMapping("/update")
|
@ApiOperation(value = "odm 任务信息信息修改", notes = "传入odmTaskInfo")
|
@ApiLog("odm 任务信息信息修改")
|
public R update(@RequestBody OdmTaskInfo odmTaskInfo) {
|
return R.status(odmTaskInfoService.updateById(odmTaskInfo));
|
}
|
|
/**
|
* 删除
|
*
|
* @param ids
|
* @return
|
*/
|
@PostMapping("/delete")
|
@ApiLog("odm 任务信息信息删除")
|
@ApiOperation(value = "odm 任务信息信息删除", notes = "传入ids")
|
public R delete(@RequestParam(value = "ids") String ids) {
|
return R.status(odmTaskInfoService.removeByIds(Func.toLongList(ids)));
|
}
|
|
/**
|
* 自定义删除
|
*
|
* @param ids
|
* @return
|
*/
|
@PostMapping("/remove")
|
@ApiLog("自定义 odm 任务信息信息删除")
|
@ApiOperation(value = "自定义 odm 任务信息信息删除", notes = "传入ids")
|
public R remove(@RequestParam(value = "ids") String ids) {
|
return R.status(odmTaskInfoService.removeOdmTaskByIds(Func.toLongList(ids)));
|
}
|
|
/**
|
* odm 任务创建
|
*
|
* @param jobId 航线任务id
|
* @param ortRes 正射影像的分辨率,单位为 cm/pixel
|
* @return
|
*/
|
@PostMapping("/createOdmTask")
|
@ApiOperation(value = "odm 任务创建", notes = "传入jobId")
|
@ApiLog("odm 任务创建")
|
public R createOdmTask(@ApiParam(value = "航线任务id", required = true) String jobId,
|
@ApiParam(value = "正射影像的分辨率,单位为 cm/pixel") Double ortRes) {
|
return R.status(odmTaskInfoService.createWebOdmTask(jobId, ortRes));
|
}
|
|
/**
|
* odm 任务重启
|
*
|
* @param taskId odm taskId 任务id
|
* @return
|
*/
|
@PostMapping("/restartOdmTask")
|
@ApiOperation(value = "odm 任务重启", notes = "传入taskId")
|
@ApiLog("odm 任务重启")
|
public R restartOdmTask(@RequestParam(value = "taskId") String taskId) {
|
return R.status(odmTaskInfoService.restartOdmTask(taskId));
|
}
|
|
/**
|
* 获取正射影像url
|
*
|
* @param jobId 航线任务id
|
* @return
|
*/
|
@GetMapping("/getOrthoimageUrl")
|
@ApiOperation(value = "获取正射影像url", notes = "传入jobId")
|
public R getOrthoimageUrl(String jobId) {
|
return R.data(odmTaskInfoService.getOrthoimageUrl(jobId));
|
}
|
|
|
/**
|
* 获取正射图斑-正射影像服务信息
|
*
|
* @param dkbh 图斑编号
|
* @param workspaceId 项目id
|
* @return
|
*/
|
@GetMapping("/getOrthoimageInfo")
|
@ApiOperation(value = "获取正射图斑-正射影像服务信息", notes = "传入dkbh")
|
public R getOrthoimageInfo(String dkbh, String workspaceId, @RequestParam(value = "jobId", required = false) String jobId) {
|
return odmTaskInfoService.getOrthoimageInfo(dkbh, workspaceId, jobId);
|
}
|
|
/**
|
* 获取正射图斑-正射影像服务信息
|
*
|
* @param lotInfoId 图斑id
|
* @param workspaceId 项目id
|
* @return
|
*/
|
@GetMapping("/getOrthoimageInfos")
|
@ApiOperation(value = "获取正射图斑-正射影像服务信息", notes = "传入dkbh")
|
public R getOrthoimageInfos(@RequestParam(value = "lotInfoId", required = false) String lotInfoId, @RequestParam(value = "workspaceId", required = false) String workspaceId, @RequestParam(value = "jobId", required = false) String jobId) {
|
return odmTaskInfoService.getOrthoimageInfos(lotInfoId, workspaceId, jobId);
|
}
|
|
/**
|
* 获取token
|
*
|
* @return
|
*/
|
@RequestMapping("/getOdmToken")
|
public R getOdmToken() {
|
String token = "JWT " + sendRequest.getOdmToken();
|
return R.data(token);
|
}
|
|
/**
|
* 更新正射影像tif 信息到 附件表
|
*
|
* @return
|
*/
|
@GetMapping("/updateOrthoimageToAttach")
|
@ApiOperation(value = "更新正射影像tif信息到附件表", notes = "")
|
public R updateOrthoimageToAttach() {
|
return odmTaskInfoService.updateOrthoimageToAttach();
|
}
|
|
/**
|
* 更新三维白膜信息到 附件表
|
*
|
* @return
|
*/
|
@GetMapping("/updateVoxGridTilesToAttach")
|
@ApiOperation(value = "更新三维白膜信息到附件表", notes = "")
|
public R updateVoxGridTilesToAttach() {
|
return odmTaskInfoService.updateVoxGridTilesToAttach();
|
}
|
|
/**
|
* 获取odm 任务下载url
|
*
|
* @param dkbh
|
* @param workspaceId
|
* @return
|
*/
|
@GetMapping("/getOdmTaskDownUrl")
|
@ApiOperation(value = "获取odm 任务下载url", notes = "传入dkbh")
|
public R getOdmTaskDownUrl(String dkbh, String workspaceId, @RequestParam(value = "jobId", required = false) String jobId) {
|
return R.data(odmTaskInfoService.getOdmTaskDownUrl(dkbh, workspaceId, jobId));
|
}
|
|
/**
|
* 定时删除odm临时文件任务
|
*
|
* @return
|
*/
|
@GetMapping("/deletedOdmTempFile")
|
public R deletedOdmTempFile() {
|
return R.data(odmTaskInfoService.deletedOdmTempFile());
|
}
|
|
/**
|
* 定时删除odm拼图任务中失效的文件
|
*
|
* @return
|
*/
|
@GetMapping("/deletedOdmTaskInVFile")
|
public R deletedOdmTaskInVFile() {
|
return R.data(odmTaskInfoService.deletedOdmTaskInVFile());
|
}
|
|
/**
|
* 定时删除odm拼图任务中重复的任务(同一个图斑多个任务,保留最新的)
|
*
|
* @return
|
*/
|
@GetMapping("/deletedRepOdmTask")
|
public R deletedRepOdmTask() {
|
return R.data(odmTaskInfoService.deletedRepOdmTask());
|
}
|
|
/**
|
* tif 图片解析
|
*
|
* @param dkbh 地块编号
|
* @return
|
*/
|
@GetMapping("/tifParse")
|
public R tifParse(String dkbh) {
|
return R.data(odmTaskInfoService.tifParse(dkbh, true, null));
|
}
|
|
|
/**
|
* 历史odm tif 数据处理
|
*
|
* @return
|
*/
|
@GetMapping("/hisOdmTaskTifDataHandler")
|
public R hisOdmTaskTifDataHandler() {
|
return R.data(odmTaskInfoService.hisOdmTaskTifDataHandler());
|
}
|
|
/**
|
* 视频处理成3d 白膜测试
|
*
|
* @return
|
*/
|
@GetMapping("/videoToOdm")
|
public R videoToOdm(String jobId) {
|
return R.data(odmTaskInfoService.videoToOdm(jobId));
|
}
|
|
|
/**
|
* 查询地图位置上3d-tiles数据
|
*
|
* @param dto
|
* @return
|
*/
|
@ApiOperation(value = "查询地图位置上3d-tiles数据", notes = "")
|
@PostMapping("/getVoxGridTilesList")
|
public ResponseResult<TreeVo> getVoxGridTilesList(@RequestBody OdmTaskInfoQueryParam dto) {
|
return ResponseResult.success(odmTaskInfoService.getVoxGridTilesList(dto));
|
}
|
|
/**
|
* 查询地图位置上3d-tiles数据-单机巢
|
*
|
* @param dto
|
* @return
|
*/
|
@ApiOperation(value = "查询地图位置上3d-tiles数据-单机巢", notes = "")
|
@PostMapping("/getVoxGridTilesListBySinglePlayer")
|
public ResponseResult getVoxGridTilesListBySinglePlayer(@RequestBody OdmTaskInfoQueryParam dto) {
|
return ResponseResult.success(odmTaskInfoService.getVoxGridTilesListBySinglePlayer(dto));
|
}
|
|
/**
|
* 历史 odm 新增相关字段数据补充
|
*
|
* @return
|
*/
|
@ApiOperation(value = "历史 odm 新增相关字段数据补充", notes = "")
|
@GetMapping("/historyOdmTaskDataHandler")
|
public ResponseResult historyOdmTaskDataHandler() {
|
return ResponseResult.success(odmTaskInfoService.historyOdmTaskDataHandler());
|
}
|
|
/**
|
* 测试远程调用资源模块
|
*
|
* @return
|
*/
|
@ApiOperation(value = "测试远程调用资源模块", notes = "")
|
@PostMapping("/testToResource")
|
public ResponseResult testToResource(@RequestParam MultipartFile file) {
|
return ResponseResult.success(odmTaskInfoService.testToResource(file));
|
}
|
|
/**
|
* 3d白膜部分生成失败补充
|
*
|
* @return
|
*/
|
@ApiOperation(value = "3d白膜部分生成失败补充", notes = "")
|
@GetMapping("/3dTilesSup")
|
public void tilesSup(OdmTaskInfoVO odmTaskInfo) {
|
odmTaskInfoService.tilesSupByParam(odmTaskInfo);
|
}
|
|
/**
|
* 获取历史 obj 网格数据
|
*
|
* @return
|
*/
|
@ApiOperation(value = "获取历史 obj 网格数据", notes = "")
|
@GetMapping("/getHisObjGridData")
|
public ResponseResult getHisObjGridData() {
|
return ResponseResult.success(odmTaskInfoService.getHisObjGridData());
|
}
|
|
/**
|
* 获取历史 点云数据
|
*
|
* @return
|
*/
|
@ApiOperation(value = "获取历史 点云数据", notes = "")
|
@GetMapping("/getHisPointCloudData")
|
public ResponseResult getHisPointCloudData() {
|
return ResponseResult.success(odmTaskInfoService.getHisPointCloudData());
|
}
|
|
|
/**
|
* 处理历史已飞的点云提取建筑生成白膜
|
*
|
* @return
|
*/
|
@ApiOperation(value = "处理历史已飞的点云提取建筑生成白膜", notes = "")
|
@GetMapping("/handleHistoryPointCloudTo3dtiles")
|
public ResponseResult handleHistoryPointCloudTo3dtiles() {
|
return ResponseResult.success(odmTaskInfoService.handleHistoryPointCloudTo3dtiles());
|
}
|
|
/**
|
* 航线飞行路径规划
|
*
|
* @return
|
*/
|
@PostMapping("/route-planning")
|
@ApiOperation(value = "航线飞行路径规划", notes = "")
|
public List<PointParam> waylineFlightPathPlanning(@RequestBody List<PointParam> param) {
|
return odmTaskInfoService.waylineFlightPathPlanning(param);
|
}
|
|
/**
|
* 保存禁飞区面数据
|
*/
|
@GetMapping("/saveMultipolygonInfo")
|
@ApiOperation(value = "保存禁飞区面数据", notes = "")
|
public Map<String, Object> saveMultipolygonInfo(@RequestParam("height") Double height, @RequestParam("geoData") String geoData) {
|
return odmTaskInfoService.saveMultipolygonInfo(height, geoData);
|
}
|
|
/**
|
* 删除禁飞区面数据
|
*/
|
@GetMapping("/deleteMultipolygonInfo")
|
@ApiOperation(value = "删除禁飞区面数据", notes = "")
|
public Boolean deleteMultipolygonInfo(@RequestParam("ids") String ids) {
|
return odmTaskInfoService.deleteGrid(ids);
|
}
|
|
/**
|
* 初始化机场附近五公里的地形高度
|
*
|
* @param centerLon 中心经度
|
* @param centerLat 中心纬度
|
* @param dockSn dock编号
|
* @return
|
*/
|
@ApiOperation(value = "初始化机场附近五公里的地形高度", notes = "")
|
@GetMapping("/initAirportTerrainHeight")
|
public R initAirportTerrainHeight(@RequestParam("centerLon") String centerLon,
|
@RequestParam("centerLat") String centerLat,
|
@RequestParam("dockSn") String dockSn) {
|
return R.data(odmTaskInfoService.cacheAirportTerrainHeightParams(centerLon, centerLat, dockSn));
|
}
|
|
// 删除机场附近五公里的地形高度
|
@ApiOperation(value = "删除机场附近五公里的地形高度", notes = "")
|
@GetMapping("/deleteAirportTerrainHeight")
|
public R deleteAirportTerrainHeight(@RequestParam("dockSn") String dockSn) {
|
return R.data(odmTaskInfoService.deleteAirportTerrainHeight(dockSn));
|
}
|
|
/**
|
* 传入航线经纬度集合,获取航线生成面的最高地形高度
|
*
|
* @param mapLatLng
|
* @return
|
*/
|
@PostMapping("/getWaylineMaxTerrainHeight")
|
@ApiOperation(value = "传入航线经纬度List,获取航线生成面的最高地形高度", notes = "")
|
public R getWaylineMaxTerrainHeight(@RequestBody List<MapLatLng> mapLatLng) {
|
return R.data(odmTaskInfoService.getWaylineMaxTerrainHeight(mapLatLng));
|
}
|
|
/**
|
* 初始化机场附近五公里的地形高度
|
*
|
* @param centerLon 中心经度
|
* @param centerLat 中心纬度
|
* @param dockSn dock编号
|
* @return
|
*/
|
// todo 用了测试的接口,先保留,后面可以删除
|
@ApiOperation(value = "初始化机场附近五公里的地形高度", notes = "")
|
@GetMapping("/initAirportTerrainHeightTwo")
|
public R initAirportTerrainHeightTwo(@RequestParam("centerLon") String centerLon,
|
@RequestParam("centerLat") String centerLat,
|
@RequestParam("dockSn") String dockSn) {
|
return R.data(odmTaskInfoService.initAirportTerrainHeight(centerLon, centerLat, dockSn));
|
}
|
|
|
/**
|
* 实景三维生成失败补充
|
*
|
* @return
|
*/
|
@ApiOperation(value = "实景三维生成失败补充", notes = "")
|
@GetMapping("/liveTilesSup")
|
public void liveTilesSup() {
|
odmTaskInfoService.liveTilesSup();
|
}
|
|
/**
|
* 测试实景三维生成失败补充
|
*
|
* @return
|
*/
|
@ApiOperation(value = "测试实景三维生成失败补充", notes = "")
|
@GetMapping("/testLiveTilesSup")
|
public String testLiveTilesSup() {
|
Map<String, Object> tifMap = new HashMap<>(1);
|
String ortPath = "E:\\shp\\222\\orthophoto.tif";
|
tifMap.put("ort_path", ortPath);
|
TifConvertResult tifConvertResult = tifConvertClient.tifConvJpeg(tifMap);
|
log.info("转换结果信息:{}", tifConvertResult);
|
log.info(tifConvertResult.getBasePath());
|
log.info(tifConvertResult.getShowPath());
|
log.info(tifConvertResult.getSmallPath());
|
|
String objPath = "E:\\temp\\webodm\\textured_model\\odm_textured_model_geo.obj";
|
String positionTxtPath = "E:\\temp\\webodm\\textured_model\\odm_georeferencing_model_geo.txt";
|
Map<String, Object> map = new HashMap<>(2);
|
map.put("obj_path", objPath);
|
map.put("pos_file_path", positionTxtPath);
|
// 远程调用接口获取结果
|
String result = objConvertClient.obj2TilesModel(map);
|
log.info(result);
|
|
return result;
|
}
|
}
|