lyhzzz 1 year ago
parent
commit
5303a9ab8e
20 changed files with 627 additions and 23 deletions
  1. 1 1
      src/main/java/com/fdkankan/manage_jp/config/WebAppConfig.java
  2. 35 5
      src/main/java/com/fdkankan/manage_jp/controller/ProjectSceneController.java
  3. 2 1
      src/main/java/com/fdkankan/manage_jp/entity/ProjectSceneGps.java
  4. 4 0
      src/main/java/com/fdkankan/manage_jp/mapper/IProjectSceneGpsMapper.java
  5. 3 0
      src/main/java/com/fdkankan/manage_jp/service/IProjectNumService.java
  6. 2 1
      src/main/java/com/fdkankan/manage_jp/service/IProjectSceneGpsService.java
  7. 4 0
      src/main/java/com/fdkankan/manage_jp/service/IProjectService.java
  8. 2 0
      src/main/java/com/fdkankan/manage_jp/service/IUserService.java
  9. 13 0
      src/main/java/com/fdkankan/manage_jp/service/impl/ProjectNumServiceImpl.java
  10. 95 9
      src/main/java/com/fdkankan/manage_jp/service/impl/ProjectSceneGpsServiceImpl.java
  11. 25 0
      src/main/java/com/fdkankan/manage_jp/service/impl/ProjectServiceImpl.java
  12. 7 0
      src/main/java/com/fdkankan/manage_jp/service/impl/UserServiceImpl.java
  13. 314 0
      src/main/java/com/fdkankan/manage_jp/util/RsaUtils.java
  14. 20 0
      src/main/java/com/fdkankan/manage_jp/vo/request/SceneGpsParam.java
  15. 13 0
      src/main/java/com/fdkankan/manage_jp/vo/response/ProjectSceneMapVo.java
  16. 1 0
      src/main/java/com/fdkankan/manage_jp/vo/response/SceneGpsDb.java
  17. 16 0
      src/main/java/com/fdkankan/manage_jp/vo/response/SceneGpsDbVp.java
  18. 2 0
      src/main/java/com/fdkankan/manage_jp/vo/response/SceneVo.java
  19. 66 4
      src/main/resources/mapper/manage_jp/ProjectSceneGpsMapper.xml
  20. 2 2
      src/main/resources/mapper/manage_jp/SceneProMapper.xml

+ 1 - 1
src/main/java/com/fdkankan/manage_jp/config/WebAppConfig.java

@@ -22,7 +22,7 @@ public class WebAppConfig implements WebMvcConfigurer {
 						"/**/manage_jp/user/login/**",
 						"/**/test/**",
 						"/**/getNumListByUserName/**",
-						"/**/api/**"
+						"/**/manage_jp/projectScene/getSceneMap/**"
 				);
 
 		WebMvcConfigurer.super.addInterceptors(registry);

+ 35 - 5
src/main/java/com/fdkankan/manage_jp/controller/ProjectSceneController.java

@@ -1,14 +1,24 @@
 package com.fdkankan.manage_jp.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.util.SHAUtils;
 import com.fdkankan.manage_jp.common.Result;
+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.service.IProjectSceneGpsService;
 import com.fdkankan.manage_jp.service.IProjectService;
+import com.fdkankan.manage_jp.util.RsaUtils;
 import com.fdkankan.manage_jp.vo.request.ProjectParam;
+import com.fdkankan.manage_jp.vo.request.SceneGpsParam;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.net.URL;
+import java.net.URLEncoder;
+
 /**
  * <p>
  *  前端控制器
@@ -18,19 +28,39 @@ import org.springframework.web.bind.annotation.*;
  * @since 2024-08-14
  */
 @RestController
