|
|
|
@ -178,8 +178,8 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
|
|
|
|
|
* 6.回写ocr_picture表,similarity_score字段,字段值是该图片所有历史比对的最高值,如果本次比对的最高阈值小于最高值,则不进行回写。
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void comparePictureResultSave(List<OcrPicture> ocrPictureList, UserToken sysUser, Long checkDuplicateId) throws Exception {
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void comparePictureResultSave(List<OcrPicture> ocrPictureList, UserToken sysUser, Long checkDuplicateId){
|
|
|
|
|
|
|
|
|
|
List<OcrCheckDuplicateResult> saveList = new ArrayList<>();
|
|
|
|
|
//需要创建任务的图片集合
|
|
|
|
@ -198,11 +198,11 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
|
|
|
|
|
if (org.apache.commons.lang3.StringUtils.isBlank(ocrPicture.getImgHash())) {
|
|
|
|
|
String url = ocrPicture.getLocalpictrueurl();
|
|
|
|
|
if(StringUtils.isBlank(url)){
|
|
|
|
|
if(StringUtils.isBlank(ocrPicture.getImgurl())){
|
|
|
|
|
// if(StringUtils.isBlank(ocrPicture.getImgurl())){
|
|
|
|
|
// }
|
|
|
|
|
// url = ocrPicture.getImgurl();
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
url = ocrPicture.getImgurl();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Map<String, String> map = this.getOcrPictureClassifyAndHash(url);
|
|
|
|
|
if (map != null) {
|
|
|
|
@ -228,11 +228,12 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
|
|
|
|
|
logger.info("图片没有hash值,进入分类并获取hash接口:{}",JSONObject.toJSON(ocrPictureNext));
|
|
|
|
|
String url = ocrPictureNext.getLocalpictrueurl();
|
|
|
|
|
if(StringUtils.isBlank(url)){
|
|
|
|
|
if(StringUtils.isBlank(ocrPictureNext.getImgurl())){
|
|
|
|
|
// if(StringUtils.isBlank(ocrPictureNext.getImgurl())){
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// url = ocrPictureNext.getImgurl();
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
url = ocrPictureNext.getImgurl();
|
|
|
|
|
}
|
|
|
|
|
Map<String, String> map = this.getOcrPictureClassifyAndHash(url);
|
|
|
|
|
if (map != null) {
|
|
|
|
|
ocrPictureNext.setImgHash(map.get("hash"));
|
|
|
|
@ -290,32 +291,57 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
|
|
|
|
|
if(similarityGroupOrderMap.get(ocrPicture.getId().toString())!=null){
|
|
|
|
|
ocrCheckDuplicateResult.setSimilarityGroupOrder(similarityGroupOrderMap.get(ocrPicture.getId().toString()));
|
|
|
|
|
}
|
|
|
|
|
//1.3开启入库操作,不能进行批量入库,会导致内存被拉崩
|
|
|
|
|
saveList.add(ocrCheckDuplicateResult);
|
|
|
|
|
List<OcrPicture> pictures = new ArrayList<>();
|
|
|
|
|
pictures.add(ocrPicture);
|
|
|
|
|
try {
|
|
|
|
|
this.saveCheckDuplicateData(checkDuplicateId,saveList,pictures,ocrPictureList.get(0).getTenantId().toString(),sysUser);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error("比对结果入库异常! error:{}",e.getMessage());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
saveList = new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
logger.info("查重任务:{},开启创建任务",checkDuplicateId);
|
|
|
|
|
if (CollectionUtils.isNotEmpty(ocrPictureList)) {
|
|
|
|
|
ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser);
|
|
|
|
|
}
|
|
|
|
|
logger.info("查重任务:{},结束创建任务",checkDuplicateId);
|
|
|
|
|
//批量入库
|
|
|
|
|
logger.info("查重任务:{},开启批量入库任务",checkDuplicateId);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存查重数据
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public boolean saveCheckDuplicateData(Long checkDuplicateId,List<OcrCheckDuplicateResult> saveList,List<OcrPicture> ocrPictureList, String tenantId,UserToken sysUser) throws Exception {
|
|
|
|
|
//1.批量入库
|
|
|
|
|
logger.debug("查重任务:{},开启批量入库任务",checkDuplicateId);
|
|
|
|
|
boolean b = checkDuplicateResultService.saveOrUpdateBatch(saveList);
|
|
|
|
|
if (!b) {
|
|
|
|
|
logger.error("入库比对结果失败,{}",checkDuplicateId);
|
|
|
|
|
throw new Exception("批量入库比对结果失败!");
|
|
|
|
|
}
|
|
|
|
|
logger.info("查重任务:{},结束批量入库任务",checkDuplicateId);
|
|
|
|
|
//开始更新图片最高阈值
|
|
|
|
|
logger.info("查重任务:{},更新最高阈值",checkDuplicateId);
|
|
|
|
|
this.updatePictureSimilarityScore(saveList);
|
|
|
|
|
logger.info("查重任务:{},结束更新最高阈值",checkDuplicateId);
|
|
|
|
|
//开始更新 图片历史比对数据结果
|
|
|
|
|
//2.开始更新图片最高阈值
|
|
|
|
|
logger.debug("查重任务:{},更新最高阈值",checkDuplicateId);
|
|
|
|
|
b = this.updatePictureSimilarityScore(saveList);
|
|
|
|
|
if (!b) {
|
|
|
|
|
logger.error("更新最高阈值,{}",checkDuplicateId);
|
|
|
|
|
throw new Exception("更新最高阈值失败!");
|
|
|
|
|
}
|
|
|
|
|
//3.开始更新 图片历史比对数据结果
|
|
|
|
|
logger.info("查重任务:{},更新图片历史比对结果",checkDuplicateId);
|
|
|
|
|
this.updateCompareToPictureDuplicateHis(saveList);
|
|
|
|
|
logger.info("查重任务:{},结束图片历史比对结果",checkDuplicateId);
|
|
|
|
|
b = this.updateCompareToPictureDuplicateHis(saveList);
|
|
|
|
|
if (!b) {
|
|
|
|
|
logger.error("更新图片历史比对结果失败,{}",checkDuplicateId);
|
|
|
|
|
throw new Exception("更新图片历史比对结果失败!");
|
|
|
|
|
}
|
|
|
|
|
//4.开始更新 图片历史比对数据结果
|
|
|
|
|
logger.info("查重任务:{},开启创建任务",checkDuplicateId);
|
|
|
|
|
if (CollectionUtils.isNotEmpty(ocrPictureList)) {
|
|
|
|
|
ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean removeCheckDuplicate(String checkDuplicateNo, String tenantId) {
|
|
|
|
|