Parcourir la source

获取数据参数列表

Gaokun Wang il y a 5 mois
Parent
commit
7859406fca

+ 4 - 0
als-common/common-core/pom.xml

@@ -159,6 +159,10 @@
             <groupId>com.mybatis-flex</groupId>
             <artifactId>mybatis-flex-spring-boot3-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+        </dependency>
 
 
     </dependencies>

+ 6 - 0
als-common/common-core/src/main/java/org/eco/common/core/config/EcoConfig.java

@@ -20,6 +20,9 @@ public class EcoConfig {
      */
     @Getter
     private static String profile;
+
+    @Getter
+    private static String tempPath;
     /**
      * 获取地址开关
      */
@@ -49,6 +52,9 @@ public class EcoConfig {
     public void setProfile(String profile) {
         EcoConfig.profile = profile;
     }
+    public void setTempPath(String tempPath) {
+        EcoConfig.tempPath = tempPath;
+    }
 
     public void setAddressEnabled(boolean addressEnabled) {
         EcoConfig.addressEnabled = addressEnabled;

+ 17 - 0
als-common/common-core/src/main/java/org/eco/common/core/utils/file/FileUtils.java

@@ -5,6 +5,7 @@ import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
@@ -12,6 +13,8 @@ import org.eco.common.core.config.EcoConfig;
 import org.eco.common.core.utils.DateUtils;
 import org.eco.common.core.utils.StringUtils;
 import org.eco.common.core.utils.uuid.IdUtils;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -28,6 +31,7 @@ import java.nio.charset.StandardCharsets;
  *
  * @author wgk
  */
+@Slf4j
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class FileUtils extends FileUtil {
     public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
@@ -248,4 +252,17 @@ public class FileUtils extends FileUtil {
         }
         return FilenameUtils.getBaseName(fileName);
     }
+
+    public static MultipartFile fileToMultipartFile(File file) throws IOException {
+        FileInputStream fileInputStream = null;
+        MultipartFile multipartFile = null;
+        try {
+            fileInputStream = new FileInputStream(file);
+            multipartFile = new MockMultipartFile(file.getName(), file.getName(),
+                "application/octet-stream", fileInputStream);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+        return multipartFile;
+    }
 }

+ 1 - 1
als-common/common-core/src/main/java/org/eco/common/core/utils/file/MimeTypeUtils.java

@@ -29,7 +29,7 @@ public class MimeTypeUtils {
         // 图片
         "bmp", "gif", "jpg", "jpeg", "png",
         // word excel powerpoint
-        "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
+        "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt", "csv",
         // 压缩文件
         "rar", "zip", "gz", "bz2",
         // 视频格式

+ 9 - 2
als-common/common-oss/src/main/java/org/eco/common/oss/core/OssClient.java

@@ -2,6 +2,7 @@ package org.eco.common.oss.core;
 
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
 import org.eco.common.core.constant.Constants;
 import org.eco.common.core.utils.DateUtils;
 import org.eco.common.core.utils.StringUtils;
@@ -51,8 +52,7 @@ public class OssClient {
     /**
      * 服务商
      * -- GETTER --
-     *  服务商
-
+     * 服务商
      */
     @Getter
     private final String configKey;
@@ -77,6 +77,13 @@ public class OssClient {
      */
     private final S3Presigner presigner;
 
+    public OssClient(String configKey, OssProperties properties, S3AsyncClient client, S3TransferManager transferManager, S3Presigner presigner){
+        this.configKey = configKey;
+        this.properties = properties;
+        this.client = client;
+        this.transferManager = transferManager;
+        this.presigner = presigner;
+    }
     /**
      * 构造方法
      *

+ 7 - 1
als-common/common-oss/src/main/java/org/eco/common/oss/factory/OssFactory.java

@@ -1,5 +1,6 @@
 package org.eco.common.oss.factory;
 
+import cn.hutool.core.util.StrUtil;
 import org.eco.common.core.constant.CacheNames;
 import org.eco.common.core.utils.StringUtils;
 import org.eco.common.json.utils.JsonUtils;
@@ -51,13 +52,18 @@ public class OssFactory {
         assert properties != null;
         String key = properties.getTenantId() + ":" + configKey;
         OssClient client = CLIENT_CACHE.get(key);
+
         // 客户端不存在或配置不相同则重新构建
         if (client == null || !client.checkPropertiesSame(properties)) {
             LOCK.lock();
             try {
                 client = CLIENT_CACHE.get(key);
                 if (client == null || !client.checkPropertiesSame(properties)) {
-                    CLIENT_CACHE.put(key, new OssClient(configKey, properties));
+                    if(StrUtil.equals(configKey, "local")) {
+                        CLIENT_CACHE.put(key, new OssClient(configKey, properties,null,null,null));
+                    } else {
+                        CLIENT_CACHE.put(key, new OssClient(configKey, properties));
+                    }
                     log.info("创建OSS实例 key => {}", configKey);
                     return CLIENT_CACHE.get(key);
                 }

+ 14 - 4
als-modules/agile-assurance/src/main/java/org/eco/als/controller/AlgorithmController.java

@@ -11,10 +11,9 @@ import org.eco.common.core.core.domain.CommonResult;
 import org.eco.common.log.annotation.Log;
 import org.eco.common.log.enums.BusinessType;
 import org.springframework.validation.annotation.Validated;
-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;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 算法相关控制
@@ -81,4 +80,15 @@ public class AlgorithmController {
     public CommonResult<String> batchExecute(@Validated @RequestBody TaskBo taskBo) {
         return StrUtil.isBlank(algorithmService.batchExecute(taskBo)) ? CommonResult.fail() : CommonResult.success();
     }
+    /**
+     * 执行任务管理
+     *
+     * @param ossId 入参数据
+     * @return org.eco.common.core.core.domain.CommonResult<java.lang.String> 结果
+     **/
+    @Log(title = "获取数据参数名称", businessType = BusinessType.EXECUTE)
+    @GetMapping("/{ossId}")
+    public CommonResult<List<String>> getDataHeader(@PathVariable Long ossId) {
+        return CommonResult.success(algorithmService.getDataHeader(ossId));
+    }
 }

+ 4 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IAlgorithmService.java

@@ -3,6 +3,8 @@ package org.eco.als.service;
 import org.eco.als.domain.bo.AlgorithmBo;
 import org.eco.als.domain.bo.TaskBo;
 
+import java.util.List;
+
 /**
  * @Description: IAlgorithmService
  * @Author: GaoKun Wang
@@ -16,4 +18,6 @@ public interface IAlgorithmService {
     String executeFault(AlgorithmBo algorithmBo);
 
     String batchExecute(TaskBo taskBo);
+
+    List<String> getDataHeader(Long ossId);
 }

+ 11 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/AlgorithmService.java

@@ -24,8 +24,11 @@ import org.eco.als.service.IPreProcessingService;
 import org.eco.als.service.ITaskService;
 import org.eco.als.service.IWarningService;
 import org.eco.als.utils.CsvUtils;
+import org.eco.common.core.config.EcoConfig;
+import org.eco.common.core.constant.Constants;
 import org.eco.common.core.exception.BusinessException;
 import org.eco.common.core.utils.HttpUtils;
+import org.eco.common.core.utils.StringUtils;
 import org.eco.system.domain.vo.SysOssVo;
 import org.eco.system.service.ISysOssService;
 import org.springframework.stereotype.Service;
@@ -264,4 +267,12 @@ public class AlgorithmService implements IAlgorithmService {
         taskService.insert(taskBo);
         return null;
     }
+
+    @Override
+    public List<String> getDataHeader(Long ossId) {
+        SysOssVo ossVo = ossService.getById(ossId);
+        // 数据库资源地址
+        String path = StringUtils.substringAfter(ossVo.getFileName(), Constants.RESOURCE_PREFIX);
+        return CsvUtils.getCsvHeaders(path);
+    }
 }

+ 16 - 3
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/DataImportServiceImpl.java

@@ -1,5 +1,6 @@
 package org.eco.als.service.impl;
 
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
@@ -12,6 +13,9 @@ import org.eco.als.domain.vo.DataImportVo;
 import org.eco.als.listener.DataImportImportListener;
 import org.eco.als.mapper.DataImportMapper;
 import org.eco.als.service.IDataImportService;
+import org.eco.als.utils.CsvUtils;
+import org.eco.common.core.config.EcoConfig;
+import org.eco.common.core.constant.Constants;
 import org.eco.common.core.core.domain.model.LoginUser;
 import org.eco.common.core.core.page.PageResult;
 import org.eco.common.core.utils.MapstructUtils;
@@ -20,11 +24,14 @@ import org.eco.common.excel.entity.ExcelResultRes;
 import org.eco.common.excel.service.IExcelService;
 import org.eco.common.orm.core.page.PageQuery;
 import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import org.eco.system.domain.vo.SysOssVo;
 import org.eco.system.service.IImportExportService;
+import org.eco.system.service.ISysOssService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
@@ -48,6 +55,8 @@ public class DataImportServiceImpl extends BaseServiceImpl<DataImportMapper, Dat
 
     @Resource
     private IImportExportService importExportService;
+    @Resource
+    private ISysOssService ossService;
 
     @Override
     public QueryWrapper query() {
@@ -120,8 +129,14 @@ public class DataImportServiceImpl extends BaseServiceImpl<DataImportMapper, Dat
      */
     @Override
     public boolean insert(DataImportBo dataImportBo) {
+        SysOssVo ossVo = ossService.getById(dataImportBo.getOssId());
+        String path = StringUtils.substringAfter(ossVo.getFileName(), Constants.RESOURCE_PREFIX);
+        String pathCsv = EcoConfig.getTempPath() + CsvUtils.extractFilename(dataImportBo.getSortieNo());
+        File file = CsvUtils.excelToFileCsv(EcoConfig.getProfile() + path, pathCsv);
+        ossVo = ossService.upload(file);
+        FileUtil.del(pathCsv);
+        dataImportBo.setOssId(ossVo.getOssId());
         DataImport dataImport = MapstructUtils.convert(dataImportBo, DataImport.class);
-
         return this.save(dataImport);//使用全局配置的雪花算法主键生成器生成ID值
     }
 
@@ -134,8 +149,6 @@ public class DataImportServiceImpl extends BaseServiceImpl<DataImportMapper, Dat
     @Override
     public boolean insertWithPk(DataImportBo dataImportBo) {
         DataImport dataImport = MapstructUtils.convert(dataImportBo, DataImport.class);
-
-
         return dataImportMapper.insertWithPk(dataImport) > 0;//前台传来主键值
     }
 

+ 5 - 5
als-modules/agile-assurance/src/main/java/org/eco/als/utils/CsvUtils.java

@@ -167,9 +167,9 @@ public class CsvUtils {
      * @return 参数名称列表
      */
     public static List<String> getCsvHeaders(String csvFilePath) {
-        List<CsvRow> rows = getCsvRowList(EcoConfig.getUploadPath() + csvFilePath);
+        List<CsvRow> rows = getCsvRowList(EcoConfig.getProfile() + csvFilePath);
         assert rows != null;
-        return rows.get(0).getRawList();
+        return rows.getFirst().getRawList();
     }
 
     /**
@@ -180,7 +180,7 @@ public class CsvUtils {
      * @return 参数名称列表
      */
     public static JSONArray getCsvDataByHeaders(String csvFilePath, List<String> headerNames, Integer step) {
-        List<CsvRow> rows = getCsvRowList(EcoConfig.getUploadPath() + csvFilePath);
+        List<CsvRow> rows = getCsvRowList(EcoConfig.getProfile() + csvFilePath);
         // 获取CSV表头,即第一行数据
         List<String> headers = rows.get(0).getRawList();
         List<Integer> indexList = new ArrayList<>();
@@ -283,13 +283,13 @@ public class CsvUtils {
      * @param excelFilePath path
      * @param csvFilePath   path
      */
-    public static void excelToFileCsv(String excelFilePath, String csvFilePath) {
+    public static File excelToFileCsv(String excelFilePath, String csvFilePath) {
         // 读取Excel文件,获取ExcelReader
         ExcelReader reader = ExcelUtil.getReader(excelFilePath);
         // 通过ExcelReader将Excel文件读取为List<Map>
         List<Map<String, Object>> readAll = reader.readAll();
         String json = JSONUtil.toJsonStr(readAll);
-        jsonToFileCsv(json, csvFilePath);
+        return jsonToFileCsv(json, csvFilePath);
     }
 
     /**

+ 1 - 1
als-modules/system/src/main/java/org/eco/system/controller/system/SysOssController.java

@@ -38,7 +38,7 @@ import java.util.List;
 @Validated
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/resource/oss")
+@RequestMapping("/als/resource/oss")
 public class SysOssController extends BaseController {
 
     private final ISysOssService ossService;

+ 14 - 3
als-modules/system/src/main/java/org/eco/system/service/impl/SysOssServiceImpl.java

@@ -98,7 +98,7 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
     public List<SysOssVo> listSysOssByIds(Collection<Long> ossIds) {
         List<SysOssVo> list = new ArrayList<>();
         for (Long id : ossIds) {
-            SysOssVo vo = SpringUtils.getAopProxy(this).getById(id);
+            SysOssVo vo = this.getById(id);
             if (ObjectUtil.isNotNull(vo)) {
                 try {
                     list.add(this.matchingUrl(vo));
@@ -128,7 +128,6 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
         return String.join(StringUtils.SEPARATOR, list);
     }
 
-    @Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId")
     @Override
     public SysOssVo getById(Long ossId) {
         QueryWrapper queryWrapper = query().where(SYS_OSS.OSS_ID.eq(ossId));
@@ -205,7 +204,19 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
         String originalFileName = file.getName();
         String suffix = StringUtils.substring(originalFileName, originalFileName.lastIndexOf("."), originalFileName.length());
         OssClient storage = OssFactory.instance();
-        UploadResult uploadResult = storage.uploadSuffix(file, suffix);
+
+        UploadResult uploadResult;
+        try {
+            if (StrUtil.equals(storage.getConfigKey(), "local")) {
+
+                Map<String, String> map = commonService.uploadFile(FileUtils.fileToMultipartFile(file));
+                uploadResult = UploadResult.builder().url(map.get("url")).filename(map.get("fileName")).build();
+            } else {
+                uploadResult = storage.uploadSuffix(file, suffix);
+            }
+        } catch (IOException e) {
+            throw new BusinessException(e.getMessage());
+        }
         // 保存文件信息
         return buildResultEntity(originalFileName, suffix, storage.getConfigKey(), uploadResult);
     }

+ 3 - 0
als-start/src/main/resources/application.yml

@@ -10,6 +10,8 @@ eco:
   demoEnabled: true
   # 文件路径 示例( Windows配置D:/eco/uploadPath,Linux配置 /home/eco/uploadPath)
   profile: D:/als/uploadPath
+  # 文件路径 示例( Windows配置D:/als/tempPath,Linux配置 /home/als/tempPath)
+  tempPath: D:/als/tempPath
   # 获取ip地址开关
   addressEnabled: false
 
@@ -303,6 +305,7 @@ security:
     - /captcha/check
     - /als/**
     - /common/**
+    - /resource/**
 
 --- # Actuator 监控端点的配置项
 management: