Browse Source

fix:扩增实现

Eureka 8 tháng trước cách đây
mục cha
commit
9e80b9d143

+ 21 - 2
taais-modules/taais-biz/src/main/java/com/taais/biz/controller/TargetIdentificationSubtaskController.java

@@ -1,6 +1,9 @@
 package com.taais.biz.controller;
 
+import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
@@ -39,8 +42,24 @@ public class TargetIdentificationSubtaskController extends BaseController {
      */
     @SaCheckPermission("identification:identificationSubtask:list")
     @GetMapping("/list")
-    public CommonResult<PageResult<TargetIdentificationSubtaskVo>> list(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo) {
-        return CommonResult.success(targetIdentificationSubtaskService.selectPage(targetIdentificationSubtaskBo));
+    public CommonResult<PageResult<TargetIdentificationSubtaskVo>> list(TargetIdentificationSubtaskBo targetIdentificationSubtaskBo, Integer pageNum, Integer pageSize) {
+        List<TargetIdentificationSubtaskVo> list = targetIdentificationSubtaskService.selectList(targetIdentificationSubtaskBo);
+        List<TargetIdentificationSubtaskVo> collect = list.stream().sorted(((o1, o2) -> {
+                if ("数据扩增".equals(o1.getName())) {
+                    return -1;
+                }
+                if ("数据扩增".equals(o2.getName())) {
+                    return -1;
+                }
+                return 1;
+            })).skip((pageNum-1)*pageSize)
+            .limit(pageSize).toList();
+        PageResult<TargetIdentificationSubtaskVo> result = new PageResult<>();
+        result.setList(collect);
+        result.setTotal((long) list.size());
+        result.setPageNum(Long.valueOf(pageNum));
+        result.setPageSize(Long.valueOf(pageSize));
+        return CommonResult.success(result);
     }
 
     /**

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

@@ -2,6 +2,7 @@ package com.taais.biz.domain.bo;
 
 import com.mybatisflex.annotation.Column;
 import com.mybatisflex.annotation.Id;
+import com.taais.biz.domain.DataAmplificationTask;
 import com.taais.biz.domain.TargetIdentificationSubtask;
 import com.taais.common.orm.core.domain.BaseEntity;
 import io.github.linpeilie.annotations.AutoMapper;
@@ -21,7 +22,7 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = TargetIdentificationSubtask.class, reverseConvertGenerate = false)
+@AutoMapper(target = DataAmplificationTask.class, reverseConvertGenerate = false)
 public class DataAmplificationTaskBo extends BaseEntity{
     @Serial
     private static final long serialVersionUID = 1L;

+ 3 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/dto/DataAmplifyDto.java

@@ -21,6 +21,9 @@ import java.util.Map;
 @Accessors(chain = true)
 public class DataAmplifyDto {
 
+    @NotBlank(message = "id不能为空")
+    private String id;
+
     @NotBlank(message = "批次不能为空")
     private String batchNum;
 

+ 73 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/domain/vo/DataAmplificationTaskVo.java

@@ -0,0 +1,73 @@
+package com.taais.biz.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.taais.biz.domain.AlgorithmTaskConfiguration;
+import com.taais.common.orm.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = AlgorithmTaskConfiguration.class)
+public class DataAmplificationTaskVo extends BaseEntity implements Serializable {
+
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /** 任务名称 */
+    @ExcelProperty(value = "任务名称")
+    private String name;
+
+    /** 任务状态 */
+    @ExcelProperty(value = "任务状态")
+    private String status;
+
+    /**
+     * 数据批次号
+     */
+    @ExcelProperty(value = "数据批次号")
+    private String dataBatchNums;
+
+    /**
+     * 调用算法时所用的参数
+     */
+    @ExcelProperty(value = "调用算法时所用的参数")
+    private String parameters;
+
+    /**
+     * 开始时间
+     */
+    @ExcelProperty(value = "开始时间")
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    @ExcelProperty(value = "结束时间")
+    private Date endTime;
+
+    /**
+     * 耗时
+     */
+    @ExcelProperty(value = "耗时")
+    private Integer costSecond;
+
+    /**
+     * 日志
+     */
+    @ExcelProperty(value = "日志")
+    private String log;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+}

+ 9 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/mapper/DataAmplificationTaskMapper.java

@@ -0,0 +1,9 @@
+package com.taais.biz.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import com.taais.biz.domain.DataAmplificationTask;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataAmplificationTaskMapper extends BaseMapper<DataAmplificationTask> {
+}

+ 25 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/IDataAmplificationTaskService.java

@@ -0,0 +1,25 @@
+package com.taais.biz.service;
+
+import com.taais.biz.domain.DataAmplificationTask;
+import com.taais.biz.domain.bo.DataAmplificationTaskBo;
+import com.taais.biz.domain.vo.DataAmplificationTaskVo;
+import com.taais.common.core.core.page.PageResult;
+
+import java.util.List;
+
+public interface IDataAmplificationTaskService {
+
+    DataAmplificationTaskVo selectById(Long id);
+
+    List<DataAmplificationTaskVo> selectList(DataAmplificationTaskBo taskBo);
+
+    PageResult<DataAmplificationTaskVo> selectPage(DataAmplificationTaskBo taskBo);
+
+    boolean insert(DataAmplificationTaskBo taskBo);
+
+    DataAmplificationTask insertTask(DataAmplificationTaskBo taskBo);
+
+    boolean update(DataAmplificationTaskBo taskBo);
+
+    boolean deleteByIds(Long[] ids);
+}

+ 94 - 0
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/DataAmplificationTaskServiceImpl.java

@@ -0,0 +1,94 @@
+package com.taais.biz.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import com.taais.biz.domain.DataAmplificationTask;
+import com.taais.biz.domain.bo.DataAmplificationTaskBo;
+import com.taais.biz.domain.vo.DataAmplificationTaskVo;
+import com.taais.biz.mapper.DataAmplificationTaskMapper;
+import com.taais.biz.service.IDataAmplificationTaskService;
+import com.taais.common.core.core.page.PageResult;
+import com.taais.common.core.utils.MapstructUtils;
+import com.taais.common.orm.core.page.PageQuery;
+import com.taais.common.orm.core.service.impl.BaseServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+import static com.taais.biz.domain.table.DataAmplificationTaskTableDef.DATA_AMPLIFICATION_TASK;
+
+/**
+ * 数据扩增任务 Service 业务层处理
+ */
+@Service
+@Slf4j
+public class DataAmplificationTaskServiceImpl extends BaseServiceImpl<DataAmplificationTaskMapper, DataAmplificationTask> implements IDataAmplificationTaskService {
+
+    @Resource
+    private DataAmplificationTaskMapper dataAmplificationTaskMapper;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(DATA_AMPLIFICATION_TASK);
+    }
+
+    private QueryWrapper buildQueryWrapper(DataAmplificationTaskBo taskBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(DATA_AMPLIFICATION_TASK.NAME.like(taskBo.getName()));
+        queryWrapper.and(DATA_AMPLIFICATION_TASK.STATUS.eq(taskBo.getStatus()));
+        queryWrapper.and(DATA_AMPLIFICATION_TASK.REMARKS.like(taskBo.getRemarks()));
+        return queryWrapper;
+    }
+
+    @Override
+    public DataAmplificationTaskVo selectById(Long id) {
+        return this.getOneAs(query().where(DATA_AMPLIFICATION_TASK.ID.eq(id)), DataAmplificationTaskVo.class);
+    }
+
+    @Override
+    public List<DataAmplificationTaskVo> selectList(DataAmplificationTaskBo taskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(taskBo);
+        return this.listAs(queryWrapper, DataAmplificationTaskVo.class);
+    }
+
+    @Override
+    public PageResult<DataAmplificationTaskVo> selectPage(DataAmplificationTaskBo taskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(taskBo);
+        Page<DataAmplificationTaskVo> page = this.pageAs(PageQuery.build(), queryWrapper, DataAmplificationTaskVo.class);
+        return PageResult.build(page);
+    }
+
+    @Override
+    public boolean insert(DataAmplificationTaskBo taskBo) {
+        DataAmplificationTask task = MapstructUtils.convert(taskBo, DataAmplificationTask.class);
+        return this.save(task);
+    }
+
+    @Override
+    public DataAmplificationTask insertTask(DataAmplificationTaskBo taskBo) {
+        DataAmplificationTask task = MapstructUtils.convert(taskBo, DataAmplificationTask.class);
+        this.save(task);
+        return task;
+    }
+
+    @Override
+    public boolean update(DataAmplificationTaskBo taskBo) {
+        DataAmplificationTask task = MapstructUtils.convert(taskBo, DataAmplificationTask.class);
+        if (ObjectUtil.isNotNull(task) && ObjectUtil.isNotNull(task.getId())) {
+            return this.updateById(task);
+        }
+        return false;
+    }
+
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 28 - 12
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/DataServiceImpl.java

@@ -2,19 +2,20 @@ package com.taais.biz.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpUtil;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
+import com.taais.biz.constant.BizConstant;
 import com.taais.biz.domain.Data;
+import com.taais.biz.domain.bo.DataAmplificationTaskBo;
 import com.taais.biz.domain.bo.DataBo;
 import com.taais.biz.domain.vo.BatchDataResult;
 import com.taais.biz.domain.dto.DataAmplifyDto;
 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.IDataAmplificationTaskService;
 import com.taais.biz.service.IDataService;
 import com.taais.common.core.config.TaaisConfig;
 import com.taais.common.core.core.domain.CommonResult;
@@ -36,7 +37,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
@@ -49,8 +49,9 @@ import java.time.Instant;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
+import java.util.concurrent.atomic.AtomicReference;
 
 import static com.taais.biz.domain.table.DataTableDef.DATA;
 
@@ -69,13 +70,16 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
     private static final String RAR = ".rar";
     private static final String TXT = ".txt";
     private static final String[] VALID_EXTENSIONS = {".jpg", ".jpeg", ".png"};
-    private static final String PYTHON_DATA_AMPLIFY_API = "http://127.0.0.1:9096/api/data/amplify";
+    private static final String PYTHON_DATA_AMPLIFY_API = "http://127.0.0.1:11001/augment";
     private static final String RESULT_CODE = "status";
     private static final String RESULT_STATUS = "200";
     private static final String AMPLIFY = "/AMPLIFY/";
     @Resource
     private DataMapper dataMapper;
 
+    @Resource
+    private IDataAmplificationTaskService dataAmplificationTaskService;
+
     @Override
     public QueryWrapper query() {
         return super.query().from(DATA);
@@ -279,7 +283,6 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
         if (dataList.isEmpty()) {
             return CommonResult.fail("该批次下没有文件数据,请重新选择批次!");
         }
-        //TODO: 此处需要定义任务开始,把相关任务信息添加上(任务名称、任务开始时间、任务类型),然后再处理文件。
 
         List<Data> dataListInfo = dataList.stream().filter(data -> !StringUtils.isEmpty(data.getUrl())).toList();
         if (dataListInfo.isEmpty()) {
@@ -292,7 +295,10 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
         String formattedDate = currentDate.format(formatter);
         filePath = filePath + File.separator + formattedDate;
         String finalFilePath = filePath;
-            dataListInfo.forEach(dataInfo -> {
+        Date startTime = new Date();
+        AtomicBoolean success = new AtomicBoolean(true);
+        AtomicReference<String> message = new AtomicReference<>("");
+        dataListInfo.forEach(dataInfo -> {
             try {
                 //循环调用Python扩增接口
                 Map<String, Object> bodyJson = new HashMap<>();
@@ -306,23 +312,33 @@ public class DataServiceImpl extends BaseServiceImpl<DataMapper, Data> implement
                 bodyJson.put("outputImagePath", outputImagePath);
                 bodyJson.put("otherParams", dataAmplifyDto.getOtherParams());
                 //实际请求接口,接口未提供,暂且注释
-//                String response = HttpRequest.post(PYTHON_DATA_AMPLIFY_API)
-//                        .body(JsonUtils.toJsonString(bodyJson))
-//                        .execute().body();
-                String response = "{\"status\":200,\"msg\":\"扩增成功\"}";
+                String response = HttpRequest.post(PYTHON_DATA_AMPLIFY_API)
+                    .body(JsonUtils.toJsonString(bodyJson))
+                    .execute().body();
+//                String response = "{\"status\":200,\"msg\":\"扩增成功\"}";
                 ObjectMapper objectMapper = new ObjectMapper();
                 JsonNode rootNode = objectMapper.readTree(response);
                 String resultCode = rootNode.path(RESULT_CODE).asText();
                 //判断接口是否响应成功
                 if (!RESULT_STATUS.equals(resultCode)) {
-                    throw new RuntimeException("调用Python接口返回扩增失败");
+                    success.set(true);
                 }
+                message.set(rootNode.path("msg").asText());
                 //处理当前目录文件,并进行入库
                 saveDataInfo(outputImagePath, dataInfo);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
         });
+        Date endTime = new Date();
+        DataAmplificationTaskBo update = new DataAmplificationTaskBo();
+        update.setId(Long.valueOf(dataAmplifyDto.getId()));
+        update.setStartTime(startTime);
+        update.setEndTime(endTime);
+        update.setCostSecond((int) (endTime.getTime() - startTime.getTime()));
+        update.setStatus(success.get() ? BizConstant.TASK_STATUS_SUCCEED : BizConstant.TASK_STATUS_FAILED);
+        update.setLog(message.get());
+        dataAmplificationTaskService.update(update);
         return CommonResult.fail("该批次下没有文件数据,请重新选择批次!");
     }
 

+ 14 - 1
taais-modules/taais-biz/src/main/java/com/taais/biz/service/impl/TargetIdentificationTaskServiceImpl.java

@@ -10,6 +10,7 @@ import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
 import com.taais.biz.constant.BizConstant;
 import com.taais.biz.domain.TargetIdentificationSubtask;
+import com.taais.biz.domain.bo.DataAmplificationTaskBo;
 import com.taais.biz.domain.bo.TargetIdentificationSubtaskBo;
 import com.taais.biz.domain.bo.TargetIdentificationSubtaskDetailsBo;
 import com.taais.biz.domain.dto.DataAmplifyDto;
@@ -22,6 +23,7 @@ import com.taais.biz.service.*;
 import com.taais.common.core.utils.MapstructUtils;
 import com.taais.common.core.utils.StringUtils;
 import com.taais.common.core.utils.uuid.UUID;
+import com.taais.common.json.utils.JsonUtils;
 import com.taais.common.orm.core.page.PageQuery;
 import com.taais.common.core.core.page.PageResult;
 import com.taais.common.orm.core.service.impl.BaseServiceImpl;
@@ -62,6 +64,9 @@ public class TargetIdentificationTaskServiceImpl extends BaseServiceImpl<TargetI
     @Resource
     private DataServiceImpl dataService;
 
+    @Resource
+    private IDataAmplificationTaskService dataAmplificationTaskService;
+
     @Override
     public QueryWrapper query() {
         return super.query().from(TARGET_IDENTIFICATION_TASK);
@@ -520,7 +525,15 @@ public class TargetIdentificationTaskServiceImpl extends BaseServiceImpl<TargetI
         subtask.setRemarks("DEFAULT_REMARK");
         subtaskService.insertSubtask(subtask);
 
-
+        // todo 创建数据扩增数据
+        DataAmplifyDto amplifyDto = taskDto.getTrainAugmentationParams();
+        DataAmplificationTaskBo dataAmplificationTaskBo = new DataAmplificationTaskBo();
+        dataAmplificationTaskBo.setName(amplifyDto.getTaskName());
+        dataAmplificationTaskBo.setStatus(BizConstant.TASK_STATUS_PENDING);
+        dataAmplificationTaskBo.setDataBatchNums(amplifyDto.getBatchNum());
+        dataAmplificationTaskBo.setParameters(JsonUtils.toJsonString(amplifyDto.getOtherParams()));
+        dataAmplificationTaskBo.setDelFlag(0);
+        dataAmplificationTaskService.insert(dataAmplificationTaskBo);
     }
 
 

+ 1 - 1
taais-modules/taais-system/src/main/java/com/taais/system/service/impl/SysMenuServiceImpl.java

@@ -531,7 +531,7 @@ public class SysMenuServiceImpl extends BaseServiceImpl<SysMenuMapper, SysMenu>
      * @return 结果
      */
     public boolean isInnerLink(SysMenu menu) {
-        return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath());
+        return UserConstants.NO_FRAME.equals(menu.getIsFrame()) && StringUtils.ishttp(menu.getPath());
     }
 
     /**