feat: 图审相似度列表接口,增加相似度分组排序

pull/37/head
shuliYao 1 year ago
parent 0342cdcbea
commit 77110f5ffa

@ -84,6 +84,7 @@ public class OcrCheckDuplicateController {
queryWrapper.eq("tenant_id", tenantId);
queryWrapper.eq("suspiciousfile", "0");
queryWrapper.orderBy(true,true,"submit_date_timestamp");
List<OcrPicture> pageList = ocrPictureService.listPage(queryWrapper);
if (null != pageList && !pageList.isEmpty()) {
if (pageList.size() == 1) {

@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
/**
* <p>
*
*
* </p>
*
* @author author
@ -50,5 +50,7 @@ public class OcrCheckDuplicateResult implements Serializable {
@ApiModelProperty(value = "当前图片在当前任务包下比对最高阈值")
private Double maxSimilarity;
@ApiModelProperty(value = "阈值分组排序值,数值越低排序越靠前,")
private Integer similarityGroupOrder;
}

@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
@ -184,7 +185,10 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
//图片信息不能为空
if (null != ocrPictureList && !ocrPictureList.isEmpty()) {
//阈值分组从1开始
int similarityGroupOrder = 1;
//阈值分组map
Map<String,Integer> similarityGroupOrderMap = new HashMap<>();
//1.开启比对任务
for (OcrPicture ocrPicture : ocrPictureList) {
@ -247,12 +251,27 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
}
ocrPictureNext.setResult(resultValue);
BigDecimal b1 = new BigDecimal(resultValue);
//比对是否重复图片
// BigDecimal b2 = new BigDecimal("100");
// int val = b1.compareTo(b2);
// if (val == 0) {
// havePoint = true;
// }
//进行图片分组
BigDecimal b2 = new BigDecimal("95");
if (b1.compareTo(b2)==1) {
//阈值超过95 对两张图片进行阈值分组
//1.获取主图片组别编号
Integer groupOrderNo = similarityGroupOrderMap.get(ocrPicture.getId().toString());
//2.获取对比图片组别编号
Integer nextGroupOrderNo = similarityGroupOrderMap.get(ocrPictureNext.getId().toString());
if(groupOrderNo==null && nextGroupOrderNo==null){
//2.1 两种图片都没有组别,则创建新的组别
similarityGroupOrderMap.put(ocrPictureNext.getId().toString(),similarityGroupOrder);
similarityGroupOrderMap.put(ocrPicture.getId().toString(),similarityGroupOrder);
similarityGroupOrder = similarityGroupOrder+1;
}else if(groupOrderNo!=null && nextGroupOrderNo==null){
//2.2 主图有组别,对比图没有,将对比图分入主图组别
similarityGroupOrderMap.put(ocrPictureNext.getId().toString(),groupOrderNo);
}else if(nextGroupOrderNo!=null && groupOrderNo==null){
//2.3 对比图有组别,主图没有,将主图分入对比图组别
similarityGroupOrderMap.put(ocrPicture.getId().toString(),nextGroupOrderNo);
}
}
//当前阈值大于 最高阈值 进行替换
if (b1.compareTo(maxSimilarity) == 1) {
maxSimilarity = b1;
@ -266,6 +285,9 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
ocrCheckDuplicateResult.setMaxSimilarity(maxSimilarity.doubleValue());
ocrCheckDuplicateResult.setCompareResultJson(JSONObject.toJSONString(resultMap));
ocrCheckDuplicateResult.setCheckDuplicateId(checkDuplicateId);
if(similarityGroupOrderMap.get(ocrPicture.getId().toString())!=null){
ocrCheckDuplicateResult.setSimilarityGroupOrder(similarityGroupOrderMap.get(ocrPicture.getId().toString()));
}
saveList.add(ocrCheckDuplicateResult);
}

@ -706,7 +706,7 @@
and t1.picture_id != #{pictureId}
</if>
<if test="oderName == 'similarityScore'">
order by t1.max_similarity ${oderType},t2.submit_date_timestamp ${oderType}
order by t1.max_similarity ${oderType},t1.similarity_group_order asc,t2.submit_date_timestamp ${oderType}
</if>
<if test="oderName == 'createdate'">
order by t2.create_time ${oderType}

Loading…
Cancel
Save