浏览代码

场景gps坐标获取

lyhzzz 1 年之前
父节点
当前提交
5096afc450
共有 27 个文件被更改,包括 719 次插入85 次删除
  1. 52 0
      src/main/java/com/fdkankan/manage_jp/controller/ProjectController.java
  2. 0 21
      src/main/java/com/fdkankan/manage_jp/controller/RoleController.java
  3. 0 21
      src/main/java/com/fdkankan/manage_jp/controller/SceneCopyLogController.java
  4. 0 21
      src/main/java/com/fdkankan/manage_jp/controller/SceneEditControlsController.java
  5. 0 21
      src/main/java/com/fdkankan/manage_jp/controller/SceneEditInfoExtController.java
  6. 66 0
      src/main/java/com/fdkankan/manage_jp/entity/Project.java
  7. 54 0
      src/main/java/com/fdkankan/manage_jp/entity/ProjectNum.java
  8. 84 0
      src/main/java/com/fdkankan/manage_jp/entity/ProjectSceneGps.java
  9. 1 1
      src/main/java/com/fdkankan/manage_jp/generate/AutoGenerate.java
  10. 6 0
      src/main/java/com/fdkankan/manage_jp/httpClient/client/LaserClient.java
  11. 43 0
      src/main/java/com/fdkankan/manage_jp/httpClient/service/LaserService.java
  12. 18 0
      src/main/java/com/fdkankan/manage_jp/mapper/IProjectMapper.java
  13. 18 0
      src/main/java/com/fdkankan/manage_jp/mapper/IProjectNumMapper.java
  14. 21 0
      src/main/java/com/fdkankan/manage_jp/mapper/IProjectSceneGpsMapper.java
  15. 16 0
      src/main/java/com/fdkankan/manage_jp/service/IProjectNumService.java
  16. 25 0
      src/main/java/com/fdkankan/manage_jp/service/IProjectSceneGpsService.java
  17. 22 0
      src/main/java/com/fdkankan/manage_jp/service/IProjectService.java
  18. 20 0
      src/main/java/com/fdkankan/manage_jp/service/impl/ProjectNumServiceImpl.java
  19. 121 0
      src/main/java/com/fdkankan/manage_jp/service/impl/ProjectSceneGpsServiceImpl.java
  20. 59 0
      src/main/java/com/fdkankan/manage_jp/service/impl/ProjectServiceImpl.java
  21. 35 0
      src/main/java/com/fdkankan/manage_jp/task/TaskService.java
  22. 11 0
      src/main/java/com/fdkankan/manage_jp/vo/request/ProjectParam.java
  23. 15 0
      src/main/java/com/fdkankan/manage_jp/vo/response/SceneExtGpsVo.java
  24. 13 0
      src/main/java/com/fdkankan/manage_jp/vo/response/SceneGpsVo.java
  25. 5 0
      src/main/resources/mapper/manage_jp/ProjectMapper.xml
  26. 5 0
      src/main/resources/mapper/manage_jp/ProjectNumMapper.xml
  27. 9 0
      src/main/resources/mapper/manage_jp/ProjectSceneGpsMapper.xml

+ 52 - 0
src/main/java/com/fdkankan/manage_jp/controller/ProjectController.java

@@ -0,0 +1,52 @@
+package com.fdkankan.manage_jp.controller;
+
+
+import com.fdkankan.manage_jp.common.Result;
+import com.fdkankan.manage_jp.entity.Project;
+import com.fdkankan.manage_jp.service.IProjectService;
+import com.fdkankan.manage_jp.vo.request.ProjectParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+@RestController
+@RequestMapping("/manage_jp/project")
+public class ProjectController extends BaseController{
+
+    @Autowired
+    IProjectService projectService;
+
+
+    @PostMapping("/list")
+    public Result list(@RequestBody ProjectParam param){
+        param.setUserId(getUser().getId());
+        return Result.success(projectService.pageList(param));
+    }
+
+    @PostMapping("/saveOrUpdate")
+    public Result saveOrUpdate(@RequestBody Project param){
+        if(param.getId() == null){
+            param.setCreateId(getUser().getId());
+        }
+        projectService.addOrUpdate(param);
+        return Result.success();
+    }
+
+    @PostMapping("/del")
+    public Result del(@RequestBody Project param){
+        projectService.del(param);
+        return Result.success();
+    }
+}
+

