Eureka 11 месяцев назад
Родитель
Сommit
06b5d916a2

+ 3 - 3
taais-admin/src/main/resources/application-dev.yml

@@ -35,7 +35,7 @@ mybatis-flex:
       #      password: Root@369
       #postgresql数据库
       driver-class-name: org.postgresql.Driver
-      url: jdbc:postgresql://192.168.101.34:5432/taais?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
+      url: jdbc:postgresql://110.41.34.83:5432/taais?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
       username: postgres
       password: P3x0LG8jzyHRX59l
 
@@ -58,13 +58,13 @@ mybatis-flex:
 spring.data:
   redis:
     # 地址
-    host: localhost
+    host: 110.41.34.83
     # 端口,默认为6379
     port: 6379
     # 数据库索引
     database: 0
     # 密码(如没有密码请注释掉)
-    password: CWwYsGjafmv8Sr7g
+    password: Z;G4AS:Vor'YF#p?
     # 连接超时时间
     timeout: 10s
     # 是否开启ssl

+ 79 - 26
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/DataController.java

@@ -1,8 +1,8 @@
 package com.taais.biz.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.mybatisflex.core.query.QueryWrapper;
 import com.taais.common.core.config.TaaisConfig;
-import com.taais.common.core.constant.Constants;
 import com.taais.common.core.core.domain.CommonResult;
 import com.taais.common.core.core.page.PageResult;
 import com.taais.common.core.utils.MapstructUtils;