-@RequestMapping("/manage_jp/api")
-public class ProjectSceneController {
+@RequestMapping("/manage_jp/projectScene")
+public class ProjectSceneController extends BaseController{
 
     @Autowired
     IProjectSceneGpsService projectSceneGpsService;
 
 
-    @GetMapping("/allSceneGps")
-    public Result allSceneGps(){
-        return Result.success(projectSceneGpsService.allSceneGps());
+    @PostMapping("/allSceneGps")
+    public Result allSceneGps(@RequestBody SceneGpsParam param){
+        param.setUserId(getUser().getId());
+        param.setCompanyId(getUser().getCompanyId());
+        return Result.success(projectSceneGpsService.allSceneGps(param));
     }
 
+    @PostMapping("/createSceneShare")
+    public Result createSceneShare(){
+        SceneGpsParam param  = new SceneGpsParam();
+        param.setUserId(getUser().getId());
+        param.setCompanyId(getUser().getCompanyId());
+        String jsonString = JSONObject.toJSONString(param);
+        String ciphertext = RsaUtils.encipher(jsonString, RsaUtils.publicKey);
+        return Result.success("/manage_jp/api/getSceneMap/"+ URLEncoder.encode(ciphertext));
+    }
 
+    @GetMapping("/getSceneMap/{ciphertext}")
+    public Result getSceneMap(@PathVariable String ciphertext){
+        if (StringUtils.isBlank(ciphertext)){
+            throw new BusinessException(ResultCode.PARAM_ERROR);
+        }
+        String deTxt = RsaUtils.decipher(ciphertext, RsaUtils.privateKey);
+        SceneGpsParam param = JSONObject.parseObject(deTxt, SceneGpsParam.class);
+        return Result.success(projectSceneGpsService.allSceneGps(param));
+    }
     
 }
 

+ 2 - 1
src/main/java/com/fdkankan/manage_jp/entity/ProjectSceneGps.java

@@ -82,5 +82,6 @@ public class ProjectSceneGps implements Serializable {
     @TableField("update_time")
     private Date updateTime;
 
-
+    @TableField(exist = false)
+    private String sceneTitle;
 }

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

@@ -2,7 +2,9 @@ package com.fdkankan.manage_jp.mapper;
 
 import com.fdkankan.manage_jp.entity.ProjectSceneGps;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.manage_jp.vo.request.SceneGpsParam;
 import com.fdkankan.manage_jp.vo.response.SceneGpsDb;
+import com.fdkankan.manage_jp.vo.response.SceneGpsDbVp;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -19,4 +21,6 @@ import java.util.List;
 public interface IProjectSceneGpsMapper extends BaseMapper<ProjectSceneGps> {
 
     List<SceneGpsDb> getNotGpsScene();
+
+    List<SceneGpsDbVp> listGps(SceneGpsParam param);
 }

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

@@ -3,6 +3,8 @@ package com.fdkankan.manage_jp.service;
 import com.fdkankan.manage_jp.entity.ProjectNum;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IProjectNumService extends IService<ProjectNum> {
 
+    List<ProjectNum> getByProjectId(List<Integer> projectIds);
 }

+ 2 - 1
src/main/java/com/fdkankan/manage_jp/service/IProjectSceneGpsService.java

@@ -3,6 +3,7 @@ package com.fdkankan.manage_jp.service;
 import com.fdkankan.manage_jp.entity.ProjectSceneGps;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.manage_jp.vo.request.ProjectParam;
+import com.fdkankan.manage_jp.vo.request.SceneGpsParam;
 import com.fdkankan.manage_jp.vo.response.SceneGpsDb;
 
 import java.util.List;
@@ -24,5 +25,5 @@ public interface IProjectSceneGpsService extends IService<ProjectSceneGps> {
     void updateGps(String num,String lat,String lon,Integer type);
 
 
-    List<ProjectSceneGps> allSceneGps();
+    Object allSceneGps(SceneGpsParam param);
 }

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

@@ -4,6 +4,8 @@ import com.fdkankan.manage_jp.entity.Project;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.manage_jp.vo.request.ProjectParam;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -19,4 +21,6 @@ public interface IProjectService extends IService<Project> {
     void addOrUpdate(Project param);
 
     void del(Project param);
+
+    List<Project> listByCompanyId(Long companyId);
 }

+ 2 - 0
src/main/java/com/fdkankan/manage_jp/service/IUserService.java

@@ -41,4 +41,6 @@ public interface IUserService extends IService<User> {
     void logout(String token);
 
     List<User> allList(User param);
+
+    List<User> getByCompanyId(Long companyId);
 }

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

@@ -1,11 +1,15 @@
 package com.fdkankan.manage_jp.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +21,13 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProjectNumServiceImpl extends ServiceImpl<IProjectNumMapper, ProjectNum> implements IProjectNumService {
 
+    @Override
+    public List<ProjectNum> getByProjectId(List<Integer> projectIds) {
+        if(projectIds.isEmpty()){
+            return new ArrayList<>();
+        }
+        LambdaQueryWrapper<ProjectNum> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(ProjectNum::getId,projectIds);
+        return this.list(wrapper);
+    }
 }

+ 95 - 9
src/main/java/com/fdkankan/manage_jp/service/impl/ProjectSceneGpsServiceImpl.java

@@ -4,24 +4,31 @@ 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.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
-import com.fdkankan.manage_jp.entity.ProjectSceneGps;
+import com.fdkankan.manage_jp.entity.*;
 import com.fdkankan.manage_jp.httpClient.service.LaserService;
 import com.fdkankan.manage_jp.mapper.IProjectSceneGpsMapper;
-import com.fdkankan.manage_jp.service.IProjectSceneGpsService;
+import com.fdkankan.manage_jp.mapper.ISceneProMapper;
+import com.fdkankan.manage_jp.service.*;
 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.request.ProjectParam;
-import com.fdkankan.manage_jp.vo.response.SceneExtGpsVo;
-import com.fdkankan.manage_jp.vo.response.SceneGpsDb;
-import com.fdkankan.manage_jp.vo.response.SceneGpsVo;
+import com.fdkankan.manage_jp.vo.request.SceneGpsParam;
+import com.fdkankan.manage_jp.vo.request.SceneParam;
+import com.fdkankan.manage_jp.vo.response.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -43,6 +50,8 @@ public class ProjectSceneGpsServiceImpl extends ServiceImpl<IProjectSceneGpsMapp
     FYunFileServiceInterface fYunFileServiceInterface;
     @Autowired
     LaserService laserService;
+    @Autowired
+    IUserRoleService userRoleService;
 
 
     @Override
@@ -118,9 +127,86 @@ public class ProjectSceneGpsServiceImpl extends ServiceImpl<IProjectSceneGpsMapp
         this.update(wrapper);
     }
 
+    @Autowired
+    ISceneProMapper sceneProMapper;
+    @Autowired
+    ITmContractorNumService tmContractorNumService;
+    @Autowired
+    IProjectService projectService;
+    @Autowired
+    IProjectNumService projectNumService;
+
     @Override
-    public List<ProjectSceneGps> allSceneGps() {
+    public Object allSceneGps(SceneGpsParam param) {
+        if(param.getUserId() == null){
+            return new ArrayList<>();
+        }
+        List<UserRole> roleIdList = userRoleService.getByUserId((param.getUserId()));
+        List<Long> roleIds = roleIdList.stream().map(UserRole::getRoleId).collect(Collectors.toList());
+        HashMap<Integer,List<String>> projectNumMap = new HashMap<>();
+        HashMap<Integer,Project> projectMap = new HashMap<>();
+        if(param.getType() == 0){       //项目场景
+            List<Project> projectList = new ArrayList<>();
+            if(!roleIds.contains(5L)) {      //平台管理员
+                projectList =  projectService.listByCompanyId(param.getCompanyId());
+            }else {
+                projectList = projectService.list();
+            }
+            for (Project project : projectList) {
+                projectMap.put(project.getId(),project);
+            }
+            List<Integer> projectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
+            List<ProjectNum> projectNums = projectNumService.getByProjectId(projectIds);
+            for (ProjectNum projectNum : projectNums) {
+                if(projectNumMap.get(projectNum.getProjectId()) == null){
+                    List<String> proNumList = new ArrayList<>();
+                    proNumList.add(projectNum.getNum());
+                    projectNumMap.put(projectNum.getProjectId(),proNumList);
+                }else {
+                    projectNumMap.get(projectNum.getProjectId()).add(projectNum.getNum());
+                }
+            }
+            List<String> numList = projectNums.stream().map(ProjectNum::getNum).collect(Collectors.toList());
 
-        return this.list();
+            param.setNumList(numList);
+
+        }
+        if(param.getType() == 1){
+            if(roleIds.contains(5L)) {      //平台管理员
+                param.setUserId(null);
+                param.setCompanyId(null);
+            }
+            List<String> numList = tmContractorNumService.getNumListByCompanyId(param.getCompanyId());
+            param.setCooperateSceneCodes(numList);
+        }
+
+        List<SceneGpsDbVp> sceneGpsDbVps = this.getBaseMapper().listGps(param);
+        if(param.getType() == 1){
+            return sceneGpsDbVps;
+        }
+
+        if(param.getType() == 0){
+            List< ProjectSceneMapVo> voList = new ArrayList<>();
+            HashMap<String,SceneGpsDbVp> scenMap = new HashMap<>();
+            for (SceneGpsDbVp sceneGpsDbVp : sceneGpsDbVps) {
+                scenMap.put(sceneGpsDbVp.getNum(),sceneGpsDbVp);
+            }
+            for (Integer projectId : projectMap.keySet()) {
+                ProjectSceneMapVo vo = new ProjectSceneMapVo();
+                BeanUtils.copyProperties(projectMap.get(projectId),vo);
+                List<String> list = projectNumMap.get(projectId);
+                List<SceneGpsDbVp> listScene = new ArrayList<>();
+                for (String num : list) {
+                    SceneGpsDbVp sceneGpsDbVp = scenMap.get(num);
+                    if(sceneGpsDbVp != null){
+                        listScene.add(sceneGpsDbVp);
+                    }
+                }
+                vo.setSceneList(listScene);
+                voList.add(vo);
+            }
+            return voList;
+        }
+        return new ArrayList<>();
     }
 }

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

@@ -5,15 +5,23 @@ 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.entity.User;
 import com.fdkankan.manage_jp.exception.BusinessException;
 import com.fdkankan.manage_jp.mapper.IProjectMapper;
+import com.fdkankan.manage_jp.service.ICompanyService;
 import com.fdkankan.manage_jp.service.IProjectService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage_jp.service.IUserService;
 import com.fdkankan.manage_jp.vo.request.ProjectParam;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  *  服务实现类
@@ -25,6 +33,10 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProjectServiceImpl extends ServiceImpl<IProjectMapper, Project> implements IProjectService {
 
+    @Autowired
+    ICompanyService companyService;
+    @Autowired
+    IUserService userService;
 
     @Override
     public Object pageList(ProjectParam param) {
@@ -56,4 +68,17 @@ public class ProjectServiceImpl extends ServiceImpl<IProjectMapper, Project> imp
         }
         this.removeById(param.getId());
     }
+
+
+    @Override
+    public List<Project> listByCompanyId(Long companyId) {
+        List<User> userList = userService.getByCompanyId(companyId);
+        if(userList.isEmpty()){
+            return new ArrayList<>();
+        }
+        List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+        LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(Project::getCreateId,userIds);
+        return this.list(wrapper);
+    }
 }

