feat:重置流程删除查重记录及图片查重结果 #160

Merged
sunchenliang merged 1 commits from feat/updatePrevailCloudLog into test 1 year ago

@ -17,17 +17,8 @@ import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
import cn.jyjz.xiaoyao.oa.from.service.impl.UserapproveServiceImpl; import cn.jyjz.xiaoyao.oa.from.service.impl.UserapproveServiceImpl;
import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig; import cn.jyjz.xiaoyao.ocr.api.utils.ApiConfig;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataDao.OcrPictureMybatisDao;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPackagetask; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPictureInfo;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearch;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrUsersearchchild;
import cn.jyjz.xiaoyao.ocr.service.OcrPackagetaskService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureInfoService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrTaskchildPictureService;
import cn.jyjz.xiaoyao.ocr.service.OcrUsersearchService;
import cn.jyjz.xiaoyao.ocr.thread.TaskQueue; import cn.jyjz.xiaoyao.ocr.thread.TaskQueue;
import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity; import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil; import cn.jyjz.xiaoyao.ocr.util.DataDictionaryUtil;
@ -35,6 +26,7 @@ import cn.jyjz.xiaoyao.ocr.util.HashCompareUtil;
import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil; import cn.jyjz.xiaoyao.ocr.util.ImageClassUtil;
import cn.jyjz.xiaoyao.ocr.util.SearchEnum; import cn.jyjz.xiaoyao.ocr.util.SearchEnum;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -58,11 +50,7 @@ import java.io.File;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -96,6 +84,14 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
private CategoryService categoryService; private CategoryService categoryService;
@Resource @Resource
private OcrPictureInfoService ocrPictureInfoService; private OcrPictureInfoService ocrPictureInfoService;
@Resource
private OcrCheckDescribeHisService ocrCheckDescribeHisService;
@Resource
private IOcrCheckDuplicateResultService ocrCheckDuplicateResultService;
@Resource
private IOcrPictureDuplicateHisService ocrPictureDuplicateHisService;
private Object lock = new Object(); private Object lock = new Object();
/** /**
* *
@ -335,10 +331,10 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Override @Override
public OcrPicture getPackagePictureInfo(String checkDuplicateId, String pictureId, UserToken userToken) { public OcrPicture getPackagePictureInfo(String checkDuplicateId, String pictureId, UserToken userToken) {
OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId,pictureId); OcrPicture ocrPicture = pictureMybatisDao.getPackagePictureInfo(checkDuplicateId, pictureId);
OcrPictureInfo one = ocrPictureInfoService.getOne(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId, ocrPicture.getId())); OcrPictureInfo one = ocrPictureInfoService.getOne(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId, ocrPicture.getId()));
ocrPicture.setPictureInfo(one); ocrPicture.setPictureInfo(one);
if(ObjectUtil.isNotEmpty(one)){ if (ObjectUtil.isNotEmpty(one)) {
ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp()); ocrPicture.getPictureInfo().setCreateTime(ocrPicture.getPhotoDateTimestamp());
} }
return ocrPicture; return ocrPicture;
@ -351,7 +347,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Override @Override
public OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId) { public OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId) {
return ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid,pictureId)); return ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, pictureId));
} }
// @Override // @Override
@ -415,7 +411,6 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
// } // }
public OcrTaskchildPicture updateTaskChild(OcrPicture ocrPicture, Long packageid, String buessinessno) { public OcrTaskchildPicture updateTaskChild(OcrPicture ocrPicture, Long packageid, String buessinessno) {
OcrTaskchildPicture ocrTaskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, ocrPicture.getId())); OcrTaskchildPicture ocrTaskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, ocrPicture.getId()));
ocrTaskchildPicture.setBuessinessno(buessinessno); ocrTaskchildPicture.setBuessinessno(buessinessno);
@ -445,7 +440,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
return ocrTaskchildPictureService.updateById(ocrTaskchildPicture) ? ocrTaskchildPicture : null; return ocrTaskchildPictureService.updateById(ocrTaskchildPicture) ? ocrTaskchildPicture : null;
} }
public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId,HttpServletRequest request) { public ResultVo createTaskChild(List<OcrPicture> ocrPictureList, String tenantId, HttpServletRequest request) {
//图片错误信息 //图片错误信息
StringBuffer error = new StringBuffer(); StringBuffer error = new StringBuffer();
//项目错误信息 //项目错误信息
@ -517,7 +512,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Override @Override
public String getPictureApproveResult(Long id) { public String getPictureApproveResult(Long id) {
return pictureMybatisDao.getPictureApproveResult(id); return pictureMybatisDao.getPictureApproveResult(id);
} }
@Override @Override
@ -525,12 +520,63 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
//删除图片表 //删除图片表
pictureMybatisDao.deleteById(id); pictureMybatisDao.deleteById(id);
//删除图片信息表 //删除图片信息表
ocrPictureInfoService.remove(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId,id)); ocrPictureInfoService.remove(new LambdaQueryWrapper<OcrPictureInfo>().eq(OcrPictureInfo::getPictureId, id));
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, id)); OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, id));
//删除任务表 //删除任务表
ocrTaskchildPictureService.remove(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid,id)); ocrTaskchildPictureService.remove(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getPictureid, id));
//删除审批记录表 //删除审批记录表
userapproveService.delete(taskchildPicture.getId().toString()); userapproveService.delete(taskchildPicture.getId().toString());
//小结查重记录
OcrCheckDescribeHis checkDescribeHis = ocrCheckDescribeHisService.getOne(new LambdaQueryWrapper<OcrCheckDescribeHis>().eq(OcrCheckDescribeHis::getPictureId, id));
if (checkDescribeHis != null) {
String checkResult = checkDescribeHis.getCheckResult();
if (StringUtils.isNotBlank(checkResult)) {
String[] checkResultPictureIds = checkResult.split(",");
List<OcrCheckDescribeHis> checkDescribes = ocrCheckDescribeHisService.list(new LambdaQueryWrapper<OcrCheckDescribeHis>().in(OcrCheckDescribeHis::getPictureId, checkResultPictureIds));
for (OcrCheckDescribeHis checkDescribe : checkDescribes) {
String[] split = checkDescribe.getCheckResult().split(",");
List<String> list = Arrays.asList(split);
list.remove(id.toString());
checkDescribe.setCheckResult(String.join(",", list));
}
ocrCheckDescribeHisService.updateBatchById(checkDescribes);
}
ocrCheckDescribeHisService.remove(new LambdaQueryWrapper<OcrCheckDescribeHis>().eq(OcrCheckDescribeHis::getPictureId, id));
}
//图片对比记录
OcrPictureDuplicateHis hisServiceOne = ocrPictureDuplicateHisService.getOne(new LambdaQueryWrapper<OcrPictureDuplicateHis>().eq(OcrPictureDuplicateHis::getPictureId, id));
if (null != hisServiceOne) {
String checkDuplicateResultHisJson = hisServiceOne.getCheckDuplicateResultHisJson();
if (StringUtils.isNotBlank(checkDuplicateResultHisJson)) {
JSONObject jsonObject = JSON.parseObject(checkDuplicateResultHisJson);
Set<String> keyList = jsonObject.keySet();
List<OcrPictureDuplicateHis> list = ocrPictureDuplicateHisService.list(new LambdaQueryWrapper<OcrPictureDuplicateHis>().in(OcrPictureDuplicateHis::getPictureId, keyList));
for (OcrPictureDuplicateHis ocrPictureDuplicateHis : list) {
String checkDuplicateResultHis = ocrPictureDuplicateHis.getCheckDuplicateResultHisJson();
JSONObject json = JSON.parseObject(checkDuplicateResultHis);
json.remove(id.toString());
ocrPictureDuplicateHis.setCheckDuplicateResultHisJson(JSON.toJSONString(json));
}
ocrPictureDuplicateHisService.updateBatchById(list);
}
ocrPictureDuplicateHisService.remove(new LambdaQueryWrapper<OcrPictureDuplicateHis>().eq(OcrPictureDuplicateHis::getPictureId, id));
}
//查重结果
OcrCheckDuplicateResult duplicateResult = ocrCheckDuplicateResultService.getOne(new LambdaQueryWrapper<OcrCheckDuplicateResult>().eq(OcrCheckDuplicateResult::getPictureId, id));
String compareResultJson = duplicateResult.getCompareResultJson();
if (StringUtils.isNotBlank(compareResultJson)) {
JSONObject jsonObject = JSON.parseObject(compareResultJson);
Set<String> keyList = jsonObject.keySet();
List<OcrCheckDuplicateResult> list = ocrCheckDuplicateResultService.list(new LambdaQueryWrapper<OcrCheckDuplicateResult>().in(OcrCheckDuplicateResult::getPictureId, keyList));
for (OcrCheckDuplicateResult checkDuplicateResult : list) {
String resultCompareResultJson = checkDuplicateResult.getCompareResultJson();
JSONObject json = JSON.parseObject(resultCompareResultJson);
json.remove(id.toString());
checkDuplicateResult.setCompareResultJson(JSON.toJSONString(json));
}
ocrCheckDuplicateResultService.updateBatchById(list);
}
ocrCheckDuplicateResultService.remove(new LambdaQueryWrapper<OcrCheckDuplicateResult>().eq(OcrCheckDuplicateResult::getPictureId, id));
} }
public void bubbleSortOpt(List<OcrPicture> compareList) { public void bubbleSortOpt(List<OcrPicture> compareList) {
@ -710,7 +756,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
} }
@Override @Override
public int savePictures(List<OcrPicture> ocrPictureList){ public int savePictures(List<OcrPicture> ocrPictureList) {
//1.字典数据 解析入库 //1.字典数据 解析入库
boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList); boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList);
@ -722,9 +768,9 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
try { try {
boolean saveBatch = false; boolean saveBatch = false;
synchronized(lock) { synchronized (lock) {
// 同步的代码块 // 同步的代码块
saveBatch = this.saveOrUpdateBatch(ocrPictureList); saveBatch = this.saveOrUpdateBatch(ocrPictureList);
} }
//3.添加图片信息 //3.添加图片信息
@ -733,9 +779,9 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
this.convertImage(ocrPictureList); this.convertImage(ocrPictureList);
return ocrPictureList.size(); return ocrPictureList.size();
} }
log.error("存储图片失败:{}",JSONObject.toJSON(ocrPictureList)); log.error("存储图片失败:{}", JSONObject.toJSON(ocrPictureList));
}catch (Exception e){ } catch (Exception e) {
log.error("存储图片异常:{}",e.getMessage()); log.error("存储图片异常:{}", e.getMessage());
} }
return 0; return 0;
@ -745,7 +791,7 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
List<OcrPictureInfo> list = new ArrayList<>(); List<OcrPictureInfo> list = new ArrayList<>();
for (OcrPicture ocrPicture : ocrPictureList) { for (OcrPicture ocrPicture : ocrPictureList) {
if (StringUtils.isNotBlank(ocrPicture.getImgurl())) { if (StringUtils.isNotBlank(ocrPicture.getImgurl())) {
OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(),true); OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(), true);
if (ObjectUtil.isNotEmpty(imageInfo)) { if (ObjectUtil.isNotEmpty(imageInfo)) {
imageInfo.setPictureId(ocrPicture.getId()); imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname()); imageInfo.setImgName(ocrPicture.getImgname());
@ -758,17 +804,18 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
/** /**
* *
*
* @param ocrPicture * @param ocrPicture
*/ */
@Override @Override
public void savePicturesInfo(OcrPicture ocrPicture) { public void savePicturesInfo(OcrPicture ocrPicture) {
boolean isConnection = true; boolean isConnection = true;
String url = ocrPicture.getImgurl(); String url = ocrPicture.getImgurl();
if(!StringUtils.isEmpty(ocrPicture.getLocalpictrueurl())){ if (!StringUtils.isEmpty(ocrPicture.getLocalpictrueurl())) {
url = ocrPicture.getLocalpictrueurl(); url = ocrPicture.getLocalpictrueurl();
isConnection = false; isConnection = false;
} }
OcrPictureInfo imageInfo = getImageInfo(url,isConnection); OcrPictureInfo imageInfo = getImageInfo(url, isConnection);
imageInfo.setPictureId(ocrPicture.getId()); imageInfo.setPictureId(ocrPicture.getId());
imageInfo.setImgName(ocrPicture.getImgname()); imageInfo.setImgName(ocrPicture.getImgname());
ocrPictureInfoService.save(imageInfo); ocrPictureInfoService.save(imageInfo);
@ -776,16 +823,17 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
/** /**
* *
* @param imageUrl *
* @param imageUrl
* @param isConnection url * @param isConnection url
* @return * @return
*/ */
private OcrPictureInfo getImageInfo(String imageUrl,boolean isConnection) { private OcrPictureInfo getImageInfo(String imageUrl, boolean isConnection) {
try { try {
BufferedImage image = null; BufferedImage image = null;
Integer imageSize = 0; Integer imageSize = 0;
if(isConnection){ if (isConnection) {
// 创建URL对象 // 创建URL对象
URL url = new URL(imageUrl); URL url = new URL(imageUrl);
// 打开连接 // 打开连接
@ -793,11 +841,11 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
// 获取图片大小 // 获取图片大小
imageSize = urlConnection.getContentLength(); imageSize = urlConnection.getContentLength();
// 使用ImageIO读取图片 // 使用ImageIO读取图片
image= ImageIO.read(url); image = ImageIO.read(url);
}else{ } else {
File file = new File(imageUrl); File file = new File(imageUrl);
image = ImageIO.read(file); image = ImageIO.read(file);
imageSize =(int)file.length(); imageSize = (int) file.length();
} }
if (image != null) { if (image != null) {
@ -844,7 +892,6 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
} }
private void convertImage(List<OcrPicture> list) { private void convertImage(List<OcrPicture> list) {
for (OcrPicture ocrPicture : list) { for (OcrPicture ocrPicture : list) {
PictureImgToLocalEntity entity = new PictureImgToLocalEntity(); PictureImgToLocalEntity entity = new PictureImgToLocalEntity();
@ -855,15 +902,15 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
boolean addedToQueue = false; boolean addedToQueue = false;
int count = 1; int count = 1;
while (!addedToQueue){ while (!addedToQueue) {
try { try {
addedToQueue = TaskQueue.pictureImgToLocalPushData(entity); addedToQueue = TaskQueue.pictureImgToLocalPushData(entity);
if(addedToQueue) { if (addedToQueue) {
break; break;
} }
Thread.sleep(5000); Thread.sleep(5000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.error("放入图片下载队列,等待休眠异常:{}",e.getMessage()); log.error("放入图片下载队列,等待休眠异常:{}", e.getMessage());
} }
count++; count++;
} }

@ -259,11 +259,13 @@
</select> </select>
<select id="getPictureApproveResult" resultType="java.lang.String"> <select id="getPictureApproveResult" resultType="java.lang.String">
SELECT SELECT CONCAT('审批节点:', t1.TASKNAME, ',审批结果:', (CASE
CONCAT('审批节点:',t1.TASKNODE,',审批结果:',t1.STATES,',不通过原因:',t2.REASON) WHEN t1.STATES = 5 THEN '审批不通过'
FROM WHEN t1.STATES = 3 THEN '审批通过'
ocr_taskchild_picture t1 ELSE '审批中' END), ',不通过原因:', t2.REASON,
LEFT JOIN oa_userapprove_t t2 ON t1.ID = t2.FORMID ',备注:', t2.TASKCOMMENT)
where t1.PICTUREID = #{id,jdbcType=BIGINT} FROM ocr_taskchild_picture t1
LEFT JOIN oa_userapprove_t t2 ON t1.ID = t2.FORMID
where t1.PICTUREID = #{id,jdbcType=BIGINT}
</select> </select>
</mapper> </mapper>

Loading…
Cancel
Save