@@ -38,6 +38,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * 数据管理Controller
@@ -95,6 +96,12 @@ public class DataController extends BaseController {
     @RepeatSubmit()
     @PostMapping
     public CommonResult<Void> add(@Validated @RequestBody DataBo dataBo) {
+        QueryWrapper query = dataService.query();
+        query.eq(Data::getBatchNum, dataBo.getBatchNum());
+        long count = dataService.getMapper().selectCountByQuery(query);
+        if (count > 0) {
+            return CommonResult.fail("检测出现重复批次号,请仔细检查后重新添加!");
+        }
         boolean inserted = dataService.insert(dataBo);
         if (!inserted) {
             return CommonResult.fail("新增数据管理记录失败!");
@@ -137,77 +144,123 @@ public class DataController extends BaseController {
     }
 
     @PostMapping("/zip/upload")
-    public CommonResult<SysOssUploadVo> uploadZipFile(@RequestParam("file") MultipartFile file, @RequestParam("excelFile") MultipartFile excelFile) throws Exception {
-
-        List<DataVo> dataVos = ExcelUtil.importExcel(excelFile.getInputStream(),DataVo.class);
+    public CommonResult<SysOssUploadVo> uploadZipFile(@RequestParam("file") MultipartFile file, @RequestParam("excelFile") MultipartFile excelFile, String labeled) throws Exception {
+        System.out.println(labeled);
+        List<DataVo> dataVos = ExcelUtil.importExcel(excelFile.getInputStream(), DataVo.class);
         Map<String, Data> picName2Obj = new HashMap<>();
         //为插入数据库做准备
-        for(DataVo dataVo:dataVos){
+        for (DataVo dataVo : dataVos) {
             picName2Obj.put(dataVo.getName(), MapstructUtils.convert(dataVo, Data.class));
         }
-        String  originalFilename = file.getOriginalFilename();
+        String originalFilename = file.getOriginalFilename();
         assert originalFilename != null;
         String suffix = StringUtils.substring(originalFilename, originalFilename.lastIndexOf("."), originalFilename.length());
 
 
         // 解压
         String basedir = TaaisConfig.getUploadPath();
-        File zipOrRarTemp = FileUploadUtils.getAbsoluteFile(basedir,FileUploadUtils.extractFilename2(file));// 解压目录
+        File zipOrRarTemp = FileUploadUtils.getAbsoluteFile(basedir, FileUploadUtils.extractFilename2(file));// 解压目录
         String destZip = zipOrRarTemp.getAbsolutePath();
 
         file.transferTo(Paths.get(destZip));
         String dest = zipOrRarTemp.getParent();
 
         List<File> extractedFileList = new ArrayList<File>();
-        if(suffix.equals(".zip")){
-            List<FileHeader> fileheaders = UnPackedUtil.unPackZip(zipOrRarTemp,dest);
+        if (suffix.equals(".zip")) {
+            List<FileHeader> fileheaders = UnPackedUtil.unPackZip(zipOrRarTemp, dest);
             //添加解压目录
-            for(FileHeader fileHeader : fileheaders) {
+            for (FileHeader fileHeader : fileheaders) {
                 if (!fileHeader.isDirectory()) {
                     String fileHeaderName = fileHeader.getFileName();
                     String fileHeaderSuffix = StringUtils.substring(fileHeaderName, fileHeaderName.lastIndexOf("."), fileHeaderName.length());
-                    if(!fileHeaderSuffix.equals(".jpg")&&!fileHeaderSuffix.equals(".jpeg")
-                        &&!fileHeaderSuffix.equals(".png")){
+                    if (!fileHeaderSuffix.equals(".jpg") && !fileHeaderSuffix.equals(".jpeg")
+                            && !fileHeaderSuffix.equals(".png")) {
                         continue;
                     }
-                    extractedFileList.add(new File(dest,fileHeader.getFileName()));
+                    extractedFileList.add(new File(dest, fileHeader.getFileName()));
                 }
             }
 
 
-
-        }else if(suffix.equals(".rar")){
-            List<com.github.junrar.rarfile.FileHeader> fileheaders = UnPackedUtil.unPackRar(zipOrRarTemp,dest);
+        } else if (suffix.equals(".rar")) {
+            List<com.github.junrar.rarfile.FileHeader> fileheaders = UnPackedUtil.unPackRar(zipOrRarTemp, dest);
 
 
             //添加解压目录
-            for(com.github.junrar.rarfile.FileHeader fileHeader : fileheaders) {
+            for (com.github.junrar.rarfile.FileHeader fileHeader : fileheaders) {
 
                 if (!fileHeader.isDirectory()) {
                     String fileHeaderName = fileHeader.getFileName();
                     String fileHeaderSuffix = StringUtils.substring(fileHeaderName, fileHeaderName.lastIndexOf("."), fileHeaderName.length());
-                    if(!fileHeaderSuffix.equals(".jpg")&&!fileHeaderSuffix.equals(".jpeg")
-                        &&!fileHeaderSuffix.equals(".png")){
+                    if (!fileHeaderSuffix.equals(".jpg")
+                            && !fileHeaderSuffix.equals(".jpeg")
+                            && !fileHeaderSuffix.equals(".png")
+                            && !fileHeaderSuffix.equals(".txt")
+                            && !fileHeaderSuffix.equals(".bmp")) {
                         continue;
                     }
-                    extractedFileList.add(new File(dest,fileHeader.getFileName()));
+                    extractedFileList.add(new File(dest, fileHeader.getFileName()));
                 }
             }
         }
-
-        for(File efile:extractedFileList) {
-            String pathFileName = FileUploadUtils.getPathFileName(dest,efile.getName());
+        //取出最大值
+        Integer idMax = dataService.getIdMax();
+        if (idMax == null) {
+            idMax = 1;
+        } else {
+            idMax = idMax + 1;
+        }
+        List<Data> dataList = new ArrayList<>();
+        for (File efile : extractedFileList) {
+            String pathFileName = FileUploadUtils.getPathFileName(dest, efile.getName());
             Data mydata = picName2Obj.get(efile.getName());
-
             // 检查是否已标准抓住
-            if(checkLabeled(pathFileName)){
+            if (checkLabeled(pathFileName)) {
                 mydata.setLabeled(Boolean.TRUE);
             } else {
                 mydata.setLabeled(Boolean.FALSE);
             }
+            mydata.setFormName(mydata.getName());
+            String fileHeaderSuffix = StringUtils.substring(mydata.getName(), mydata.getName().lastIndexOf("."), mydata.getName().length());
+            mydata.setName(idMax + fileHeaderSuffix);
             mydata.setUrl(pathFileName);
-            dataService.save(mydata);
+            dataList.add(mydata);
+            idMax++;
+        }
+
+        if ("true".equals(labeled)) {
+            List<Data> unmarkedData = dataList.stream()
+                    .filter(data -> Boolean.FALSE.equals(data.getLabeled()))
+                    .toList();
+
+            // 计算已标注和未标注的数据数量
+            long markedCount = dataList.stream()
+                    .filter(data -> Boolean.TRUE.equals(data.getLabeled()))
+                    .count();
+            long unmarkedCount = unmarkedData.size();
+
+            // 如果存在未标注的数据,则返回错误信息
+            if (unmarkedCount > 0) {
+                String format = String.format("错误: 已标注文件 %d 个,未标注文件 %d 个", markedCount, unmarkedCount);
+                return CommonResult.fail(format);
+            }
         }
+
+        AtomicBoolean isTrue = new AtomicBoolean(false);
+        dataList.forEach(data -> {
+            QueryWrapper query = dataService.query();
+            query.eq(Data::getBatchNum, data.getBatchNum());
+            long count = dataService.getMapper().selectCountByQuery(query);
+            if (count > 0) {
+                isTrue.set(true);
+            }
+        });
+
+        if (isTrue.get()) {
+            return CommonResult.fail("文件检测出重复批次号,请仔细检查后重新导入!");
+        }
+
+        dataService.saveBatch(dataList);
         //删除压缩文件
         FileUtils.deleteFile(destZip);
 

+ 2 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/Data.java

@@ -28,6 +28,8 @@ public class Data {
     /** 名称 */
     private String name;
 
+    private String formName;
+
     /** 数据类型 */
     private String dataType;
 
@@ -69,5 +71,4 @@ public class Data {
 //    @Column(onInsertValue = "false")
     private Boolean labeled;
 
-
 }

+ 1 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/DataVo.java

@@ -24,7 +24,7 @@ public class DataVo  implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
-
+    private String formName;
     /** id */
 //    @ExcelProperty(value = "id")
     private Long id;

+ 1 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/DataMapper.java

@@ -13,4 +13,5 @@ import com.taais.biz.domain.Data;
 @Mapper
 public interface DataMapper extends BaseMapper<Data> {
 
+    Integer getIdMax();
 }

+ 2 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/IDataService.java

@@ -31,6 +31,8 @@ public interface IDataService extends IBaseService<Data> {
      */
     List<DataVo> selectList(DataBo dataBo);
 
+    Integer getIdMax();
+
     /**
      * 分页查询数据管理列表
      *

+ 5 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/DataServiceImpl.java

@@ -94,6 +94,11 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
             return this.listAs(queryWrapper, DataVo.class);
     }
 
+    @Override
+    public Integer getIdMax() {
+        return dataMapper.getIdMax();
+    }
+
     /**
      * 分页查询数据管理列表
      *

+ 3 - 0
taais-modules/taais-biz/src/main/resources/mapper/biz/DataMapper.xml

@@ -4,4 +4,7 @@
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.taais.biz.mapper.DataMapper">
 
+    <select id="getIdMax" resultType="java.lang.Integer">
+        select max(id) from data
+    </select>
 </mapper>