+ 0 - 21
src/main/java/com/fdkankan/manage_jp/controller/RoleController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.manage_jp.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 角色表 前端控制器
- * </p>
- *
- * @author 
- * @since 2023-01-04
- */
-@RestController
-@RequestMapping("/manage_jp/role")
-public class RoleController {
-
-}
-

+ 0 - 21
src/main/java/com/fdkankan/manage_jp/controller/SceneCopyLogController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.manage_jp.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author 
- * @since 2023-04-23
- */
-@RestController
-@RequestMapping("/manage_jp/sceneCopyLog")
-public class SceneCopyLogController {
-
-}
-

+ 0 - 21
src/main/java/com/fdkankan/manage_jp/controller/SceneEditControlsController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.manage_jp.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author 
- * @since 2023-04-23
- */
-@RestController
-@RequestMapping("/manage_jp/sceneEditControls")
-public class SceneEditControlsController {
-
-}
-

+ 0 - 21
src/main/java/com/fdkankan/manage_jp/controller/SceneEditInfoExtController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.manage_jp.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author 
- * @since 2023-04-23
- */
-@RestController
-@RequestMapping("/manage_jp/sceneEditInfoExt")
-public class SceneEditInfoExtController {
-
-}
-

+ 66 - 0
src/main/java/com/fdkankan/manage_jp/entity/Project.java

@@ -0,0 +1,66 @@
+package com.fdkankan.manage_jp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+@Getter
+@Setter
+@TableName("t_project")
+public class Project implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目名称
+     */
+    @TableField("project_name")
+    private String projectName;
+
+    /**
+     * 项目编号
+     */
+    @TableField("project_sn")
+    private String projectSn;
+
+    /**
+     * 是否显示 0否,1是
+     */
+    @TableField("is_show")
+    private Integer isShow;
+
+    /**
+     * 创建人
+     */
+    @TableField("create_id")
+    private Long createId;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+
+}

+ 54 - 0
src/main/java/com/fdkankan/manage_jp/entity/ProjectNum.java

@@ -0,0 +1,54 @@
+package com.fdkankan.manage_jp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+@Getter
+@Setter
+@TableName("t_project_num")
+public class ProjectNum implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 84 - 0
src/main/java/com/fdkankan/manage_jp/entity/ProjectSceneGps.java

@@ -0,0 +1,84 @@
+package com.fdkankan.manage_jp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-16
+ */
+@Getter
+@Setter
+@TableName("t_project_scene_gps")
+public class ProjectSceneGps implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 场景访问链接
+     */
+    @TableField("web_site")
+    private String webSite;
+
+    /**
+     * 经度
+     */
+    @TableField("lat")
+    private String lat;
+
+    /**
+     * 纬度
+     */
+    @TableField("lon")
+    private String lon;
+
+    /**
+     * 纬度
+     */
+    @TableField("alt")
+    private String alt;
+
+    /**
+     * 经纬度来源,0rtk,1app gps,2编辑编辑
+     */
+    @TableField("gps_source")
+    private Integer gpsSource;
+
+    /**
+     * 场景类型
+     */
+    @TableField("scene_source")
+    private Integer sceneSource;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/manage_jp/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
         String path =System.getProperty("user.dir");
 
 
         generate(path,"manage_jp", getTables(new String[]{
         generate(path,"manage_jp", getTables(new String[]{
-              "t_scene_move_log",
+              "t_project_scene_gps"
         }));
         }));
 
 
 //        generate(path,"goods", getTables(new String[]{
 //        generate(path,"goods", getTables(new String[]{

