lyhzzz il y a 3 jours
Parent
commit
95dc3e3a90
53 fichiers modifiés avec 925 ajouts et 252 suppressions
  1. 4 1
      src/main/java/com/fdkankan/fusion/common/FilePath.java
  2. 5 3
      src/main/java/com/fdkankan/fusion/common/ResultCode.java
  3. 21 0
      src/main/java/com/fdkankan/fusion/common/util/CameraUtil.java
  4. 5 0
      src/main/java/com/fdkankan/fusion/common/util/LocalToOssUtil.java
  5. 7 0
      src/main/java/com/fdkankan/fusion/common/util/UploadToOssUtil.java
  6. 16 28
      src/main/java/com/fdkankan/fusion/config/SaTokenConfigure.java
  7. 65 19
      src/main/java/com/fdkankan/fusion/controller/CaseController.java
  8. 2 2
      src/main/java/com/fdkankan/fusion/controller/CaseFilesController.java
  9. 9 1
      src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java
  10. 45 8
      src/main/java/com/fdkankan/fusion/controller/CaseOverviewController.java
  11. 20 0
      src/main/java/com/fdkankan/fusion/controller/CaseTabulationController.java
  12. 7 3
      src/main/java/com/fdkankan/fusion/controller/TestController.java
  13. 4 0
      src/main/java/com/fdkankan/fusion/entity/CaseFilesType.java
  14. 0 5
      src/main/java/com/fdkankan/fusion/entity/CaseFusion.java
  15. 48 0
      src/main/java/com/fdkankan/fusion/entity/CaseFusionRelation.java
  16. 6 0
      src/main/java/com/fdkankan/fusion/entity/ScenePlus.java
  17. 1 1
      src/main/java/com/fdkankan/fusion/entity/jsonEntity/Transform.java
  18. 2 2
      src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java
  19. 64 13
      src/main/java/com/fdkankan/fusion/httpClient/FdService.java
  20. 4 2
      src/main/java/com/fdkankan/fusion/httpClient/client/FdKKClient.java
  21. 27 0
      src/main/java/com/fdkankan/fusion/httpClient/request/AddMediaLibraryParam.java
  22. 5 0
      src/main/java/com/fdkankan/fusion/httpClient/request/ManageSceneParam.java
  23. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseFusionRelationMapper.java
  24. 15 0
      src/main/java/com/fdkankan/fusion/request/ExportOverviewParam.java
  25. 3 0
      src/main/java/com/fdkankan/fusion/response/CaseVo.java
  26. 4 0
      src/main/java/com/fdkankan/fusion/response/FusionAndSceneVo.java
  27. 1 0
      src/main/java/com/fdkankan/fusion/response/SceneVo.java
  28. 7 2
      src/main/java/com/fdkankan/fusion/service/ICaseFilesService.java
  29. 2 1
      src/main/java/com/fdkankan/fusion/service/ICaseFilesTypeService.java
  30. 21 0
      src/main/java/com/fdkankan/fusion/service/ICaseFusionRelationService.java
  31. 1 1
      src/main/java/com/fdkankan/fusion/service/ICaseFusionService.java
  32. 14 0
      src/main/java/com/fdkankan/fusion/service/ICaseOverviewService.java
  33. 7 0
      src/main/java/com/fdkankan/fusion/service/ICaseTabulationService.java
  34. 1 1
      src/main/java/com/fdkankan/fusion/service/IFusionNumService.java
  35. 8 0
      src/main/java/com/fdkankan/fusion/service/IScenePlusService.java
  36. 72 11
      src/main/java/com/fdkankan/fusion/service/impl/CaseFilesServiceImpl.java
  37. 2 9
      src/main/java/com/fdkankan/fusion/service/impl/CaseFilesTypeServiceImpl.java
  38. 57 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseFusionRelationServiceImpl.java
  39. 16 22
      src/main/java/com/fdkankan/fusion/service/impl/CaseFusionServiceImpl.java
  40. 0 24
      src/main/java/com/fdkankan/fusion/service/impl/CaseNumServiceImpl.java
  41. 136 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseOverviewServiceImpl.java
  42. 54 2
      src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java
  43. 43 39
      src/main/java/com/fdkankan/fusion/service/impl/CaseTabulationServiceImpl.java
  44. 0 1
      src/main/java/com/fdkankan/fusion/service/impl/CopyCaseService.java
  45. 2 0
      src/main/java/com/fdkankan/fusion/service/impl/DictFileServiceImpl.java
  46. 0 11
      src/main/java/com/fdkankan/fusion/service/impl/FusionMeterServiceImpl.java
  47. 6 2
      src/main/java/com/fdkankan/fusion/service/impl/FusionNumServiceImpl.java
  48. 1 1
      src/main/java/com/fdkankan/fusion/service/impl/ModelServiceImpl.java
  49. 32 0
      src/main/java/com/fdkankan/fusion/service/impl/ScenePlusServiceImpl.java
  50. 2 21
      src/main/java/com/fdkankan/fusion/service/impl/SceneService.java
  51. 1 1
      src/main/resources/bootstrap.yml
  52. 27 15
      src/main/resources/logback-spring.xml
  53. 5 0
      src/main/resources/mapper/fusion/CaseFusionRelationMapper.xml

+ 4 - 1
src/main/java/com/fdkankan/fusion/common/FilePath.java

@@ -23,6 +23,9 @@ public class FilePath {
     public final static String OFFLINE_OSS_PATH = OFFLINE_PACKAGE_PATH + "%s/env/www";
     public final static String OFFLINE_LASER_OSS_PATH =  "/swss/%s/env/www/%s/";
     public final static String LASER_OSS_PATH = "laser-prod/%s/data/%s/webcloud";
-    public final static String MESH_SCENE_FLOOR_PNG_PATH = "scene_view_data/%s/user/floor-upload-%s.png";
+    public final static String MESH_SCENE_FLOOR_PNG_PATH = "scene_edit_data/%s/user/";
+    public final static String MESH_SCENE_FLOOR_PNG_PATH_NAME = "floor-upload-%s.png";
     public final static String MESH_SCENE_FLOOR_JSON_PATH = "scene_edit_data/%s/user/floorplan.json";
+    public final static String MESH_SCENE_FLOOR_JSON_PATH_LOCAL = "/mnt/fusion/scene_edit_data/%s/user/floorplan.json";
+    public final static String MESH_SCENE_FLOOR_JSON_PATH_SOURCE = "scene_view_data/%s/data/floorplan.json";
 }

+ 5 - 3
src/main/java/com/fdkankan/fusion/common/ResultCode.java

@@ -83,10 +83,12 @@ public enum ResultCode {
 
     RECORD_NOT_EXIST(8032, "数据不存在或已删除"),
 
+    FUSION_NOT_EXIST(8033,"多元融合不存在"),
+    FUSION_NOT_PERMISSION(40110,"没有编辑权限"),
+    FUSION_NOT_PERMISSION2(40111,"没有查看权限"),
+    REMOVE_ERROR(60041, "至少保留一个实景三维/多元融合场景"),
 
-    ;
-
-
+;
 
 
 

+ 21 - 0
src/main/java/com/fdkankan/fusion/common/util/CameraUtil.java

@@ -10,4 +10,25 @@ public class CameraUtil {
             default: return "八目";
         }
     }
+
+
+    /**
+     * 现勘一号             SS
+     * 现勘二号             SG
+     * 现勘三号             KJ
+     * 现勘补拍仪           YZL
+     * 四维看看
+     */
+    public static String getSourceName(Integer type) {
+        switch (type){
+            case 1: return "现勘三号/Mesh";
+            case 2: return "现勘一号/点云";
+            case 4: return "现勘一号/Mesh";
+            case 5: return "现勘二号/点云";
+            case 6: return "现勘二号/Mesh";
+            case 7: return "现勘补拍仪";
+            case 3: return "三维模型";
+            default: return "四维看看/Mesh";
+        }
+    }
 }

+ 5 - 0
src/main/java/com/fdkankan/fusion/common/util/LocalToOssUtil.java

@@ -122,4 +122,9 @@ public class LocalToOssUtil {
     public Long getSize(String filePath) {
         return getSizeCount( getOssPath(bucket, filePath));
     }
+
+    public String readFile(String jsonPathSource) {
+        File file = new File(getOssPath(bucket, jsonPathSource));
+        return FileUtil.readUtf8String(file);
+    }
 }

+ 7 - 0
src/main/java/com/fdkankan/fusion/common/util/UploadToOssUtil.java

@@ -374,4 +374,11 @@ public class UploadToOssUtil {
 	public String getOssPath(String path) {
 		return path.replace(queryPath,"");
 	}
+
+	public String readFile(String jsonPathSource) {
+		if("local".equals(type)){
+			return localToOssUtil.readFile(jsonPathSource);
+		}
+		return this.getObjectContent(this.bucket,jsonPathSource);
+	}
 }

+ 16 - 28
src/main/java/com/fdkankan/fusion/config/SaTokenConfigure.java

@@ -7,6 +7,7 @@ import cn.dev33.satoken.exception.NotRoleException;
 import cn.dev33.satoken.filter.SaServletFilter;
 import cn.dev33.satoken.jwt.StpLogicJwtForMixin;
 import cn.dev33.satoken.router.SaRouter;
+import cn.dev33.satoken.router.SaRouterStaff;
 import cn.dev33.satoken.spring.SpringMVCUtil;
 import cn.dev33.satoken.stp.StpLogic;
 import cn.dev33.satoken.stp.StpUtil;
@@ -60,36 +61,24 @@ public class SaTokenConfigure {
                     String sign = SaHolder.getRequest().getHeader("sign");
                     String pageType = SaHolder.getRequest().getHeader("page-type");
                     String caseId = SaHolder.getRequest().getHeader("caseId");
+                    String fusionId = SaHolder.getRequest().getHeader("fusionId");
                     if(StringUtils.isNotBlank(sign)){
                         String clientIP = ServletUtil.getClientIP(SpringMVCUtil.getRequest());
                         SaRouter.match("/**", "/case/addScene", r -> checkSign(sign,clientIP));
                     }else {
-                        SaRouter.match("/**", "/case/addScene", r ->checkCaseAuth(caseId,pageType));
-                        SaRouter.match("/**", "/fdLogin", r ->checkLogin() );
-                    }
-
-
-                    SaRouter.match("/sceneDownLog/list", r -> StpUtil.checkRoleOr("admin-super","admin-system","admin") );
+                        SaRouter.match("/**", "/fdLogin", r -> checkLogin());
+                        SaRouterStaff match1 = SaRouter.match("/**");
+                        match1.notMatch(
+                                "/case/addScene",
+                                "/**/caseTabulation/**",
+                                "/**/caseOverview/**",
+                                "/**/upload/**",
+                                "/**/sceneListPost/**",
+                                "/**/mapConfig/**",
+                                "/**/notAuth/**"
+                        );
+                        match1.check(r ->checkCaseAuth(caseId,fusionId,pageType));
 
-                    // 登录认证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
-                    String menu = redisUtil.get(RedisKey.MANAGE_MENU);
-                    if(StringUtils.isBlank(menu)){
-                        SaRouter.match("/**", r -> StpUtil.checkRole("admin-super"));
-                        return;
-                    }
-
-                    JSONArray menuArray = JSONObject.parseArray(menu);
-                    for (Object o : menuArray) {
-                        JSONObject jsonObject = (JSONObject)  o;
-                        String url = jsonObject.getString("url");
-                        String perm = jsonObject.getString("perms");
-                        if(StringUtils.isEmpty(url) || StringUtils.isEmpty(perm)){
-                            continue;
-                        }
-                        if(StpUtil.hasRole("admin-super")){
-                            continue;
-                        }
-                        SaRouter.match(url, r -> StpUtil.checkPermission(perm));
                     }
                 })
 
