ProjectSceneGpsServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.fdkankan.manage_jp.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  8. import com.fdkankan.manage_jp.entity.ProjectSceneGps;
  9. import com.fdkankan.manage_jp.entity.ScenePlus;
  10. import com.fdkankan.manage_jp.entity.ScenePlusExt;
  11. import com.fdkankan.manage_jp.httpClient.service.LaserService;
  12. import com.fdkankan.manage_jp.mapper.IProjectSceneGpsMapper;
  13. import com.fdkankan.manage_jp.service.IProjectSceneGpsService;
  14. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  15. import com.fdkankan.manage_jp.service.IScenePlusExtService;
  16. import com.fdkankan.manage_jp.service.IScenePlusService;
  17. import com.fdkankan.manage_jp.vo.response.SceneExtGpsVo;
  18. import com.fdkankan.manage_jp.vo.response.SceneGpsVo;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import java.util.List;
  23. /**
  24. * <p>
  25. * 服务实现类
  26. * </p>
  27. *
  28. * @author
  29. * @since 2024-08-16
  30. */
  31. @Service
  32. @Slf4j
  33. public class ProjectSceneGpsServiceImpl extends ServiceImpl<IProjectSceneGpsMapper, ProjectSceneGps> implements IProjectSceneGpsService {
  34. @Autowired
  35. IScenePlusService scenePlusService;
  36. @Autowired
  37. IScenePlusExtService scenePlusExtService;
  38. @Autowired
  39. FYunFileServiceInterface fYunFileServiceInterface;
  40. @Autowired
  41. LaserService laserService;
  42. @Override
  43. public List<String> getNotGpsScene() {
  44. return this.getBaseMapper().getNotGpsScene();
  45. }
  46. @Override
  47. public void addGps(String num) {
  48. ScenePlus scenePlus = scenePlusService.getByNum(num);
  49. ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
  50. String dataSource = scenePlusExt.getDataSource();
  51. SceneGpsVo sceneGpsVo = null;
  52. if(scenePlus.getSceneStatus() == 4 || scenePlus.getSceneStatus() == 5){
  53. sceneGpsVo = getByLaserEdit(num);
  54. }else {
  55. sceneGpsVo = getByHomeParameters(dataSource);
  56. }
  57. if(sceneGpsVo == null && StrUtil.isNotBlank(scenePlusExt.getGps())){
  58. String gps = scenePlusExt.getGps();
  59. SceneExtGpsVo extGpsVo = JSONObject.parseObject(gps,SceneExtGpsVo.class);
  60. sceneGpsVo = new SceneGpsVo(extGpsVo.getLatitude(),extGpsVo.getLongitude(),extGpsVo.getAltitude(),2);
  61. }
  62. if(sceneGpsVo != null
  63. && StrUtil.isNotBlank(sceneGpsVo.getLat())
  64. && StrUtil.isNotBlank(sceneGpsVo.getLon())
  65. && StrUtil.isNotBlank(sceneGpsVo.getAlt())){
  66. ProjectSceneGps sceneGps = new ProjectSceneGps();
  67. sceneGps.setNum(num);
  68. sceneGps.setWebSite(scenePlusExt.getWebSite());
  69. sceneGps.setLat(sceneGpsVo.getLat());
  70. sceneGps.setLon(sceneGpsVo.getLon());
  71. sceneGps.setAlt(sceneGpsVo.getAlt());
  72. sceneGps.setGpsSource(sceneGpsVo.getGpsSource());
  73. sceneGps.setSceneSource(scenePlus.getSceneSource());
  74. this.save(sceneGps);
  75. }
  76. }
  77. private SceneGpsVo getByLaserEdit(String num) {
  78. return laserService.getLocation(num);
  79. }
  80. private SceneGpsVo getByHomeParameters(String dataSource) {
  81. dataSource = dataSource.replaceAll("/mnt/data", "home");
  82. boolean parametersFlag = fYunFileServiceInterface.fileExist(dataSource+"/parameters.json");
  83. if (parametersFlag) {
  84. JSONObject parameters = JSONObject.parseObject(fYunFileServiceInterface.getFileContent(dataSource+"/parameters.json"));
  85. JSONArray parametersArray = parameters.getJSONArray("parameters");
  86. for (Object o : parametersArray) {
  87. JSONObject parameter = (JSONObject) o;
  88. JSONObject ggaLocation = parameter.getJSONObject("value").getJSONObject("ggaLocation");
  89. if (ObjectUtil.isNotEmpty(ggaLocation)
  90. && StrUtil.isNotEmpty(ggaLocation.getString("lon"))
  91. && StrUtil.isNotEmpty(ggaLocation.getString("lat"))
  92. && StrUtil.isNotEmpty(ggaLocation.getString("alt"))) {
  93. log.info("从rtk获取gps信息:{}", parameters);
  94. return new SceneGpsVo(ggaLocation.getString("lat"),ggaLocation.getString("lon"),ggaLocation.getString("alt"),0);
  95. }
  96. }
  97. }
  98. return null;
  99. }
  100. @Override
  101. public void updateGps(String num,String lat,String lon,Integer type) {
  102. LambdaUpdateWrapper<ProjectSceneGps> wrapper = new LambdaUpdateWrapper<>();
  103. wrapper.eq(ProjectSceneGps::getNum,num);
  104. wrapper.set(ProjectSceneGps::getLat,lat);
  105. wrapper.set(ProjectSceneGps::getLon,lon);
  106. wrapper.set(ProjectSceneGps::getGpsSource,type);
  107. this.update(wrapper);
  108. }
  109. }