+ 6 - 0
src/main/java/com/fdkankan/manage_jp/httpClient/client/LaserClient.java

@@ -86,4 +86,10 @@ public interface LaserClient {
 
 
     @Get("/laser/init/${0}")
     @Get("/laser/init/${0}")
     Result getSceneByNum(String num);
     Result getSceneByNum(String num);
+
+    @Get("/laser/dataset/${0}/getDataSet")
+    Result getDataSet(String num);
+
+    @Get("/laser/controlPoint/${0}/detail/${1}")
+    Result getDataSetDetail(String num,String id);
 }
 }

+ 43 - 0
src/main/java/com/fdkankan/manage_jp/httpClient/service/LaserService.java

@@ -4,6 +4,7 @@ import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.manage_jp.httpClient.param.LaserSceneMoveParam;
 import com.fdkankan.manage_jp.httpClient.param.LaserSceneMoveParam;
 import com.fdkankan.manage_jp.service.*;
 import com.fdkankan.manage_jp.service.*;
+import com.fdkankan.manage_jp.vo.response.SceneGpsVo;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
@@ -294,4 +295,46 @@ public class LaserService {
         }
         }
         return JSONObject.parseObject(JSONObject.toJSONString(result.getData()));
         return JSONObject.parseObject(JSONObject.toJSONString(result.getData()));
     }
     }
+
+    public SceneGpsVo getLocation(String num) {
+        try {
+            Result result = laserClient.getDataSet(num);
+            if(result.getCode() != HttpStatus.OK.value()){
+                log.error("getDataSet-error:{}",result);
+                return null;
+            }
+            JSONArray array = (JSONArray) result.getData();
+            String dataId = null;
+            JSONArray locationArray = null;
+            for (Object object : array) {
+                JSONObject jsonObject = (JSONObject) object;
+                Boolean isItself = jsonObject.getBoolean("isItself");   //表示访问场景本身数据
+                if(isItself){
+                    dataId = jsonObject.getString("id");
+                    locationArray = jsonObject.getJSONArray("location");
+                    break;
+                }
+            }
+            if(dataId != null){
+                Result resultDetail = laserClient.getDataSetDetail(num,dataId);
+                if(result.getCode() != HttpStatus.OK.value()){
+                    log.error("getDataSetDetail-error:{}",resultDetail);
+                    return null;
+                }
+                JSONObject jsonObject = (JSONObject) resultDetail.getData();
+                Integer status = jsonObject.getInteger("status");    //0初始值,1有gps信息
+                if(status == 1){
+                    Double lat = locationArray.getDouble(1);
+                    Double lon = locationArray.getDouble(0);
+                    Double alt = locationArray.getDouble(2);
+                    return new SceneGpsVo(String.valueOf(lat),String.valueOf(lon),String.valueOf(alt),2);
+                }
+
+            }
+
+        }catch (Exception e){
+            log.info("laser-getLocation:error:{}",num,e);
+        }
+        return null;
+    }
 }
 }

+ 18 - 0
src/main/java/com/fdkankan/manage_jp/mapper/IProjectMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage_jp.mapper;
+
+import com.fdkankan.manage_jp.entity.Project;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+@Mapper
+public interface IProjectMapper extends BaseMapper<Project> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage_jp/mapper/IProjectNumMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage_jp.mapper;
+
+import com.fdkankan.manage_jp.entity.ProjectNum;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+@Mapper
+public interface IProjectNumMapper extends BaseMapper<ProjectNum> {
+
+}

+ 21 - 0
src/main/java/com/fdkankan/manage_jp/mapper/IProjectSceneGpsMapper.java

