From ed91a64ee13d20c5ba97c4338571f81d11eaa2c5 Mon Sep 17 00:00:00 2001 From: sunchenliang <2532527871@qq.com> Date: Mon, 25 Mar 2024 09:53:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E9=94=AE=E6=9F=A5?= =?UTF-8?q?=E9=87=8D=E6=B7=BB=E5=8A=A0=E5=88=9B=E5=BB=BA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/OcrTaskchildPictureService.java | 11 ++- .../impl/OcrCheckDuplicateServiceImpl.java | 87 ++++++++++--------- .../impl/OcrTaskchildPictureServiceImpl.java | 77 ++++++++++++---- 3 files changed, 118 insertions(+), 57 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java index 8b00fa35..3dfdc20a 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrTaskchildPictureService.java @@ -28,7 +28,16 @@ public interface OcrTaskchildPictureService extends BaseService taskids); - + + /** + * 创建任务 + * @param ocrPictureList + * @param tenantId + * @param sysUser + */ + public void createTask(List ocrPictureList, String tenantId,UserToken sysUser); + + /** * 查询智能识别 * @param packageid 任务包主键 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 e8bb5f53..55eb172d 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 @@ -19,10 +19,7 @@ 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.IOcrCheckDuplicateResultService; -import cn.jyjz.xiaoyao.ocr.service.IOcrCheckDuplicateService; -import cn.jyjz.xiaoyao.ocr.service.IOcrPictureDuplicateHisService; -import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; +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; @@ -33,6 +30,7 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.SneakyThrows; import lombok.extern.log4j.Log4j; +import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -71,23 +69,25 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl ocrPictureList, String tenantId, UserToken sysUser, HttpServletRequest req,Map paraMap) { + public ResultVo duplicateCheck(List ocrPictureList, String tenantId, UserToken sysUser, HttpServletRequest req, Map paraMap) { if (null != ocrPictureList && !ocrPictureList.isEmpty()) { //生成查重任务插入表ocr_check_duplicate OcrCheckDuplicate ocrCheckDuplicate = new OcrCheckDuplicate(); // 生成查重任务编号,规则用户id+当前年月日时分秒 - String checkDuplicateNoStr = sysUser.getUserid()+"-"+ DateUtils.parseDateToStr("yyyyMMddHHmmss",new Date()); + String checkDuplicateNoStr = sysUser.getUserid() + "-" + DateUtils.parseDateToStr("yyyyMMddHHmmss", new Date()); ocrCheckDuplicate.setCheckDuplicateNo(checkDuplicateNoStr); ocrCheckDuplicate.setTenantId(Long.valueOf(tenantId)); ocrCheckDuplicate.setCreateBy(sysUser.getUserid()); @@ -107,12 +107,12 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("check_duplicate_no",checkDuplicateNo); + queryWrapper.eq("check_duplicate_no", checkDuplicateNo); OcrCheckDuplicate ocrCheckDuplicate = ocrCheckDuplicateMapper.selectOne(queryWrapper); @@ -152,14 +151,14 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("tenant_id",tenantId); - queryWrapper.eq("status","1"); - queryWrapper.eq("is_delete",0); + queryWrapper.eq("tenant_id", tenantId); + queryWrapper.eq("status", "1"); + queryWrapper.eq("is_delete", 0); queryWrapper.orderByDesc("create_time"); List list = ocrCheckDuplicateMapper.selectList(queryWrapper); - if(CollUtil.isNotEmpty(list)){ + if (CollUtil.isNotEmpty(list)) { return list.get(0).getCheckDuplicateNo(); - }else{ + } else { return null; } } @@ -175,7 +174,7 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl ocrPictureList,UserToken sysUser,Long checkDuplicateId) throws Exception { + public void comparePictureResultSave(List ocrPictureList, UserToken sysUser, Long checkDuplicateId) throws Exception { List saveList = new ArrayList<>(); //需要创建任务的图片集合 @@ -237,10 +236,10 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl0; + return baseMapper.update(ocrCheckDuplicate, queryWrapper) > 0; } @Override public OcrCheckDuplicate queryByCheckDuplicateNo(String checkDuplicateNo, Long tenantId) { QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("tenant_id",tenantId); - queryWrapper.eq("check_duplicate_no",checkDuplicateNo); + queryWrapper.eq("tenant_id", tenantId); + queryWrapper.eq("check_duplicate_no", checkDuplicateNo); OcrCheckDuplicate ocrCheckDuplicate = ocrCheckDuplicateMapper.selectOne(queryWrapper); return ocrCheckDuplicate; } /** * 更新图片最高历史阈值 + * * @param saveList * @return */ private boolean updatePictureSimilarityScore(List saveList) throws Exception { List updateList = new ArrayList<>(); for (OcrCheckDuplicateResult ocrCheckDuplicateResult : saveList) { - OcrPicture picture = pictureService.selectDtoById(ocrCheckDuplicateResult.getPictureId()); + OcrPicture picture = pictureService.selectDtoById(ocrCheckDuplicateResult.getPictureId()); OcrPicture ocrPicture = new OcrPicture(); //如果当前图片没有历史阈值,直接更新上阈值 - if(picture.getSimilarityscore()==null){ + if (picture.getSimilarityscore() == null) { ocrPicture.setId(picture.getId()); ocrPicture.setSimilarityscore(ocrCheckDuplicateResult.getMaxSimilarity().intValue()); updateList.add(ocrPicture); @@ -301,17 +306,17 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl newMap = newObjectMapper.readValue(checkDuplicateResult.getCompareResultJson(), HashMap.class); + Map newMap = newObjectMapper.readValue(checkDuplicateResult.getCompareResultJson(), HashMap.class); //创建当前用于存储的历史map Map hisMap = new HashMap<>(); //定义处理对象 OcrPictureDuplicateHis pictureDuplicate = new OcrPictureDuplicateHis(); - if(pictureDuplicateHis!=null){ + if (pictureDuplicateHis != null) { //检查当前是否存在 历史 - if(StringUtils.isNotBlank(pictureDuplicateHis.getCheckDuplicateResultHisJson())){ + if (StringUtils.isNotBlank(pictureDuplicateHis.getCheckDuplicateResultHisJson())) { ObjectMapper hisObjectMapper = new ObjectMapper(); hisMap = hisObjectMapper.readValue(pictureDuplicateHis.getCheckDuplicateResultHisJson(), HashMap.class); for (String key : newMap.keySet()) { //开始变更旧map - hisMap.put(key,newMap.get(key)); + hisMap.put(key, newMap.get(key)); } pictureDuplicate.setId(pictureDuplicateHis.getId()); pictureDuplicate.setCheckDuplicateResultHisJson(JSONObject.toJSONString(hisMap)); @@ -361,14 +366,14 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl0){ - if(!pictureDuplicateHisService.updateBatchById(updateList)){ + if (updateList.size() > 0) { + if (!pictureDuplicateHisService.updateBatchById(updateList)) { throw new Exception("更新图片历史比对失败!"); } } - if(insertList.size()>0){ - if(!pictureDuplicateHisService.saveBatch(insertList)){ + if (insertList.size() > 0) { + if (!pictureDuplicateHisService.saveBatch(insertList)) { throw new Exception("新增图片历史比对失败!"); } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java index 252ee958..1f278076 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrTaskchildPictureServiceImpl.java @@ -2,6 +2,7 @@ package cn.jyjz.xiaoyao.ocr.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.jyjz.flowable.common.SystemConstantsOa; +import cn.jyjz.flowable.service.IFlowInstanceService; import cn.jyjz.flowable.service.IFlowTaskService; import cn.jyjz.xiaoyao.common.base.param.ParamterPage; import cn.jyjz.xiaoyao.common.base.service.UserTokenService; @@ -10,7 +11,9 @@ 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.common.mybatisplus.util.SearchQueryFormat; +import cn.jyjz.xiaoyao.oa.from.dataobject.Category; import cn.jyjz.xiaoyao.oa.from.dataobject.Userapprove; +import cn.jyjz.xiaoyao.oa.from.service.CategoryService; import cn.jyjz.xiaoyao.oa.from.service.UserapproveService; import cn.jyjz.xiaoyao.ocr.dataDao.OcrTaskchildPictureMybatisDao; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; @@ -33,9 +36,12 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.stereotype.Service; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import java.util.*; @@ -62,6 +68,12 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl ocrPictureList, String tenantId, UserToken userToken) { + if (null != ocrPictureList && !ocrPictureList.isEmpty()) { + //用于标记相似度是否存在百分百的情况 + for (OcrPicture ocrPicture : ocrPictureList) { + //查询项目对象 + if (null == ocrPicture.getCategoryid()) { + //TODO 没有对应项目,返回提示信息 + continue; + } + Category category = categoryService.getById(ocrPicture.getCategoryid()); + if (null == category || StringUtils.isBlank(category.getProcessdefinitionid())) { + continue; + } + //创建工单,如果创建成功,增加标志,用于过滤条件使用 + OcrTaskchildPicture ocrTaskchildPicture = this.create(ocrPicture, tenantId, userToken, null, null); + if (null != ocrTaskchildPicture) { + MockHttpServletRequest request = new MockHttpServletRequest(); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); + //发起流程 + flowInstanceService.startProcessInstanceById( + category.getProcessdefinitionid(), + null, + request, + ocrTaskchildPicture.getId().toString(), + category.getServicename() + ); + //TODO 需要测试 + ocrPicture.setTaskchildpictureid(ocrTaskchildPicture.getId().toString()); + ocrPictureService.updateById(ocrPicture); + } + } + } + } + /** * 查询智能识别 * @@ -501,21 +548,21 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl