Bläddra i källkod

Merge branch 'hotfix-33507-20221201' into release

dsx 2 år sedan
förälder
incheckning
2a35b9ef13

+ 21 - 0
src/main/java/com/fdkankan/scene/controller/FolderSceneController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.scene.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 文件夹和场景关联表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-12-01
+ */
+@RestController
+@RequestMapping("/scene/folderScene")
+public class FolderSceneController {
+
+}
+

+ 48 - 0
src/main/java/com/fdkankan/scene/entity/FolderScene.java

@@ -0,0 +1,48 @@
+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.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 2022-12-01
+ */
+@Getter
+@Setter
+@TableName("t_folder_scene")
+public class FolderScene implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("folder_id")
+    private Long folderId;
+
+    @TableField("scene_id")
+    private Long sceneId;
+
+    @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/scene/generate/AutoGenerate.java

@@ -20,7 +20,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"scene", getTables(new String[]{
-                "t_scene_data_download"
+                "t_folder_scene"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/scene/mapper/IFolderSceneMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.FolderScene;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 文件夹和场景关联表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-12-01
+ */
+@Mapper
+public interface IFolderSceneMapper extends BaseMapper<FolderScene> {
+
+}

+ 19 - 0
src/main/java/com/fdkankan/scene/service/IFolderSceneService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.entity.FolderScene;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * <p>
+ * 文件夹和场景关联表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-12-01
+ */
+public interface IFolderSceneService extends IService<FolderScene> {
+
+    List<FolderScene> getBySceneId(long sceneId);
+
+}

+ 26 - 0
src/main/java/com/fdkankan/scene/service/impl/FolderSceneServiceImpl.java

@@ -0,0 +1,26 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.scene.entity.FolderScene;
+import com.fdkankan.scene.mapper.IFolderSceneMapper;
+import com.fdkankan.scene.service.IFolderSceneService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.List;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 文件夹和场景关联表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-12-01
+ */
+@Service
+public class FolderSceneServiceImpl extends ServiceImpl<IFolderSceneMapper, FolderScene> implements IFolderSceneService {
+
+    @Override
+    public List<FolderScene> getBySceneId(long sceneId) {
+        return this.list(new LambdaQueryWrapper<FolderScene>().eq(FolderScene::getSceneId, sceneId));
+    }
+}

+ 40 - 3
src/main/java/com/fdkankan/scene/service/impl/SceneUpgradeToV4Service.java

@@ -1,4 +1,5 @@
 package com.fdkankan.scene.service.impl;
+import java.util.Date;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
@@ -11,7 +12,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.constant.RecStatus;
 import com.fdkankan.model.utils.CreateHouseJsonUtil;
+import com.fdkankan.scene.entity.FolderScene;
 import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.service.IFolderSceneService;
 import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.web.response.ResultData;
 import com.fdkankan.common.util.FileUtils;
@@ -56,6 +59,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
@@ -113,6 +117,8 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
     private FYunFileServiceInterface fYunFileService;
     @Autowired
     private IScenePlusService scenePlusService;
+    @Autowired
+    private IFolderSceneService folderSceneService;
 
     @Override
     public void upgrade(long sceneProId, boolean reUpgrade)  throws Exception{
@@ -463,9 +469,6 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
             //迁移耗时
             consumTime = Calendar.getInstance().getTimeInMillis() - startTime;
 
-            //记录日志
-            this.upgradeLog(sceneRepairLog, num, 1, null, consumTime);
-
             //处理scenepro的升级状态和协作关系
             sceneProService.upgradeToV4ResultSync(
                 RequestSceneProV4.builder()
@@ -473,8 +476,14 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
                     .webSite(scenePro.getWebSite())
                     .build());
 
+            //如果场景是放在文件夹中的,需要把升级后的场景id放入文件夹中
+            this.reBindFolder(scenePro.getId(), scenePlus.getId());
+
             this.updateProgress(num, 100, ProgressStatus.SUCCESS.code());
 
+            //记录日志
+            this.upgradeLog(sceneRepairLog, num, 1, null, consumTime);
+
         }catch (Exception e){
             log.error(e.getMessage(), e);
 
@@ -492,6 +501,34 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
         }
     }
 
+    /**
+     * <p>
+            场景升级后,场景id发生了变化,需要把新的id放入倒文件夹中
+     * </p>
+     * @author dengsixing
+     * @date 2022/12/1
+     * @param sceneProId
+     * @param scenePlusId
+     **/
+    private void reBindFolder(long sceneProId, long scenePlusId){
+        List<FolderScene> proFolderList = folderSceneService.getBySceneId(sceneProId);
+        if(CollUtil.isEmpty(proFolderList)){
+            return;
+        }
+        //先删除旧的id关系数据
+        Set<Long> removeIdList = proFolderList.stream().map(fs -> fs.getId()).collect(Collectors.toSet());
+        folderSceneService.removeByIds(removeIdList);
+
+        //写入新的id关系数据
+        List<FolderScene> list = proFolderList.stream().map(fs -> {
+            FolderScene plusFs = new FolderScene();
+            plusFs.setFolderId(fs.getFolderId());
+            plusFs.setSceneId(scenePlusId);
+            return plusFs;
+        }).collect(Collectors.toList());
+        folderSceneService.saveBatch(list);
+    }
+
     private void rollback(String num){
 
         //还原scenePro的升级状态

+ 5 - 0
src/main/resources/mapper/scene/FolderSceneMapper.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.IFolderSceneMapper">
+
+</mapper>