lyhzzz 4 mēneši atpakaļ
vecāks
revīzija
a436622394
37 mainītis faili ar 650 papildinājumiem un 37 dzēšanām
  1. 5 0
      README.md
  2. 41 0
      doc/update-1.7.1.sql
  3. 52 0
      src/main/java/com/fdkankan/fusion/controller/CaseAnimationController.java
  4. 2 12
      src/main/java/com/fdkankan/fusion/controller/FusionGuideController.java
  5. 2 9
      src/main/java/com/fdkankan/fusion/controller/FusionGuidePathController.java
  6. 33 0
      src/main/java/com/fdkankan/fusion/controller/MapConfigController.java
  7. 1 1
      src/main/java/com/fdkankan/fusion/controller/ModelController.java
  8. 6 6
      src/main/java/com/fdkankan/fusion/controller/NoLoginController.java
  9. 8 0
      src/main/java/com/fdkankan/fusion/down/CaseDownService.java
  10. 84 0
      src/main/java/com/fdkankan/fusion/entity/CaseAnimation.java
  11. 4 0
      src/main/java/com/fdkankan/fusion/entity/CaseEntity.java
  12. 8 5
      src/main/java/com/fdkankan/fusion/entity/CaseSettings.java
  13. 5 0
      src/main/java/com/fdkankan/fusion/entity/CommonUpload.java
  14. 2 1
      src/main/java/com/fdkankan/fusion/entity/Dict.java
  15. 2 1
      src/main/java/com/fdkankan/fusion/entity/DictFile.java
  16. 10 0
      src/main/java/com/fdkankan/fusion/entity/FusionGuide.java
  17. 2 0
      src/main/java/com/fdkankan/fusion/entity/FusionGuidePath.java
  18. 50 0
      src/main/java/com/fdkankan/fusion/entity/MapConfig.java
  19. 1 1
      src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java
  20. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseAnimationMapper.java
  21. 18 0
      src/main/java/com/fdkankan/fusion/mapper/IMapConfigMapper.java
  22. 28 0
      src/main/java/com/fdkankan/fusion/response/SceneVo.java
  23. 17 0
      src/main/java/com/fdkankan/fusion/service/ICaseAnimationService.java
  24. 4 0
      src/main/java/com/fdkankan/fusion/service/ICommonUploadService.java
  25. 2 0
      src/main/java/com/fdkankan/fusion/service/IDictFileService.java
  26. 1 0
      src/main/java/com/fdkankan/fusion/service/IDictService.java
  27. 20 0
      src/main/java/com/fdkankan/fusion/service/IMapConfigService.java
  28. 28 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseAnimationServiceImpl.java
  29. 14 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java
  30. 22 1
      src/main/java/com/fdkankan/fusion/service/impl/CaseSettingsServiceImpl.java
  31. 26 0
      src/main/java/com/fdkankan/fusion/service/impl/CommonUploadServiceImpl.java
  32. 22 0
      src/main/java/com/fdkankan/fusion/service/impl/DictFileServiceImpl.java
  33. 22 0
      src/main/java/com/fdkankan/fusion/service/impl/DictServiceImpl.java
  34. 31 0
      src/main/java/com/fdkankan/fusion/service/impl/MapConfigServiceImpl.java
  35. 49 0
      src/main/java/com/fdkankan/fusion/task/TaskService.java
  36. 5 0
      src/main/resources/mapper/fusion/CaseAnimationMapper.xml
  37. 5 0
      src/main/resources/mapper/fusion/MapConfigMapper.xml

+ 5 - 0
README.md

@@ -56,6 +56,11 @@ fd_fusion_xj-init.sql
 ~~~~
 fusion:
   ai-url: http://192.168.9.61:30000/v1/
+  
+  默认动画模型路径
+  /oss/4dkankan/fusion/default/model 
+  
+  fusion/notAuth/getMapConfig 
 ~~~~
 
 

+ 41 - 0
doc/update-1.7.1.sql