+ 7 - 0
src/main/java/com/fdkankan/manage_jp/service/impl/UserServiceImpl.java

@@ -227,4 +227,11 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
 
         return this.list();
     }
+
+    @Override
+    public List<User> getByCompanyId(Long companyId) {
+        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(User::getCompanyId,companyId);
+        return this.list(wrapper);
+    }
 }

File diff suppressed because it is too large
+ 314 - 0
src/main/java/com/fdkankan/manage_jp/util/RsaUtils.java


+ 20 - 0
src/main/java/com/fdkankan/manage_jp/vo/request/SceneGpsParam.java

@@ -0,0 +1,20 @@
+package com.fdkankan.manage_jp.vo.request;
+
+import com.fdkankan.manage_jp.entity.User;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SceneGpsParam {
+    private String searchKey;   //关键字查询
+    private Integer type;       //数据类型 0 项目,1场景
+    private String deptId;      //组织id
+
+    private Long userId;
+    private Long companyId;
+
+    private List<String> numList;
+    private List<String> cooperateSceneCodes;
+
+}

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

@@ -0,0 +1,13 @@
+package com.fdkankan.manage_jp.vo.response;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProjectSceneMapVo {
+    private String projectName;
+    private String projectSn;
+    private String webSite;
+    private List<SceneGpsDbVp> sceneList;
+}