@@ -160,9 +149,8 @@ public class SaTokenConfigure {
         }
     }
 
-    private void checkCaseAuth(String caseId,String pageType) {
-
-        //fdService.checkCaseAuth(caseId,pageType,StpUtil.getTokenValue());
+    private void checkCaseAuth(String caseId,String fusionId,String pageType) {
+        fdService.checkCaseAuth(caseId,fusionId,pageType,StpUtil.getTokenValue());
     }
 
 

+ 65 - 19
src/main/java/com/fdkankan/fusion/controller/CaseController.java

@@ -4,11 +4,14 @@ package com.fdkankan.fusion.controller;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.fusion.aop.PushJm;
+import com.fdkankan.fusion.common.PageInfo;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.entity.*;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.httpClient.FdService;
 import com.fdkankan.fusion.httpClient.client.FdKKClient;
 import com.fdkankan.fusion.httpClient.request.ManageSceneParam;
 import com.fdkankan.fusion.request.CaseParam;
@@ -19,9 +22,11 @@ import com.fdkankan.fusion.service.impl.CopyCaseService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import scala.Int;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -46,6 +51,10 @@ public class CaseController extends BaseController{
     IScenePlusService scenePlusService;
     @Autowired
     FdKKClient fdKKClient;
+    @Autowired
+    IJyUserService jyUserService;
+    @Autowired
+    FdService fdService;
 
     @PostMapping("/list")
     public ResultData list(@RequestBody CaseParam param ){
@@ -64,8 +73,17 @@ public class CaseController extends BaseController{
 
     @PostMapping("/sceneListPost")
     public ResultData sceneListPost(@RequestBody ManageSceneParam param ){
+        if(param.getCaseId() != null){
+            List<CaseNumEntity> byCaseId = caseNumService.getByCaseId(param.getCaseId());
+            List<String> numList = byCaseId.stream().map(CaseNumEntity::getNum).collect(Collectors.toList());
+            param.setNumList(numList);
+        }else {
+            JyUser jyUser = jyUserService.getBySysId(Long.valueOf(StpUtil.getLoginId().toString()));
+            param.setUserId(jyUser.getUserId());
+        }
+        Page<ScenePlus> page = scenePlusService.pageList(param);
+        return ResultData.ok(PageInfo.PageInfo(page));
 
-        return fdKKClient.mangeSceneList(param, StpUtil.getTokenValue());
     }
     @PostMapping("/addOrUpdate")
     @PushJm(event_content = "添加案件")
@@ -82,7 +100,7 @@ public class CaseController extends BaseController{
     }
 
 
-    //@PostMapping("/addScene")
+    @PostMapping("/addScene")
     @PushJm(event_content = "添加场景")
     public ResultData addScene(@RequestBody CaseParam param){
         caseService.addScene(param);
@@ -108,26 +126,49 @@ public class CaseController extends BaseController{
 
 
     @GetMapping("/getFusionAndScene")
-    public ResultData getFusionAndScene(@RequestParam(required = false) Integer caseId){
+    public ResultData getFusionAndScene(@RequestParam(required = false) Integer caseId,
+                                        @RequestParam(required = false) String type){
+        if(caseId == null || StringUtils.isBlank(type)){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
         List<FusionAndSceneVo> voList = new ArrayList<>();
-        List<CaseFusion> byCaseId = caseFusionService.getListByCaseId(caseId);
-        for (CaseFusion caseFusion : byCaseId) {
-            FusionAndSceneVo vo = new FusionAndSceneVo();
-            vo.setTitle(caseFusion.getFusionTitle());
-            vo.setFusionId(caseFusion.getFusionId());
-            vo.setType("fusion");
-            voList.add(vo);
+        if("fusion".equals(type)){
+            List<CaseFusion> byCaseId = caseFusionService.getListByCaseId(caseId);
+            for (CaseFusion caseFusion : byCaseId) {
+                FusionAndSceneVo vo = new FusionAndSceneVo();
+                vo.setTitle(caseFusion.getFusionTitle());
+                vo.setFusionId(caseFusion.getFusionId());
+                vo.setType("fusion");
+                fdService.getAuth(vo,caseFusion.getFusionId().toString(),vo.getType(),StpUtil.getTokenValue());
+                voList.add(vo);
+            }
+            return ResultData.ok(voList);
         }
-        List<CaseNumEntity> caseNums = caseNumService.getByCaseId(caseId);
-        List<String> numList = caseNums.stream().map(CaseNumEntity::getNum).collect(Collectors.toList());
-        List<ScenePlus> scenePlusList = scenePlusService.getByNumList(numList);
-        for (ScenePlus scenePlus : scenePlusList) {
-            FusionAndSceneVo vo = new FusionAndSceneVo();
-            vo.setTitle(scenePlus.getTitle());
-            vo.setNum(scenePlus.getNum());
-            vo.setType("scene");
-            voList.add(vo);
+        if("scene".equals(type)){
+            List<CaseNumEntity> caseNums = caseNumService.getByCaseId(caseId);
+
+            List<String> numList = caseNums.stream().map(CaseNumEntity::getNum).collect(Collectors.toList());
+            List<ScenePlus> scenePlusList = scenePlusService.getByNumList(numList);
+            HashMap<String, ScenePlus> map = new HashMap<>();
+            scenePlusList.forEach(e-> map.put(e.getNum(),e));
+
+            for (CaseNumEntity caseNum : caseNums) {
+                ScenePlus scenePlus = map.get(caseNum.getNum());
+                if(scenePlus == null){
+                    continue;
+                }
+                FusionAndSceneVo vo = new FusionAndSceneVo();
+                vo.setSceneNumId(caseNum.getId());
+                vo.setTitle(scenePlus.getTitle());
+                vo.setNum(scenePlus.getNum());
+                vo.setSceneType(caseNum.getNumType());
+                vo.setType("scene");
+                fdService.getAuth(vo,scenePlus.getNum(),vo.getType(),StpUtil.getTokenValue());
+                voList.add(vo);
+            }
+            return ResultData.ok(voList);
         }
+
         return ResultData.ok(voList);
     }
 
@@ -137,5 +178,10 @@ public class CaseController extends BaseController{
         caseService.addFusionIds(param);
         return ResultData.ok();
     }
+
+    @PostMapping("/delCaseFusion")
+    public ResultData delCaseFusion(@RequestBody CaseParam param){
+        return ResultData.ok();
+    }
 }
 

+ 2 - 2
src/main/java/com/fdkankan/fusion/controller/CaseFilesController.java

@@ -129,7 +129,7 @@ public class CaseFilesController extends BaseController{
             wrapper.eq(CaseFiles::getFilesId,param.getFilesId());
         }
         if(!param.getFilesIds().isEmpty()){
-            wrapper.in(CaseFiles::getFilesId,param.getFilesId());
+            wrapper.in(CaseFiles::getFilesId,param.getFilesIds());
         }
         wrapper.set(CaseFiles::getFilesTypeId,param.getFilesTypeId());
         caseFilesService.update(wrapper);
@@ -204,7 +204,7 @@ public class CaseFilesController extends BaseController{
         if(caseFiles.getFilesIds().isEmpty() ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        caseFilesService.removeByIds(caseFiles.getFilesIds());
+        caseFilesService.del(caseFiles.getFilesIds());
 
         return ResultData.ok();
     }

+ 9 - 1
src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java

@@ -2,11 +2,14 @@ package com.fdkankan.fusion.controller;
 
 
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.common.util.CameraUtil;
 import com.fdkankan.fusion.common.util.FileWriterUtil;
 import com.fdkankan.fusion.entity.*;
+import com.fdkankan.fusion.entity.jsonEntity.Transform;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.request.FusionParam;
 import com.fdkankan.fusion.request.SceneNumParam;
@@ -98,9 +101,10 @@ public class CaseFusionController extends BaseController{
                 JSONArray jsonArray = new JSONArray();
                 jsonArray.add(commonUpload.getFileUrl());
                 model.setModelGlbUrl(jsonArray.toJSONString());
+                model.setType(3);
                 modelService.save(model);
             }
-            return ResultData.ok(fusionNumService.addModel(param,model.getModelId()));
+            return ResultData.ok(fusionNumService.addModel(param,model.getModelId(),model.getModelTitle()));
         }
         ScenePlus scenePlus = scenePlusService.getByNum(param.getNum());
         return ResultData.ok(fusionNumService.add(param,scenePlus,param.getIsObj()));
@@ -157,7 +161,9 @@ public class CaseFusionController extends BaseController{
         scenePlusList.stream().forEach(e -> map.put(e.getNum(),e));
 
         for (FusionNum fusionNum : fusionNumList) {
+            Transform transform = JSONObject.parseObject(fusionNum.getTransform(),Transform.class);
             FusionNumVo vo = new FusionNumVo();
+            vo.setTransform(transform);
             BeanUtils.copyProperties(fusionNum,vo);
             SceneVo sceneVo = new SceneVo();
             Model model = modelMap.get(fusionNum.getModelId());
@@ -174,6 +180,7 @@ public class CaseFusionController extends BaseController{
                 }else {
                     sceneVo.setStatus(2);
                 }
+                sceneVo.setSourceName(CameraUtil.getSourceName(model.getType()));
             }
             vo.setSceneData(sceneVo);
             sceneVos.add(vo);
@@ -181,5 +188,6 @@ public class CaseFusionController extends BaseController{
 
         return sceneVos;
     }
+
 }
 

+ 45 - 8
src/main/java/com/fdkankan/fusion/controller/CaseOverviewController.java

@@ -2,6 +2,7 @@ package com.fdkankan.fusion.controller;
 
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.date.DateUtil;
 import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.ResultCode;
@@ -12,8 +13,10 @@ import com.fdkankan.fusion.common.util.UploadToOssUtil;
 import com.fdkankan.fusion.config.FusionConfig;
 import com.fdkankan.fusion.entity.CaseEntity;
 import com.fdkankan.fusion.entity.CaseOverview;
+import com.fdkankan.fusion.entity.CaseTabulation;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.httpClient.client.OtherClient;
+import com.fdkankan.fusion.request.ExportOverviewParam;
 import com.fdkankan.fusion.service.ICaseFilesTypeIconService;
 import com.fdkankan.fusion.service.ICaseOverviewService;
 import com.fdkankan.fusion.service.ICaseService;
@@ -23,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.File;
+import java.util.Date;
 import java.util.HashMap;
 
 /**
@@ -61,38 +65,71 @@ public class CaseOverviewController extends BaseController{
     public ResultData info(@RequestParam(required = false) Integer overviewId,
                            @RequestParam(required = false) String num,
                            @RequestParam(required = false, defaultValue = "0") Integer subGroup) {
+        CaseOverview caseOverview = null;
         if (overviewId != null) {
-            return ResultData.ok(caseOverviewService.getById(overviewId));
+             caseOverview = caseOverviewService.getById(overviewId);
+             caseOverviewService.checkLoginUser(caseOverview,null);
         }
         if (StringUtils.isNotBlank(num)) {
-            return ResultData.ok(caseOverviewService.getByNumAndSubGroup(num, subGroup));
+            caseOverview = caseOverviewService.getByNumAndSubGroup(num, subGroup);
         }
-        return ResultData.ok();
+        return ResultData.ok(caseOverview);
     }
 
     @PostMapping("/addOrUpdate")
     @PushJm(event_content = "添加绘图")
     public ResultData addOrUpdate(@RequestBody CaseOverview caseOverview) {
+        if(caseOverview.getId() != null){
+            caseOverviewService.checkLoginUser(caseOverviewService.getById(caseOverview.getId()),null);
+        }
         caseOverview.setPlatformId(getPlatformId());
         caseOverview.setSysUserId(getSysUserId());
         if(StringUtils.isNotBlank(caseOverview.getNum()) && caseOverview.getSubGroup() == null){
             caseOverview.setSubGroup(0);
         }
+        if(caseOverview.getId() ==null && StringUtils.isBlank(caseOverview.getTitle())){
+            Long no = caseOverviewService.getNo(getSysUserId());
+            String title = "平面图"+ DateUtil.format(new Date(),"yyyyMMdd")+"_"+no;
+            caseOverview.setTitle(title);
+        }
         caseOverviewService.saveOrUpdate(caseOverview);
+        CaseTabulation caseTabulation = new CaseTabulation();
         if (caseOverview.getCaseTabulation() != null) {
-            caseOverview.getCaseTabulation().setOverviewId(caseOverview.getId());
-            caseOverview.getCaseTabulation().setCaseId(caseOverview.getCaseId());
-            caseOverview.getCaseTabulation().setSysUserId(caseOverview.getSysUserId());
-            caseOverview.getCaseTabulation().setPlatformId(caseOverview.getPlatformId());
-            caseTabulationService.addOrUpdate(caseOverview.getCaseTabulation());
+            caseTabulation = caseOverview.getCaseTabulation();
+        }
+        if(StringUtils.isBlank(caseTabulation.getListCover())){
+            caseTabulation.setListCover(caseOverview.getListCover());
+        }
+        caseTabulation.setOverviewId(caseOverview.getId());
+        caseTabulation.setCaseId(caseOverview.getCaseId());
+        caseTabulation.setSysUserId(caseOverview.getSysUserId());
+        caseTabulation.setPlatformId(caseOverview.getPlatformId());
+        caseTabulation.setTitle(caseOverview.getTitle());
+        caseTabulationService.addOrUpdate(caseTabulation);
+        //同步mesh编辑器
+        if(StringUtils.isNotBlank(caseOverview.getNum()) && caseOverview.getSubGroup() != null){
+            caseOverviewService.toMeshEdit(caseOverview.getNum(),caseOverview.getSubGroup(),caseOverview.getListCover());
         }
+
         return ResultData.ok(caseOverview);
     }
 
     @PostMapping("/del")
     public ResultData del(@RequestBody CaseOverview caseOverview) {
+        if(caseOverview.getId() != null){
+            caseOverviewService.checkLoginUser(caseOverviewService.getById(caseOverview.getId()),null);
+        }
         caseOverviewService.removeById(caseOverview.getId());
         return ResultData.ok();
     }
+
+    @PostMapping("/export")
+    public ResultData export(@RequestBody ExportOverviewParam param) {
+        if(param.getCaseId() == null || (param.getOverviewIds().isEmpty() && param.getTabulationIds().isEmpty())){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        caseOverviewService.export(param);
+        return ResultData.ok();
+    }
 }
 

+ 20 - 0
src/main/java/com/fdkankan/fusion/controller/CaseTabulationController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import cn.hutool.core.date.DateUtil;
 import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
@@ -12,6 +13,8 @@ import com.fdkankan.fusion.entity.CaseOverview;
 import com.fdkankan.fusion.entity.CaseTabulation;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.httpClient.client.OtherClient;
+import com.fdkankan.fusion.request.ExportOverviewParam;
+import com.fdkankan.fusion.service.ICaseOverviewService;
 import com.fdkankan.fusion.service.ICaseService;
 import com.fdkankan.fusion.service.ICaseTabulationService;
 import lombok.extern.slf4j.Slf4j;
@@ -19,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.HashMap;
 
 /**
@@ -43,6 +47,8 @@ public class CaseTabulationController extends BaseController{
     ICaseService caseService;
     @Autowired
     FusionConfig fusionConfig;
+    @Autowired
+    ICaseOverviewService caseOverviewService;
 
     @GetMapping("/getByCaseId")
     public ResultData getByCaseId (@RequestParam(required = false) String caseId){
@@ -56,6 +62,7 @@ public class CaseTabulationController extends BaseController{
         if(caseTabulation == null){
             throw new BusinessException(ResultCode.RECORD_NOT_EXIST);
         }
+        caseOverviewService.checkLoginUser(null,caseTabulation);
         return ResultData.ok(caseTabulation);
     }
 
@@ -68,8 +75,18 @@ public class CaseTabulationController extends BaseController{
     @PostMapping("/addOrUpdate")
     @PushJm(event_content = "添加制表")
     public ResultData addOrUpdate (@RequestBody CaseTabulation caseTabulation){
+
+        if(caseTabulation.getId() != null){
+            caseOverviewService.checkLoginUser(null,caseTabulationService.getById(caseTabulation.getId()));
+        }
+
         caseTabulation.setPlatformId(getPlatformId());
         caseTabulation.setSysUserId(getSysUserId());
+        if(caseTabulation.getId() == null && StringUtils.isBlank(caseTabulation.getTitle())){
+            Long no = caseTabulationService.getNo(getSysUserId());
+            String title = "方位图"+ DateUtil.format(new Date(),"yyyyMMdd")+"_"+no +1;
+            caseTabulation.setTitle(title);
+        }
         caseTabulationService.addOrUpdate(caseTabulation);
         try {
             if( StringUtils.isNotBlank(caseTabulation.getListCover()) && caseTabulation.getOverviewId() != null){
@@ -96,6 +113,9 @@ public class CaseTabulationController extends BaseController{
 
     @PostMapping("/del")
     public ResultData del (@RequestBody CaseTabulation caseTabulation){
+        if(caseTabulation.getId() != null){
+            caseOverviewService.checkLoginUser(null,caseTabulationService.getById(caseTabulation.getId()));
+        }
         caseTabulationService.removeById(caseTabulation.getId());
         return ResultData.ok();
     }

+ 7 - 3
src/main/java/com/fdkankan/fusion/controller/TestController.java

@@ -23,6 +23,7 @@ import org.apache.ibatis.annotations.Case;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import scala.Int;
 import sun.java2d.pipe.SpanIterator;
 
 import javax.servlet.http.HttpServletRequest;
@@ -114,9 +115,12 @@ public class TestController {
     }
 
 
-    @PostMapping("/testPost")
-    @PushJm(event_content = "11111111")
-    public ResultData testPost(@RequestBody JSONObject jsonObject){
+    @Autowired
+    ICaseOverviewService caseOverviewService;
+    @GetMapping("/toMeshEdit/{num}/{subgroup}")
+    public ResultData toMeshEdit(@PathVariable String num, @PathVariable Integer subgroup){
+        caseOverviewService.toMeshEdit(num,subgroup,"/oss/fusion/jm/file/6e5a5f643ccb4efb87cf2753151b6125.png");
+
         return ResultData.ok();
     }
 }

+ 4 - 0
src/main/java/com/fdkankan/fusion/entity/CaseFilesType.java

@@ -11,6 +11,7 @@ import java.util.List;
 
 import lombok.Getter;
 import lombok.Setter;
+import scala.Int;
 
 /**
  * <p>
@@ -63,4 +64,7 @@ public class CaseFilesType implements Serializable {
 
     @TableField(exist = false)
     private List<CaseFilesTypeIcon> iconList;
+
+    @TableField("dict_id")
+    private Integer dictId;
 }

+ 0 - 5
src/main/java/com/fdkankan/fusion/entity/CaseFusion.java

@@ -37,11 +37,6 @@ public class CaseFusion implements Serializable {
     @TableField("fusion_title")
     private String fusionTitle;
 
-    /**
-     * 案件id
-     */
-    @TableField("case_id")
-    private Integer caseId;
 
     @TableField("platform_id")
     private Integer platformId;

+ 48 - 0
src/main/java/com/fdkankan/fusion/entity/CaseFusionRelation.java

@@ -0,0 +1,48 @@
+package com.fdkankan.fusion.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 2025-09-02
+ */
+@Getter
+@Setter
+@TableName("t_case_fusion_relation")
+public class CaseFusionRelation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("case_id")
+    private Integer caseId;
+
+    @TableField("fusion_id")
+    private Integer fusionId;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 6 - 0
src/main/java/com/fdkankan/fusion/entity/ScenePlus.java

@@ -125,4 +125,10 @@ public class ScenePlus implements Serializable {
     @TableField("three_cam_type")
     private String threeCamType;
 
+    @TableField(exist = false)
+    private String sceneName;
+
+    public String getSceneName() {
+        return title;
+    }
 }

+ 1 - 1
src/main/java/com/fdkankan/fusion/entity/jsonEntity/Transform.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 @Data
 public class Transform {
-    private List<Double> scale = Arrays.asList(1.0,1.0,1.0);
+    private List<Double> scale = Arrays.asList(100.0,100.0,100.0);
     private Position position = new Position();
     private Rotation rotation = new Rotation();
 

+ 2 - 2
src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"fusion", getTables(new String[]{
-               "t_dict_icon"
+               "t_case_fusion_relation"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -48,7 +48,7 @@ public class AutoGenerate {
     public static void  generate(String path,String moduleName,  List<String> tables){
 //        FastAutoGenerator.create("jdbc:mysql://192.168.0.25:3306/fd_fusion_xj",
 //                "root","mysql123!ROOT.")
-        FastAutoGenerator.create("jdbc:mysql://192.168.0.125:13306/4dkankan_v4",
+        FastAutoGenerator.create("jdbc:mysql://192.168.0.125:13306/fd_fusion",
                 "root","4dkk2023cuikuan%")
                 .globalConfig(builder -> {
                     builder.author("")               //作者

+ 64 - 13
src/main/java/com/fdkankan/fusion/httpClient/FdService.java

@@ -8,6 +8,7 @@ import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.common.util.DateUtils;
 import com.fdkankan.fusion.common.util.RedisKeyUtil;
 import com.fdkankan.fusion.entity.CaseEntity;
+import com.fdkankan.fusion.entity.CaseFusion;
 import com.fdkankan.fusion.entity.TmCamera;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.httpClient.client.FdKKClient;
@@ -21,6 +22,8 @@ import com.fdkankan.fusion.httpClient.response.FdRoomVo;
 import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
 import com.fdkankan.fusion.httpClient.response.FdkkResponse;
 import com.fdkankan.fusion.response.CameraVo;
+import com.fdkankan.fusion.response.FusionAndSceneVo;
+import com.fdkankan.fusion.service.ICaseFusionService;
 import com.fdkankan.fusion.service.ICaseService;
 import com.fdkankan.redis.util.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -153,26 +156,62 @@ public class FdService {
     }
     @Autowired
     ICaseService caseService;
+    @Autowired
+    ICaseFusionService caseFusionService;
+
+    public  void checkCaseAuth(String caseId,String fusionId,String pageType,String token) {
+        if(StringUtils.isBlank(pageType)  || StringUtils.isBlank(token)
+                || (StringUtils.isBlank(caseId) && StringUtils.isBlank(fusionId))
+        ){
+            throw new BusinessException(ResultCode.NOT_PERMISSION);
+        }
+        String source = null;
+        String sourceType = null;
 
-    public  void checkCaseAuth(String caseId,String pageType,String token) {
-        CaseEntity caseEntity = caseService.getById(caseId);
-        if(caseEntity == null){
-            throw new BusinessException(ResultCode.CASE_NOT_EXIST);
+        if(StringUtils.isNotBlank(caseId)){
+            CaseEntity caseEntity = caseService.getById(caseId);
+            if(caseEntity == null){
+                throw new BusinessException(ResultCode.CASE_NOT_EXIST);
+            }
+            source = caseId;
+            sourceType = "case";
+
+            if(Long.valueOf(StpUtil.getLoginId().toString()).equals(caseEntity.getSysUserId())){
+                return;
+            }
+            Integer platform_id = (Integer) StpUtil.getExtra("platformId");
+
+            String roleType =  (String) StpUtil.getExtra("roleType");
+            if("super-admin".equals(roleType)){
+                return;
+            }
+            if(roleType.contains("admin") && caseEntity.getPlatformId().equals(platform_id)){
+                return;
+            }
+
+        }
+        if(StringUtils.isNotBlank(fusionId)){
+            CaseFusion caseFusion = caseFusionService.getById(fusionId);
+            if(caseFusion == null){
+                throw new BusinessException(ResultCode.FUSION_NOT_EXIST);
+            }
+            source = fusionId;
+            sourceType = "fusion";
         }
-        if(StringUtils.isBlank(pageType) || StringUtils.isBlank(caseId)|| StringUtils.isBlank(token)){
+        if(StringUtils.isBlank(source) || StringUtils.isBlank(sourceType)){
             throw new BusinessException(ResultCode.NOT_PERMISSION);
         }
         Boolean viewAuth = false;
         Boolean editAuth = false;
-        String redisKey = "fusion:checkCase:caseId:%s:pageType:%s:token:%s";
-        String format = String.format(redisKey, caseId, pageType, token);
+        String redisKey = "fusion:checkCase:source:%s:sourceType:%s:pageType:%s:token:%s";
+        String format = String.format(redisKey, source,sourceType, pageType, token);
         if(redisUtil.hasKey(format)){
             JSONObject jsonObject = JSONObject.parseObject(redisUtil.get(format));
             viewAuth = jsonObject.getBoolean("viewAuth");
             editAuth = jsonObject.getBoolean("editAuth");
         }else {
             try {
-                JSONObject jsonObject = fdKKClient.checkCaseAuth(Integer.valueOf(caseId),token);
+                JSONObject jsonObject = fdKKClient.checkCaseAuth(source,sourceType,token);
                 Integer code = jsonObject.getInteger("code");
                 String message = jsonObject.getString("message");
                 if(code != 0){
@@ -181,20 +220,32 @@ public class FdService {
                 JSONObject data = jsonObject.getJSONObject("data");
                 viewAuth = data.getBoolean("viewAuth");
                 editAuth = data.getBoolean("editAuth");
-                redisUtil.set(format,data.toJSONString(),2 * 60 * 60);
+               // redisUtil.set(format,data.toJSONString(),60);
             }catch (Exception e){
                 log.info("checkCaseAuth-error:",e);
             }
         }
 
         if(!viewAuth && !editAuth){
-            throw new BusinessException(ResultCode.NOT_PERMISSION);
+            throw new BusinessException(ResultCode.FUSION_NOT_PERMISSION2);
+        }
+        if(pageType.equals("edit") && !editAuth){
+            throw new BusinessException(ResultCode.FUSION_NOT_PERMISSION);
         }
         if(pageType.equals("view") && !viewAuth){
-            throw new BusinessException(ResultCode.NOT_PERMISSION);
+            throw new BusinessException(ResultCode.FUSION_NOT_PERMISSION2);
         }
-        if(pageType.equals("edit") && !editAuth){
-            throw new BusinessException(ResultCode.NOT_PERMISSION);
+    }
+
+    public void getAuth(FusionAndSceneVo vo , String source, String sourceType, String token) {
+        JSONObject jsonObject = fdKKClient.checkCaseAuth(source,sourceType,token);
+        Integer code = jsonObject.getInteger("code");
+        String message = jsonObject.getString("message");
+        if(code != 0){
+            throw new BusinessException(code,message);
         }
+        JSONObject data = jsonObject.getJSONObject("data");
+        vo.setViewAuth(data.getBoolean("viewAuth"));
+        vo.setEditAuth( data.getBoolean("editAuth"));
     }
 }

+ 4 - 2
src/main/java/com/fdkankan/fusion/httpClient/client/FdKKClient.java

@@ -109,10 +109,12 @@ public interface FdKKClient {
     @Get("/service/manage/inner/copyScene")
     JSONObject copyScene( @Query HashMap<String, Object> param ,@Header("sign") Long sign);
 
-    @Get("/service/manage/inner/checkCaseAuth/{caseId}")
-    JSONObject checkCaseAuth( @Var("caseId")Integer caseId,@Header("token") String token);
+    @Get("/service/manage/inner/checkCaseAuth/{num}/{sourceType}")
+    JSONObject checkCaseAuth( @Var("num")String num,@Var("sourceType")String sourceType,@Header("token") String token);
 
 
     @Post("/service/manage/scene/list")
     ResultData mangeSceneList(@JSONBody ManageSceneParam manageSceneList , @Header("token") String token);
+    @Post("/service/manage/inner/addMediaLibrary")
+    ResultData addMediaLibrary(@JSONBody AddMediaLibraryParam addMediaLibraryParam , @Header("token") String token);
 }

+ 27 - 0
src/main/java/com/fdkankan/fusion/httpClient/request/AddMediaLibraryParam.java

@@ -0,0 +1,27 @@
+package com.fdkankan.fusion.httpClient.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AddMediaLibraryParam {
+    private String num;
+    private String kno;
+    private String fileName;
+    private String filePath;
+    private String fileSize;
+    private Integer delSource = 0;
+    private Integer toHaixin = 0;
+    private Integer category ;
+    private Integer dictId;
+
+    public AddMediaLibraryParam(String fileName, String filePath, String fileSize, Integer dictId) {
+        this.fileName = fileName;
+        this.filePath = filePath;
+        this.fileSize = fileSize;
+        this.dictId = dictId;
+    }
+}

+ 5 - 0
src/main/java/com/fdkankan/fusion/httpClient/request/ManageSceneParam.java

@@ -3,10 +3,15 @@ package com.fdkankan.fusion.httpClient.request;
 import com.fdkankan.fusion.common.RequestBase;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class ManageSceneParam extends RequestBase {
     private Integer isObj =1;
     private String sceneName;
     private Integer sceneStatus = -2;
     private String num;
+    private Integer caseId;
+    private List<String> numList;
+    private Long userId;
 }

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/ICaseFusionRelationMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.CaseFusionRelation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-09-02
+ */
+@Mapper
+public interface ICaseFusionRelationMapper extends BaseMapper<CaseFusionRelation> {
+
+}

+ 15 - 0
src/main/java/com/fdkankan/fusion/request/ExportOverviewParam.java

@@ -0,0 +1,15 @@
+package com.fdkankan.fusion.request;
+
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class ExportOverviewParam {
+
+    private Integer caseId;
+    private List<Integer> overviewIds = new ArrayList<>();
+    private List<Integer> tabulationIds = new ArrayList<>();
+}

+ 3 - 0
src/main/java/com/fdkankan/fusion/response/CaseVo.java

@@ -13,4 +13,7 @@ public class CaseVo extends CaseEntity {
     private List<SceneNumParam> sceneNumParam;
 
     private TmProject tmProject;
+
+    private Boolean viewAuth = false;
+    private Boolean editAuth = false;
 }

+ 4 - 0
src/main/java/com/fdkankan/fusion/response/FusionAndSceneVo.java

@@ -4,8 +4,12 @@ import lombok.Data;
 
 @Data
 public class FusionAndSceneVo {
+    private Integer sceneNumId;
     private String title;
     private String num;
     private Integer fusionId;
     private String type;  //scene 场景, fusion 多元融合
+    private Integer sceneType;
+    private Boolean viewAuth;
+    private Boolean editAuth;
 }

+ 1 - 0
src/main/java/com/fdkankan/fusion/response/SceneVo.java

@@ -54,6 +54,7 @@ public class SceneVo extends Model {
     private String cutModelPath;
     private String surveillancePath;
     private String sceneJsonPath;
+    private String sourceName;
 
 
     public String getCutModelPath() {

+ 7 - 2
src/main/java/com/fdkankan/fusion/service/ICaseFilesService.java

@@ -3,6 +3,7 @@ package com.fdkankan.fusion.service;
 import com.fdkankan.fusion.entity.CaseFiles;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.fusion.entity.CaseInquestCriminal;
+import com.fdkankan.fusion.entity.CaseTabulation;
 
 import java.util.List;
 
@@ -26,7 +27,11 @@ public interface ICaseFilesService extends IService<CaseFiles> {
 
     List<CaseFiles> getByCaseIdAndTypeId(Integer caseId, Integer filesTypeId);
 
-    CaseFiles getByTabulation(Integer tabulationId);
+    List<CaseFiles> getByTabulation(Integer tabulationId);
 
-    CaseFiles getByOverviewId(Integer overviewId);
+    List<CaseFiles> getByOverviewId(Integer overviewId);
+
+    void del(List<Integer> filesIds);
+
+    void addOrUpdateOver(CaseTabulation caseTabulation);
 }

+ 2 - 1
src/main/java/com/fdkankan/fusion/service/ICaseFilesTypeService.java

@@ -2,6 +2,7 @@ package com.fdkankan.fusion.service;
 
 import com.fdkankan.fusion.entity.CaseFilesType;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.response.CaseFilesTypeTreeVo;
 
 import java.util.List;
 
@@ -17,7 +18,7 @@ public interface ICaseFilesTypeService extends IService<CaseFilesType> {
 
     List<CaseFilesType> getByParentId(Integer parentId);
 
-    Object getByTree(Integer caseId);
+    List<CaseFilesTypeTreeVo> getByTree(Integer caseId);
 
     CaseFilesType getByName(String name);
 }

+ 21 - 0
src/main/java/com/fdkankan/fusion/service/ICaseFusionRelationService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseFusionRelation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-09-02
+ */
+public interface ICaseFusionRelationService extends IService<CaseFusionRelation> {
+
+    List<CaseFusionRelation> getByCaseId(Integer caseId);
+
+    void addFusionIds(List<Integer> fusionIds, Integer caseId);
+}

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/ICaseFusionService.java

@@ -17,6 +17,6 @@ public interface ICaseFusionService extends IService<CaseFusion> {
 
     List<CaseFusion> getListByCaseId(Integer caseId);
 
-    void updateCaseId(List<Integer> fusionIds, Integer caseId);
+    void addFusionIds(List<Integer> fusionIds, Integer caseId);
 
 }

+ 14 - 0
src/main/java/com/fdkankan/fusion/service/ICaseOverviewService.java

@@ -2,6 +2,8 @@ package com.fdkankan.fusion.service;
 
 import com.fdkankan.fusion.entity.CaseOverview;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.entity.CaseTabulation;
+import com.fdkankan.fusion.request.ExportOverviewParam;
 
 import java.util.List;
 
@@ -20,4 +22,16 @@ public interface ICaseOverviewService extends IService<CaseOverview> {
     void updateTitleById(Integer overviewId, String filesTitle);
 
     CaseOverview getByNumAndSubGroup(String num, Integer subGroup);
+
+    void export(ExportOverviewParam param);
+
+    void toMeshEdit(String num, Integer subGroup, String listCover);
+
+    Long getNo(Integer sysUserId);
+
+    void updateListCoverById(Integer overviewId, String listCover);
+
+    void updateCaseByIds(List<Integer> overviewIds, Integer caseId);
+
+    void checkLoginUser(CaseOverview caseOverview, CaseTabulation caseTabulation);
 }

+ 7 - 0
src/main/java/com/fdkankan/fusion/service/ICaseTabulationService.java

@@ -2,6 +2,7 @@ package com.fdkankan.fusion.service;
 
 import com.fdkankan.fusion.entity.CaseTabulation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.request.ExportOverviewParam;
 
 import java.util.List;
 
@@ -22,4 +23,10 @@ public interface ICaseTabulationService extends IService<CaseTabulation> {
     void addOrUpdate(CaseTabulation caseTabulation);
 
     void updateTitleById(Integer tabulationId, String filesTitle);
+
+    Long getNo(Integer sysUserId);
+
+    void updateCaseByOverIds(List<Integer> overviewIds, Integer caseId);
+
+    void updateCaseByIds(List<Integer> tabulationIds,  Integer caseId);
 }

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/IFusionNumService.java

@@ -45,5 +45,5 @@ public interface IFusionNumService extends IService<FusionNum> {
 
     HashMap<Integer, FusionNum> getByCaseId(Integer caseId);
 
-    FusionNumVo addModel(FusionParam param, Integer modelId);
+    FusionNumVo addModel(FusionParam param, Integer modelId,String title);
 }

+ 8 - 0
src/main/java/com/fdkankan/fusion/service/IScenePlusService.java

@@ -1,7 +1,10 @@
 package com.fdkankan.fusion.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.fusion.common.PageInfo;
 import com.fdkankan.fusion.entity.ScenePlus;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.httpClient.request.ManageSceneParam;
 import com.fdkankan.fusion.request.DataParam;
 import com.fdkankan.fusion.response.DataGroupVo;
 
@@ -27,4 +30,9 @@ public interface IScenePlusService extends IService<ScenePlus> {
     List<ScenePlus> getByNumListAndAi(List<String> numList);
 
     List<ScenePlus> getByNumList(List<String> numList);
+
+    List<ScenePlus> getByUserId(Long userId);
+
+
+    Page<ScenePlus>  pageList(ManageSceneParam param);
 }

+ 72 - 11
src/main/java/com/fdkankan/fusion/service/impl/CaseFilesServiceImpl.java

@@ -1,21 +1,28 @@
 package com.fdkankan.fusion.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.util.UploadToOssUtil;
 import com.fdkankan.fusion.entity.CaseInquestCriminal;
+import com.fdkankan.fusion.entity.CaseOverview;
+import com.fdkankan.fusion.entity.CaseTabulation;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseFiles;
 import com.fdkankan.fusion.mapper.ICaseFilesMapper;
 import com.fdkankan.fusion.service.ICaseFilesService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.fusion.service.ICaseOverviewService;
+import com.fdkankan.fusion.service.ICaseTabulationService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -100,24 +107,78 @@ public class CaseFilesServiceImpl extends ServiceImpl<ICaseFilesMapper, CaseFile
     }
 
     @Override
-    public CaseFiles getByTabulation(Integer tabulationId) {
+    public List<CaseFiles> getByTabulation(Integer tabulationId) {
         LambdaQueryWrapper<CaseFiles> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CaseFiles::getTabulationId,tabulationId);
-        List<CaseFiles> list = this.list(wrapper);
-        if(list != null && !list.isEmpty()){
-            return list.get(0);
-        }
-        return null;
+        return this.list(wrapper);
     }
 
     @Override
-    public CaseFiles getByOverviewId(Integer overviewId) {
+    public List<CaseFiles> getByOverviewId(Integer overviewId) {
         LambdaQueryWrapper<CaseFiles> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CaseFiles::getOverviewId,overviewId);
-        List<CaseFiles> list = this.list(wrapper);
-        if(list != null && !list.isEmpty()){
-            return list.get(0);
+        return this.list(wrapper);
+    }
+
+    @Autowired
+    ICaseOverviewService caseOverviewService;
+    @Autowired
+    ICaseTabulationService caseTabulationService;
+    @Override
+    public void del(List<Integer> filesIds) {
+        List<CaseFiles> files = this.listByIds(filesIds);
+        List<Integer> overviewIds = files.stream().map(CaseFiles::getOverviewId).filter(Objects::nonNull).collect(Collectors.toList());
+        List<Integer> tabulationIds = files.stream().map(CaseFiles::getTabulationId).filter(Objects::nonNull).collect(Collectors.toList());
+        if(!overviewIds.isEmpty()){
+            caseOverviewService.updateCaseByIds(overviewIds,null);
+            caseTabulationService.updateCaseByOverIds(overviewIds,null);
+        }
+        if(!tabulationIds.isEmpty()){
+            caseTabulationService.updateCaseByIds(tabulationIds,null);
+        }
+        this.removeByIds(filesIds);
+    }
+
+    @Override
+    public void addOrUpdateOver(CaseTabulation caseTabulation) {
+        if(caseTabulation.getOverviewId() != null){
+            //平面图
+            List<CaseFiles> caseFilesList = this.getByOverviewId(caseTabulation.getOverviewId());
+            addNewOrUpdateCaseFiles(caseTabulation,caseFilesList,caseTabulation.getOverviewId());
+
+        }else {
+            //方位图
+            List<CaseFiles> caseFilesList = this.getByTabulation(caseTabulation.getId());
+            addNewOrUpdateCaseFiles(caseTabulation,caseFilesList,null);
+        }
+    }
+
+    private void addNewOrUpdateCaseFiles(CaseTabulation caseTabulation,List<CaseFiles> caseFilesList,Integer overId) {
+        if(caseFilesList == null || caseFilesList.isEmpty()){
+            CaseFiles caseFiles  = new CaseFiles();
+            caseFiles.setFilesTitle(caseTabulation.getTitle());
+            caseFiles.setCaseId(caseTabulation.getCaseId());
+            caseFiles.setFilesUrl(caseTabulation.getListCover());
+            if(caseTabulation.getOverviewId() != null){         //平面图
+                caseFiles.setFilesTypeId(41);
+                caseFiles.setOverviewId(caseTabulation.getOverviewId() );
+                caseFiles.setTabulationId(caseTabulation.getId() );
+            }else {
+                caseFiles.setFilesTypeId(42);
+                caseFiles.setTabulationId(caseTabulation.getId() );
+            }
+            this.save(caseFiles);
+            return;
+        }
+
+        LambdaUpdateWrapper<CaseFiles> wrapper = new LambdaUpdateWrapper<>();
+        if(overId !=null){
+            wrapper.eq(CaseFiles::getOverviewId,overId);
+        }else {
+            wrapper.eq(CaseFiles::getTabulationId,caseTabulation.getId());
         }
-        return null;
+        wrapper.set(CaseFiles::getFilesTitle,caseTabulation.getTitle());
+        wrapper.set(CaseFiles::getFilesUrl,caseTabulation.getListCover());
+        this.update(wrapper);
     }
 }

+ 2 - 9
src/main/java/com/fdkankan/fusion/service/impl/CaseFilesTypeServiceImpl.java

@@ -40,18 +40,11 @@ public class CaseFilesTypeServiceImpl extends ServiceImpl<ICaseFilesTypeMapper,
         LambdaQueryWrapper<CaseFilesType> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CaseFilesType::getParentId,parentId);
         wrapper.orderByAsc(CaseFilesType::getSort);
-        List<CaseFilesType> list = this.list(wrapper);
-
-        List<Integer> ids = list.stream().map(CaseFilesType::getFilesTypeId).collect(Collectors.toList());
-        HashMap<Integer,List<CaseFilesTypeIcon>> iconMap  = caseFilesTypeIconService.getMapByTypeIds(ids);
-        for (CaseFilesType caseFilesType : list) {
-            caseFilesType.setIconList(iconMap.get(caseFilesType.getFilesTypeId()));
-        }
-        return list;
+        return this.list(wrapper);
     }
 
     @Override
-    public Object getByTree(Integer caseId) {
+    public List<CaseFilesTypeTreeVo> getByTree(Integer caseId) {
         LambdaQueryWrapper<CaseFilesType> wrapper = new LambdaQueryWrapper<>();
         wrapper.orderByAsc(CaseFilesType::getSort);
         List<CaseFilesType> list = this.list(wrapper);

+ 57 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseFusionRelationServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.entity.CaseFusionRelation;
+import com.fdkankan.fusion.mapper.ICaseFusionRelationMapper;
+import com.fdkankan.fusion.service.ICaseFusionRelationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-09-02
+ */
+@Service
+public class CaseFusionRelationServiceImpl extends ServiceImpl<ICaseFusionRelationMapper, CaseFusionRelation> implements ICaseFusionRelationService {
+
+    @Override
+    public List<CaseFusionRelation> getByCaseId(Integer caseId) {
+        LambdaQueryWrapper<CaseFusionRelation> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseFusionRelation::getCaseId,caseId);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public void addFusionIds(List<Integer> fusionIds, Integer caseId) {
+        List<CaseFusionRelation> caseFusionRelations = this.getByCaseId(caseId);
+        List<Integer> dbFusionIds = caseFusionRelations.stream().map(CaseFusionRelation::getFusionId).collect(Collectors.toList());
+
+        List<Integer> delFusionIds = new ArrayList<>();
+        for (CaseFusionRelation dbFusionId : caseFusionRelations) {
+            if(!fusionIds.contains(dbFusionId.getFusionId())){
+                delFusionIds.add(dbFusionId.getId());
+            }
+        }
+
+        for (Integer fusionId : fusionIds) {
+            if(dbFusionIds.contains(fusionId)){
+                continue;
+            }
+            CaseFusionRelation caseFusionRelation = new CaseFusionRelation();
+            caseFusionRelation.setCaseId(caseId);
+            caseFusionRelation.setFusionId(fusionId);
+            this.save(caseFusionRelation);
+        }
+        if(!delFusionIds.isEmpty()){
+            this.removeByIds(delFusionIds);
+        }
+    }
+}

+ 16 - 22
src/main/java/com/fdkankan/fusion/service/impl/CaseFusionServiceImpl.java

@@ -3,19 +3,13 @@ package com.fdkankan.fusion.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.fusion.common.ResultCode;
-import com.fdkankan.fusion.entity.CaseFusion;
-import com.fdkankan.fusion.entity.FusionNum;
-import com.fdkankan.fusion.entity.Model;
-import com.fdkankan.fusion.entity.ScenePlus;
+import com.fdkankan.fusion.entity.*;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.mapper.ICaseFusionMapper;
 import com.fdkankan.fusion.response.CaseFusionVo;
 import com.fdkankan.fusion.response.SceneVo;
-import com.fdkankan.fusion.service.ICaseFusionService;
+import com.fdkankan.fusion.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.fusion.service.IFusionNumService;
-import com.fdkankan.fusion.service.IModelService;
-import com.fdkankan.fusion.service.IScenePlusService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -35,27 +29,27 @@ import java.util.stream.Collectors;
 @Service
 public class CaseFusionServiceImpl extends ServiceImpl<ICaseFusionMapper, CaseFusion> implements ICaseFusionService {
 
+    @Autowired
+    ICaseFusionRelationService caseFusionRelationService;
+
     @Override
     public List<CaseFusion> getListByCaseId(Integer caseId) {
+        List<CaseFusionRelation> caseFusionRelations = caseFusionRelationService.getByCaseId(caseId);
+        if(caseFusionRelations.isEmpty()){
+            return new ArrayList<>();
+        }
+        List<Integer> fusionIds = caseFusionRelations.stream().map(CaseFusionRelation::getFusionId).collect(Collectors.toList());
+        if(fusionIds.isEmpty()){
+            return new ArrayList<>();
+        }
         LambdaQueryWrapper<CaseFusion> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(CaseFusion::getCaseId,caseId);
+        wrapper.in(CaseFusion::getFusionId,fusionIds);
         return this.list(wrapper);
     }
 
     @Override
-    public synchronized void updateCaseId(List<Integer> fusionIds, Integer caseId) {
-        LambdaUpdateWrapper<CaseFusion> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(CaseFusion::getCaseId,caseId);
-        wrapper.set(CaseFusion::getCaseId,null);
-        this.update(wrapper);
-
-        if(!fusionIds.isEmpty()){
-            LambdaUpdateWrapper<CaseFusion> wrapper2 = new LambdaUpdateWrapper<>();
-            wrapper2.in(CaseFusion::getFusionId,fusionIds);
-            wrapper2.set(CaseFusion::getCaseId,caseId);
-            this.update(wrapper2);
-        }
-
+    public synchronized void addFusionIds(List<Integer> fusionIds, Integer caseId) {
+        caseFusionRelationService.addFusionIds(fusionIds,caseId);
     }
 
 }

+ 0 - 24
src/main/java/com/fdkankan/fusion/service/impl/CaseNumServiceImpl.java

@@ -85,7 +85,6 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
         }
 
         List<CaseNumEntity> newCaseNums = new ArrayList<>();
-        List<Model> modelList = new ArrayList<>();
 
         HashMap<Integer,HashSet<String>> map = new HashMap<>();
         for (SceneNumParam numParam : sceneNumParam) {
@@ -97,7 +96,6 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
             }
         }
 
-
         for (Integer type : map.keySet()) {
             HashSet<String> nulList = map.get(type);
             List<String> numList = new ArrayList<>(nulList);
@@ -111,21 +109,12 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
                 caseNumEntity.setNumType(type);
                 caseNumEntity.setNum(num);
                 newCaseNums.add(caseNumEntity);
-                if(type == 3){                   //用户上传三维模型跳过
-                    continue;
-                }
-                Model model = modelService.getIsNullNewByNum(num,type,1);
-
-                modelList.add(model);
             }
         }
 
         if(newCaseNums.size() >0){
             this.saveBatch(newCaseNums);
         }
-        if(modelList.size() >0){
-            modelService.saveOrUpdateBatch(modelList);
-        }
     }
 
 
@@ -136,7 +125,6 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
 
     private List<String> updateByNumList(Integer caseId, List<SceneNumParam> sceneNumParam) {
         List<String> addList = new ArrayList<>();
-        HashMap<Integer, FusionNum> fusionNumHashMap = fusionNumService.getByCaseId(caseId);
         HashMap<Integer,List<String>> delMap = new HashMap<>();
         for (SceneNumParam param : sceneNumParam) {
             Integer type = param.getType();
@@ -159,13 +147,6 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
                 }
             }
             if(!delList.isEmpty()){
-                HashMap<String, Model> mapByNum = modelService.getMapByNum(delList);
-                for (String key : mapByNum.keySet()) {
-                    Model model = mapByNum.get(key);
-                    if(model != null && model.getType().equals(param.getType()) && fusionNumHashMap.containsKey(model.getModelId())){
-                        throw new BusinessException(ResultCode.DEL_NUM_ERROR);
-                    }
-                }
                 delMap.put(param.getType(),delList);
             }
         }
@@ -195,11 +176,6 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
         LambdaQueryWrapper<CaseNumEntity> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CaseNumEntity::getCaseId,caseId);
         this.remove(wrapper);
-        fusionNumService.deleteByCaseId(caseId);
-        caseViewService.deleteByCaseId(caseId);
-        fusionGuidePathService.deleteByCaseId(caseId);
-        fusionMeterService.deleteByCaseId(caseId);
-        caseTagService.deletePointByCaseId(caseId);
     }
 
     @Override

+ 136 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseOverviewServiceImpl.java

@@ -1,13 +1,32 @@
 package com.fdkankan.fusion.service.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.io.FileUtil;
+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.fdkankan.fusion.common.FilePath;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.util.UploadToOssUtil;
+import com.fdkankan.fusion.config.SecurityUtil;
+import com.fdkankan.fusion.entity.CaseFiles;
 import com.fdkankan.fusion.entity.CaseOverview;
+import com.fdkankan.fusion.entity.CaseTabulation;
+import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.mapper.ICaseOverviewMapper;
+import com.fdkankan.fusion.request.ExportOverviewParam;
+import com.fdkankan.fusion.service.ICaseFilesService;
 import com.fdkankan.fusion.service.ICaseOverviewService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.fusion.service.ICaseTabulationService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 
 /**
@@ -19,9 +38,16 @@ import java.util.List;
  * @since 2025-05-13
  */
 @Service
+@Slf4j
 public class CaseOverviewServiceImpl extends ServiceImpl<ICaseOverviewMapper, CaseOverview> implements ICaseOverviewService {
 
 
+    @Autowired
+    ICaseFilesService caseFilesService;
+    @Autowired
+    ICaseTabulationService caseTabulationService;
+
+
     @Override
     public List<CaseOverview> getByCaseId(String caseId) {
         LambdaQueryWrapper<CaseOverview> wrapper = new LambdaQueryWrapper<>();
@@ -39,6 +65,22 @@ public class CaseOverviewServiceImpl extends ServiceImpl<ICaseOverviewMapper, Ca
     }
 
     @Override
+    public void updateCaseByIds(List<Integer> overviewIds, Integer caseId) {
+        LambdaUpdateWrapper<CaseOverview> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(CaseOverview::getId,overviewIds);
+        wrapper.set(CaseOverview::getCaseId,caseId);
+        this.update(wrapper);
+    }
+
+    @Override
+    public void updateListCoverById(Integer overviewId, String listCover) {
+        LambdaUpdateWrapper<CaseOverview> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(CaseOverview::getId,overviewId);
+        wrapper.set(CaseOverview::getListCover,listCover);
+        this.update(wrapper);
+    }
+
+    @Override
     public CaseOverview getByNumAndSubGroup(String num, Integer subGroup) {
         LambdaQueryWrapper<CaseOverview> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CaseOverview::getNum,num);
@@ -50,4 +92,98 @@ public class CaseOverviewServiceImpl extends ServiceImpl<ICaseOverviewMapper, Ca
         return list.get(0);
     }
 
+    @Override
+    public Long getNo(Integer sysUserId) {
+        LambdaUpdateWrapper<CaseOverview> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(CaseOverview::getSysUserId,sysUserId);
+        return this.count(wrapper);
+    }
+
+    @Override
+    public void export(ExportOverviewParam param) {
+        if(!param.getOverviewIds().isEmpty()){
+            List<CaseOverview> caseOverviews = this.listByIds(param.getOverviewIds());
+            for (CaseOverview caseOverview : caseOverviews) {
+                Integer tabulationId = null;
+                List<CaseTabulation> byOverviewId = caseTabulationService.getByOverviewId(String.valueOf(caseOverview.getId()));
+                for (CaseTabulation caseTabulation : byOverviewId) {
+                    tabulationId = caseTabulation.getId();
+                }
+                CaseFiles caseFiles  = new CaseFiles();
+                caseFiles.setCaseId(param.getCaseId());
+                caseFiles.setFilesUrl(caseOverview.getListCover());
+                caseFiles.setFilesTypeId(41);
+                caseFiles.setFilesTitle(caseOverview.getTitle());
+                caseFiles.setOverviewId(caseOverview.getId());
+                caseFiles.setTabulationId(tabulationId);
+                caseFilesService.saveOrUpdate(caseFiles);
+            }
+        }
+        if(!param.getTabulationIds().isEmpty()){
+            List<CaseTabulation> caseTabulationList = caseTabulationService.listByIds(param.getTabulationIds());
+            for (CaseTabulation caseTabulation : caseTabulationList) {
+                CaseFiles caseFiles  = new CaseFiles();
+                caseFiles.setCaseId(param.getCaseId());
+                caseFiles.setFilesUrl(caseTabulation.getListCover());
+                caseFiles.setFilesTypeId(42);
+                caseFiles.setFilesTitle(caseTabulation.getTitle());
+                caseFiles.setTabulationId(caseTabulation.getId());
+                caseFilesService.saveOrUpdate(caseFiles);
+            }
+        }
+
+    }
+
+    @Autowired
+    UploadToOssUtil uploadToOssUtil;
+
+
+    @Override
+    public void toMeshEdit(String num, Integer subGroup, String listCover) {
+        String filePath = String.format(FilePath.MESH_SCENE_FLOOR_PNG_PATH,num);
+        String fileName = String.format(FilePath.MESH_SCENE_FLOOR_PNG_PATH_NAME,subGroup);
+        String jsonPathSource = String.format(FilePath.MESH_SCENE_FLOOR_JSON_PATH_SOURCE,num);
+        String jsonPath = String.format(FilePath.MESH_SCENE_FLOOR_JSON_PATH,num);
+        String localPath = String.format(FilePath.MESH_SCENE_FLOOR_JSON_PATH_LOCAL,num);
+        try {
+            uploadToOssUtil.copyFile(uploadToOssUtil.getOssPath(listCover),filePath + fileName);
+
+            String content = uploadToOssUtil.readFile(jsonPathSource);
+            JSONObject jsonObject = JSONObject.parseObject(content);
+            JSONArray jsonArray = jsonObject.getJSONArray("floors");
+            for (Object object : jsonArray) {
+                JSONObject obj = (JSONObject) object;
+                Integer subgroupjs = obj.getInteger("subgroup");
+                if(subgroupjs.equals(subGroup)){
+                    obj.put("filename",fileName);
+                }
+            }
+            FileUtil.writeString(jsonObject.toJSONString(),new File(localPath), StandardCharsets.UTF_8);
+            uploadToOssUtil.uploadOss(localPath,jsonPath);
+        }catch (Exception e){
+            log.info("同步mesh编辑器失败:{}",e);
+        }finally {
+            FileUtil.del(localPath);
+        }
+
+    }
+
+    @Override
+    public void checkLoginUser(CaseOverview caseOverview, CaseTabulation caseTabulation) {
+        if(caseOverview == null && caseTabulation == null){
+            throw new BusinessException(ResultCode.RECORD_NOT_EXIST);
+        }
+        Integer loginUserId = Integer.valueOf(StpUtil.getLoginId().toString());
+        if(caseOverview != null){
+            if(!caseOverview.getSysUserId().equals(loginUserId)){
+                throw new BusinessException(ResultCode.NOT_PER);
+            }
+        }
+        if(caseTabulation != null){
+            if(!caseTabulation.getSysUserId().equals(loginUserId)){
+                throw new BusinessException(ResultCode.NOT_PER);
+            }
+        }
+
+    }
 }

+ 54 - 2
src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java

@@ -2,6 +2,9 @@ package com.fdkankan.fusion.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.jwt.JWT;
+import cn.hutool.jwt.JWTUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.fusion.common.ResultCode;
@@ -10,6 +13,7 @@ import com.fdkankan.fusion.common.util.NumTypeUtils;
 import com.fdkankan.fusion.entity.*;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.common.PageInfo;
+import com.fdkankan.fusion.httpClient.client.FdKKClient;
 import com.fdkankan.fusion.mapper.ICaseMapper;
 import com.fdkankan.fusion.request.CaseParam;
 import com.fdkankan.fusion.request.ScenePram;
@@ -18,6 +22,7 @@ import com.fdkankan.fusion.response.HotVo;
 import com.fdkankan.fusion.response.SceneVo;
 import com.fdkankan.fusion.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +42,7 @@ import java.util.stream.Collectors;
  * @since 2022-07-27
  */
 @Service
+@Slf4j
 public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implements ICaseService {
 
     @Autowired
@@ -61,6 +67,8 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
     IMapConfigService mapConfigService;
     @Autowired
     ICaseFusionService caseFusionService;
+    @Autowired
+    FdKKClient fdKKClient;
 
     @Override
     public PageInfo pageList(CaseParam param) {
@@ -190,7 +198,7 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
     public CaseVo getInfo(Integer caseId) {
         CaseEntity caseEntity = this.getById(caseId);
         if(caseEntity == null){
-            return null;
+            throw  new BusinessException(ResultCode.CASE_NOT_EXITS);
         }
         CaseVo caseVo = new CaseVo();
         BeanUtil.copyProperties(caseEntity,caseVo);
@@ -202,6 +210,44 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
             caseVo.setTmProject(tmProject);
             caseVo.setCaseTitle(tmProject.getProjectName());
         }
+
+        if(!StpUtil.isLogin()){
+            return caseVo;
+        }
+
+        if(Long.valueOf(StpUtil.getLoginId().toString()).equals(caseVo.getSysUserId())){
+            caseVo.setViewAuth(true);
+            caseVo.setEditAuth(true);
+            return caseVo;
+        }
+        Integer platform_id = (Integer) StpUtil.getExtra("platformId");
+
+        String roleType =  (String) StpUtil.getExtra("roleType");
+        if("super-admin".equals(roleType)){
+            caseVo.setViewAuth(true);
+            caseVo.setEditAuth(true);
+            return caseVo;
+        }
+        if(roleType.contains("admin") && caseVo.getPlatformId().equals(platform_id)){
+            caseVo.setViewAuth(true);
+            caseVo.setEditAuth(true);
+            return caseVo;
+        }
+
+        try {
+            JSONObject jsonObject = fdKKClient.checkCaseAuth(caseId.toString(),"case",StpUtil.getTokenValue());
+            Integer code = jsonObject.getInteger("code");
+            String message = jsonObject.getString("message");
+            if(code != 0){
+                throw new BusinessException(code,message);
+            }
+            JSONObject data = jsonObject.getJSONObject("data");
+            caseVo.setViewAuth( data.getBoolean("viewAuth"));
+            caseVo.setEditAuth( data.getBoolean("editAuth"));
+            // redisUtil.set(format,data.toJSONString(),60);
+        }catch (Exception e){
+            log.info("checkCaseAuth-error:",e);
+        }
         return caseVo;
     }
 
@@ -210,7 +256,13 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
         if(param.getCaseId() == null || param.getFusionIds() == null ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        caseFusionService.updateCaseId(param.getFusionIds(),param.getCaseId());
+        if(param.getFusionIds().isEmpty()){
+            List<CaseNumEntity> byCaseId = caseNumService.getByCaseId(param.getCaseId());
+            if(byCaseId.isEmpty()){
+                throw new BusinessException(ResultCode.REMOVE_ERROR);
+            }
+        }
+        caseFusionService.addFusionIds(param.getFusionIds(),param.getCaseId());
     }
 
     @Override

+ 43 - 39
src/main/java/com/fdkankan/fusion/service/impl/CaseTabulationServiceImpl.java

@@ -1,11 +1,17 @@
 package com.fdkankan.fusion.service.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.fusion.common.util.UploadToOssUtil;
 import com.fdkankan.fusion.entity.CaseFiles;
 import com.fdkankan.fusion.entity.CaseOverview;
 import com.fdkankan.fusion.entity.CaseTabulation;
+import com.fdkankan.fusion.httpClient.client.FdKKClient;
+import com.fdkankan.fusion.httpClient.request.AddMediaLibraryParam;
 import com.fdkankan.fusion.mapper.ICaseTabulationMapper;
+import com.fdkankan.fusion.request.ExportOverviewParam;
 import com.fdkankan.fusion.service.ICaseFilesService;
 import com.fdkankan.fusion.service.ICaseOverviewService;
 import com.fdkankan.fusion.service.ICaseTabulationService;
@@ -14,6 +20,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -31,6 +38,10 @@ public class CaseTabulationServiceImpl extends ServiceImpl<ICaseTabulationMapper
     ICaseFilesService caseFilesService;
     @Autowired
     ICaseOverviewService caseOverviewService;
+    @Autowired
+    FdKKClient fdKKClient;
+    @Autowired
+    UploadToOssUtil uploadToOssUtil;
 
     @Override
     public List<CaseTabulation> getByCaseId(String caseId) {
@@ -50,49 +61,17 @@ public class CaseTabulationServiceImpl extends ServiceImpl<ICaseTabulationMapper
 
     @Override
     public void addOrUpdate(CaseTabulation caseTabulation) {
-
         this.saveOrUpdate(caseTabulation);
+        caseTabulation = this.getById(caseTabulation.getId());
 
-        if(StringUtils.isNotBlank(caseTabulation.getListCover()) || caseTabulation.getOverviewId() != null){
-            CaseFiles caseFiles  = new CaseFiles();
-            if(caseTabulation.getId()!=null){
-                CaseTabulation db = this.getById(caseTabulation.getId());
-                if(caseTabulation.getOverviewId() == null){
-                    caseTabulation.setOverviewId(db.getOverviewId());
-                }
-                CaseFiles dbCaseFile = caseFilesService.getByTabulation(caseTabulation.getId());
-                if(dbCaseFile != null){
-                    caseFiles.setFilesId(dbCaseFile.getFilesId());
-                }
-            }
-            if(caseTabulation.getOverviewId()!=null){
-                CaseFiles dbCaseFile = caseFilesService.getByOverviewId(caseTabulation.getOverviewId());
-                if(dbCaseFile != null){
-                    caseFiles.setFilesId(dbCaseFile.getFilesId());
-                }
-            }
-            caseFiles.setCaseId(caseTabulation.getCaseId());
-            caseFiles.setFilesUrl(caseTabulation.getListCover());
-            if(StringUtils.isBlank(caseTabulation.getListCover())){
-                CaseOverview caseOverview = caseOverviewService.getById(caseTabulation.getOverviewId());
-                caseFiles.setFilesUrl(caseOverview.getListCover());
-            }
-
-            if(caseTabulation.getOverviewId() != null){         //平面图
-                caseFiles.setFilesTypeId(41);
-                caseFiles.setFilesTitle("平面图");
-                caseFiles.setOverviewId(caseTabulation.getOverviewId() );
-                caseFiles.setTabulationId(caseTabulation.getId() );
-            }else {
-                caseFiles.setFilesTypeId(42);
-                caseFiles.setFilesTitle("方位图");
-                caseFiles.setTabulationId(caseTabulation.getId() );
-            }
-            caseFilesService.saveOrUpdate(caseFiles);
+        if(StringUtils.isNotBlank(caseTabulation.getTitle()) && caseTabulation.getOverviewId() != null){
+            caseOverviewService.updateTitleById(caseTabulation.getOverviewId(),caseTabulation.getTitle());
+        }
+        if(StringUtils.isNotBlank(caseTabulation.getListCover()) && caseTabulation.getOverviewId() != null){
+            caseOverviewService.updateListCoverById(caseTabulation.getOverviewId(),caseTabulation.getListCover());
         }
 
-
-
+        caseFilesService.addOrUpdateOver(caseTabulation);
 
     }
 
@@ -104,4 +83,29 @@ public class CaseTabulationServiceImpl extends ServiceImpl<ICaseTabulationMapper
         wrapper.set(CaseTabulation::getTitle,filesTitle);
         this.update(wrapper);
     }
+
+    @Override
+    public void updateCaseByOverIds(List<Integer> overviewIds, Integer caseId) {
+        LambdaUpdateWrapper<CaseTabulation> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(CaseTabulation::getOverviewId,overviewIds);
+        wrapper.set(CaseTabulation::getCaseId,caseId);
+        this.update(wrapper);
+    }
+
+    @Override
+    public void updateCaseByIds(List<Integer> tabulationIds, Integer caseId) {
+        LambdaUpdateWrapper<CaseTabulation> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(CaseTabulation::getId,tabulationIds);
+        wrapper.set(CaseTabulation::getCaseId,caseId);
+        this.update(wrapper);
+    }
+
+    @Override
+    public Long getNo(Integer sysUserId) {
+        LambdaUpdateWrapper<CaseTabulation> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(CaseTabulation::getSysUserId,sysUserId);
+        return this.count(wrapper);
+    }
+
+
 }

+ 0 - 1
src/main/java/com/fdkankan/fusion/service/impl/CopyCaseService.java

@@ -176,7 +176,6 @@ public class CopyCaseService {
         for (CaseFusion entity : listByCaseId) {
             Integer oldFusionId = entity.getFusionId();
             entity.setFusionId(null);
-            entity.setCaseId(newCaseId);
             caseFusionService.save(entity);
 
             cpCaseViewByFusionId(oldFusionId,entity.getFusionId(),newCaseId);

+ 2 - 0
src/main/java/com/fdkankan/fusion/service/impl/DictFileServiceImpl.java

@@ -39,4 +39,6 @@ public class DictFileServiceImpl extends ServiceImpl<IDictFileMapper, DictFile>
         dictFile.setSysUserId(1);
         this.save(dictFile);
     }
+
+
 }

+ 0 - 11
src/main/java/com/fdkankan/fusion/service/impl/FusionMeterServiceImpl.java

@@ -78,17 +78,6 @@ public class FusionMeterServiceImpl extends ServiceImpl<IFusionMeterMapper, Fusi
 
     @Override
     public void deleteByCaseId(Integer caseId) {
-        LambdaQueryWrapper<CaseFusion> fnwr = new LambdaQueryWrapper<>();
-        fnwr.eq(CaseFusion::getCaseId,caseId);
-        List<CaseFusion> list = caseFusionService.list(fnwr);
-        if(list.size() >0){
-            List<Integer> fusionIds = list.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
-            if(fusionIds.size() >0){
-                LambdaQueryWrapper<FusionMeter> wrapper = new LambdaQueryWrapper<>();
-                wrapper.in(FusionMeter::getFusionId,fusionIds);
-                this.remove(wrapper);
-            }
-        }
     }
 
     @Override

+ 6 - 2
src/main/java/com/fdkankan/fusion/service/impl/FusionNumServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.util.CameraUtil;
 import com.fdkankan.fusion.common.util.NumTypeUtils;
 import com.fdkankan.fusion.entity.CaseFusion;
 import com.fdkankan.fusion.entity.FusionNum;
@@ -144,11 +145,11 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
             throw new BusinessException(ResultCode.MODEL_NOT_EXIST);
         }
 
-        return addModel(param,model.getModelId());
+        return addModel(param,model.getModelId(),scenePlus.getTitle());
     }
 
     @Override
-    public FusionNumVo addModel(FusionParam param, Integer modelId) {
+    public FusionNumVo addModel(FusionParam param, Integer modelId,String title) {
         FusionNum fusionNum = new FusionNum();
         BeanUtils.copyProperties(param,fusionNum);
         fusionNum.setFusionId(param.getFusionId());
@@ -162,6 +163,9 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
         Model model = modelService.getById(modelId);
         BeanUtils.copyProperties(model,sceneVo);
         sceneVo.setStatus(2);
+        sceneVo.setSceneName(title);
+        sceneVo.setSourceName(CameraUtil.getSourceName(model.getType()));
+
         vo.setSceneData(sceneVo);
         return vo;
     }

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/impl/ModelServiceImpl.java

@@ -274,7 +274,7 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
         }
         model.setNum(num);
 
-        this.save(model);
+        this.saveOrUpdate(model);
         return model;
     }
 

+ 32 - 0
src/main/java/com/fdkankan/fusion/service/impl/ScenePlusServiceImpl.java

@@ -2,12 +2,16 @@ package com.fdkankan.fusion.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.fusion.common.PageInfo;
 import com.fdkankan.fusion.entity.ScenePlus;
+import com.fdkankan.fusion.httpClient.request.ManageSceneParam;
 import com.fdkankan.fusion.mapper.IScenePlusMapper;
 import com.fdkankan.fusion.request.DataParam;
 import com.fdkankan.fusion.response.DataGroupVo;
 import com.fdkankan.fusion.service.IScenePlusService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -63,4 +67,32 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         wrapper.in(ScenePlus::getNum,numList);
         return this.list(wrapper);
     }
+
+    @Override
+    public List<ScenePlus> getByUserId(Long userId) {
+        LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ScenePlus::getUserId,userId);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public Page<ScenePlus> pageList(ManageSceneParam param) {
+        LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
+        if(param.getNumList() != null && !param.getNumList().isEmpty()){
+            wrapper.in(ScenePlus::getNum,param.getNumList());
+        }
+        if(StringUtils.isNotBlank(param.getNum())){
+            wrapper.eq(ScenePlus::getNum,param.getNum());
+        }
+        if(StringUtils.isNotBlank(param.getSceneName())){
+            wrapper.like(ScenePlus::getTitle,param.getSceneName());
+        }
+        if(param.getUserId() != null){
+            wrapper.eq(ScenePlus::getUserId,param.getUserId());
+        }
+        wrapper.eq(ScenePlus::getSceneStatus,param.getSceneStatus());
+        wrapper.orderByDesc(ScenePlus::getId);
+        Page<ScenePlus> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        return page;
+    }
 }

+ 2 - 21
src/main/java/com/fdkankan/fusion/service/impl/SceneService.java

@@ -87,27 +87,6 @@ public class SceneService implements ISceneService {
         if(param.getType() == null){
            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-
-        if(StringUtils.isNotBlank(param.getDeptId())){
-            List<String> deptIds = new ArrayList<>();
-            if(param.getSearchType() == 0){
-                List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(param.getDeptId());
-                deptIds = sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList());
-            }
-            deptIds.add(param.getDeptId());
-            List<TmCamera> tmCameras = tmCameraService.getByDeptIds(deptIds);
-            Set<String> snCodeSet = tmCameras.parallelStream().map(TmCamera::getCameraSn).collect(Collectors.toSet());
-            List<String> snCodes = param.getSnCodes();
-            if(snCodes == null){
-                snCodes = new ArrayList<>(snCodeSet);
-            }else {
-                snCodes = snCodes.stream().filter(snCodeSet::contains).collect(Collectors.toList());
-            }
-            param.setSnCodes(snCodes);
-        }
-        if(CollectionUtil.isEmpty(param.getSnCodes()) && CollectionUtil.isEmpty(param.getNumList())){
-            return PageInfo.PageInfoEmpty();
-        }
         List<SceneVo> sceneVoList = new ArrayList<>();
         long total = 0;
         if(param.getType() == 0 || param.getType() == 1 || param.getType() == 4 || param.getType() == 6 || param.getType() == 7){      //看看,看见 ,深时obj
@@ -156,6 +135,7 @@ public class SceneService implements ISceneService {
                     vo.setStatus(0);
                 }
                 vo.setType(param.getType());
+                vo.setIsObj(1);
                 sceneVoList.add(vo);
             }
         }
@@ -188,6 +168,7 @@ public class SceneService implements ISceneService {
             sceneVo.setViewCount(fdkkScenePlusVo.getViewCount());
             sceneVo.setIsLaser(false);
             sceneVo.setType(type);
+            sceneVo.setIsObj(1);
             sceneVo.setOrientation(fdkkScenePlusVo.getOrientation());
             sceneVo.setRtkLocation(fdkkScenePlusVo.getRtkLocation());
             if(fdkkScenePlusVo.getUserId()== null){

+ 1 - 1
src/main/resources/bootstrap.yml

@@ -5,7 +5,7 @@ logging:
   config: classpath:logback-spring.xml
 mybatis-plus:
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
+    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #开启sql日志
 
 geoquery:
   dataFilePath: /mnt/geoFile/GeoJSON.json

+ 27 - 15
src/main/resources/logback-spring.xml

@@ -201,27 +201,39 @@
 	</logger>
 
 
-	<!--  连接时长  -->
-	<appender name="timeLogger" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<file>${log.path}/timeLogger.log</file>
-		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-			<level>DEBUG</level>
-		</filter>
+
+	<appender name="SQL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<!-- 正在记录的日志文件的路径及文件名 -->
+		<file>${log.path}/log_sql.log</file>
+		<!--日志文件输出格式 -->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
 		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-			<fileNamePattern>${log.path}/timeLogger/timeLogger-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<!-- 每天日志归档路径以及格式 -->
+			<fileNamePattern>${log.path}/sql/log-sql-%d{yyyy-MM-dd}.%i.log
+			</fileNamePattern>
 			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
 				<maxFileSize>100MB</maxFileSize>
 			</timeBasedFileNamingAndTriggeringPolicy>
-			<!--日志文件保留天数-->
-			<maxHistory>10</maxHistory>
+			<!--日志文件保留天数 -->
+			<maxHistory>15</maxHistory>
 		</rollingPolicy>
-		<encoder>
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
-			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
-		</encoder>
+		<!-- 此日志文件只记录info级别的 -->
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>DEBUG</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
 	</appender>
-	<logger name="timeLogger" additivity="false" level="DEBUG">
-		<appender-ref ref="timeLogger"/>
+
+	<logger name="com.baomidou.mybatisplus" level="DEBUG" additivity="true">
+		<appender-ref ref="SQL_FILE"/>
+	</logger>
+	<logger name="com.fdkankan.fusion.mapper" level="DEBUG" additivity="true">
+		<appender-ref ref="SQL_FILE"/>
 	</logger>
 
 	<!-- <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 以及指定<appender>。<logger>仅有一个name属性, 一个可选的level和一个可选的addtivity属性。 name:用来指定受此logger约束的某一个包或者具体的某一个类。 level:用来设置打印级别,大小写无关:TRACE,

+ 5 - 0
src/main/resources/mapper/fusion/CaseFusionRelationMapper.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.fusion.mapper.ICaseFusionRelationMapper">
+
+</mapper>