@@ -0,0 +1,41 @@
+
+ALTER TABLE `fd_fusion`.`t_fusion_guide_path`
+    ADD COLUMN `play_animation` int NULL AFTER `pano_info`;
+
+CREATE TABLE `t_case_animation` (
+                                    `id` int NOT NULL AUTO_INCREMENT,
+                                    `case_id` int DEFAULT NULL,
+                                    `title` text COLLATE utf8mb4_general_ci,
+                                    `url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
+                                    `show_title` int DEFAULT NULL COMMENT '0否,1是',
+                                    `font_size` int DEFAULT NULL,
+                                    `global_visibility` int DEFAULT NULL COMMENT '0否,1是',
+                                    `visibility_range` int DEFAULT NULL,
+                                    `frames` text COLLATE utf8mb4_general_ci,
+                                    `actions` text COLLATE utf8mb4_general_ci,
+                                    `subtitles` text COLLATE utf8mb4_general_ci,
+                                    `paths` text COLLATE utf8mb4_general_ci,
+                                    `mat` text COLLATE utf8mb4_general_ci,
+                                    `tb_status` int DEFAULT '0',
+                                    `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+                                    `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+                                    PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+
+ALTER TABLE `fd_fusion`.`t_fusion_guide`
+    ADD COLUMN `show_taggings` int NULL AFTER `recovery_content`,
+ADD COLUMN `show_measure` int NULL AFTER `show_taggings`,
+ADD COLUMN `show_monitor` int NULL AFTER `show_measure`,
+ADD COLUMN `show_path` int NULL AFTER `show_monitor`;
+
+
+
+ALTER TABLE `4dkankan_v4`.`t_dict`
+    ADD COLUMN `use_type` varchar(255) NULL DEFAULT 'ordinary' AFTER `parent_id`;
+
+ALTER TABLE `4dkankan_v4`.`t_common_upload`
+    ADD COLUMN `use_type` varchar(255) NULL DEFAULT 'ordinary' AFTER `gcj02`;
+
+ALTER TABLE `4dkankan_v4`.`t_dict_file`
+    ADD COLUMN `use_type` varchar(255) NULL DEFAULT 'ordinary' AFTER `upload_id`;

+ 52 - 0
src/main/java/com/fdkankan/fusion/controller/CaseAnimationController.java

@@ -0,0 +1,52 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.entity.CaseAnimation;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.service.ICaseAnimationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-26
+ */
+@RestController
+@RequestMapping("/caseAnimation")
+public class CaseAnimationController {
+
+    @Autowired
+    ICaseAnimationService caseAnimationService;
+
+
+    @GetMapping("/list")
+    public ResultData allList(@RequestParam(required = false) Integer caseId){
+        if(caseId == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        return ResultData.ok(caseAnimationService.getListByCaseId(caseId));
+    }
+
+    @PostMapping("/addOrUpdate")
+    public ResultData addOrUpdate(@RequestBody CaseAnimation caseAnimation){
+        caseAnimationService.saveOrUpdate(caseAnimation);
+        return ResultData.ok(caseAnimation);
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody CaseAnimation caseAnimation){
+        if(caseAnimation.getId() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        caseAnimationService.removeById(caseAnimation.getId());
+        return ResultData.ok();
+    }
+}
+

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

@@ -44,18 +44,8 @@ public class FusionGuideController {
                 (fusionGuide.getSort() == null && StringUtils.isEmpty(fusionGuide.getTitle()) && StringUtils.isEmpty(fusionGuide.getCover())  )){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        LambdaUpdateWrapper<FusionGuide> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(FusionGuide::getFusionGuideId,fusionGuide.getFusionGuideId());
-        if(fusionGuide.getSort()!=null){
-            wrapper.set(FusionGuide::getSort,fusionGuide.getSort());
-        }
-        if(StringUtils.isNotBlank(fusionGuide.getTitle())){
-            wrapper.set(FusionGuide::getTitle,fusionGuide.getTitle());
-        }
-        if(StringUtils.isNotBlank(fusionGuide.getCover())){
-            wrapper.set(FusionGuide::getCover,fusionGuide.getCover());
-        }
-        fusionGuideService.update(wrapper);
+        fusionGuide.setUpdateTime(null);
+        fusionGuideService.updateById(fusionGuide);
         return ResultData.ok();
     }
 

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

@@ -47,15 +47,8 @@ public class FusionGuidePathController {
                 (fusionGuidePath.getSort() == null && StringUtils.isEmpty(fusionGuidePath.getCover())) ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        LambdaUpdateWrapper<FusionGuidePath> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(FusionGuidePath::getGuidePathId,fusionGuidePath.getGuidePathId());
-        if(fusionGuidePath.getSort()!=null){
-            wrapper.set(FusionGuidePath::getSort,fusionGuidePath.getSort());
-        }
-        if(StringUtils.isNotBlank(fusionGuidePath.getCover())){
-            wrapper.set(FusionGuidePath::getCover,fusionGuidePath.getCover());
-        }
-        fusionGuidePathService.update(wrapper);
+        fusionGuidePath.setUpdateTime(null);
+        fusionGuidePathService.updateById(fusionGuidePath);
         return ResultData.ok();
     }
 

+ 33 - 0
src/main/java/com/fdkankan/fusion/controller/MapConfigController.java

@@ -0,0 +1,33 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.common.util.Openai;
+import com.fdkankan.fusion.config.FusionConfig;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.request.AiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2024-12-10
+ */
+@RestController
+@RequestMapping("/mapConfig")
+@Slf4j
+public class MapConfigController {
+
+
+}
+

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

@@ -85,7 +85,7 @@ public class ModelController extends BaseController{
         model.setModelGlbUrl(jsonArray.toJSONString());
         modelService.save(model);
 
-        caseNumService.addModeByCaseId(param.getCaseId(),model.getModelId());
+        //caseNumService.addModeByCaseId(param.getCaseId(),model.getModelId());
         return ResultData.ok(model);
     }
 

+ 6 - 6
src/main/java/com/fdkankan/fusion/controller/NoLoginController.java

@@ -17,6 +17,7 @@ import com.fdkankan.fusion.common.util.RedisKeyUtil;
 import com.fdkankan.fusion.common.util.StringUtils;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.response.UserAddRequest;
+import com.fdkankan.fusion.service.IMapConfigService;
 import com.fdkankan.fusion.service.ITmUserService;
 import com.fdkankan.redis.util.RedisUtil;
 import jdk.nashorn.internal.runtime.regexp.joni.Config;
@@ -43,6 +44,8 @@ public class NoLoginController {
     RedisUtil redisUtil;
     @Autowired
     ITmUserService tmUserService;
+    @Autowired
+    IMapConfigService mapConfigService;
 
     @GetMapping("/getLoginAuthCode")
     public void  getLoginCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
@@ -75,11 +78,8 @@ public class NoLoginController {
         return ResultData.ok( tmUserService.getMsgAuthCode(phoneNum));
     }
 
-
-    public static void main(String[] args) {
-        String passwordHash = MD5.create().digestHex("6N^KJTG*GkWj3C");
-        System.out.println(passwordHash);
-        String passwordHash2 = MD5.create().digestHex(passwordHash);
-        System.out.println(passwordHash2);
+    @GetMapping("/getMapConfig")
+    public ResultData getMapConfig() {
+        return ResultData.ok( mapConfigService.list());
     }
 }

+ 8 - 0
src/main/java/com/fdkankan/fusion/down/CaseDownService.java

@@ -219,6 +219,14 @@ public class CaseDownService {
         for (FusionNumVo fusion : listByCaseId) {
             jsonObject.put(basePath+fusionMeter+fusion.getFusionId(), ResultData.ok(fusionMeterService.getListByFusionId(fusion.getFusionId(),null)));
         }
+        for (FusionNumVo fusionNumVo : listByCaseId) {
+            //下载媒体库模型
+            if(fusionNumVo.getSceneData() != null){
+                if(fusionNumVo.getSceneData().getType() ==3 && StringUtils.isNotBlank(fusionNumVo.getSceneData().getModelGlbUrl()) ){
+                    downModel(caseId,fusionNumVo.getSceneData().getModelGlbUrl());
+                }
+            }
+        }
 
         List<SceneVo> sceneVos = caseService.sceneList(param);
         for (SceneVo sceneData : sceneVos) {

+ 84 - 0
src/main/java/com/fdkankan/fusion/entity/CaseAnimation.java

@@ -0,0 +1,84 @@
+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-03-26
+ */
+@Getter
+@Setter
+@TableName("t_case_animation")
+public class CaseAnimation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("case_id")
+    private Integer caseId;
+
+    @TableField("title")
+    private String title;
+
+    @TableField("url")
+    private String url;
+
+    /**
+     * 0否,1是
+     */
+    @TableField("show_title")
+    private Boolean showTitle;
+
+    @TableField("font_size")
+    private Integer fontSize;
+
+    /**
+     * 0否,1是
+     */
+    @TableField("global_visibility")
+    private Boolean globalVisibility;
+
+    @TableField("visibility_range")
+    private Integer visibilityRange;
+
+    @TableField("frames")
+    private String frames;
+
+    @TableField("actions")
+    private String actions;
+
+    @TableField("subtitles")
+    private String subtitles;
+
+    @TableField("paths")
+    private String paths;
+
+    @TableField("mat")
+    private String mat;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

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

@@ -124,5 +124,9 @@ public class CaseEntity implements Serializable {
     @TableField(exist = false)
     private String deptName;
 
+    @TableField("map_id")
+    private Integer mapId;
 
+    @TableField(exist = false)
+    public MapConfig mapConfig;
 }

+ 8 - 5
src/main/java/com/fdkankan/fusion/entity/CaseSettings.java

@@ -1,10 +1,7 @@
 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 com.baomidou.mybatisplus.annotation.*;
+
 import java.io.Serializable;
 import java.util.Date;
 import lombok.Getter;
@@ -90,4 +87,10 @@ public class CaseSettings implements Serializable {
 
     @TableField("rotate")
     private Double rotate;
+
+    @TableField(value = "map_id",updateStrategy = FieldStrategy.IGNORED)
+    private Integer mapId;
+
+    @TableField(exist = false)
+    private MapConfig mapConfig;
 }

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

@@ -39,6 +39,8 @@ public class CommonUpload implements Serializable {
 
     @TableField("file_type")
     private Integer fileType;
+    @TableField("file_type_str")
+    private String fileTypeStr;
 
     @TableField("file_format")
     private String fileFormat;
@@ -67,4 +69,7 @@ public class CommonUpload implements Serializable {
 
     @TableField("gcj02")
     private String gcj02;
+
+    @TableField("use_type")
+    private String useType;
 }

+ 2 - 1
src/main/java/com/fdkankan/fusion/entity/Dict.java

@@ -47,5 +47,6 @@ public class Dict implements Serializable {
     @TableField("sys_user_id")
     private Integer sysUserId;
 
-
+    @TableField("use_type")
+    private String useType;
 }

+ 2 - 1
src/main/java/com/fdkankan/fusion/entity/DictFile.java

@@ -50,5 +50,6 @@ public class DictFile implements Serializable {
     @TableField("upload_id")
     private Integer uploadId;
 
-
+    @TableField("use_type")
+    private String useType;
 }

+ 10 - 0
src/main/java/com/fdkankan/fusion/entity/FusionGuide.java

@@ -72,5 +72,15 @@ public class FusionGuide implements Serializable {
     @TableField("update_time")
     private String updateTime;
 
+    @TableField("show_taggings")
+    private Boolean showTaggings;
 
+    @TableField("show_measure")
+    private Boolean showMeasure;
+
+    @TableField("show_monitor")
+    private Boolean showMonitor;
+
+    @TableField("show_path")
+    private Boolean showPath;
 }

+ 2 - 0
src/main/java/com/fdkankan/fusion/entity/FusionGuidePath.java

@@ -80,5 +80,7 @@ public class FusionGuidePath implements Serializable {
     @TableField("update_time")
     private String updateTime;
 
+    @TableField("play_animation")
+    private Boolean playAnimation;
 
 }

+ 50 - 0
src/main/java/com/fdkankan/fusion/entity/MapConfig.java

@@ -0,0 +1,50 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-28
+ */
+@Getter
+@Setter
+@TableName("t_map_config")
+public class MapConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("name")
+    private String name;
+
+    @TableField("map_url")
+    private String mapUrl;
+
+    @TableField("coord")
+    private String coord;
+
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
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_case_inquest_file"
+               "t_map_config"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

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

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

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

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

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

@@ -1,8 +1,10 @@
 package com.fdkankan.fusion.response;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.entity.Model;
 import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
 
 @Data
 public class SceneVo extends Model {
@@ -48,4 +50,30 @@ public class SceneVo extends Model {
      * laser推送经纬度信息
      */
     private String rtkLocation;
+
+    private String cutModelPath;
+    private String surveillancePath;
+    private String sceneJsonPath;
+
+
+    public String getCutModelPath() {
+        if(StringUtils.isNotBlank(num)){
+            return "/oss/"+String.format(FilePath.OBJ_OSS_PATH,num)+"/user/cutModel.json";
+        }
+        return cutModelPath;
+    }
+
+    public String getSurveillancePath() {
+        if(StringUtils.isNotBlank(num)){
+            return "/oss/"+String.format(FilePath.OBJ_OSS_PATH,num)+"/user/surveillance.json";
+        }
+        return surveillancePath;
+    }
+
+    public String getSceneJsonPath() {
+        if(StringUtils.isNotBlank(num)){
+            return "/oss/"+String.format(FilePath.OBJ_OSS_PATH,num)+"/data/scene.json";
+        }
+        return sceneJsonPath;
+    }
 }

+ 17 - 0
src/main/java/com/fdkankan/fusion/service/ICaseAnimationService.java

@@ -0,0 +1,17 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseAnimation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-26
+ */
+public interface ICaseAnimationService extends IService<CaseAnimation> {
+
+    Object getListByCaseId(Integer caseId);
+}

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

@@ -21,4 +21,8 @@ public interface ICommonUploadService extends IService<CommonUpload> {
     void updateByPath(String msg, String url,String wgs84 ,String gcj02);
 
     void updateStatus(String localPath,Integer status);
+
+    List<CommonUpload> getIsSystem();
+
+    CommonUpload addSystemFile(String ossKey,Long fileSize,String fileName);
 }

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

@@ -1,5 +1,6 @@
 package com.fdkankan.fusion.service;
 
+import com.fdkankan.fusion.entity.CommonUpload;
 import com.fdkankan.fusion.entity.DictFile;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IDictFileService extends IService<DictFile> {
 
+    void addSystemFile(CommonUpload commonUpload);
 }

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

@@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IDictService extends IService<Dict> {
 
+    Dict getBySystemFile();
 }

+ 20 - 0
src/main/java/com/fdkankan/fusion/service/IMapConfigService.java

@@ -0,0 +1,20 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.MapConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-28
+ */
+public interface IMapConfigService extends IService<MapConfig> {
+
+    HashMap<Integer, MapConfig> getMapByIds(List<Integer> mapIds);
+}

+ 28 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseAnimationServiceImpl.java

@@ -0,0 +1,28 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.entity.CaseAnimation;
+import com.fdkankan.fusion.mapper.ICaseAnimationMapper;
+import com.fdkankan.fusion.service.ICaseAnimationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-26
+ */
+@Service
+public class CaseAnimationServiceImpl extends ServiceImpl<ICaseAnimationMapper, CaseAnimation> implements ICaseAnimationService {
+
+    @Override
+    public Object getListByCaseId(Integer caseId) {
+        LambdaQueryWrapper<CaseAnimation> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseAnimation::getCaseId,caseId);
+        return this.list(wrapper);
+
+    }
+}

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

@@ -55,6 +55,8 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
     ITmUserService tmUserService;
     @Autowired
     ITmCameraService tmCameraService;
+    @Autowired
+    IMapConfigService mapConfigService;
 
     @Override
     public PageInfo pageList(CaseParam param) {
@@ -97,6 +99,18 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
                 record.setDeptName(department.getName());
             }
         }
+
+        List<Integer> mapIds = page.getRecords().stream().map(CaseEntity::getMapId).collect(Collectors.toList());
+        if(!mapIds.isEmpty()){
+            HashMap<Integer,MapConfig> map = mapConfigService.getMapByIds(mapIds);
+            for (CaseEntity caseEntity : page.getRecords()) {
+                if(caseEntity.getMapId() != null && map.get(caseEntity.getMapId()) != null){
+                    MapConfig mapConfig = map.get(caseEntity.getMapId());
+                    caseEntity.setMapConfig(mapConfig);
+                }
+            }
+        }
+
         return PageInfo.PageInfo(page);
     }
 

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

@@ -2,12 +2,18 @@ package com.fdkankan.fusion.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.fusion.entity.CaseSettings;
+import com.fdkankan.fusion.entity.MapConfig;
 import com.fdkankan.fusion.mapper.ICaseSettingsMapper;
 import com.fdkankan.fusion.service.ICaseSettingsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.fusion.service.IMapConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import scala.Int;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -20,10 +26,25 @@ import java.util.List;
 @Service
 public class CaseSettingsServiceImpl extends ServiceImpl<ICaseSettingsMapper, CaseSettings> implements ICaseSettingsService {
 
+    @Autowired
+    IMapConfigService mapConfigService;
     @Override
     public List<CaseSettings> getByCaseId(Integer caseId) {
         LambdaQueryWrapper<CaseSettings> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CaseSettings::getCaseId,caseId);
-        return this.list(wrapper);
+        List<CaseSettings> list = this.list(wrapper);
+        List<Integer> mapIds = list.stream().map(CaseSettings::getMapId).collect(Collectors.toList());
+        if(!mapIds.isEmpty()){
+            HashMap<Integer,MapConfig> map = mapConfigService.getMapByIds(mapIds);
+            for (CaseSettings caseSettings : list) {
+                if(caseSettings.getMapId() != null && map.get(caseSettings.getMapId()) != null){
+                    MapConfig mapConfig = map.get(caseSettings.getMapId());
+                    caseSettings.setMapConfig(mapConfig);
+                }
+
+            }
+        }
+
+        return list;
     }
 }

+ 26 - 0
src/main/java/com/fdkankan/fusion/service/impl/CommonUploadServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.fusion.service.impl;
 
+import cn.hutool.core.io.FileUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -10,6 +11,7 @@ import com.fdkankan.fusion.service.ICommonUploadService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
 import java.util.List;
 
 /**
@@ -58,4 +60,28 @@ public class CommonUploadServiceImpl extends ServiceImpl<ICommonUploadMapper, Co
         wrapper.set(CommonUpload::getGcj02,gcj02);
         this.update(wrapper);
     }
+
+    @Override
+    public List<CommonUpload> getIsSystem() {
+        LambdaQueryWrapper<CommonUpload> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CommonUpload::getUseType,"animation");
+        return this.list(wrapper);
+    }
+
+    @Override
+    public CommonUpload addSystemFile(String ossKey,Long fileSize,String fileName) {
+        CommonUpload commonUpload = new CommonUpload();
+        commonUpload.setFileName(fileName);
+        commonUpload.setFileUrl(ossKey);
+        commonUpload.setFileSize(fileSize+"");
+        commonUpload.setNewFileName(fileName);
+        commonUpload.setFileType(3);
+        commonUpload.setFileTypeStr("模型");
+        commonUpload.setFileFormat("glb");
+        commonUpload.setResultFileFormat("glb");
+        commonUpload.setStatus(1);
+        commonUpload.setUseType("animation");
+        this.save(commonUpload);
+        return commonUpload;
+    }
 }

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

@@ -1,9 +1,14 @@
 package com.fdkankan.fusion.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fdkankan.fusion.entity.CommonUpload;
+import com.fdkankan.fusion.entity.Dict;
 import com.fdkankan.fusion.entity.DictFile;
 import com.fdkankan.fusion.mapper.IDictFileMapper;
 import com.fdkankan.fusion.service.IDictFileService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.fusion.service.IDictService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -15,6 +20,23 @@ import org.springframework.stereotype.Service;
  * @since 2024-12-06
  */
 @Service
+@DS("db2")
 public class DictFileServiceImpl extends ServiceImpl<IDictFileMapper, DictFile> implements IDictFileService {
 
+    @Autowired
+    IDictService dictService;
+
+    @Override
+    public void addSystemFile(CommonUpload commonUpload) {
+        Dict dict = dictService.getBySystemFile();
+
+        DictFile dictFile = new DictFile();
+        dictFile.setName(commonUpload.getFileName());
+        dictFile.setTypeKey("media-library");
+        dictFile.setDictId(dict.getId());
+        dictFile.setUploadId(commonUpload.getId());
+        dictFile.setUseType("animation");
+        dictFile.setSysUserId(1);
+        this.save(dictFile);
+    }
 }

+ 22 - 0
src/main/java/com/fdkankan/fusion/service/impl/DictServiceImpl.java

@@ -1,11 +1,15 @@
 package com.fdkankan.fusion.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.fusion.entity.Dict;
 import com.fdkankan.fusion.mapper.IDictMapper;
 import com.fdkankan.fusion.service.IDictService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -15,6 +19,24 @@ import org.springframework.stereotype.Service;
  * @since 2024-12-06
  */
 @Service
+@DS("db2")
 public class DictServiceImpl extends ServiceImpl<IDictMapper, Dict> implements IDictService {
 
+    @Override
+    public Dict getBySystemFile() {
+        LambdaQueryWrapper<Dict> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Dict::getUseType,"animation");
+        List<Dict> list = this.list(wrapper);
+        if(list.isEmpty()){
+            Dict dict = new Dict();
+            dict.setDictName("动画模型");
+            dict.setDictKey("media-library");
+            dict.setSort(1);
+            dict.setSysUserId(1);
+            dict.setUseType("animation");
+            this.save(dict);
+            return dict;
+        }
+        return list.get(0);
+    }
 }

+ 31 - 0
src/main/java/com/fdkankan/fusion/service/impl/MapConfigServiceImpl.java

@@ -0,0 +1,31 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.fdkankan.fusion.entity.MapConfig;
+import com.fdkankan.fusion.mapper.IMapConfigMapper;
+import com.fdkankan.fusion.service.IMapConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-03-28
+ */
+@Service
+public class MapConfigServiceImpl extends ServiceImpl<IMapConfigMapper, MapConfig> implements IMapConfigService {
+
+
+    @Override
+    public HashMap<Integer, MapConfig> getMapByIds(List<Integer> mapIds) {
+        HashMap<Integer,MapConfig> map = new HashMap<>();
+        List<MapConfig> mapConfigs = this.listByIds(mapIds);
+        mapConfigs.forEach( e -> map.put(e.getId(),e));
+        return map;
+    }
+}

+ 49 - 0
src/main/java/com/fdkankan/fusion/task/TaskService.java

@@ -1,24 +1,32 @@
 package com.fdkankan.fusion.task;
 
+import cn.hutool.core.io.FileUtil;
 import com.fdkankan.fusion.common.util.DateUtils;
+import com.fdkankan.fusion.common.util.UploadToOssUtil;
 import com.fdkankan.fusion.entity.CaseLive;
 import com.fdkankan.fusion.entity.CommonUpload;
 import com.fdkankan.fusion.service.ICaseLiveService;
 import com.fdkankan.fusion.service.ICommonUploadService;
+import com.fdkankan.fusion.service.IDictFileService;
+import com.fdkankan.fusion.service.IDictService;
 import com.fdkankan.redis.util.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.PostMapping;
 
 import javax.annotation.PostConstruct;
+import java.io.File;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import static com.fdkankan.fusion.down.CaseDownService.downProcessKey;
 
 @Service
+@Slf4j
 public class TaskService {
 
     @Autowired
@@ -36,5 +44,46 @@ public class TaskService {
                 redisUtil.del(key);
             }
         }
+
+        checkSystemModel();
+    }
+
+    @Autowired
+    ICommonUploadService commonUploadService;
+    @Autowired
+    IDictFileService dictFileService;
+
+    private void checkSystemModel() {
+        try {
+            log.info("检查是否存在系统默认动画模型");
+            String dfModel = "/oss/4dkankan/fusion/default/model/glb";
+
+            List<CommonUpload> uploadList = commonUploadService.getIsSystem();
+            File file = new File(dfModel);
+            File[] files = file.listFiles();
+            if(files == null || files.length <=0){
+                return;
+            }
+            if(files.length != uploadList.size()){
+                List<String> dbUrlList = uploadList.stream().map(CommonUpload::getFileUrl).collect(Collectors.toList());
+                for (File s : files) {
+                    String path = s.getPath();
+                    String name = FileUtil.mainName(s);
+                    path = path.replace("4dkankan/","");
+                    if(dbUrlList.contains(path)){
+                        continue;
+                    }
+                    log.info(path);
+                    CommonUpload commonUpload = commonUploadService.addSystemFile(path,s.length(),name);
+                    if(commonUpload != null){
+                        dictFileService.addSystemFile(commonUpload);
+                    }
+                }
+            }
+        }catch (Exception e){
+            log.info("检查是否存在系统默认动画模型:{}",e);
+        }
+
     }
+
 }

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

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