feat: 图片查询接口,追加按图片id查询相似图片功能。

pull/163/head
shuliYao 1 year ago
parent 96e58dd8a3
commit f643d0dd3d

@ -336,7 +336,14 @@ public class OcrPictureController extends BaseController {
queryWrapper.isNotNull("local_pictrue_url");
Page<OcrPicture> page = new Page<OcrPicture>(pageNo, pageSize);
IPage<OcrPicture> pageList = ocrPictureService.page(page, queryWrapper);
IPage<OcrPicture> pageList = null;
//判断是否带有图片查询的条件,图片查询获取的是相似图片的的数据。
String pictureId = req.getParameter("isupload");
if(StringUtils.isNotBlank(pictureId)){
pageList = ocrPictureService.pagePictureSimilarity(pictureId,page, queryWrapper);
}else{
pageList = ocrPictureService.page(page, queryWrapper);
}
List<OcrPicture> ocrPictures = pageList.getRecords();
List<OcrPicture> ocrPicturesNew = new ArrayList<>();

@ -7,7 +7,9 @@ import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@ -91,4 +93,6 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
OcrPicture selectByRemark(String remark);
OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId);
IPage<OcrPicture> pagePictureSimilarity(String pictureId, Page<OcrPicture> page, QueryWrapper<OcrPicture> queryWrapper);
}

@ -3,7 +3,6 @@ package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.jyjz.flowable.common.ProcessConstant;
import cn.jyjz.flowable.service.IFlowInstanceService;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
@ -14,7 +13,6 @@ import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl;
import cn.jyjz.xiaoyao.oa.from.dataobject.Category;
import cn.jyjz.xiaoyao.oa.from.service.CategoryService;
import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import cn.jyjz.xiaoyao.oa.from.service.impl.UserapproveServiceImpl;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.*;
@ -353,6 +351,61 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
return ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, pictureId));
}
@Override
public IPage<OcrPicture> pagePictureSimilarity(String pictureId, Page<OcrPicture> page, QueryWrapper<OcrPicture> queryWrapper) {
OcrPictureDuplicateHis ocrPictureDuplicateHis = ocrPictureDuplicateHisService.queryByPictureId(Long.parseLong(pictureId));
if(ocrPictureDuplicateHis==null){
page.setTotal(0);
page.setRecords(new ArrayList<>());
return page;
}
Map<String,Object> picturesMap = JSONObject.parseObject(ocrPictureDuplicateHis.getCheckDuplicateResultHisJson());
// 将Map转换成List
List<Map.Entry<String, Integer>> pictureMapList = new ArrayList(picturesMap.entrySet());
// 根据Map的值进行排序
pictureMapList.sort(Map.Entry.comparingByValue());
//将排序后的list倒序
Collections.reverse(pictureMapList);
//赋值总数到page中
page.setTotal(pictureMapList.size());
//对list分页获取
List<Map.Entry<String, Integer>> pageMapList = new ArrayList<>();
Long fromIndex = (page.getCurrent()-1) * page.getSize();
Long toIndex =fromIndex + page.getSize();
//判断如果当前页,是否还有整页完整数据
if(toIndex > pictureMapList.size()){
if(fromIndex<pictureMapList.size()){
//没有整页完整数据,但是还有数据
pageMapList = pictureMapList.subList(Integer.parseInt(fromIndex.toString()),pictureMapList.size());
}
}else{
pageMapList = pictureMapList.subList(Integer.parseInt(fromIndex.toString()),Integer.parseInt(toIndex.toString()));
}
//判断是否还需要获取关联查询数据
if(pageMapList.size()<=0){
page.setRecords(new ArrayList<>());
return page;
}
//有数据得情况下,关联查询出对应数据
List<Long> pictureIds = new ArrayList<>();
for (Map.Entry<String, Integer> pictureHisEntry : pageMapList) {
pictureIds.add(Long.parseLong(pictureHisEntry.getKey()));
}
QueryWrapper queryWrapperP = new QueryWrapper();
queryWrapperP.in("id",pictureIds);
List<OcrPicture> pictures = baseMapper.selectList(queryWrapperP);
//此处相似阈值进行替换,替换为与改图片比对得阈值
for (OcrPicture picture : pictures) {
String similarity = picturesMap.get(picture.getId().toString()).toString();
picture.setSimilarityscore(Integer.parseInt(similarity));
}
Collections.sort(pictures, (o1, o2) -> Integer.compare(o2.getSimilarityscore(), o1.getSimilarityscore()));
page.setRecords(pictures);
return page;
}
// @Override
// public Long getPhotoDateTime(OcrPicture picture) {
// long timestamp = 0L;

Loading…
Cancel
Save