|
|
@ -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<ModelPredictResponse> 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; |
|
|
|