Ver código fonte

深光场景

lyhzzz 1 ano atrás
pai
commit
9ab5a23711

+ 1 - 1
src/main/java/com/fdkankan/agent/httpClient/response/FdkkResponse.java

@@ -7,5 +7,5 @@ import lombok.Data;
 public class FdkkResponse<T> {
     private Integer code;
     private String msg;
-    private T data;
+    private JSONObject data;
 }

+ 22 - 2
src/main/java/com/fdkankan/agent/httpClient/service/LaserService.java

@@ -155,8 +155,28 @@ public class LaserService {
         laserClient.migrate(param);
     }
 
+    public HashMap<String, JSONObject> list(List<String> sceneNumList,Integer sceneSource) {
+        LaserSceneParam newParam = new LaserSceneParam();
+        newParam.setPageNum(1);
+        newParam.setPageSize(sceneNumList.size());
+        newParam.setSceneCodes(sceneNumList);
+        newParam.setSceneSource(sceneSource);
+        return this.list(newParam);
+    }
 
+    public HashMap<String, JSONObject> list(LaserSceneParam newParam) {
+        HashMap<String, JSONObject> map = new HashMap<>();
+        FdkkResponse fdkkResponse = laserClient.sceneList(newParam);
+        JSONObject jsonObject = fdkkResponse.getData();
+        if(jsonObject == null){
+            return map;
+        }
+        JSONArray list = jsonObject.getJSONArray("list");
 
-
-
+        for (Object o : list) {
+            JSONObject obj = (JSONObject) o;
+            map.put(obj.getString("num"),obj);
+        }
+        return map;
+    }
 }

+ 3 - 0
src/main/java/com/fdkankan/agent/request/SceneParam.java

@@ -23,6 +23,9 @@ public class SceneParam extends RequestBase {
     private String startTime;
     private String endTime;
 
+    private List<Long> cameraIds;
+    private List<Long> userIds;
+
     public String getStartTime() {
         if(timeList != null && timeList.size() >1){
             return Dateutils.getStartTime(timeList.get(0));

+ 6 - 0
src/main/java/com/fdkankan/agent/response/SceneVo.java

@@ -24,4 +24,10 @@ public class SceneVo {
 
     private String algorithmTime;  //v4场景计算完成时间
 
+    private Integer isObj =1 ;
+
+    private Long userId;
+
+    private Long cameraId;
+
 }

+ 4 - 0
src/main/java/com/fdkankan/agent/service/ICameraDetailService.java

@@ -22,4 +22,8 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     List<CameraDetail> getByAgentId(Integer agentId);
 
     Boolean checkSpace(CameraDetail detailEntity, Long needSpace);
+
+    List<CameraDetail> getListByCompanyId(Integer companyId);
+
+    List<CameraDetail> getListByAgentId(Integer agentId);
 }

+ 7 - 0
src/main/java/com/fdkankan/agent/service/ICameraService.java

@@ -4,6 +4,9 @@ import com.fdkankan.agent.entity.Camera;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.agent.request.CameraParam;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * <p>
  * 相机主表 服务类
@@ -17,4 +20,8 @@ public interface ICameraService extends IService<Camera> {
     Object pageList(CameraParam param);
 
     Camera getBySnCode(String snCode);
+
+    List<Camera> getLikeBySnCode(String snCode);
+
+    HashMap<Long, Camera> getByIds(List<Long> cameraIds2);
 }

+ 7 - 0
src/main/java/com/fdkankan/agent/service/IUserService.java

@@ -3,6 +3,9 @@ package com.fdkankan.agent.service;
 import com.fdkankan.agent.entity.User;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * <p>
  * 用户信息表 服务类
@@ -16,4 +19,8 @@ public interface IUserService extends IService<User> {
     User getByUserName(String userName);
 
     Boolean checkUserName(String userName);
+
+    List<User> getLikeByUserName(String userName);
+
+    HashMap<Long, User> getByIds(List<Long> userIds);
 }

+ 13 - 0
src/main/java/com/fdkankan/agent/service/impl/CameraDetailServiceImpl.java

@@ -109,4 +109,17 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         }
         return false;
     }
+
+    @Override
+    public List<CameraDetail> getListByCompanyId(Integer companyId) {
+        LambdaQueryWrapper<CameraDetail> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CameraDetail::getCompanyId,companyId);
+        return this.list(wrapper);
+    }
+    @Override
+    public List<CameraDetail> getListByAgentId(Integer agentId) {
+        LambdaQueryWrapper<CameraDetail> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CameraDetail::getAgentId,agentId);
+        return this.list(wrapper);
+    }
 }

+ 17 - 0
src/main/java/com/fdkankan/agent/service/impl/CameraServiceImpl.java

@@ -51,4 +51,21 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         }
         return list.get(0);
     }
