lyhzzz 4 месяцев назад
Родитель
Сommit
4e395dd9ea

+ 2 - 0
src/main/java/com/fdkankan/fusion/common/ResultCode.java

@@ -84,6 +84,8 @@ public enum ResultCode {
     MEDIO_NOT_EXIT(8032, "模型不存在"),
     DICT_NOT_EXITS(8033, "分组不存在"),
     RECORD_NOT_EXITS(8034, "数据不存在或已删除"),
+    DEL_NUM_ERROR(8035, "无法移除,场景已加入多元融合,请进入多元融合删除场景后再试"),
+    REMOVE_ERROR(8036, "至少保留一个实景三维/多元融合场景"),
 
     ;
 

+ 21 - 0
src/main/java/com/fdkankan/fusion/controller/CaseController.java

@@ -116,5 +116,26 @@ public class CaseController extends BaseController{
         copyCaseService.copyCase(param.getCaseId());
         return ResultData.ok();
     }
+
+
+
+    @GetMapping("/getFusionAndScene")
+    public ResultData getFusionAndScene(@RequestParam(required = false) Integer caseId,
+                                        @RequestParam(required = false) String type){
+
+        return ResultData.ok(caseService.getFusionAndScene(caseId,type));
+    }
+
+
+    @PostMapping("/addFusionIds")
+    public ResultData addFusionIds(@RequestBody CaseParam param){
+        caseService.addFusionIds(param);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/delCaseFusion")
+    public ResultData delCaseFusion(@RequestBody CaseParam param){
+        return ResultData.ok();
+    }
 }
 

+ 3 - 1
src/main/java/com/fdkankan/fusion/request/CaseParam.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.fdkankan.fusion.common.RequestBase;
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
@@ -24,6 +25,7 @@ public class CaseParam extends RequestBase {
     private Integer isMesh;
 
     private String sceneName;
+    private List<Integer> typeList;
 
-    private Integer sceneStatus;
+    private List<Integer> fusionIds = new ArrayList<>();
 }

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

@@ -0,0 +1,15 @@
+package com.fdkankan.fusion.response;
+
+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;
+}

+ 4 - 0
src/main/java/com/fdkankan/fusion/service/ICaseService.java

@@ -40,4 +40,8 @@ public interface ICaseService extends IService<CaseEntity> {
     String getDeptId(Integer caseId);
 
     CaseVo getInfo(Integer caseId,Boolean isLogin);
+
+    Object getFusionAndScene(Integer caseId, String type);
+
+    void addFusionIds(CaseParam param);
 }

+ 61 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java

@@ -15,6 +15,7 @@ import com.fdkankan.fusion.mapper.ICaseMapper;
 import com.fdkankan.fusion.request.CaseParam;
 import com.fdkankan.fusion.request.ScenePram;
 import com.fdkankan.fusion.response.CaseVo;
+import com.fdkankan.fusion.response.FusionAndSceneVo;
 import com.fdkankan.fusion.response.HotVo;
 import com.fdkankan.fusion.response.SceneVo;
 import com.fdkankan.fusion.service.*;
@@ -63,6 +64,8 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
     IMapConfigService mapConfigService;
     @Autowired
     IScenePlusService scenePlusService;
+    @Autowired
+    ICaseFusionService caseFusionService;
 
     @Override
     public PageInfo pageList(CaseParam param,String userName) {
@@ -296,4 +299,62 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
         }
 
     }
+
+    @Override
+    public  void addFusionIds(CaseParam param) {
+        if(param.getCaseId() == null || param.getFusionIds() == null ){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        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
+    public  List<FusionAndSceneVo> getFusionAndScene(Integer caseId, String type) {
+        if(caseId == null || StringUtils.isBlank(type)){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        List<FusionAndSceneVo> voList = new ArrayList<>();
+        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");
+                voList.add(vo);
+            }
+            return voList;
+        }
+        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");
+                voList.add(vo);
+            }
+            return voList;
+        }
+
+        return voList;
+    }
 }