+ 1 - 0
src/main/java/com/fdkankan/manage_jp/vo/response/SceneGpsDb.java

@@ -9,4 +9,5 @@ public class SceneGpsDb {
     private Integer sceneSource;
     private String gps;
     private String dataSource;
+    private String sceneVersion;
 }

+ 16 - 0
src/main/java/com/fdkankan/manage_jp/vo/response/SceneGpsDbVp.java

@@ -0,0 +1,16 @@
+package com.fdkankan.manage_jp.vo.response;
+
+import lombok.Data;
+
+@Data
+public class SceneGpsDbVp {
+    private String num;
+    private String title;
+    private Integer laserTitle;
+    private String sceneSource;
+    private String sceneVersion;
+    private String lat;
+    private String lon;
+    private String alt;
+    private String webSite;
+}

+ 2 - 0
src/main/java/com/fdkankan/manage_jp/vo/response/SceneVo.java

@@ -41,6 +41,8 @@ public class SceneVo {
     private Boolean isMigrate = true;
 
     private Boolean coldStorage = false;
+    private Integer sceneSource;
+    private String laserTitle;
 
 
 }

+ 66 - 4
src/main/resources/mapper/manage_jp/ProjectSceneGpsMapper.xml

@@ -3,9 +3,71 @@
 <mapper namespace="com.fdkankan.manage_jp.mapper.IProjectSceneGpsMapper">
 
     <select id="getNotGpsScene" resultType="com.fdkankan.manage_jp.vo.response.SceneGpsDb">
