Browse Source

feat:新增、列表

Eureka 1 year ago
parent
commit
ae9aa34087

+ 17 - 6
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/DataController.java

@@ -1,6 +1,11 @@
 package com.taais.biz.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.taais.biz.domain.Data;
+import com.taais.biz.domain.bo.DataBo;
+import com.taais.biz.domain.vo.DataSelectVo;
+import com.taais.biz.domain.vo.DataVo;
+import com.taais.biz.service.IDataService;
 import com.taais.common.core.core.domain.CommonResult;
 import com.taais.common.core.core.page.PageResult;
 import com.taais.common.excel.utils.ExcelUtil;
@@ -8,10 +13,6 @@ import com.taais.common.log.annotation.Log;
 import com.taais.common.log.enums.BusinessType;
 import com.taais.common.web.annotation.RepeatSubmit;
 import com.taais.common.web.core.BaseController;
-import com.taais.biz.domain.Data;
-import com.taais.biz.domain.bo.DataBo;
-import com.taais.biz.domain.vo.DataVo;
-import com.taais.biz.service.IDataService;
 import com.taais.system.config.ServerConfig;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
@@ -49,9 +50,19 @@ public class DataController extends BaseController {
     @SaCheckPermission("demo:data:list")
     @GetMapping("/list")
     public CommonResult<PageResult<DataVo>> list(DataBo dataBo) {
-
         return CommonResult.success(dataService.selectPage(dataBo));
+    }
 
+    /**
+     * 获取 查询数据管理列表 搜索条目下拉列表
+     *
+     * @param field 查询的字段名称
+     * @return {@link CommonResult }<{@link List }<{@link String }>>查询的字段名称 的所有种类
+     */
+    @SaCheckPermission("demo:data:list")
+    @GetMapping("/getFromSelects")
+    public CommonResult<List<DataSelectVo>> getFromSelects(String field) {
+        return CommonResult.success(dataService.getFormSelects(field));
     }
 
     /**
@@ -129,6 +140,6 @@ public class DataController extends BaseController {
         if (file == null) {
             return CommonResult.fail("请上传.zip、.rar压缩文件。");
         }
-        return dataService.uploadDataInfo(file,dataInfo);
+        return dataService.uploadDataInfo(file, dataInfo);
     }
 }

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

@@ -39,7 +39,7 @@ public class Data {
     private String objectSubtype;
 
     /** 批次号 */
-    private String batchNum;
+    private Long batchNum;
 
     /** 场景 */
     private String scene;

+ 17 - 17
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/bo/DataBo.java

@@ -30,17 +30,17 @@ public class DataBo {
     @NotBlank(message = "名称不能为空")
     private String name;
 
-    /**
-     * 数据类型
-     */
-    @NotBlank(message = "数据类型不能为空")
-    private String dataType;
-
-    /**
-     * 文件类型
-     */
-    @NotBlank(message = "文件类型不能为空")
-    private String fileType;
+//    /**
+//     * 数据类型
+//     */
+//    @NotBlank(message = "数据类型不能为空")
+//    private String dataType;
+
+//    /**
+//     * 文件类型
+//     */
+//    @NotBlank(message = "文件类型不能为空")
+//    private String fileType;
 
     /**
      * 目标类型
@@ -57,7 +57,7 @@ public class DataBo {
     /**
      * 批次号
      */
-    private Long batchNum;
+    private String batchNum;
 
     /**
      * 场景
@@ -94,11 +94,11 @@ public class DataBo {
      */
     private String labelurl;
 
-    /**
-     * 扩增方式
-     */
-    @NotBlank(message = "扩增方式不能为空")
-    private String increment;
+//    /**
+//     * 扩增方式
+//     */
+//    @NotBlank(message = "扩增方式不能为空")
+//    private String increment;
 
     /**
      * 是否标注

+ 9 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/DataSelectVo.java

@@ -0,0 +1,9 @@
+package com.taais.biz.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class DataSelectVo{
+    private String label;
+    private String value;
+}

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

@@ -1,10 +1,12 @@
 package com.taais.biz.mapper;
 
 import com.mybatisflex.core.BaseMapper;
+import com.taais.biz.domain.vo.DataSelectVo;
 import org.apache.ibatis.annotations.Mapper;
 import com.taais.biz.domain.Data;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -17,4 +19,6 @@ import java.util.List;
 public interface DataMapper extends BaseMapper<Data> {
 
     List<Long> getIds(@Param("size") Integer size);
+
+    List<DataSelectVo> getFormSelects(@Param("field") String field);
 }

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

@@ -1,8 +1,11 @@
 package com.taais.biz.service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import com.taais.biz.domain.Data;
+import com.taais.biz.domain.vo.DataSelectVo;
 import com.taais.biz.domain.vo.DataVo;
 import com.taais.biz.domain.bo.DataBo;
 import com.taais.common.core.core.domain.CommonResult;
@@ -75,4 +78,12 @@ public interface IDataService extends IBaseService<Data> {
     boolean deleteByIds(Long[] ids);
 
     List<Data> selectByIds(List<Long> ids);
+
+    /**
+     * 根据传入字段 获取数据库中所有该字段的类型
+     *
+     * @param field 字段
+     * @return {@link List }<{@link String }>
+     */
+    List<DataSelectVo>  getFormSelects(String field);
 }

+ 64 - 21
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/DataServiceImpl.java

@@ -5,6 +5,7 @@ import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
 import com.taais.biz.domain.Data;
 import com.taais.biz.domain.bo.DataBo;
+import com.taais.biz.domain.vo.DataSelectVo;
 import com.taais.biz.domain.vo.DataVo;
 import com.taais.biz.mapper.DataMapper;
 import com.taais.biz.service.IDataService;
@@ -18,8 +19,10 @@ import com.taais.common.core.utils.file.FileUtils;
 import com.taais.common.core.utils.file.UnPackedUtil;
 import com.taais.common.orm.core.page.PageQuery;
 import com.taais.common.orm.core.service.impl.BaseServiceImpl;
+import com.taais.common.redis.utils.RedisUtils;
 import jakarta.annotation.Resource;
 import net.lingala.zip4j.model.FileHeader;
+import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -33,7 +36,10 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.time.Instant;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import static com.taais.biz.domain.table.DataTableDef.DATA;
@@ -46,6 +52,8 @@ import static com.taais.biz.domain.table.DataTableDef.DATA;
  */
 @Service
 public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implements IDataService {
+
+    public static final String FORM_SELECTS_KEY = "taais:biz:demo:data:formSelect:";
     private static final Logger log = LoggerFactory.getLogger(DataServiceImpl.class);
     private static final String ZIP = ".zip";
     private static final String RAR = ".rar";
@@ -62,33 +70,33 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
     private QueryWrapper buildQueryWrapper(DataBo dataBo) {
         QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
         queryWrapper.and(DATA.NAME.like
-                (dataBo.getName()));
-        queryWrapper.and(DATA.DATA_TYPE.eq
-                (dataBo.getDataType()));
-        queryWrapper.and(DATA.FILE_TYPE.eq
-                (dataBo.getFileType()));
+            (dataBo.getName()));
+//        queryWrapper.and(DATA.DATA_TYPE.eq
+//                (dataBo.getDataType()));
+//        queryWrapper.and(DATA.FILE_TYPE.eq
+//                (dataBo.getFileType()));
         queryWrapper.and(DATA.OBJECT_TYPE.eq
-                (dataBo.getObjectType()));
+            (dataBo.getObjectType()));
         queryWrapper.and(DATA.OBJECT_SUBTYPE.eq
-                (dataBo.getObjectSubtype()));
+            (dataBo.getObjectSubtype()));
         queryWrapper.and(DATA.BATCH_NUM.eq
-                (dataBo.getBatchNum()));
+            (dataBo.getBatchNum()));
         queryWrapper.and(DATA.SCENE.eq
-                (dataBo.getScene()));
+            (dataBo.getScene()));
         queryWrapper.and(DATA.DATA_SOURCE.eq
-                (dataBo.getDataSource()));
+            (dataBo.getDataSource()));
         queryWrapper.and(DATA.GATHER_TIME.eq
-                (dataBo.getGatherTime()));
+            (dataBo.getGatherTime()));
         queryWrapper.and(DATA.GATHER_SPOT.eq
-                (dataBo.getGatherSpot()));
+            (dataBo.getGatherSpot()));
         queryWrapper.and(DATA.URL.eq
-                (dataBo.getUrl()));
+            (dataBo.getUrl()));
         queryWrapper.and(DATA.LABELURL.eq
-                (dataBo.getLabelurl()));
-        queryWrapper.and(DATA.INCREMENT.eq
-                (dataBo.getIncrement()));
+            (dataBo.getLabelurl()));
+//        queryWrapper.and(DATA.INCREMENT.eq
+//                (dataBo.getIncrement()));
         queryWrapper.and(DATA.LABELED.eq
-                (dataBo.getLabeled()));
+            (dataBo.getLabeled()));
 
         return queryWrapper;
     }