@@ -0,0 +1,21 @@
+package com.fdkankan.manage_jp.mapper;
+
+import com.fdkankan.manage_jp.entity.ProjectSceneGps;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-16
+ */
+@Mapper
+public interface IProjectSceneGpsMapper extends BaseMapper<ProjectSceneGps> {
+
+    List<String> getNotGpsScene();
+}

+ 16 - 0
src/main/java/com/fdkankan/manage_jp/service/IProjectNumService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.manage_jp.service;
+
+import com.fdkankan.manage_jp.entity.ProjectNum;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+public interface IProjectNumService extends IService<ProjectNum> {
+
+}

+ 25 - 0
src/main/java/com/fdkankan/manage_jp/service/IProjectSceneGpsService.java

@@ -0,0 +1,25 @@
+package com.fdkankan.manage_jp.service;
+
+import com.fdkankan.manage_jp.entity.ProjectSceneGps;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-16
+ */
+public interface IProjectSceneGpsService extends IService<ProjectSceneGps> {
+
+    List<String> getNotGpsScene();
+
+    void addGps(String num);
+
+    void updateGps(String num,String lat,String lon,Integer type);
+
+
+}

+ 22 - 0
src/main/java/com/fdkankan/manage_jp/service/IProjectService.java

@@ -0,0 +1,22 @@
+package com.fdkankan.manage_jp.service;
+
+import com.fdkankan.manage_jp.entity.Project;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage_jp.vo.request.ProjectParam;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+public interface IProjectService extends IService<Project> {
+
+    Object pageList(ProjectParam param);
+
+    void addOrUpdate(Project param);
+
+    void del(Project param);
+}

+ 20 - 0
src/main/java/com/fdkankan/manage_jp/service/impl/ProjectNumServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.manage_jp.service.impl;
+
+import com.fdkankan.manage_jp.entity.ProjectNum;
+import com.fdkankan.manage_jp.mapper.IProjectNumMapper;
+import com.fdkankan.manage_jp.service.IProjectNumService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+@Service
+public class ProjectNumServiceImpl extends ServiceImpl<IProjectNumMapper, ProjectNum> implements IProjectNumService {
+
+}

+ 121 - 0
src/main/java/com/fdkankan/manage_jp/service/impl/ProjectSceneGpsServiceImpl.java

