lyhzzz 2 月之前
父节点
当前提交
1f3207e735

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

@@ -109,6 +109,8 @@ public enum ResultCode  {
     upload_file_limit(60032, "大小超限制"),
 
     DEL_ERROR(60033, "无法删除系统默认"),
+
+    BUILD_LOG_ERROR(60034, "打包计算日志失败"),
     ;
 
     private Integer code;

+ 64 - 0
src/main/java/com/fdkankan/manage/common/SensitiveWordReplacer.java

@@ -0,0 +1,64 @@
+package com.fdkankan.manage.common;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.*;
+import java.nio.file.*;
+import java.util.*;
+import java.util.regex.Pattern;
+
+@Slf4j
+public class SensitiveWordReplacer {
+    // 敏感词映射表,key为敏感词,value为替换后的词
+    private static final Map<String, String> SENSITIVE_WORDS = new HashMap<>();
+
+    // IP地址正则表达式模式
+    private static final String IP_PATTERN =
+            "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
+
+
+    static {
+        SENSITIVE_WORDS.put("公安", "***");
+        SENSITIVE_WORDS.put(IP_PATTERN, "[IP_REMOVED]");
+    }
+
+
+    /**
+     * 处理指定目录下的所有文件
+     */
+    public static void processDirectory(String directoryPath)  {
+        try {
+            Files.walk(Paths.get(directoryPath))
+                    .filter(Files::isRegularFile)
+                    .filter(path -> path.toString().endsWith(".log"))
+                    .forEach(SensitiveWordReplacer::processFile);
+        }catch (Exception e){
+            log.info("处理文件 " + directoryPath + " 时出错: " + e.getMessage());
+        }
+
+    }
+
+    /**
+     * 处理单个文件,替换其中的敏感词
+     */
+    public static void processFile(Path filePath) {
+        try {
+            // 读取文件内容
+            String content = new String(Files.readAllBytes(filePath), "UTF-8");
+            String originalContent = content;
+
+            // 替换所有敏感词
+            for (Map.Entry<String, String> entry : SENSITIVE_WORDS.entrySet()) {
+                content = content.replaceAll(entry.getKey(), entry.getValue());
+            }
+
+            // 如果内容有变化,则写回文件
+            if (!content.equals(originalContent)) {
+                Files.write(filePath, content.getBytes("UTF-8"));
+                log.info("已处理文件: " + filePath);
+            }
+        } catch (IOException e) {
+            log.info("处理文件 " + filePath + " 时出错: " + e.getMessage());
+        }
+    }
+}

+ 69 - 0
src/main/java/com/fdkankan/manage/entity/OrigFileUpload.java

@@ -0,0 +1,69 @@
+package com.fdkankan.manage.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-06-19
+ */
+@Getter
+@Setter
+@TableName("t_orig_file_upload")
+public class OrigFileUpload implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 批次id
+     */
+    @TableField("batch_id")
+    private String batchId;
+
+    /**
+     * 原始文件名
+     */
+    @TableField("file_name")
+    private String fileName;
+
+    /**
+     * 文件地址
+     */
+    @TableField("file_url")
+    private String fileUrl;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * A-有效,I-无效
+     */
+    @TableField("rec_status")
+    @TableLogic
+    private String recStatus;
+
+
+}

+ 81 - 0
src/main/java/com/fdkankan/manage/entity/OrigFileUploadBatch.java

@@ -0,0 +1,81 @@
+package com.fdkankan.manage.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-06-19
+ */
+@Getter
+@Setter
+@TableName("t_orig_file_upload_batch")
+public class OrigFileUploadBatch implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 上传批次id
+     */
+    @TableField("batch_id")
+    private String batchId;
+
+    /**
+     * 场景uuid
+     */
+    @TableField("uuid")
+    private String uuid;
+
+    /**
+     * 状态(0-上传中,1,-通知计算,2-进入计算,3-退出计算,4-等待通知计算)
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 上传次数
+     */
+    @TableField("notice_times")
+    private Integer noticeTimes;
+
+    /**
+     * 通知计算消息体
+     */
+    @TableField("mq_content")
+    private String mqContent;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * A-有效,I无效
+     */
+    @TableField("rec_status")
+    @TableLogic
+    private String recStatus;
+
+
+}

+ 3 - 0
src/main/java/com/fdkankan/manage/entity/ScenePlus.java

