lyhzzz 1 рік тому
батько
коміт
b668e10517

+ 6 - 0
src/main/java/com/fdkankan/manage/service/ICameraService.java

@@ -3,9 +3,11 @@ package com.fdkankan.manage.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.entity.Camera;
+import com.fdkankan.manage.entity.User;
 import com.fdkankan.manage.vo.request.CameraInOutParam;
 import com.fdkankan.manage.vo.request.CameraParam;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -43,4 +45,8 @@ public interface ICameraService extends IService<Camera> {
     void initAllCameraSpace(Long userId);
 
     void updateCameraType(CameraInOutParam param);
+
+    List<Camera> getLikeBySnCode(String snCode);
+
+    HashMap<Long, Camera> getByIds(List<Long> cameraIds);
 }

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

@@ -39,4 +39,6 @@ public interface IUserService extends IService<User> {
     void ReUcenterUserPassword(UserParam userParam);
 
     void updateUcenterUser(UserParam userParam);
+
+    List<User> getLikeByUserName(String userName);
 }

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

@@ -612,4 +612,21 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
 
     }
+
+    @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.size() >=0){
+            List<Camera> cameraList = this.listByIds(cameraIds);
+            cameraList.forEach(entity -> map.put(entity.getId(),entity));
+        }
+        return map;
+    }
 }

+ 50 - 5
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -2,6 +2,7 @@ package com.fdkankan.manage.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.codec.Caesar;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONArray;
@@ -106,6 +107,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     ISceneColdStorageService sceneColdStorageService;
     @Autowired
     ICommonService commonService;
+    @Autowired
+    IUserService userService;
 
 
     @Override
@@ -216,20 +219,62 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         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.getCompanyId() != null){
+            List<CameraDetail> details = cameraDetailService.getListByCompanyId(param.getCompanyId());
+            List<Long> cameraIds = details.stream().map(CameraDetail::getCameraId).collect(Collectors.toList());
+            if(param.getCameraIds() == null || param.getCameraIds().size() <=0 ){
+                param.setCameraIds(cameraIds);
+            }else {
+                List<Long> intersection = cameraIds.stream().filter(param.getCameraIds()::contains).collect(Collectors.toList());
+                param.setCameraIds(intersection);
+            }
+        }
+
         Page<SceneVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
         List<SceneVo> records = page.getRecords();
         HashMap<String,SceneCopyLog> map = null;
-        if(records.size() >0){
-            List<String> numList = records.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
-            map = copyLogService.getByNewNumList(numList);
-        }
         HashMap<String,SceneColdStorage> coldStorageMap = null;
-        if(records.size() >0){
+        HashMap<Long, User> userMap = null;
+        HashMap<Long, Camera> cameraMap = null;
+        if(!records.isEmpty()){
             List<String> numList = records.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
+            map = copyLogService.getByNewNumList(numList);
             coldStorageMap = sceneColdStorageService.getByNumList(numList);
+
+            List<Long> userIds = records.parallelStream().map(SceneVo::getUserId).collect(Collectors.toList());
+            userMap = userService.getByIds(userIds);
+
+            List<Long> cameraIds = records.parallelStream().map(SceneVo::getCameraId).collect(Collectors.toList());
+            cameraMap = cameraService.getByIds(cameraIds);
+
         }
         for (SceneVo record : page.getRecords()) {
             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.getUserId());
+                if(camera != null){
+                    record.setSnCode(camera.getSnCode());
+                }
+            }
             if(map !=null ){
                 SceneCopyLog sceneCopyLog = map.get(record.getNum());
                 if(sceneCopyLog != null){

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

@@ -267,4 +267,11 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         wrapper.set(User::getNickName,userParam.getNickName());
         this.update(wrapper);
     }
+
+    @Override
+    public List<User> getLikeByUserName(String userName) {
+        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(User::getUserName,userName);
+        return this.list(wrapper);
+    }
 }

+ 17 - 0
src/main/java/com/fdkankan/manage/test/TestController.java

@@ -24,6 +24,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.amazonaws.util.CredentialUtils.getCredentialsProvider;
 import static com.fdkankan.manage.util.RsaUtils.getKeyPair;
@@ -225,4 +226,20 @@ public class TestController {
 
         return ResultData.ok();
     }
+
+    public static void main(String[] args) {
+        List<Integer> list1 = new ArrayList<>();
+
+        List<Integer> list2 = new ArrayList<>();
+        list2.add(3);
+        list2.add(4);
+        list2.add(5);
+        list2.add(6);
+
+        List<Integer> intersection = list1.stream()
+                .filter(list2::contains)
+                .collect(Collectors.toList());
+
+        System.out.println("交集:" + intersection);
+    }
 }

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

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

+ 4 - 0
src/main/java/com/fdkankan/manage/vo/response/SceneVo.java

@@ -41,4 +41,8 @@ public class SceneVo {
     private String  gps;        //gps定位
 
     private AddressComponent addressComponent;
+
+    private Long userId;
+
+    private Long cameraId;
 }

+ 18 - 17
src/main/resources/mapper/manage/SceneProMapper.xml

@@ -29,9 +29,9 @@
 
     <select id="pageList" resultType="com.fdkankan.manage.vo.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 , s.thumb
-        ,null as algorithmTime,data_source,s.shoot_count,s.gps
+        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!='' ">
@@ -39,9 +39,9 @@
         </if>
         and is_upgrade = 0
         UNION ALL
-        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,e.thumb
-        ,algorithm_time,data_source,e.shoot_count,e.gps
+        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>
@@ -53,17 +53,21 @@
     </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'
-        <if test="param.snCode != null and param.snCode !='' ">
-            and c.sn_code like concat ('%',#{param.snCode},'%')
+        <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>
@@ -76,9 +80,6 @@
         <if test="param.type !=null and param.type == 7">
             and s.scene_source = 5 and is_obj = 1
         </if>
-        <if test="param.companyId !=null ">
-            and co.id = #{param.companyId}
-        </if>
         <if test="param.num !=null and param.num !='' ">
             and s.num like concat ('%',#{param.num},'%')
         </if>