@@ -0,0 +1,121 @@
+package com.fdkankan.manage_jp.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.manage_jp.entity.ProjectSceneGps;
+import com.fdkankan.manage_jp.entity.ScenePlus;
+import com.fdkankan.manage_jp.entity.ScenePlusExt;
+import com.fdkankan.manage_jp.httpClient.service.LaserService;
+import com.fdkankan.manage_jp.mapper.IProjectSceneGpsMapper;
+import com.fdkankan.manage_jp.service.IProjectSceneGpsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage_jp.service.IScenePlusExtService;
+import com.fdkankan.manage_jp.service.IScenePlusService;
+import com.fdkankan.manage_jp.vo.response.SceneExtGpsVo;
+import com.fdkankan.manage_jp.vo.response.SceneGpsVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-16
+ */
+@Service
+@Slf4j
+public class ProjectSceneGpsServiceImpl extends ServiceImpl<IProjectSceneGpsMapper, ProjectSceneGps> implements IProjectSceneGpsService {
+
+    @Autowired
+    IScenePlusService scenePlusService;
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
+    @Autowired
+    FYunFileServiceInterface fYunFileServiceInterface;
+    @Autowired
+    LaserService laserService;
+
+
+    @Override
+    public List<String> getNotGpsScene() {
+        return this.getBaseMapper().getNotGpsScene();
+    }
+
+    @Override
+    public void addGps(String num) {
+        ScenePlus scenePlus = scenePlusService.getByNum(num);
+        ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+        String dataSource = scenePlusExt.getDataSource();
+        SceneGpsVo sceneGpsVo = null;
+        if(scenePlus.getSceneStatus() == 4 || scenePlus.getSceneStatus() == 5){
+            sceneGpsVo = getByLaserEdit(num);
+        }else {
+            sceneGpsVo = getByHomeParameters(dataSource);
+        }
+        if(sceneGpsVo == null && StrUtil.isNotBlank(scenePlusExt.getGps())){
+            String gps = scenePlusExt.getGps();
+            SceneExtGpsVo extGpsVo = JSONObject.parseObject(gps,SceneExtGpsVo.class);
+            sceneGpsVo = new SceneGpsVo(extGpsVo.getLatitude(),extGpsVo.getLongitude(),extGpsVo.getAltitude(),2);
+        }
+        if(sceneGpsVo != null
+                && StrUtil.isNotBlank(sceneGpsVo.getLat())
+                && StrUtil.isNotBlank(sceneGpsVo.getLon())
+                && StrUtil.isNotBlank(sceneGpsVo.getAlt())){
+
+            ProjectSceneGps sceneGps = new ProjectSceneGps();
+            sceneGps.setNum(num);
+            sceneGps.setWebSite(scenePlusExt.getWebSite());
+            sceneGps.setLat(sceneGpsVo.getLat());
+            sceneGps.setLon(sceneGpsVo.getLon());
+            sceneGps.setAlt(sceneGpsVo.getAlt());
+            sceneGps.setGpsSource(sceneGpsVo.getGpsSource());
+            sceneGps.setSceneSource(scenePlus.getSceneSource());
+            this.save(sceneGps);
+        }
+    }
+
+    private SceneGpsVo getByLaserEdit(String num) {
+        return laserService.getLocation(num);
+    }
+
+    private SceneGpsVo getByHomeParameters(String dataSource) {
+        dataSource = dataSource.replaceAll("/mnt/data", "home");
+        boolean parametersFlag = fYunFileServiceInterface.fileExist(dataSource+"/parameters.json");
+        if (parametersFlag) {
+            JSONObject parameters = JSONObject.parseObject(fYunFileServiceInterface.getFileContent(dataSource));
+            JSONArray parametersArray = parameters.getJSONArray("parameters");
+            for (Object o : parametersArray) {
+                JSONObject parameter = (JSONObject) o;
+                JSONObject ggaLocation = parameter.getJSONObject("value").getJSONObject("ggaLocation");
+                if (ObjectUtil.isNotEmpty(ggaLocation)
+                        && StrUtil.isNotEmpty(ggaLocation.getString("lon"))
+                        && StrUtil.isNotEmpty(ggaLocation.getString("lat"))
+                        && StrUtil.isNotEmpty(ggaLocation.getString("alt"))) {
+                    log.info("从rtk获取gps信息:{}", parameters);
+                    return new SceneGpsVo(ggaLocation.getString("lat"),ggaLocation.getString("lon"),ggaLocation.getString("alt"),0);
+                }
+            }
+        }
+        return null;
+    }
+
+
+    @Override
+    public void updateGps(String num,String lat,String lon,Integer type) {
+        LambdaUpdateWrapper<ProjectSceneGps> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(ProjectSceneGps::getNum,num);
+        wrapper.set(ProjectSceneGps::getLat,lat);
+        wrapper.set(ProjectSceneGps::getLon,lon);
+        wrapper.set(ProjectSceneGps::getGpsSource,type);
+        this.update(wrapper);
+    }
+}

+ 59 - 0
src/main/java/com/fdkankan/manage_jp/service/impl/ProjectServiceImpl.java