+
+    @Override
+    public List<Camera> getLikeBySnCode(String snCode) {
+        LambdaQueryWrapper<Camera> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(Camera::getSnCode,snCode);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public HashMap<Long, Camera> getByIds(List<Long> cameraIds) {
+        HashMap<Long, Camera> map = new HashMap<>();
+        if(cameraIds != null && !cameraIds.isEmpty()){
+            List<Camera> cameraList = this.listByIds(cameraIds);
+            cameraList.forEach(entity -> map.put(entity.getId(),entity));
+        }
+        return map;
+    }
 }

+ 95 - 6
src/main/java/com/fdkankan/agent/service/impl/SceneProServiceImpl.java

@@ -69,21 +69,94 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     ISceneService sceneService;
     @Autowired
     ISceneCopyLogService sceneCopyLogService;
-
+    @Autowired
+    IUserService userService;
 
     @Override
     public Object pageList(SceneParam param) {
-        if(param.getType() == 2 || param.getType() == 6){  //深时
-            return laserService.pageList(param);
+        if(param.getType() == 3){ //双目lite
+            return sceneService.pageList(param);
+        }
+        //优化查询,去掉left join
+        //snCode 查询,userName 查询,companyId查询
+        //snCode回显,userName回显
+        if(StringUtils.isNotBlank(param.getSnCode())){
+            List<Camera> cameraList = cameraService.getLikeBySnCode(param.getSnCode());
+            List<Long> cameraIds = cameraList.stream().map(Camera::getId).collect(Collectors.toList());
+            param.setCameraIds(cameraIds);
+        }
+        if(StringUtils.isNotBlank(param.getUserName())){
+            List<User> userList = userService.getLikeByUserName(param.getUserName());
+            List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+            param.setUserIds(userIds);
+        }
+        if(param.getAgentId() == null){
+           throw new BusinessException(ResultCode.PARAM_MISS);
+        }
+        List<CameraDetail> details = cameraDetailService.getListByAgentId(param.getAgentId());
+        List<Long> cameraIds = details.stream().map(CameraDetail::getCameraId).collect(Collectors.toList());
+        if(param.getCameraIds() == null || param.getCameraIds().isEmpty()){
+            param.setCameraIds(cameraIds);
+        }else {
+            List<Long> intersection = cameraIds.stream().filter(param.getCameraIds()::contains).collect(Collectors.toList());
+            param.setCameraIds(intersection);
         }
+        if((param.getCameraIds() != null && param.getCameraIds().size()<=0) || (param.getUserIds() != null && param.getUserIds().size()<=0)){
+            return PageInfo.PageInfo(new Page(param.getPageNum(),param.getPageSize()));
+        }
+
         Page<SceneVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
+        List<SceneVo> records = page.getRecords();
         HashMap<String,SceneCopyLog> map = null;
-        if(page.getRecords().size() >0){
-            List<String> numList = page.getRecords().parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
-            map = sceneCopyLogService.getByNewNumList(numList);
+        HashMap<Long, User> userMap = null;
+        HashMap<Long, Camera> cameraMap = null;
+        HashMap<String,JSONObject> ssSceneMap = null;
+
+        List<String> sceneNumList = page.getRecords().stream().map(SceneVo::getNum).collect(Collectors.toList());
+        if(!records.isEmpty()){
+            map = sceneCopyLogService.getByNewNumList(sceneNumList);
+            List<Long> userIds = records.parallelStream().map(SceneVo::getUserId).collect(Collectors.toList());
+            userMap = userService.getByIds(userIds);
+            List<Long> cameraIds2 = records.parallelStream().map(SceneVo::getCameraId).collect(Collectors.toList());
+            cameraMap = cameraService.getByIds(cameraIds2);
+
+            if(param.getType() == 2 ){
+                ssSceneMap = laserService.list(sceneNumList,4);
+            }
+            if(param.getType() == 6){
+                ssSceneMap = laserService.list(sceneNumList,5);
+            }
         }
         for (SceneVo record : page.getRecords()) {
+            if(param.getType() == 2 || param.getType() == 6){
+                JSONObject ssObj = ssSceneMap.get(record.getNum());
+                if(ssObj!=null){
+                    record.setSceneName(ssObj.getString("title"));
+                    record.setThumb(ssObj.getString("thumb"));
+                    record.setWebSite(ssObj.getString("webSite"));
+                    record.setIsObj(ssObj.getInteger("buildObjStatus"));
+                    record.setViewCount(ssObj.getInteger("viewCount"));
+                    record.setStatus(toFdStatus(ssObj.getInteger("status")));
+                    record.setAlgorithmTime(ssObj.getString("algorithmTime"));
+                }else{
+                    record.setStatus(0);
+                    record.setWebSite(null);
+                }
+            }
+
             record.setStatusString(SceneStatusUtil.getStatusString(record));
+            if(userMap != null){
+                User user = userMap.get(record.getUserId());
+                if(user != null){
+                    record.setUserName(user.getUserName());
+                }
+            }
+            if(cameraMap != null){
+                Camera camera = cameraMap.get(record.getCameraId());
+                if(camera != null){
+                    record.setSnCode(camera.getSnCode());
+                }
+            }
             if(map !=null ){
                 SceneCopyLog sceneCopyLog = map.get(record.getNum());
                 if(sceneCopyLog != null){
@@ -159,4 +232,20 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         wrapper.in(ScenePro::getStatus,0,-2);
         return this.count(wrapper);
     }
+
+
+    private Integer toFdStatus(Integer status) {
+        //深时状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4生成OBJ中
+        switch (status) {
+            case 0:
+            case 4:
+                return 0;
+            case 2:
+                return -2;
+            case 3:
+                return -3;
+            default:
+                return -1;
+        }
+    }
 }

+ 21 - 0
src/main/java/com/fdkankan/agent/service/impl/UserServiceImpl.java

@@ -7,6 +7,7 @@ import com.fdkankan.agent.service.IUserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -39,4 +40,24 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         }
         return  list.get(0);
     }
+
+    @Override
+    public List<User> getLikeByUserName(String userName) {
+        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(User::getUserName,userName);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public HashMap<Long, User> getByIds(List<Long> userIds) {
+        HashMap<Long,User> map = new HashMap<>();
+        if(userIds.isEmpty()){
+            return map;
+        }
+        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(User::getId,userIds);
+        List<User> list = this.list(wrapper);
+        list.forEach(entity -> map.put(entity.getId(),entity));
+        return map;
+    }
 }

+ 31 - 21
src/main/resources/mapper/agent/SceneProMapper.xml

@@ -4,19 +4,19 @@
 
     <select id="pageList" resultType="com.fdkankan.agent.response.SceneVo">
         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 thumb
-        ,null as algorithmTime
+        select s.scene_name ,s.num,s.create_time,s.space as sceneSize
+        ,s.view_count,s.status,s.pay_status,'v3' as scene_version ,s.web_site , s.thumb
+        ,null as algorithmTime,data_source,s.shoot_count,s.gps,s.user_id,s.camera_id
         from t_scene_pro s
         <include refid="commonWhere"></include>
         <if test="param.sceneName != null and param.sceneName!='' ">
             and s.scene_name like concat ('%',#{param.sceneName},'%')
         </if>
         and is_upgrade = 0
-        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 thumb
-        ,algorithm_time
+        UNION ALL
+        select s.title as sceneName ,s.num,s.create_time,e.space as sceneSize
+        ,e.view_count,s.scene_status as status,s.pay_status,'v4' as scene_version,e.web_site,e.thumb
+        ,algorithm_time,data_source,e.shoot_count,e.gps,s.user_id,s.camera_id
         from t_scene_plus s
         left join t_scene_plus_ext e on s.id = e.plus_id
         <include refid="commonWhere"></include>
@@ -24,32 +24,42 @@
             and s.title like concat ('%',#{param.sceneName},'%')
         </if>
         ) as tb
-        order by create_time desc
+        order by ${param.field} ${param.order}
     </select>
 
     <sql id="commonWhere">
-        left join t_user u on s.user_id = u.id
-        left join t_camera c on s.camera_id = c.id
-        left join t_camera_detail d on c.id = d.camera_id
-        left join t_company co on d.company_id = co.id
-        where s.rec_status = 'A' and c.rec_status = 'A' and d.agent_id = #{param.agentId}
-        <if test="param.snCode != null and param.snCode !='' ">
-            and c.sn_code like concat ('%',#{param.snCode},'%')
+        where s.rec_status = 'A'
+        <if test="param.cameraIds !=null and param.cameraIds.size >0">
+            and s.camera_id in
+            <foreach item="cameraId" collection="param.cameraIds" open="(" separator="," close=")">
+                #{cameraId}
+            </foreach>
         </if>
-        <if test="param.userName != null and param.userName !='' ">
-            and u.user_name like concat ('%',#{param.userName},'%')
+
+        <if test="param.userIds !=null and param.userIds.size >0">
+            and s.user_id in
+            <foreach item="userId" collection="param.userIds" open="(" separator="," close=")">
+                #{userId}
+            </foreach>
         </if>
+
         <if test="param.type !=null and param.type == 0">
             and s.scene_source in (1,2,12,13,14)
         </if>
         <if test="param.type !=null and param.type == 1">
             and s.scene_source = 3
         </if>
-        <if test="param.companyId !=null ">
-            and co.id = #{param.companyId}
+        <if test="param.type !=null and param.type == 2">
+            and s.scene_source = 4
+        </if>
+        <if test="param.type !=null and param.type == 5">
+            and s.scene_source = 4 and is_obj = 1
+        </if>
+        <if test="param.type !=null and param.type == 6">
+            and s.scene_source = 5
         </if>
-        <if test="param.agentId !=null ">
-            and d.agent_id = #{param.agentId}
+        <if test="param.type !=null and param.type == 7">
+            and s.scene_source = 5 and is_obj = 1
         </if>
         <if test="param.num !=null and param.num !='' ">
             and s.num like concat ('%',#{param.num},'%')