diff --git a/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/ObjectUtils.java b/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/ObjectUtils.java index 418dd391..c3a8e134 100644 --- a/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/ObjectUtils.java +++ b/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/ObjectUtils.java @@ -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; } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java index 1589ed17..e9b3662b 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/controller/OcrPictureController.java @@ -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 page = new Page(pageNo, pageSize); + queryWrapper.orderByAsc("complete_similar_groupId"); IPage pageList = ocrPictureService.page(page, queryWrapper); List ocrPictures = pageList.getRecords(); List ocrPicturesNew = new ArrayList<>(); diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPicture.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPicture.java index a48cba8a..b5d502fe 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPicture.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/dataobject/OcrPicture.java @@ -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; diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java index 12ba20ae..ed31a2b8 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java @@ -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 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