-        SELECT s.num,s.scene_source,e.web_site,e.gps,e.data_source FROM t_scene_plus s
-                              LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
-                              LEFT JOIN t_project_scene_gps gps on s.num = gps.num
-        WHERE s.rec_status = 'A' and e.gps is not null and s.scene_status = -2 and gps.num is null  limit 100
+        SELECT s.num,s.scene_source,s.web_site,s.gps,s.data_source ,'v3' as scene_version FROM t_scene_pro s
+                LEFT JOIN t_project_scene_gps gps on s.num = gps.num
+        WHERE s.rec_status = 'A' and is_upgrade = 0 and s.gps is not null and s.`status` = -2 and gps.num is null
+        UNION
+        SELECT s.num,s.scene_source,e.web_site,e.gps,e.data_source ,'v4' as scene_version FROM t_scene_plus s
+                LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
+                LEFT JOIN t_project_scene_gps gps on s.num = gps.num
+        WHERE s.rec_status = 'A' and e.gps is not null and s.scene_status = -2 and gps.num is null
+
+        LIMIT 1000
+    </select>
+    <select id="listGps" resultType="com.fdkankan.manage_jp.vo.response.SceneGpsDbVp">
+        SELECT s.num,s.scene_name as title,null as laserTile,s.scene_source,'v3' as scene_version ,gps.lat,gps.lon,gps.alt,gps.web_site
+        FROM t_scene_pro s
+                LEFT JOIN t_project_scene_gps gps on s.num = gps.num
+                LEFT JOIN t_user u on s.user_id = u.id
+                LEFT JOIN t_company co on u.company_id = co.id
+        WHERE s.rec_status = 'A' and is_upgrade = 0 and  s.`status` = -2 and gps.num is not null
+        <if test="param.searchKey != null and param.searchKey!='' ">
+            and s.scene_name like concat ('%',#{searchKey},'%')
+        </if>
+        <if test="param.numList !=null and param.numList.size >0">
+            and  s.num in
+            <foreach collection="param.numList" item="num" open="(" separator="," close=")">
+                #{num}
+            </foreach>
+        </if>
+        <if test="param.userId !=null and param.companyId !=null and param.cooperateSceneCodes !=null and param.cooperateSceneCodes.size >0">
+            and ( s.user_id = #{param.userId} or co.id = #{param.companyId} or s.num in
+            <foreach collection="param.cooperateSceneCodes" item="coNum" open="(" separator="," close=")">
+                #{coNum}
+            </foreach>
+            )
+        </if>
+        <if test="param.userId !=null and param.companyId !=null and param.cooperateSceneCodes !=null and param.cooperateSceneCodes.size ==0 ">
+            and (co.id = #{param.companyId} or s.user_id = #{param.userId} )
+        </if>
+
+        UNION
+        SELECT s.num,s.title ,s.laser_title,s.scene_source,'v4' as scene_version  ,gps.lat,gps.lon,gps.alt,gps.web_site
+        FROM t_scene_plus s
+                LEFT JOIN t_scene_plus_ext e on s.id = e.plus_id
+                LEFT JOIN t_project_scene_gps gps on s.num = gps.num
+                LEFT JOIN t_user u on s.user_id = u.id
+                LEFT JOIN t_company co on u.company_id = co.id
+        WHERE s.rec_status = 'A'  and s.scene_status = -2 and gps.num is not null
+        <if test="param.searchKey != null and param.searchKey!='' ">
+            and (s.title like concat ('%',#{param.searchKey},'%') or s.laser_title like concat ('%',#{param.searchKey},'%') )
+        </if>
+        <if test="param.numList !=null and param.numList.size >0">
+            and  s.num in
+            <foreach collection="param.numList" item="num" open="(" separator="," close=")">
+                #{num}
+            </foreach>
+        </if>
+        <if test="param.userId !=null and param.companyId !=null and param.cooperateSceneCodes !=null and param.cooperateSceneCodes.size >0">
+            and ( s.user_id = #{param.userId} or co.id = #{param.companyId} or s.num in
+            <foreach collection="param.cooperateSceneCodes" item="coNum" open="(" separator="," close=")">
+                #{coNum}
+            </foreach>
+            )
+        </if>
+        <if test="param.userId !=null and param.companyId !=null and param.cooperateSceneCodes !=null and param.cooperateSceneCodes.size ==0 ">
+            and (co.id = #{param.companyId} or s.user_id = #{param.userId} )
+        </if>
+
     </select>
 </mapper>

+ 2 - 2
src/main/resources/mapper/manage_jp/SceneProMapper.xml

@@ -7,7 +7,7 @@
         SELECT * FROM(
         select s.scene_name ,s.num,s.create_time,c.sn_code,s.space as sceneSize
         ,u.user_name,s.view_count,s.status,s.pay_status,'v3' as scene_version ,s.web_site as webSite,thumb
-        ,null as algorithmTime,c.child_name,s.camera_id,s.laser_title,co.company_name,null as location
+        ,null as algorithmTime,c.child_name,s.camera_id,s.laser_title,co.company_name,null as location,s.scene_source
         from t_scene_pro s
         <include refid="commonWhere"></include>
         <if test="param.sceneName != null and param.sceneName!='' ">
@@ -17,7 +17,7 @@
         UNION
         select s.title as sceneName ,s.num,s.create_time,c.sn_code,e.space as sceneSize
         ,u.user_name,e.view_count,s.scene_status as status,s.pay_status,'v4' as scene_version,e.web_site as webSite,thumb
-        ,algorithm_time,c.child_name,s.camera_id,s.laser_title,co.company_name,e.location
+        ,algorithm_time,c.child_name,s.camera_id,s.laser_title,co.company_name,e.location,s.scene_source
         from t_scene_plus s
         left join t_scene_plus_ext e on s.id = e.plus_id
         <include refid="commonWhere"></include>