feat: 图片墙的图片,阈值100的图片要和跟他比对出100阈值排列在一起

pull/131/head
guanzheng 1 year ago
parent fb82de6182
commit 4784ea4f25

@ -1,32 +1,36 @@
package cn.jyjz.xiaoyao.common.base.util;
import com.sun.xml.messaging.saaj.util.ByteOutputStream;
import java.io.*;
import java.util.List;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Map;
public class ObjectUtils {
public class ObjectUtils extends org.springframework.util.ObjectUtils {
public static boolean isNotEmpty(Object obj) {
return !isEmpty(obj);
}
public static Object clone(Map obj){
public static Object clone(Map obj) {
Object cloneObj = null;
ByteOutputStream bos = new ByteOutputStream();
try {
ObjectOutputStream oss = new ObjectOutputStream(bos);
oss.writeObject(obj);
oss.close();
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
cloneObj = ois.readObject();
ois.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
return cloneObj;
}
}

@ -1,17 +1,12 @@
package cn.jyjz.xiaoyao.ocr.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import cn.jyjz.xiaoyao.admin.service.LogService;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
@ -22,6 +17,8 @@ import cn.jyjz.xiaoyao.ocr.util.SearchConfigEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@ -30,15 +27,17 @@ import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import cn.jyjz.xiaoyao.admin.service.UserService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.controller.BaseController;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Api(tags = "ocr_图片管理")
@RestController
@ -323,6 +322,7 @@ public class OcrPictureController extends BaseController {
queryWrapper.eq("tenant_id", tenantId);
queryWrapper.isNotNull("local_pictrue_url");
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
queryWrapper.orderByAsc("complete_similar_groupId");
IPage<OcrPicture> pageList = ocrPictureService.page(page, queryWrapper);
List<OcrPicture> ocrPictures = pageList.getRecords();
List<OcrPicture> ocrPicturesNew = new ArrayList<>();

@ -2,11 +2,12 @@ package cn.jyjz.xiaoyao.ocr.dataobject;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateNotimeSerializer;
import cn.jyjz.xiaoyao.common.base.jsonDomain.DateSerializer;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import cn.jyjz.xiaoyao.common.mybatisplus.dto.BaseDto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -17,13 +18,12 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.AbstractMap.SimpleEntry;
import java.util.List;
import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Data
@ -368,6 +368,10 @@ public class OcrPicture implements BaseDto, java.io.Serializable {
@JsonSerialize(using = DateSerializer.class)
private Long photoDateTimestamp;
@ApiModelProperty(value = "完全相似分组id")
@TableField(value = "complete_similar_groupId")
private Long completeSimilarGroupId;
@ApiModelProperty(value = "节点状态")
@TableField(exist = false)
private Integer historyStates;

@ -5,27 +5,25 @@ import cn.hutool.core.date.DateUtil;
import cn.jyjz.xiaoyao.admin.service.LogService;
import cn.jyjz.xiaoyao.common.base.exception.CommonExceptionCodeEnum;
import cn.jyjz.xiaoyao.common.base.exception.ServiceException;
import cn.jyjz.xiaoyao.common.base.util.DateUtils;
import cn.jyjz.xiaoyao.common.base.util.SpringUtils;
import cn.jyjz.xiaoyao.common.base.util.StringUtils;
import cn.jyjz.xiaoyao.common.base.util.*;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrCheckDuplicateMapper;
import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrCheckDuplicate;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrCheckDuplicateResult;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureDuplicateHis;
import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.util.HashCompareUtil;
import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@ -192,8 +190,17 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
//阈值分组map
Map<String,Integer> similarityGroupOrderMap = new HashMap<>();
//1.开启比对任务
boolean isCompleteSimilarGroupIdNull;
for (OcrPicture ocrPicture : ocrPictureList) {
// 添加相似度百分百分组id
if (ObjectUtils.isEmpty(ocrPicture.getCompleteSimilarGroupId())) {
ocrPicture.setCompleteSimilarGroupId(SnowFlakeUtil.nextId());
pictureService.updateById(ocrPicture);
isCompleteSimilarGroupIdNull = true;
} else {
isCompleteSimilarGroupIdNull = false;
}
logService.addLog(103, "AI获取图片相似度接口", sysUser, "sendParams");
if (org.apache.commons.lang3.StringUtils.isBlank(ocrPicture.getImgHash())) {
String url = ocrPicture.getLocalpictrueurl();
@ -280,6 +287,20 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
maxSimilarity = b1;
}
resultMap.put(ocrPictureNext.getId().toString(), resultValue);
// 判断相似度是否一样
BigDecimal allSimilarity = new BigDecimal("100");
if (b1.compareTo(allSimilarity) == 0) {
if (ObjectUtils.isEmpty(ocrPictureNext.getCompleteSimilarGroupId())) {
ocrPictureNext.setCompleteSimilarGroupId(ocrPicture.getCompleteSimilarGroupId());
pictureService.updateById(ocrPictureNext);
} else {
if (!ocrPictureNext.getCompleteSimilarGroupId().equals(ocrPicture.getCompleteSimilarGroupId()) && isCompleteSimilarGroupIdNull) {
ocrPicture.setCompleteSimilarGroupId(ocrPictureNext.getCompleteSimilarGroupId());
pictureService.updateById(ocrPicture);
}
}
}
}
//1.2 比对结束组装入库参数
//定义比对存储对象

Loading…
Cancel
Save