lyhzzz 4 週間 前
コミット
19120e7df1

+ 3 - 3
src/main/java/com/fdkankan/fusion/common/util/NumTypeUtils.java

@@ -36,11 +36,11 @@ public class NumTypeUtils {
         }
     }
 
-    public static Integer getMeshTypeBySceneSource(Integer sceneSource, String three) {
+    public static Integer getMeshTypeBySceneSource(Integer sceneSource,Integer isObj, String three) {
         switch (sceneSource){
             case 3 : return  1;
-            case 4 : return  4;
-            case 5 : return  6;
+            case 4 : return  isObj ==1 ? 4 :2;
+            case 5 : return   isObj ==1 ? 6 :5;
             default:
                 if(StringUtils.isNotBlank(three) && "yzl".equals(three)){
                     return 7;

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

@@ -77,7 +77,7 @@ public class CaseController extends BaseController{
     }
 
 
-    @PostMapping("/addScene")
+    //@PostMapping("/addScene")
     @PushJm(event_content = "添加场景")
     public ResultData addScene(@RequestBody CaseParam param){
         caseService.addScene(param);

+ 98 - 45
src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java

@@ -1,22 +1,24 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
-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.common.util.FileWriterUtil;
+import com.fdkankan.fusion.entity.*;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.request.FusionParam;
+import com.fdkankan.fusion.request.SceneNumParam;
 import com.fdkankan.fusion.response.CaseFusionVo;
+import com.fdkankan.fusion.response.FusionNumVo;
 import com.fdkankan.fusion.response.SceneVo;
 import com.fdkankan.fusion.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import scala.Int;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -48,65 +50,71 @@ public class CaseFusionController extends BaseController{
     IModelService modelService;
     @Autowired
     IScenePlusService scenePlusService;
-
+    @Autowired
+    ICommonUploadService commonUploadService;
     @GetMapping("/list")
-    public ResultData allList(@RequestParam(required = false) Integer caseId){
-        return ResultData.ok(fusionNumService.getListByCaseId(caseId,null));
+    public ResultData allList(@RequestParam(required = false) Integer fusionId){
+        return ResultData.ok(getSceneListVo(fusionId));
     }
 
+
+
     @GetMapping("/info")
     public ResultData info(@RequestParam(required = false) Integer fusionId){
         CaseFusion caseFusion = caseFusionService.getById(fusionId);
         if(caseFusion == null){
             throw new BusinessException(ResultCode.RECORD_NOT_EXIST);
         }
-        CaseFusionVo vo = new CaseFusionVo();
-        BeanUtils.copyProperties(caseFusion,vo);
-        List<SceneVo> sceneVos = new ArrayList<>();
-
-        List<FusionNum> fusionNumList = fusionNumService.getByFusionId(fusionId);
-        List<Integer> modelIds = fusionNumList.stream().map(FusionNum::getModelId).collect(Collectors.toList());
-        List<Model> listByModelIds = modelService.getListByModelIds(modelIds);
-
-        List<String> numList = listByModelIds.stream().filter(e -> e.getNum() != null).map(Model::getNum).collect(Collectors.toList());
-
-        List<ScenePlus> scenePlusList = scenePlusService.getByNumList(numList);
-        HashMap<String,ScenePlus> map = new HashMap<>();
-        scenePlusList.stream().forEach(e -> map.put(e.getNum(),e));
-
-        for (Model model : listByModelIds) {
-            SceneVo sceneVo = new SceneVo();
-            BeanUtils.copyProperties(model,sceneVo);
-            ScenePlus scenePlus = map.get(model.getNum());
-            if(model.getNum() != null && scenePlus != null){
-                BeanUtils.copyProperties(scenePlus,sceneVo);
-                sceneVo.setStatus(scenePlus.getSceneStatus() == -2 ? 2:scenePlus.getSceneStatus());
-                sceneVo.setName(scenePlus.getTitle());
-                sceneVo.setSceneName(scenePlus.getTitle());
-            }
-            if(model.getNum() == null){
-                sceneVo.setStatus(2);
-            }
-            sceneVos.add(sceneVo);
-        }
-
-        vo.setSceneVoList(sceneVos);
-
-        return ResultData.ok(vo);
+//        CaseFusionVo vo = new CaseFusionVo();
+//        BeanUtils.copyProperties(caseFusion,vo);
+//        vo.setSceneVoList(getSceneListVo(fusionId));
+        return ResultData.ok(caseFusion);
     }
 
     @PostMapping("/add")
     @PushJm(event_content = "添加模型")
     public ResultData add(@RequestBody FusionParam param){
-        if( param.getFusionId() == null || StringUtils.isNotBlank(param.getNum())){
+        if( param.getFusionId() == null ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        ScenePlus scenePlus = scenePlusService.getByNum(param.getNum());
-        if(scenePlus == null){
-            throw new BusinessException(ResultCode.RECORD_NOT_EXIST);
+        if((param.getIsObj() == null || StringUtils.isBlank(param.getNum())) && param.getUploadId() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        if(param.getUploadId() != null){
+            CommonUpload commonUpload = commonUploadService.getById(param.getUploadId());
+            if(commonUpload == null || StringUtils.isBlank(commonUpload.getFileUrl())){
+                throw new BusinessException(ResultCode.MEDIO_NOT_EXIT);
+            }
+            Model model = modelService.getByUploadId(commonUpload.getId());
+            if(model == null){
+                model = new Model();
+                model.setModelTitle(commonUpload.getFileName());
+                model.setModelSize(FileWriterUtil.setFileSize(Long.valueOf(commonUpload.getFileSize())));
+                model.setModelDateType(commonUpload.getFileFormat());
+                model.setModelType(commonUpload.getResultFileFormat());
+                model.setWgs84(commonUpload.getWgs84());
+                model.setGcj02(commonUpload.getGcj02());
+                model.setConvertType(commonUpload.getConvertType());
+                JSONArray jsonArray = new JSONArray();
+                jsonArray.add(commonUpload.getFileUrl());
+                model.setModelGlbUrl(jsonArray.toJSONString());
+                modelService.save(model);
+            }
+            return ResultData.ok(fusionNumService.addModel(param,model.getModelId()));
         }
+        ScenePlus scenePlus = scenePlusService.getByNum(param.getNum());
+        return ResultData.ok(fusionNumService.add(param,scenePlus,param.getIsObj()));
+    }
 
-        return ResultData.ok(fusionNumService.add(param,scenePlus));
+    @PostMapping("/updateInfo")
+    @PushJm(event_content = "修改模型")
+    public ResultData updateInfo(@RequestBody CaseFusion caseFusion){
+        if(caseFusion.getFusionId() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        caseFusion.setUpdateTime(null);
+        caseFusionService.updateById(caseFusion);
+        return ResultData.ok();
     }
 
     /**
@@ -128,5 +136,50 @@ public class CaseFusionController extends BaseController{
         fusionNumService.deleteById(param.getFusionNumId());
         return ResultData.ok();
     }
+
+
+
+
+
+    private List<FusionNumVo> getSceneListVo(Integer fusionId) {
+        List<FusionNumVo> sceneVos = new ArrayList<>();
+        List<FusionNum> fusionNumList = fusionNumService.getByFusionId(fusionId);
+
+        List<Integer> modelIds = fusionNumList.stream().map(FusionNum::getModelId).collect(Collectors.toList());
+        List<Model> listByModelIds = modelService.getListByModelIds(modelIds);
+        HashMap<Integer,Model> modelMap = new HashMap<>();
+        listByModelIds.stream().forEach(e -> modelMap.put(e.getModelId(),e));
+
+
+        List<String> numList = listByModelIds.stream().filter(e -> e.getNum() != null).map(Model::getNum).collect(Collectors.toList());
+        List<ScenePlus> scenePlusList = scenePlusService.getByNumList(numList);
+        HashMap<String,ScenePlus> map = new HashMap<>();
+        scenePlusList.stream().forEach(e -> map.put(e.getNum(),e));
+
+        for (FusionNum fusionNum : fusionNumList) {
+            FusionNumVo vo = new FusionNumVo();
+            BeanUtils.copyProperties(fusionNum,vo);
+            SceneVo sceneVo = new SceneVo();
+            Model model = modelMap.get(fusionNum.getModelId());
+            if(model != null){
+                BeanUtils.copyProperties(model,sceneVo);
+                if(model.getNum() != null ){
+                    ScenePlus scenePlus = map.get(model.getNum());
+                    if(scenePlus != null){
+                        BeanUtils.copyProperties(scenePlus,sceneVo);
+                        sceneVo.setStatus(scenePlus.getSceneStatus() == -2 ? 2:scenePlus.getSceneStatus());
+                        sceneVo.setName(scenePlus.getTitle());
+                        sceneVo.setSceneName(scenePlus.getTitle());
+                    }
+                }else {
+                    sceneVo.setStatus(2);
+                }
+            }
+            vo.setSceneData(sceneVo);
+            sceneVos.add(vo);
+        }
+
+        return sceneVos;
+    }
 }
 

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

@@ -37,7 +37,7 @@ public class CaseTagController {
     @PushJm(event_content = "新增案件标注")
     public ResultData add(@RequestBody CaseTag caseTag){
         if(caseTag.getHotIconId()==null ||  StringUtils.isEmpty(caseTag.getHotIconUrl())
-              ||caseTag.getCaseId() == null  || StringUtils.isEmpty(caseTag.getTagTitle())){
+              ||caseTag.getFusionId() == null  || StringUtils.isEmpty(caseTag.getTagTitle())){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
         //新增时取消icon上次使用标识,增加使用次数,设置新的上次使用标识

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

@@ -88,7 +88,7 @@ public class ModelController extends BaseController{
         modelService.save(model);
 
         //caseNumService.addModeByCaseId(param.getCaseId(),model.getModelId());
-        fusionNumService.addModel(param.getFusionId(),model.getModelId());
+        //fusionNumService.addModel(param,model.getModelId());
         return ResultData.ok(model);
     }
 

+ 7 - 0
src/main/java/com/fdkankan/fusion/entity/Model.java

@@ -55,6 +55,9 @@ public class Model implements Serializable {
     @TableField("type")
     private Integer type;
 
+    @TableField("is_obj")
+    private Integer isObj;
+
     @TableField("model_obj_url")
     private String modelObjUrl;
 
@@ -104,4 +107,8 @@ public class Model implements Serializable {
 
     @TableField("convert_type")
     private Integer convertType;
+
+    @TableField("upload_id")
+    private Integer uploadId;
+
 }

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

@@ -7,6 +7,8 @@ import com.fdkankan.fusion.entity.FusionNum;
 import com.fdkankan.fusion.entity.jsonEntity.Transform;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class FusionParam {
     private Integer caseId;
@@ -46,4 +48,7 @@ public class FusionParam {
 
 
     private String num;
+
+    private Integer isObj;
+    private Integer uploadId;
 }

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

@@ -7,5 +7,5 @@ import java.util.List;
 
 @Data
 public class CaseFusionVo  extends CaseFusion {
-    private  List<SceneVo> sceneVoList;
+    private  List<FusionNumVo> sceneVoList;
 }

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

@@ -18,7 +18,6 @@ public interface ICaseTagService extends IService<CaseTag> {
     List<CaseTag> allList(Integer caseId, String tagTitle);
     List<CaseTag> allListFusionId(Integer fusionId, String tagTitle);
 
-
     void updateDFHotIcon(Integer iconId);
 
     List<CaseTag> getListByCaseId(Integer caseId);

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.fusion.entity.ScenePlus;
 import com.fdkankan.fusion.request.FusionParam;
 import com.fdkankan.fusion.response.FusionNumVo;
+import scala.Int;
 
 import java.util.HashMap;
 import java.util.List;
@@ -26,7 +27,7 @@ public interface IFusionNumService extends IService<FusionNum> {
 
     List<FusionNumVo> getListByCaseId(Integer caseId,Integer fusionNumId);
 
-    FusionNum add(FusionParam param, ScenePlus scenePlus);
+    FusionNumVo add(FusionParam param, ScenePlus scenePlus, Integer isObj );
 
     void updateModel(FusionParam param);
 
@@ -44,5 +45,5 @@ public interface IFusionNumService extends IService<FusionNum> {
 
     HashMap<Integer, FusionNum> getByCaseId(Integer caseId);
 
-    void addModel(Integer fusionId, Integer modelId);
+    FusionNumVo addModel(FusionParam param, Integer modelId);
 }

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

@@ -36,7 +36,7 @@ public interface IModelService extends IService<Model> {
 
     List<Model> getListByModelIdStrs(List<String> numList);
 
-    Model getIsNullNewByNum(String num,Integer type);
+    Model getIsNullNewByNum(String num,Integer type ,Integer isObj);
 
     SceneVo getInfo(Integer modelId);
 
@@ -47,4 +47,6 @@ public interface IModelService extends IService<Model> {
     HashMap<String, Model> getMapByNum(List<String> numList);
 
     void copyModel(Integer modelId);
+
+    Model getByUploadId(Integer uploadId);
 }

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

@@ -114,7 +114,7 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
                 if(type == 3){                   //用户上传三维模型跳过
                     continue;
                 }
-                Model model = modelService.getIsNullNewByNum(num,type);
+                Model model = modelService.getIsNullNewByNum(num,type,1);
 
                 modelList.add(model);
             }

+ 17 - 14
src/main/java/com/fdkankan/fusion/service/impl/FusionNumServiceImpl.java

@@ -137,30 +137,33 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
 
 
     @Override
-    public FusionNum add(FusionParam param, ScenePlus scenePlus) {
-
-        Integer meshTypeBySceneSource = NumTypeUtils.getMeshTypeBySceneSource(scenePlus.getSceneSource(), scenePlus.getThreeCamType());
-        Model model = modelService.getIsNullNewByNum(param.getNum(),meshTypeBySceneSource);
+    public FusionNumVo add(FusionParam param,  ScenePlus scenePlus, Integer isObj ) {
+        Integer type = NumTypeUtils.getMeshTypeBySceneSource(scenePlus.getSceneSource(), isObj, scenePlus.getThreeCamType());
+        Model model = modelService.getIsNullNewByNum(scenePlus.getNum(),type, isObj);
         if(model == null){
             throw new BusinessException(ResultCode.MODEL_NOT_EXIST);
         }
-        CaseFusion caseFusion = caseFusionService.getById(param.getFusionId());
 
-        FusionNum fusionNum = new FusionNum();
-        BeanUtils.copyProperties(param,fusionNum);
-        fusionNum.setFusionId(caseFusion.getFusionId());
-        fusionNum.setModelId(model.getModelId());
-        fusionNum.setTransform(JSONObject.toJSONString(param.getTransform()));
-        this.save(fusionNum);
-        return fusionNum;
+        return addModel(param,model.getModelId());
     }
 
     @Override
-    public void addModel(Integer fusionId, Integer modelId) {
+    public FusionNumVo addModel(FusionParam param, Integer modelId) {
         FusionNum fusionNum = new FusionNum();
-        fusionNum.setFusionId(fusionId);
+        BeanUtils.copyProperties(param,fusionNum);
+        fusionNum.setFusionId(param.getFusionId());
         fusionNum.setModelId(modelId);
+        fusionNum.setTransform(JSONObject.toJSONString(param.getTransform()));
         this.save(fusionNum);
+
+        FusionNumVo vo = new FusionNumVo();
+        SceneVo sceneVo = new SceneVo();
+        BeanUtils.copyProperties(fusionNum,vo);
+        Model model = modelService.getById(modelId);
+        BeanUtils.copyProperties(model,sceneVo);
+        sceneVo.setStatus(2);
+        vo.setSceneData(sceneVo);
+        return vo;
     }
 
     private List<FusionNum> getByFusionIdAndModelId(Integer fusionId, Integer modelId) {

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

@@ -241,7 +241,7 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
     }
 
     @Override
-    public Model getIsNullNewByNum(String num,Integer type) {
+    public Model getIsNullNewByNum(String num,Integer type, Integer isObj) {
         LambdaQueryWrapper<Model> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Model::getNum,num);
         wrapper.eq(Model::getType,type);
@@ -256,7 +256,8 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
         model.setType(type);
         model.setModelType("pointcloud");    //深时点云类型
         model.setCreateStatus(1);
-        if(type == 0 || type == 1 || type == 4 || type == 6 || type == 7){           //看看,看见
+        model.setIsObj(isObj);
+        if(isObj == 1){           //看看,看见
             String mesh3DtilesPath  = String.format(FilePath.OBJ_OSS_PATH,num) + "/images/3dtiles/tileset.json";
             String sizePath = String.format(FilePath.OBJ_OSS_PATH,num) + "/images/3dtiles";
             if(uploadToOssUtil.existKey(mesh3DtilesPath)){
@@ -324,6 +325,18 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
         return map;
     }
 
+
+    @Override
+    public Model getByUploadId(Integer uploadId) {
+        LambdaQueryWrapper<Model> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Model::getUploadId,uploadId);
+        List<Model> list = this.list(wrapper);
+        if(list.isEmpty()){
+            return null;
+        }
+        return list.get(0);
+    }
+
     @Override
     public void copyModel(Integer modelId) {
         Model modelEntity = this.getById(modelId);