瀏覽代碼

查询协作场景列表接口
添加热点 热点列表接口 增加 按添加时间降序排序

dengsixing 3 年之前
父節點
當前提交
e3f5214407

+ 5 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneCooperationController.java

@@ -10,6 +10,7 @@ import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.common.util.PageInfoUtils;
 import com.fdkankan.platform.api.feign.PlatformGoodsClient;
 import com.fdkankan.platform.api.vo.Camera;
 import com.fdkankan.scene.entity.Folder;
@@ -85,7 +86,7 @@ public class SceneCooperationController extends BaseController {
 //        @ApiImplicitParam(name = "endTime", value = "结束时间", dataType = "String"),
 //        @ApiImplicitParam(name = "pageSize", value = "每页大小", dataType = "number")})
     public Page cooperationSceneListNew(@RequestBody SceneParamVO param) throws Exception{
-        long userId = this.getUserId();
+        Long userId = this.getUserId();
         param.setUserId(userId);
         return sceneCooperationService.cooperationSceneListNew(param);
     }
@@ -95,8 +96,9 @@ public class SceneCooperationController extends BaseController {
     public Page test(int pageNum, int pageSize){
 
         Page<SceneCooperation> page = new Page<>(pageNum, pageSize);
-        sceneCooperationService.page(page);
-        return page;
+        List<SceneCooperation> list = sceneCooperationService.list();
+        Page<SceneCooperation> sceneCooperationPage = PageInfoUtils.list2PageInfo(list, 1, 6);
+        return sceneCooperationPage;
 
     }
 

+ 20 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditInfoExtController.java

@@ -0,0 +1,20 @@
+package com.fdkankan.scene.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-03-07
+ */
+@RestController
+@RequestMapping("/test/sceneEditInfoExt")
+public class SceneEditInfoExtController {
+
+}
+

+ 42 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java

@@ -0,0 +1,42 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fdkankan.db.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-03-07
+ */
+@Getter
+@Setter
+@TableName("t_scene_edit_info_ext")
+public class SceneEditInfoExt extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("scene_pro_id")
+    private Long sceneProId;
+
+    @TableField("edit_info_id")
+    private Long editInfoId;
+
+    /**
+     * 大场景序号(随心装场景码)  原pro_edit表中的字段
+     */
+    @TableField("vr_num")
+    private String vrNum;
+
+
+}

+ 3 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/generate/AutoGenerate.java

@@ -22,7 +22,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") + "\\4dkankan-center-scene";
 
         generate(path,"test", getTables(new String[]{
-                "t_folder"
+                "t_scene_edit_info_ext"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -50,8 +50,8 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://120.25.146.52:3306/4dkankan-center-scene",
-                "root","4dkk2020test%")
+        FastAutoGenerator.create("jdbc:mysql://192.168.0.47:13306/4dkankan-center-scene",
+                "root","4dkk2020cuikuan%")
                 .globalConfig(builder -> {
                     builder.author("")               //作者
                             .outputDir(path+"\\src\\main\\java")    //输出路径(写到java目录)

+ 16 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoExtService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.scene.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.scene.entity.SceneEditInfoExt;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-03-07
+ */
+public interface ISceneEditInfoExtService extends IService<SceneEditInfoExt> {
+
+}

+ 6 - 7
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/FolderServiceImpl.java

@@ -177,10 +177,9 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
 
             List<FolderScene> folderSceneList =
                     folderSceneService.list(
-                            new QueryWrapper<FolderScene>()
-                                    .eq("tbStatus", TbStatus.VALID.code())
-                                    .eq("folderId", folder.getId())
-                                    .orderByDesc("id"));
+                            new LambdaQueryWrapper<FolderScene>()
+                                    .eq(FolderScene::getFolderId, folder.getId())
+                                    .orderByDesc(FolderScene::getId));
 
             if(CollUtil.isNotEmpty(folderSceneList)){
                 sceneNumFile =  sceneProService.findFolderIdScence(folder.getId(),folder.getUserId());
@@ -194,9 +193,9 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
             folderVO.setNum(sceneNum);
             if(CollUtil.isNotEmpty(folderSceneList)){
                 ScenePro scenePro = sceneProService.getOne(
-                            new QueryWrapper<ScenePro>()
-                                .eq("tbStatus", TbStatus.VALID.code())
-                                .eq("id",folderSceneList.get(0).getSceneId()));
+                            new LambdaQueryWrapper<ScenePro>()
+                                .select(ScenePro::getThumb)
+                                .eq(ScenePro::getId,folderSceneList.get(0).getSceneId()));
                 folderVO.setImg(scenePro == null? "" : scenePro.getThumb());
             }
 

+ 85 - 98
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneCooperationServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -11,21 +12,34 @@ import com.fdkankan.common.constant.TbStatus;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.user.SSOUser;
+import com.fdkankan.common.util.PageInfoUtils;
 import com.fdkankan.platform.api.feign.PlatformGoodsClient;
 import com.fdkankan.platform.api.vo.Camera;
 import com.fdkankan.scene.entity.Folder;
+import com.fdkankan.scene.entity.FolderScene;
 import com.fdkankan.scene.entity.SceneCooperation;
+import com.fdkankan.scene.entity.SceneEditInfoExt;
 import com.fdkankan.scene.entity.ScenePro;
+import com.fdkankan.scene.entity.SceneProPO;
 import com.fdkankan.scene.mapper.ISceneCooperationMapper;
+import com.fdkankan.scene.mapper.ISceneProMapper;
+import com.fdkankan.scene.service.IFolderSceneService;
+import com.fdkankan.scene.service.IFolderService;
 import com.fdkankan.scene.service.ISceneCooperationService;
+import com.fdkankan.scene.service.ISceneEditInfoExtService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneResourceService;
+import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.vo.SceneCooperationParamVO;
 import com.fdkankan.scene.vo.SceneParamVO;
+import com.fdkankan.scene.vo.SceneVO;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.stream.Collectors;
+import javax.annotation.Resource;
+import javax.xml.transform.Result;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import java.util.Calendar;
@@ -53,6 +67,16 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
     ISceneProService sceneProService;
     @Autowired
     ISceneResourceService sceneResourceService;
+    @Autowired
+    ISceneProMapper sceneProMapper;
+    @Autowired
+    IFolderService folderService;
+    @Autowired
+    IFolderSceneService folderSceneService;
+    @Autowired
+    ISceneService sceneService;
+    @Autowired
+    ISceneEditInfoExtService sceneEditInfoExtService;
 
     @Override
     public void updateRecStatus(String sceneNum) {
@@ -141,107 +165,70 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
         }
 
         List<Object> result = new ArrayList<>();
-        List<ScenePro> sceneEntityList = new ArrayList<>();
-        List<Folder> folderEntityList = new ArrayList<>();
+        List<SceneProPO> sceneList = new ArrayList<>();
+        List<Folder> folderList = new ArrayList<>();
 
 
         //根目录时,需要排除已经归类的场景
-//        if(ObjectUtils.isEmpty(param.getFolderId())){
-//            param.setNumList(sceneNumList);
-//            if(Objects.nonNull(param.getSceneSource())){
-//                List<Integer> sceneSourceList = Arrays.asList(param.getSceneSource().split(","))
-//                    .parallelStream().map(source -> {
-//                        return Integer.parseInt(source);
-//                    }).collect(Collectors.toList());
-//                param.setSceneSourceList(sceneSourceList);
-//            }
-//            if(!StringUtil.isNotEmpty(param.getSceneType())){
-//                sceneCondition.and().andEqualTo("sceneType", param.getSceneType());
-//            }
-//            if(!ObjectUtils.isEmpty(param.getStartTime())){
-//                sceneCondition.and().andGreaterThanOrEqualTo("createTime", param.getStartTime());
-//            }
-//            if(!ObjectUtils.isEmpty(param.getEndTime())){
-//                sceneCondition.and().andLessThanOrEqualTo("createTime", param.getEndTime());
-//            }
-//            sceneEntityList = sceneProService.findAll(sceneCondition, "create_time desc");
-//
-//        }else {
-//            //获取文件夹数量
-//            condition = new Condition(FolderEntity.class);
-//            condition.and().andEqualTo("userId", ssoUser.getId()).andEqualTo("parentId", param.getFolderId());
-//            folderEntityList = folderService.findAll(condition, "create_time desc");
-//            //没有协作场景,直接放回文件夹的列表
-//            if(sceneNumList.size() <= 0){
-//                result.addAll(folderService.convert(folderEntityList));
-//                PageInfo<Object> data = PageInfoUtils.list2PageInfo(result, param.getPageNum(), param.getPageSize());
-//                return Result.success(data);
-//            }
-//
-//            //进入目录层级后,根据目录获取当前目录的所有场景
-//            Condition folderSceneCondition = new Condition(FolderSceneEntity.class);
-//            folderSceneCondition.and().andEqualTo("folderId", param.getFolderId());
-//
-//            List<Long> sceneIdList = new ArrayList<>();
-//
-//            List<FolderSceneEntity> folderSceneList = folderSceneService.findAll(folderSceneCondition, "create_time desc");
-//            if(folderSceneList != null && folderSceneList.size() > 0){
-//                for (FolderSceneEntity folderSceneEntity : folderSceneList) {
-//                    sceneIdList.add(folderSceneEntity.getSceneId());
-//                }
-//            }
-//
-//            if(sceneIdList.size() > 0){
-//                Condition sceneCondition = new Condition(SceneProEntity.class);
-//                sceneCondition.and().andIn("id", sceneIdList)
-//                    .andNotEqualTo("sceneSource", "11").andIn("num", sceneNumList);
-//
-//                if(param.getSceneSource() != null){
-//                    if(param.getSceneSource().contains(",")){
-//                        sceneCondition.and().andIn("sceneSource", Arrays.asList(param.getSceneSource().split(",")));
-//                    }else{
-//                        sceneCondition.and().andEqualTo("sceneSource", param.getSceneSource());
-//                    }
-//                }
-//                if(StringUtil.isNotEmpty(param.getSceneType())){
-//                    sceneCondition.and().andEqualTo("sceneType", param.getSceneType());
-//                }
-//                if(param.getStartTime() != null){
-//                    sceneCondition.and().andGreaterThanOrEqualTo("createTime", param.getStartTime());
-//                }
-//                if(param.getEndTime() != null){
-//                    sceneCondition.and().andLessThanOrEqualTo("createTime", param.getEndTime());
-//                }
-//                sceneEntityList = sceneProService.findAll(sceneCondition, "create_time desc");
-//            }
-//        }
-//        List<ResponseScene> responseScenes = sceneService.convertPro(sceneEntityList);
-//
-//        if(ObjectUtils.isEmpty(param.getSceneSource())&& StringUtil.isEmpty(param.getSceneType()) &&
-//            param.getStartTime() == null && param.getEndTime() == null){
-//
-//            result.addAll(folderService.convert(folderEntityList));
-//        }
-//
-//        result.addAll(responseScenes);
-//
-//        PageInfo<Object> data = PageInfoUtils.list2PageInfo(result, param.getPageNum(), param.getPageSize());
-//        data.getList().parallelStream().filter(object -> object instanceof ResponseScene).forEach(object -> {
-//            ResponseScene responseScene = (ResponseScene) object;
-//            if (responseScene.getCameraId() != null) {
+        if(ObjectUtils.isEmpty(param.getFolderId())){
+            sceneList = sceneProMapper.selectCooperationSceneList(param);
+
+        }else {
+            //获取文件夹数量
+            folderList= folderService.list(
+                new LambdaQueryWrapper<Folder>().eq(Folder::getUserId, param.getUserId())
+                    .eq(Folder::getParentId, param.getFolderId()));
+
+            //进入目录层级后,根据目录获取当前目录的所有场景
+            List<FolderScene> folderSceneList = folderSceneService.list(new LambdaQueryWrapper<FolderScene>().eq(FolderScene::getFolderId, param.getFolderId()));
+
+            List<Long> sceneIdList = new ArrayList<>();
+
+            if(folderSceneList != null && folderSceneList.size() > 0){
+                for (FolderScene folderSceneEntity : folderSceneList) {
+                    sceneIdList.add(folderSceneEntity.getSceneId());
+                }
+            }
+
+            if(sceneIdList.size() > 0){
+                sceneList = sceneProMapper.selectCooperationSceneList(param);
+            }
+        }
+        List<SceneVO> responseScenes = sceneService.convertPro(sceneList);
+
+        if(Objects.isNull(param.getSceneSource())&& StrUtil.isEmpty(param.getSceneType()) &&
+                param.getStartTime() == null && param.getEndTime() == null){
+
+            result.addAll(folderService.convert(folderList));
+        }
+
+        result.addAll(responseScenes);
+
+        Page<Object> page  = PageInfoUtils.list2PageInfo(result, param.getPageNum(), param.getPageSize());
+        if(CollUtil.isEmpty(page.getRecords())){
+            return new Page(param.getPageNum(), param.getPageSize());
+        }
+        page.getRecords().parallelStream().filter(object -> object instanceof SceneVO).forEach(object -> {
+            SceneVO responseScene = (SceneVO) object;
+            if (responseScene.getCameraId() != null) {
 //                CameraEntity cameraEntity = goodsService.findCameraById(responseScene.getCameraId());
-//                if (cameraEntity != null) {
-//                    responseScene.setChildName(cameraEntity.getChildName());
-//                    responseScene.setSnCode(cameraEntity.getSnCode());
-//                }
-//            }
-//            // 获取VrThumb
-//            SceneProEditEntity editEntity = sceneProEditService.findByProId(responseScene.getId());
-//            if (!ObjectUtils.isEmpty(editEntity)) {
-//                responseScene.setVrNum(editEntity.getVrNum());
-//            }
-//        });
-//        return Result.success(data);
-        return null;
+                ResultData<Camera> cameraResult = platformGoodsClient
+                    .getCameraById(responseScene.getCameraId());
+                Camera camera = cameraResult.getData();
+                if (camera != null) {
+                    responseScene.setChildName(camera.getChildName());
+                    responseScene.setSnCode(camera.getSnCode());
+                }
+            }
+            // 获取VrThumb
+            SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getOne(
+                new LambdaQueryWrapper<SceneEditInfoExt>()
+                    .select(SceneEditInfoExt::getVrNum)
+                    .eq(SceneEditInfoExt::getSceneProId, responseScene.getId()));
+            if (Objects.nonNull(sceneEditInfoExt)) {
+                responseScene.setVrNum(sceneEditInfoExt.getVrNum());
+            }
+        });
+        return page;
     }
 }

+ 20 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.scene.entity.SceneEditInfoExt;
+import com.fdkankan.scene.mapper.ISceneEditInfoExtMapper;
+import com.fdkankan.scene.service.ISceneEditInfoExtService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-03-07
+ */
+@Service
+public class SceneEditInfoExtServiceImpl extends ServiceImpl<ISceneEditInfoExtMapper, SceneEditInfoExt> implements ISceneEditInfoExtService {
+
+}

+ 16 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -2229,9 +2229,17 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
     private void addOrUpdateHotData(String num, List<HotParamVO> hotDataList) throws Exception{
         Map<String, String> addOrUpdateMap = new HashMap<>();
-        hotDataList.stream().forEach(hotData -> {
-            addOrUpdateMap.put(hotData.getSid(), hotData.getHotData());
-        });
+//        hotDataList.stream().forEach(hotData -> {
+//            JSONObject jsonObject = JSON.parseObject(hotData.getHotData());
+//            jsonObject.put("createTime", Calendar.getInstance().getTimeInMillis());
+//            addOrUpdateMap.put(hotData.getSid(), jsonObject.toJSONString());
+//        });
+        int i = 0;
+        for (HotParamVO hotParamVO : hotDataList) {
+            JSONObject jsonObject = JSON.parseObject(hotParamVO.getHotData());
+            jsonObject.put("createTime", Calendar.getInstance().getTimeInMillis() + i++);
+            addOrUpdateMap.put(hotParamVO.getSid(), jsonObject.toJSONString());
+        }
 
         this.syncHotFromFileToRedis(num);
 
@@ -2314,8 +2322,12 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         List<JSONObject> tags = null;
         if(CollUtil.isNotEmpty(allTagsMap)){
             tags = allTagsMap.entrySet().parallelStream().map(entry -> {
-                return JSON.parseObject(entry.getValue());
+                JSONObject jsonObject = JSON.parseObject(entry.getValue());
+                return jsonObject;
             }).collect(Collectors.toList());
+            //按时间倒叙排序
+            Collections.sort(tags, Comparator.comparing(t -> t.getLong("createTime")));
+            tags.parallelStream().forEach(t->t.remove("createTime"));
         }
         result.put("tags", tags);
 

+ 31 - 1
4dkankan-center-scene/src/main/resources/mapper/scene/SceneCooperationMapper.xml

@@ -6,11 +6,41 @@
     select * from
     t_scene_pro p
     left join t_scene_pro_ext px on p.id = px.scene_pro_id
-    where px.scene_source != 11
+    where and p.tb_status = 0
+    and px.scene_source != 11
     and num in
     <foreach collection="numList" item="num" open="(" close=")" separator=",">
       #{num}
     </foreach>
+    <if test="sceneSourceList != null and sceneSourceList.size() != 0">
+      and px.scene_source in
+      <foreach collection="sceneSourceList" item="sceneSource" open="(" close=")" separator=",">
+        #{sceneSource}
+      </foreach>
+    </if>
+    <if test="sceneType != null and sceneType !=''">
+      and p.scene_type = #{sceneType}
+    </if>
+    <if test="startTime != null">
+      and p.create_time >= #{startTime}
+    </if>
+    <if test="endTime != null">
+      and p.create_time <![CDATA[ <= ]]> #{endTime}
+    </if>
+    <if test="folderId != null">
+      AND EXISTS (SELECT 1 FROM t_folder_scene fs WHERE fs.scene_id = p.id AND fs.folder_id = #{folder_Id} AND fs.`tb_status` = 0)
+    </if>
+
+    <if test="folderId != null and sceneSource == null and sceneType == null and startTime == null and endTime == null">
+      union
+      select * from
+      t_folder f
+      where f.tb_status = 0
+      and f.user_id = #{userId}
+      and f.parent_id = #{folderId}
+    </if>
+
+
 
 
 

+ 5 - 0
4dkankan-center-scene/src/main/resources/mapper/scene/SceneEditInfoExtMapper.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.scene.mapper.ISceneEditInfoExtMapper">
+
+</mapper>

+ 40 - 0
4dkankan-center-scene/src/main/resources/mapper/scene/SceneProMapper.xml

@@ -250,6 +250,46 @@
         limit 1
     </select>
 
+    <select id="selectCooperationSceneList" parameterType="com.fdkankan.scene.vo.SceneParamVO" resultType="com.fdkankan.scene.entity.SceneProPO">
+        select
+        <include refid="ScenePro_column"/>,
+        <include refid="SceneProExt_column"/>
+        from t_scene_pro t
+        left join t_scene_pro_ext ext on t.id = ext.scene_pro_id
+        where t.tb_status = 0
+        and ext.scene_source != 11
+        <if test="numList != null and numList.size() != 0">
+            and t.num in
+            <foreach collection="numList" item="num" open="(" close=")" separator=",">
+                #{num}
+            </foreach>
+        </if>
+        <if test="sceneSourceList != null and sceneSourceList.size() != 0">
+            and ext.scene_source in
+            <foreach collection="sceneSourceList" item="sceneSource" open="(" close=")" separator=",">
+                #{sceneSource}
+            </foreach>
+        </if>
+        <if test="sceneType != null and sceneType !=''">
+            and t.scene_type = #{sceneType}
+        </if>
+        <if test="startTime != null">
+            and t.create_time >= #{startTime}
+        </if>
+        <if test="endTime != null">
+            and t.create_time <![CDATA[ <= ]]> #{endTime}
+        </if>
+        order by t.id desc
+
+
+
+
+
+
+
+
+    </select>
+
 
 
 </mapper>