lyhzzz 5 месяцев назад
Родитель
Сommit
93ee15b3cc

+ 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;

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

@@ -0,0 +1,63 @@
+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 {
+    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());
+        }
+    }
+}

+ 9 - 0
src/main/java/com/fdkankan/manage/entity/CommonUpload.java

@@ -67,4 +67,13 @@ public class CommonUpload implements Serializable {
 
     @TableField("use_type")
     private String useType;
+
+    @TableField("wgs84")
+    private String wgs84;
+
+    @TableField("gcj02")
+    private String gcj02;
+
+    @TableField("convert_type")
+    private Integer convertType;
 }

+ 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

@@ -116,6 +116,9 @@ public class ScenePlus implements Serializable {
     @TableField("three_cam_type")
     private String threeCamType;
 
+    @TableField("build_fail_reason")
+    private String buildFailReason;
+
     @TableField("task_id")
     private String taskId;
 

+ 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);
+}

+ 3 - 0
src/main/java/com/fdkankan/manage/service/impl/CommonUploadServiceImpl.java

@@ -37,6 +37,9 @@ public class CommonUploadServiceImpl extends ServiceImpl<ICommonUploadMapper, Co
         upload.setResultFileFormat(replace1);
         upload.setStatus(status);
         upload.setUnzipPath(unzipPath);
+        if("osgb".equals(resultFormat)){
+            upload.setConvertType(1);
+        }
         this.save(upload);
 
         DictFile dictFile = new DictFile();

+ 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;
@@ -20,15 +23,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>
@@ -45,6 +47,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) {
@@ -114,34 +128,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;
     }

+ 6 - 0
src/main/java/com/fdkankan/manage/vo/response/DictFileVo.java

@@ -28,4 +28,10 @@ public class DictFileVo extends DictFile {
     private String unzipPath;
 
     private String dictName;
+
+    private Integer convertType;
+
+    private String wgs84;
+
+    private String gcj02;
 }

+ 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>