@@ -187,8 +195,8 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
                     Path path = Paths.get(fileInfo.getAbsolutePath());
                     // 使用Files类的readAttributes方法获取文件的基本属性
                     BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
-                    // 获取文件的创建时间
-                    Instant creationTime = attrs.creationTime().toInstant();
+                    // 获取文件的修改时间
+                    Instant creationTime = attrs.lastModifiedTime().toInstant();
                     // 将Instant转换为Date
                     Date date = Date.from(creationTime);
                     //设置文件创建时间
@@ -278,10 +286,26 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
     @Override
     public boolean insert(DataBo dataBo) {
         Data data = MapstructUtils.convert(dataBo, Data.class);
-
+        //新增之后清除缓存
+        deleteFormSelectKey();
         return this.save(data);//使用全局配置的雪花算法主键生成器生成ID值
     }
 
+    private void deleteFormSelectKey() {
+//        RedisUtils.deleteKeys(); 方法不知道为什么失效
+        String[] keys = {"increment",
+            "scene",
+            "data_source",
+            "object_type",
+            "batch_num",
+            "object_subtype",
+            "gather_spot"};
+        RedissonClient client = RedisUtils.getClient();
+        for (String key : keys) {
+            client.getBucket(FORM_SELECTS_KEY + key).delete();
+        }
+    }
+
     /**
      * 修改数据管理
      *
@@ -293,8 +317,12 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
         Data data = MapstructUtils.convert(dataBo, Data.class);
         if (ObjectUtil.isNotNull(data) && ObjectUtil.isNotNull(data.getId())) {
             boolean updated = this.updateById(data);
+            //新增之后清除缓存
+            deleteFormSelectKey();
             return updated;
         }
+        //新增之后清除缓存
+        deleteFormSelectKey();
         return false;
     }
 
@@ -308,6 +336,8 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
     @Override
     public boolean deleteByIds(Long[] ids) {
         QueryWrapper queryWrapper = QueryWrapper.create().from(DATA).where(DATA.ID.in(Arrays.asList(ids)));
+        //新增之后清除缓存
+        deleteFormSelectKey();
         return this.remove(queryWrapper);
     }
 
@@ -316,4 +346,17 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
         return this.listByIds(ids);
     }
 
+    @Override
+    public List<DataSelectVo> getFormSelects(String field) {
+        String cacheKey = FORM_SELECTS_KEY + field;
+        List<DataSelectVo> cacheList = RedisUtils.getCacheList(cacheKey);
+        if (cacheList == null || cacheList.isEmpty()) {
+            cacheList = dataMapper.getFormSelects(field);
+            RedisUtils.setCacheList(cacheKey, cacheList);
+//            RedisUtils.expire(cacheKey, 60);
+        }
+        return cacheList;
+    }
+
+
 }

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

@@ -9,4 +9,8 @@
         FROM
             generate_series(1, #{size})
     </select>
+    <select id="getFormSelects" resultType="com.taais.biz.domain.vo.DataSelectVo">
+        select ${field} as label, ${field} as value from data GROUP BY ${field}
+    </select>
+
 </mapper>