diff --git a/src/main/java/com/jiagutech/dto/request/CreateRecordRequest.java b/src/main/java/com/jiagutech/dto/request/CreateRecordRequest.java index ddcbda0..d0138a4 100644 --- a/src/main/java/com/jiagutech/dto/request/CreateRecordRequest.java +++ b/src/main/java/com/jiagutech/dto/request/CreateRecordRequest.java @@ -34,5 +34,7 @@ public class CreateRecordRequest { @NotBlank(message = "任务名称不能为空") private String taskName; + private Integer category; + } \ No newline at end of file diff --git a/src/main/java/com/jiagutech/dto/request/UserRequest.java b/src/main/java/com/jiagutech/dto/request/UserRequest.java index 0790299..e95006a 100644 --- a/src/main/java/com/jiagutech/dto/request/UserRequest.java +++ b/src/main/java/com/jiagutech/dto/request/UserRequest.java @@ -28,7 +28,7 @@ public class UserRequest { /** * 手机号码 */ - @Pattern(regexp = "^1[34578]\\d{9}$", message = "手机号码格式不正确") + @Pattern(regexp = "^1[345789]\\d{9}$", message = "手机号码格式不正确") private String phone; diff --git a/src/main/java/com/jiagutech/entity/RecordContentEntity.java b/src/main/java/com/jiagutech/entity/RecordContentEntity.java index 43aed37..03f15a5 100644 --- a/src/main/java/com/jiagutech/entity/RecordContentEntity.java +++ b/src/main/java/com/jiagutech/entity/RecordContentEntity.java @@ -32,6 +32,16 @@ public class RecordContentEntity { private Integer handleNum; private Integer beakNum; + + private Integer category; + + private Float bodyLength; + + private Integer branchNum; //分支数 + + private Integer rapeNum; //角果数 + + private Float rapeLength;//角果长度值 //比例尺类型 ,1=统一/2=自用/3=延用/0=无 private Integer scaleType; //比例 diff --git a/src/main/java/com/jiagutech/entity/RecordEntity.java b/src/main/java/com/jiagutech/entity/RecordEntity.java index 7c3b28b..5a61e1d 100644 --- a/src/main/java/com/jiagutech/entity/RecordEntity.java +++ b/src/main/java/com/jiagutech/entity/RecordEntity.java @@ -20,6 +20,8 @@ public class RecordEntity { private Long userId; + private Integer category; + private Integer imageNum; private LocalDateTime createTime; diff --git a/src/main/java/com/jiagutech/entity/UserEntity.java b/src/main/java/com/jiagutech/entity/UserEntity.java index 35b7713..1441934 100644 --- a/src/main/java/com/jiagutech/entity/UserEntity.java +++ b/src/main/java/com/jiagutech/entity/UserEntity.java @@ -1,5 +1,6 @@ package com.jiagutech.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -11,7 +12,7 @@ import java.time.LocalDateTime; @TableName("siliqua_user") @Accessors(chain = true) public class UserEntity { - @TableId + @TableId(type = IdType.AUTO) private Long id; private String phone; diff --git a/src/main/java/com/jiagutech/record/RecordTaskHandler.java b/src/main/java/com/jiagutech/record/RecordTaskHandler.java index b11b152..46b067d 100644 --- a/src/main/java/com/jiagutech/record/RecordTaskHandler.java +++ b/src/main/java/com/jiagutech/record/RecordTaskHandler.java @@ -74,6 +74,7 @@ public class RecordTaskHandler { } this.recordTask = new RecordTask() + .setType(request.getCategory()) .setFiles(files) .setModelName(request.getModelName()) .setIou(request.getIou()) @@ -89,6 +90,7 @@ public class RecordTaskHandler { @Data @Accessors(chain = true) public static class RecordTask { + private int type; private String taskId; private File[] files; private String modelName; diff --git a/src/main/java/com/jiagutech/record/RecordTaskProcessor.java b/src/main/java/com/jiagutech/record/RecordTaskProcessor.java index 3ce7f51..d33a008 100644 --- a/src/main/java/com/jiagutech/record/RecordTaskProcessor.java +++ b/src/main/java/com/jiagutech/record/RecordTaskProcessor.java @@ -16,6 +16,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.io.File; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.List; @@ -36,6 +38,7 @@ public class RecordTaskProcessor { log.info("开始处理任务:{}", recordTask.getTaskId()); float progress = 5f; RecordEntity recordEntity = new RecordEntity().setName(recordTask.getTaskName()) + .setCategory(recordTask.getType()) .setImageNum(recordTask.getFiles().length) .setUserId(recordTask.getLoginUser().getUserId()) .setCreateTime(LocalDateTime.now()) @@ -45,23 +48,61 @@ public class RecordTaskProcessor { for (File file : recordTask.getFiles()) { log.info("调用模型进行分析,file:{}", file.getName()); List predict = modelClient.predict(file, recordTask.getModelName(), recordTask.getIou(), recordTask.getConf()); - int handleNum = 0; - int rapeNum = 0; - int beakNum = 0; - for (ModelPredictResponse item : predict) { - item.setLength(RecognitionUtil.getMaxLength(item.getPoints())); - switch (item.getClassify()) { - case 0: - rapeNum++; - break; - case 1: - beakNum++; - break; - default: - handleNum++; + RecordContentEntity recordContentEntity; + if (recordTask.getType() == 2) { + int branchNum=0; + int rapeNum=0; + float totalLength=0; + float bodyLength = 0; + for (ModelPredictResponse item : predict) { + switch (item.getClassify()) { + case 0: + rapeNum++; + totalLength+=RecognitionUtil.getMaxLength(item.getPoints()); + case 2: + branchNum++; + break; + case 3: + bodyLength=RecognitionUtil.getMaxLength(item.getPoints()); + default: + } } + BigDecimal b = new BigDecimal(totalLength/rapeNum); + float avgLength = b.setScale(2, RoundingMode.HALF_UP).floatValue(); + recordContentEntity = new RecordContentEntity() + .setRecognitionData(predict) + .setBranchNum(branchNum) + .setBodyLength(bodyLength) + .setSiliquaNum(rapeNum).setCategory(2) + .setRapeLength(avgLength); + + } else { + int handleNum = 0; + int rapeNum = 0; + int beakNum = 0; + for (ModelPredictResponse item : predict) { + item.setLength(RecognitionUtil.getMaxLength(item.getPoints())); + switch (item.getClassify()) { + case 0: + rapeNum++; + break; + case 1: + beakNum++; + break; + default: + handleNum++; + } + } + progress += (float) (100 / recordTask.getFiles().length - 10); + recordContentEntity = new RecordContentEntity() + .setCategory(1) + .setRecognitionData(predict) + .setHandleNum(handleNum) + .setBeakNum(beakNum) + .setSiliquaNum(rapeNum); } - progress += (float) (100 / recordTask.getFiles().length - 10); + + recordTask.setProgress(progress); // if (!CollectionUtils.isEmpty(predict)) { String imageUrl; @@ -75,15 +116,10 @@ public class RecordTaskProcessor { } finally { file.deleteOnExit(); } - RecordContentEntity recordContentEntity = new RecordContentEntity() - .setRecordId(recordEntity.getId()).setImageUrl(imageUrl) - .setRecognitionData(predict) + recordContentEntity.setRecordId(recordEntity.getId()).setImageUrl(imageUrl) .setImageName(file.getName()) .setConf(recordTask.getConf()) - .setIou(recordTask.getIou()) - .setHandleNum(handleNum) - .setBeakNum(beakNum) - .setSiliquaNum(rapeNum); + .setIou(recordTask.getIou()); recordContentMapper.insert(recordContentEntity); log.info("保存处理结果,file:{}", file.getName()); progress += 3f; diff --git a/src/main/java/com/jiagutech/service/UserServiceImpl.java b/src/main/java/com/jiagutech/service/UserServiceImpl.java index 55442eb..6d1beaf 100644 --- a/src/main/java/com/jiagutech/service/UserServiceImpl.java +++ b/src/main/java/com/jiagutech/service/UserServiceImpl.java @@ -67,6 +67,7 @@ public class UserServiceImpl implements UserService { .setUnitName(user.getUnitName()) .setPhone(user.getPhone()) .setRole(1) + .setId(null) .setPassword(BCrypt.hashpw(user.getPassword())); QueryWrapper wrapper = Wrappers.query(); wrapper.eq("phone", user.getPhone()); diff --git a/src/main/java/com/jiagutech/utils/RecognitionUtil.java b/src/main/java/com/jiagutech/utils/RecognitionUtil.java index 05d8a10..60c47b6 100644 --- a/src/main/java/com/jiagutech/utils/RecognitionUtil.java +++ b/src/main/java/com/jiagutech/utils/RecognitionUtil.java @@ -22,4 +22,5 @@ public class RecognitionUtil { } + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index afb554e..6fc97dc 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -54,6 +54,7 @@ mybatis-plus: global-config: db-config: update-strategy: not_null + id-type: auto sa-token: diff --git a/src/main/resources/mapper/RecordContentMapper.xml b/src/main/resources/mapper/RecordContentMapper.xml index 5fa6830..7aac4df 100644 --- a/src/main/resources/mapper/RecordContentMapper.xml +++ b/src/main/resources/mapper/RecordContentMapper.xml @@ -12,6 +12,11 @@ + + + + + diff --git a/src/main/resources/mapper/RecordMapper.xml b/src/main/resources/mapper/RecordMapper.xml index 2a40fc4..5f2f3ed 100644 --- a/src/main/resources/mapper/RecordMapper.xml +++ b/src/main/resources/mapper/RecordMapper.xml @@ -19,6 +19,7 @@ r.user_id, r.image_num as imageNum, r.create_time as createTime, + r.category, u.real_name as userName, u.unit_name as unitName, u.phone