@@ -0,0 +1,59 @@
+package com.fdkankan.manage_jp.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage_jp.common.PageInfo;
+import com.fdkankan.manage_jp.common.ResultCode;
+import com.fdkankan.manage_jp.entity.Project;
+import com.fdkankan.manage_jp.exception.BusinessException;
+import com.fdkankan.manage_jp.mapper.IProjectMapper;
+import com.fdkankan.manage_jp.service.IProjectService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage_jp.vo.request.ProjectParam;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.util.StringUtil;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2024-08-14
+ */
+@Service
+public class ProjectServiceImpl extends ServiceImpl<IProjectMapper, Project> implements IProjectService {
+
+
+    @Override
+    public Object pageList(ProjectParam param) {
+        LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getProjectName())){
+            wrapper.like(Project::getProjectName,param.getProjectName());
+        }
+        if(StringUtils.isNotBlank(param.getProjectSn())){
+            wrapper.like(Project::getProjectSn,param.getProjectSn());
+        }
+        //wrapper.eq(Project::getCreateId,param.getUserId());
+        wrapper.orderByDesc(Project::getCreateTime);
+        wrapper.orderByDesc(Project::getId);
+
+        Page<Project> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public void addOrUpdate(Project param) {
+        this.saveOrUpdate(param);
+    }
+
+    @Override
+    public void del(Project param) {
+        if(param.getId() == null){
+            throw new BusinessException(ResultCode.PARAM_ERROR);
+        }
+        this.removeById(param.getId());
+    }
+}

+ 35 - 0
src/main/java/com/fdkankan/manage_jp/task/TaskService.java

@@ -0,0 +1,35 @@
+package com.fdkankan.manage_jp.task;
+
+import com.fdkankan.manage_jp.entity.Project;
+import com.fdkankan.manage_jp.entity.ScenePlus;
+import com.fdkankan.manage_jp.service.IProjectSceneGpsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+@Service
+@Slf4j
+public class TaskService {
+
+    @Autowired
+    IProjectSceneGpsService projectSceneGpsService;
+
+
+    @Scheduled(initialDelay = 2000, fixedDelay = 1000 * 60 )
+    public void run() {
+        List<String> numList = projectSceneGpsService.getNotGpsScene();
+        if(numList.isEmpty()){
+            log.info("没有需要更新GPS数据的场景");
+        }
+
+        for (String num : numList) {
+            projectSceneGpsService.addGps(num);
+        }
+
+
+    }
+}

+ 11 - 0
src/main/java/com/fdkankan/manage_jp/vo/request/ProjectParam.java

@@ -0,0 +1,11 @@
+package com.fdkankan.manage_jp.vo.request;
+
+import com.fdkankan.manage_jp.common.RequestBase;
+import lombok.Data;
+
+@Data
+public class ProjectParam extends RequestBase {
+    private String projectName;
+    private String projectSn;
+    private Long userId;
+}

+ 15 - 0
src/main/java/com/fdkankan/manage_jp/vo/response/SceneExtGpsVo.java

@@ -0,0 +1,15 @@
+package com.fdkankan.manage_jp.vo.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class SceneExtGpsVo {
+    private String altitude;
+    private String latitude;
+    private String longitude;
+    private String horizontalAccuracy;
+    private String verticalAccuracy;
+    private String timestamp;
+}

+ 13 - 0
src/main/java/com/fdkankan/manage_jp/vo/response/SceneGpsVo.java

@@ -0,0 +1,13 @@
+package com.fdkankan.manage_jp.vo.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class SceneGpsVo {
+    private String lat;
+    private String lon;
+    private String alt;
+    private Integer gpsSource;
+}

+ 5 - 0
src/main/resources/mapper/manage_jp/ProjectMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.manage_jp.mapper.IProjectMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/manage_jp/ProjectNumMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.manage_jp.mapper.IProjectNumMapper">
+
+</mapper>

+ 9 - 0
src/main/resources/mapper/manage_jp/ProjectSceneGpsMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.manage_jp.mapper.IProjectSceneGpsMapper">
+
+    <select id="getNotGpsScene" resultType="java.lang.String">
+        SELECT s.num FROM t_scene_plus s  LEFT JOIN t_project_scene_gps gps on s.num = gps.num
+        WHERE s.rec_status = 'A'  and s.scene_status = -2 and gps.num is null
+    </select>
+</mapper>