@@ -115,4 +115,7 @@ public class ScenePlus implements Serializable {
 
     @TableField("three_cam_type")
     private String threeCamType;
+
+    @TableField("build_fail_reason")
+    private String buildFailReason;
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/generate/AutoGenerate.java

@@ -46,7 +46,7 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://192.168.0.25:3306/4dkankan_v4",
+        FastAutoGenerator.create("jdbc:mysql://119.23.182.50:3306/4dkankan_v4",
                 "root","4dkk2023cuikuan%")
                 .globalConfig(builder -> {
                     builder.author("")               //作者

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IOrigFileUploadBatchMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.OrigFileUploadBatch;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景上传文件批次记录表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-06-19
+ */
+@Mapper
+public interface IOrigFileUploadBatchMapper extends BaseMapper<OrigFileUploadBatch> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IOrigFileUploadMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.OrigFileUpload;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景原始文件上传明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-06-19
+ */
+@Mapper
+public interface IOrigFileUploadMapper extends BaseMapper<OrigFileUpload> {
+
+}

+ 19 - 0
src/main/java/com/fdkankan/manage/service/IOrigFileUploadBatchService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.OrigFileUploadBatch;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 场景上传文件批次记录表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-06-19
+ */
+public interface IOrigFileUploadBatchService extends IService<OrigFileUploadBatch> {
+
+    List<OrigFileUploadBatch> getByUuid(String uuid);
+}

+ 20 - 0
src/main/java/com/fdkankan/manage/service/IOrigFileUploadService.java

@@ -0,0 +1,20 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.OrigFileUpload;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 场景原始文件上传明细 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-06-19
+ */
+public interface IOrigFileUploadService extends IService<OrigFileUpload> {
+
+    List<OrigFileUpload> getByBatchIds(Set<String> batchIds);
+}

+ 29 - 0
src/main/java/com/fdkankan/manage/service/impl/OrigFileUploadBatchServiceImpl.java

@@ -0,0 +1,29 @@
+package com.fdkankan.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.manage.entity.OrigFileUploadBatch;
+import com.fdkankan.manage.mapper.IOrigFileUploadBatchMapper;
+import com.fdkankan.manage.service.IOrigFileUploadBatchService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 场景上传文件批次记录表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-06-19
+ */
+@Service
+public class OrigFileUploadBatchServiceImpl extends ServiceImpl<IOrigFileUploadBatchMapper, OrigFileUploadBatch> implements IOrigFileUploadBatchService {
+
+    @Override
+    public List<OrigFileUploadBatch> getByUuid(String uuid) {
+        LambdaQueryWrapper<OrigFileUploadBatch> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(OrigFileUploadBatch::getUuid,uuid);
+        return this.list(wrapper);
+    }
+}

+ 36 - 0
src/main/java/com/fdkankan/manage/service/impl/OrigFileUploadServiceImpl.java

@@ -0,0 +1,36 @@
+package com.fdkankan.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.manage.entity.OrigFileUpload;
+import com.fdkankan.manage.mapper.IOrigFileUploadMapper;
+import com.fdkankan.manage.service.IOrigFileUploadService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 场景原始文件上传明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-06-19
+ */
+@Service
+public class OrigFileUploadServiceImpl extends ServiceImpl<IOrigFileUploadMapper, OrigFileUpload> implements IOrigFileUploadService {
+
+    @Override
+    public List<OrigFileUpload> getByBatchIds(Set<String> batchIds) {
+        if(batchIds == null || batchIds.isEmpty()){
+            return new ArrayList<>();
+        }
+        LambdaQueryWrapper<OrigFileUpload> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(OrigFileUpload::getBatchId,batchIds);
+        wrapper.orderByDesc(OrigFileUpload::getBatchId);
+        wrapper.orderByDesc(OrigFileUpload::getId);
+        return this.list(wrapper);
+    }
+}

+ 53 - 16
src/main/java/com/fdkankan/manage/service/impl/ScenePlusServiceImpl.java

@@ -9,6 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.util.DateUtil;
+import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.common.SensitiveWordReplacer;
+import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.httpClient.service.LaserService;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.mapper.IScenePlusMapper;
@@ -21,15 +24,14 @@ import com.fdkankan.manage.vo.response.AgentNewLogVo;
 import com.fdkankan.manage.vo.response.GroupByCount;
 import com.fdkankan.manage.vo.response.UserAuthSceneVo;
 import com.fdkankan.manage.vo.response.UserShareSceneVo;
+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.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -46,6 +48,18 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     ISceneProService sceneProService;
     @Autowired
     LaserService laserService;
+    @Autowired
+    ISceneBuildProcessLogService sceneBuildProcessLogService;
+    @Autowired
+    IBuildLogService buildLogService;
+    @Autowired
+    IOrigFileUploadBatchService origFileUploadBatchService;
+    @Autowired
+    IOrigFileUploadService origFileUploadService;
+    @Autowired
+    IExcelService excelService;
+    @Autowired
+    IScenePlusExtService scenePlusExtService;
 
     @Override
     public ScenePlus getByNum(String sceneNum) {
@@ -119,34 +133,57 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
      * oss目录:
      * /oss/4dkankan/build_log/<num>(这个目录整个打包)
      */
-    @Autowired
-    ISceneBuildProcessLogService sceneBuildProcessLogService;
-    @Autowired
-    IBuildLogService buildLogService;
-    @Autowired
-    IExcelService excelService;
-
     @Override
     public String getSceneBuildLog(String num) {
         String buildLogPath = "/oss/4dkankan/build_log/" + num;
         String zipName = num+".zip";
-
         if(!new File(buildLogPath).exists()){
-            return null;
+            new File(buildLogPath).mkdirs();
         }
-        List<SceneBuildProcessLog> listProcessLog =  sceneBuildProcessLogService.getByNum(num);
-        List<BuildLog> listBuildLog =  buildLogService.getByNum(num);
 
+        ScenePlus scenePlus = this.getByNum(num);
+        if(scenePlus == null ){
+            throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
+        }
+        ScenePlusExt ext = scenePlusExtService.getByPlusId(scenePlus.getId());
+        if(ext == null ){
+            throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
+        }
+        if(StringUtils.isNotBlank(ext.getDataSource())){
+            String[] split = ext.getDataSource().split("/");
+            String uuid = split[split.length-1];
+            List<OrigFileUploadBatch> batchList = origFileUploadBatchService.getByUuid(uuid);
+            if(!batchList.isEmpty()){
+                excelService.commonExport(batchList,OrigFileUploadBatch.class,buildLogPath +"/origFileUploadBatch.xlsx");
+
+                Set<String> batchIds = batchList.stream().map(OrigFileUploadBatch::getBatchId).collect(Collectors.toSet());
+                List<OrigFileUpload> origFileUploads = origFileUploadService.getByBatchIds(batchIds);
+                if(!origFileUploads.isEmpty()){
+                    excelService.commonExport(origFileUploads,OrigFileUpload.class,buildLogPath +"/origFileUpload.xlsx");
+                }
+            }
+        }
+
+        List<SceneBuildProcessLog> listProcessLog =  sceneBuildProcessLogService.getByNum(num);
         if(!listProcessLog.isEmpty()){
             excelService.commonExport(listProcessLog,SceneBuildProcessLog.class,buildLogPath +"/process.xlsx");
         }
+
+        List<BuildLog> listBuildLog =  buildLogService.getByNum(num);
         if(!listBuildLog.isEmpty()){
             excelService.commonExport(listBuildLog,BuildLog.class,buildLogPath +"/build.xlsx");
         }
+
+        String modelingLogPath = "www/VR/4dkankan/modeling-control/logs";
+        File modelingLogFile = new File(buildLogPath + "/logs");
+        FileUtil.copyContent(new File(modelingLogPath),modelingLogFile,true);
+
+        SensitiveWordReplacer.processDirectory(modelingLogFile.getPath());
+
         ShellUtil.zip(buildLogPath,zipName);
 
         if(!new File(buildLogPath +"/" + zipName).exists()){
-            return null;
+            throw new BusinessException(ResultCode.BUILD_LOG_ERROR);
         }
         return buildLogPath.replace("4dkankan/","") +"/"+zipName;
     }

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

@@ -51,6 +51,7 @@ public class SceneVo {
     private Integer type;
 
     private String threeCamType;
+    private String buildFailReason;
     private Integer isObj;
 
 }

+ 5 - 0
src/main/resources/mapper/manage/OrigFileUploadBatchMapper.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.manage.mapper.IOrigFileUploadBatchMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/manage/OrigFileUploadMapper.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.manage.mapper.IOrigFileUploadMapper">
+
+</mapper>

+ 2 - 2
src/main/resources/mapper/manage/SceneProMapper.xml

@@ -146,7 +146,7 @@
     <sql id="selectMesh">
         select s.id,'4dkankan' as sceneType,s.title as sceneName ,s.num,s.create_time,c.sn_code,e.space as sceneSize
              ,u.user_name,e.view_count,s.scene_status as status,s.pay_status,'v4' as scene_version,e.web_site , e.thumb
-             ,e.algorithm_time,s.user_id,jy.platform_id,s.scene_source,s.three_cam_type,e.is_obj,jy.ry_nick_name as nickName
+             ,e.algorithm_time,s.user_id,jy.platform_id,s.scene_source,s.three_cam_type,e.is_obj,jy.ry_nick_name as nickName,s.build_fail_reason
         from t_scene_plus s
                  left join t_scene_plus_ext e on s.id = e.plus_id
                  left join t_user u on s.user_id = u.id
@@ -224,7 +224,7 @@
     <sql id="selectLaser">
         SELECT s.id,'laser' as sceneType, s.title as sceneName,s.scene_code as num,s.shoot_time as createTime,s.sn_code,s.space as scennSize,s.user_name,s.view_count,s.status,
                s.pay_status,'v4' as scene_version,s.web_site,s.init_pic as thumb,s.algorithm_time,s.user_id,jy.platform_id,s.scene_source,
-               null as asthree_cam_type ,null as is_obj,jy.ry_nick_name as nickName
+               null as asthree_cam_type ,null as is_obj,jy.ry_nick_name as nickName,null as buildFailReason
         from fdkk_laser.t_scene s
                  left join t_user u on s.user_id = u.id
                  left join jy_user jy on u.id = jy.user_id