sunchenliang #35

Merged
sunchenliang merged 9 commits from sunchenliang into test 1 year ago

@ -52,7 +52,7 @@ public class OcrAiApprovalTools {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
ResultVo toolscount = iocrsearchhistoryservice.toolscount(tenantId); ResultVo toolscount = iocrsearchhistoryservice.toolscount(tenantId,userToken.getUserid());
return toolscount; return toolscount;
} }
@ -60,10 +60,11 @@ public class OcrAiApprovalTools {
ai ai
*/ */
@RequestMapping(value = "/aiApprovaltools", method = RequestMethod.GET) @RequestMapping(value = "/aiApprovaltools", method = RequestMethod.GET)
public ResultVo aiApprovaltools(HttpServletRequest request,@RequestParam(value = "taskid", required = true) String taskid) { public ResultVo aiApprovaltools(HttpServletRequest request,@RequestParam(value = "taskid", required = true) String taskid,
@RequestParam(value = "nodeType", required = true) Integer nodeType) {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request)); UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
Map<Object, Object> selectaisp = iocrsearchhistoryservice.selectaisp(userToken.getUserid(), taskid); Map<Object, Object> selectaisp = iocrsearchhistoryservice.selectaisp(userToken.getUserid(), taskid,nodeType);
return ResultVoUtil.success(selectaisp); return ResultVoUtil.success(selectaisp);
} }

@ -83,6 +83,7 @@ public class OcrCheckDuplicateController {
queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap); queryWrapper = SearchParaFormatting.searchParaParse(queryWrapper, paraMap);
queryWrapper.eq("tenant_id", tenantId); queryWrapper.eq("tenant_id", tenantId);
queryWrapper.eq("suspiciousfile", "0");
List<OcrPicture> pageList = ocrPictureService.listPage(queryWrapper); List<OcrPicture> pageList = ocrPictureService.listPage(queryWrapper);
if (null != pageList && !pageList.isEmpty()) { if (null != pageList && !pageList.isEmpty()) {
if (pageList.size() == 1) { if (pageList.size() == 1) {

@ -27,9 +27,13 @@ public interface OcrSearchHistoryMapper extends BaseMapper<OcrSearchHistory> {
Map<Object,Object> toolscount(@Param("tenantid")String tenantid); // Map<Object,Object> toolscount(@Param("tenantid")String tenantid);
Map<Object,Object> toolscount(@Param("userId")String userId);
Map<Object,Object> selectaisp(@Param("id")String id); Map<Object,Object> selectaisp(@Param("id")String id);
List<Map<Object, Object>> selectaispList(@Param("id")String id);
String selectaiuser(@Param("userid")String userid); String selectaiuser(@Param("userid")String userid);
} }

@ -19,9 +19,9 @@ import java.util.Map;
public interface IOcrSearchHistoryService extends IService<OcrSearchHistory> { public interface IOcrSearchHistoryService extends IService<OcrSearchHistory> {
Map<Object, List<Map<String,String>>> selectsearch(String search, String assignee, String userId, String tenantId); Map<Object, List<Map<String,String>>> selectsearch(String search, String assignee, String userId, String tenantId);
ResultVo toolscount(String tenantid); ResultVo toolscount(String tenantid,String userId);
Map<Object,Object> selectaisp(String userid,String id); Map<Object,Object> selectaisp(String userid,String id,Integer nodeType);
ResultVo clearmark(String id); ResultVo clearmark(String id);

@ -33,6 +33,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -104,6 +106,12 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
checkDuplicateService.comparePictureResultSave(ocrPictureList, sysUser, id); checkDuplicateService.comparePictureResultSave(ocrPictureList, sysUser, id);
checkDuplicate.setStatus(2); checkDuplicate.setStatus(2);
} catch (Exception e) { } catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
String exceptionDetails = sw.toString(); // 包含堆栈跟踪信息的字符串
logger.error(exceptionDetails);
logger.error("异步执行图片比对异常:", e);
logger.error("异步执行图片比对异常:", e.getMessage()); logger.error("异步执行图片比对异常:", e.getMessage());
checkDuplicate.setStatus(3); checkDuplicate.setStatus(3);
} finally { } finally {
@ -182,7 +190,15 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
logService.addLog(103, "AI获取图片相似度接口", sysUser, "sendParams"); logService.addLog(103, "AI获取图片相似度接口", sysUser, "sendParams");
if (org.apache.commons.lang3.StringUtils.isBlank(ocrPicture.getImgHash())) { if (org.apache.commons.lang3.StringUtils.isBlank(ocrPicture.getImgHash())) {
Map<String, String> map = this.getOcrPictureClassifyAndHash(ocrPicture.getLocalpictrueurl()); String url = ocrPicture.getLocalpictrueurl();
if(StringUtils.isBlank(url)){
if(StringUtils.isBlank(ocrPicture.getImgurl())){
continue;
}
url = ocrPicture.getImgurl();
}
Map<String, String> map = this.getOcrPictureClassifyAndHash(url);
if (map != null) { if (map != null) {
ocrPicture.setImgHash(map.get("hash")); ocrPicture.setImgHash(map.get("hash"));
ocrPicture.setClassificationid(map.get("classId")); ocrPicture.setClassificationid(map.get("classId"));
@ -203,7 +219,15 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
//分类不一致的也不需要进行比对 //分类不一致的也不需要进行比对
//TODO 接口请求判断重复情况 //TODO 接口请求判断重复情况
if (org.apache.commons.lang3.StringUtils.isBlank(ocrPictureNext.getImgHash())) { if (org.apache.commons.lang3.StringUtils.isBlank(ocrPictureNext.getImgHash())) {
Map<String, String> map = this.getOcrPictureClassifyAndHash(ocrPictureNext.getLocalpictrueurl()); logger.info("图片没有hash值进入分类并获取hash接口:{}",JSONObject.toJSON(ocrPictureNext));
String url = ocrPictureNext.getLocalpictrueurl();
if(StringUtils.isBlank(url)){
if(StringUtils.isBlank(ocrPictureNext.getImgurl())){
continue;
}
url = ocrPictureNext.getImgurl();
}
Map<String, String> map = this.getOcrPictureClassifyAndHash(url);
if (map != null) { if (map != null) {
ocrPictureNext.setImgHash(map.get("hash")); ocrPictureNext.setImgHash(map.get("hash"));
ocrPictureNext.setClassificationid(map.get("classId")); ocrPictureNext.setClassificationid(map.get("classId"));
@ -247,18 +271,26 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
} }
} }
logger.info("查重任务:{},开启创建任务",checkDuplicateId);
if (CollectionUtils.isNotEmpty(ocrPictureList)) { if (CollectionUtils.isNotEmpty(ocrPictureList)) {
ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser); ocrTaskchildPictureService.createTask(ocrPictureList, ocrPictureList.get(0).getTenantId().toString(), sysUser);
} }
logger.info("查重任务:{},结束创建任务",checkDuplicateId);
//批量入库 //批量入库
logger.info("查重任务:{},开启批量入库任务",checkDuplicateId);
boolean b = checkDuplicateResultService.saveOrUpdateBatch(saveList); boolean b = checkDuplicateResultService.saveOrUpdateBatch(saveList);
if (!b) { if (!b) {
throw new Exception("批量入库比对结果失败!"); throw new Exception("批量入库比对结果失败!");
} }
logger.info("查重任务:{},结束批量入库任务",checkDuplicateId);
//开始更新图片最高阈值 //开始更新图片最高阈值
logger.info("查重任务:{},更新最高阈值",checkDuplicateId);
this.updatePictureSimilarityScore(saveList); this.updatePictureSimilarityScore(saveList);
logger.info("查重任务:{},结束更新最高阈值",checkDuplicateId);
//开始更新 图片历史比对数据结果 //开始更新 图片历史比对数据结果
logger.info("查重任务:{},更新图片历史比对结果",checkDuplicateId);
this.updateCompareToPictureDuplicateHis(saveList); this.updateCompareToPictureDuplicateHis(saveList);
logger.info("查重任务:{},结束图片历史比对结果",checkDuplicateId);
} }
@Override @Override

@ -1,15 +1,21 @@
package cn.jyjz.xiaoyao.ocr.service.impl; package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.jyjz.xiaoyao.admin.dataobject.User;
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.ResultVo;
import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil;
import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.redis.cache.ICacheManager; import cn.jyjz.xiaoyao.common.redis.cache.ICacheManager;
import cn.jyjz.xiaoyao.common.redis.cache.constants.CacheConstants; import cn.jyjz.xiaoyao.common.redis.cache.constants.CacheConstants;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrSearchHistory; import cn.jyjz.xiaoyao.ocr.dataobject.OcrSearchHistory;
import cn.jyjz.xiaoyao.ocr.service.IOcrSearchHistoryService; import cn.jyjz.xiaoyao.ocr.service.IOcrSearchHistoryService;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService; import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrSearchHistoryMapper; import cn.jyjz.xiaoyao.ocr.dataDao.OcrSearchHistoryMapper;
@ -59,51 +65,104 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl<OcrSearchHistoryMap
} }
@Override @Override
public ResultVo toolscount(String tenantid) { public ResultVo toolscount(String tenantid,String userId) {
//系统中记录的ai统计租户id //系统中记录的ai统计租户id
String counttenantid = iCacheManager.get(CacheConstants.TOOLSCOUNT_TENANTID_MODEL_NAME,tenantid); String counttenantid = iCacheManager.get(CacheConstants.TOOLSCOUNT_TENANTID_MODEL_NAME,tenantid+"_"+userId);
// if(!StringUtils.isBlank(counttenantid)){ // if(!StringUtils.isBlank(counttenantid)){
// return ResultVoUtil.error("true"); // return ResultVoUtil.error("true");
// } // }
//用户登录信息写入缓存 //用户登录信息写入缓存
iCacheManager.put(CacheConstants.TOOLSCOUNT_TENANTID_MODEL_NAME,tenantid,"true",CacheConstants.TOOLSCOUNT_TENANTID_CACHE_TIME); iCacheManager.put(CacheConstants.TOOLSCOUNT_TENANTID_MODEL_NAME,tenantid+"_"+userId,"true",CacheConstants.TOOLSCOUNT_TENANTID_CACHE_TIME);
Map<Object, Object> toolscount = ocrsearchhistorymapper.toolscount(tenantid); Map<Object, Object> toolscount = ocrsearchhistorymapper.toolscount(userId);
return ResultVoUtil.success(toolscount); return ResultVoUtil.success(toolscount);
} }
// @Override
// public Map<Object, Object> selectaisp(String userid,String id) {
// Map<Object, Object> selectaisp = ocrsearchhistorymapper.selectaisp(id);
// if(null==selectaisp){
// return null;
// }
// String selectaiuser = ocrsearchhistorymapper.selectaiuser(userid);
//
// String[] cps = selectaisp.get("pictureresult").toString().split(",");
//
// List<OcrPicture> saveList = new ArrayList<>();
// int i=0;
// for (String childpictureid : cps) {
// if (childpictureid.equals("100")){
// i++;
// }
// }
//
// Map<Object,Object> map=new HashMap<>();
// map.put("taskid",id);
// map.put("tenantusername",selectaiuser);
// map.put("packagename",selectaisp.get("packagename"));
// map.put("tasks","基线任务");
//// map.put("similarcount",selectaisp.get("similarcount"));
// map.put("createtime",selectaisp.get("createtime"));
// map.put("similarComplete",i);
//
// return map;
// }
@Override @Override
public Map<Object, Object> selectaisp(String userid,String id) { public Map<Object, Object> selectaisp(String userid, String id,Integer nodeType) {
Map<Object, Object> selectaisp = ocrsearchhistorymapper.selectaisp(id); List<Map<Object, Object>> resultList = ocrsearchhistorymapper.selectaispList(id);
if(null==selectaisp){ if (resultList == null || resultList.isEmpty()) {
return null; return Collections.emptyMap();
} }
String selectaiuser = ocrsearchhistorymapper.selectaiuser(userid);
String[] cps = selectaisp.get("pictureresult").toString().split(","); Map<Object, Object> mappedResults = new LinkedHashMap<>();
String selectaiuser = ocrsearchhistorymapper.selectaiuser(userid);
List<OcrPicture> saveList = new ArrayList<>(); mappedResults.put("packageId", id);
int i=0; mappedResults.put("tenantUserName", selectaiuser);
for (String childpictureid : cps) { mappedResults.put("packageName", resultList.get(0).get("packageName"));
if (childpictureid.equals("100")){ mappedResults.put("createTime", resultList.get(0).get("createTime"));
i++; int similarComplete = 0;
List<String> pictureIds = new ArrayList<>(); // 存储所有的pictureId
for (Map<Object, Object> selectaisp : resultList) {
Object pictureResult = selectaisp.get("pictureResult");
String pictureResultStr = pictureResult.toString();
if ("100.0".equals(pictureResultStr)) {
similarComplete++;
Long pictureId = (Long) selectaisp.get("pictureId");
if (pictureId != null) {
pictureIds.add(String.valueOf(pictureId)); // 转换为String
}
}
}
if(similarComplete==0){
return Collections.emptyMap();
}
List<String> pendingApprovalList = new ArrayList<>(); // 存储待审批的pictureId集合
List<String> approvedList = new ArrayList<>(); // 存储通过的pictureId集合
List<String> failedList = new ArrayList<>(); // 存储不通过的pictureId集合
List<OcrPicture> failedPictureIds = ocrPictureService.getPictureNodeStatesList(pictureIds, nodeType);
for (OcrPicture picture : failedPictureIds) {
if (picture.getHistoryStates() == 3) {
failedList.add(picture.getPictureid());
} else if (picture.getHistoryStates() == 1) {
pendingApprovalList.add(picture.getPictureid());
} else if (picture.getHistoryStates() == 2) {
approvedList.add(picture.getPictureid());
} }
} }
Map<Object,Object> map=new HashMap<>(); int pendingApprovaCount = pendingApprovalList.size(); // 待审批的数量
map.put("taskid",id); int passCount = approvedList.size(); // 通过的数量
map.put("tenantusername",selectaiuser); mappedResults.put("similarComplete", similarComplete);
map.put("packagename",selectaisp.get("packagename")); mappedResults.put("passCount", passCount);
map.put("tasks","基线任务"); mappedResults.put("pendingApprovaCount", pendingApprovaCount);
// map.put("similarcount",selectaisp.get("similarcount")); mappedResults.put("pictureIdList", pendingApprovalList);
map.put("createtime",selectaisp.get("createtime")); return mappedResults;
map.put("similarComplete",i);
return map;
} }
@Override @Override
public ResultVo clearmark(String id) { public ResultVo clearmark(String id) {

@ -59,29 +59,37 @@
</select> </select>
<!-- <select id="toolscount" resultType="map">-->
<!-- SELECT-->
<!-- (SELECT COUNT(*) FROM ocr_taskchild_picture WHERE TENANTID = ""#{tenantid}"") as taskTotal,-->
<!-- (SELECT COUNT(*) FROM ocr_taskchild_picture WHERE TENANTID = ""#{tenantid}"" AND STATES = '2') as treat,-->
<!-- (SELECT COUNT(*) FROM ocr_taskchild_picture WHERE TENANTID = ""#{tenantid}"" AND STATES = '3') as approved-->
<!-- </select>-->
<select id="toolscount" resultType="map"> <select id="toolscount" resultType="map">
SELECT SELECT
(SELECT COUNT(*) FROM ocr_taskchild_picture WHERE TENANTID = ""#{tenantid}"") as taskTotal, (SELECT COUNT(*) FROM oa_userapprove_t WHERE USERID = #{userId} AND TASKNAME = '一级审批') as total,
(SELECT COUNT(*) FROM ocr_taskchild_picture WHERE TENANTID = ""#{tenantid}"" AND STATES = '2') as treat, (SELECT COUNT(*) FROM oa_userapprove_t WHERE USERID = #{userId} AND TASKNAME = '一级审批' AND STATSHIS IS NULL) as treat,
(SELECT COUNT(*) FROM ocr_taskchild_picture WHERE TENANTID = ""#{tenantid}"" AND STATES = '3') as approved (SELECT COUNT(*) FROM oa_userapprove_t WHERE USERID = #{userId} AND TASKNAME = '一级审批' AND STATSHIS = 2) as approved
</select> </select>
<!-- <select id="selectaisp" resultType="map">--> <select id="selectaisp" resultType="map">
<!-- SELECT--> SELECT
<!-- rw.ID as id,rw.OCPICTUREID as ocpictureid,t.packagename,rw.PICTURERESULT as pictureresult,count(length(rw.PICTURERESULT)-length(replace(rw.PICTURERESULT,',',''))+1) as similarcount,t.create_time as createtime--> rw.ID as id,rw.OCPICTUREID as ocpictureid,t.packagename,rw.PICTURERESULT as pictureresult,count(length(rw.PICTURERESULT)-length(replace(rw.PICTURERESULT,',',''))+1) as similarcount,t.create_time as createtime
<!-- FROM--> FROM
<!-- ocr_taskchild_picture rw--> ocr_taskchild_picture rw
<!-- LEFT JOIN ocr_packagetask t ON rw.PACKAGEID = t.ID--> LEFT JOIN ocr_packagetask t ON rw.PACKAGEID = t.ID
<!-- WHERE t.ID = #{id}--> WHERE t.ID = #{id}
<!-- </select>--> </select>
<select id="selectaisp" resultType="map"> <select id="selectaispList" resultType="map">
SELECT SELECT
tp.id as id, tp.id as id,
tp.name as packagename, tp.name as packageName,
GROUP_CONCAT(IFNULL(cdr.max_similarity, 0)) as pictureresult, cdr.picture_id as pictureId,
tp.create_time as createtime IFNULL(cdr.max_similarity, 0) as pictureResult,
tp.create_time as createTime
FROM FROM
ocr_task_package tp ocr_task_package tp
LEFT JOIN ocr_check_duplicate_result cdr ON tp.check_duplicate_id = cdr.check_duplicate_id LEFT JOIN ocr_check_duplicate_result cdr ON tp.check_duplicate_id = cdr.check_duplicate_id
@ -89,6 +97,7 @@
tp.ID = #{id} tp.ID = #{id}
</select> </select>
<select id="selectaiuser" resultType="String"> <select id="selectaiuser" resultType="String">
SELECT CONCAT_WS( "-", t.`NAME`, u.USERNAME ) as tenantusername FROM s_user_t u LEFT JOIN s_user_tenant_t z ON u.ID = z.USERID SELECT CONCAT_WS( "-", t.`NAME`, u.USERNAME ) as tenantusername FROM s_user_t u LEFT JOIN s_user_tenant_t z ON u.ID = z.USERID
LEFT JOIN s_tenant_t t ON z.TENANTID = t.ID WHERE u.ID = #{userid} LEFT JOIN s_tenant_t t ON z.TENANTID = t.ID WHERE u.ID = #{userid}

@ -593,9 +593,9 @@
t1.photo_date_timestamp photoDateTimestamp t1.photo_date_timestamp photoDateTimestamp
FROM ocr_picture t1 FROM ocr_picture t1
LEFT JOIN ocr_taskchild_picture t2 LEFT JOIN ocr_taskchild_picture t2
on t1.ID = t2.PICTUREID and t1.suspiciousfile = 0 on t1.ID = t2.PICTUREID
LEFT JOIN oa_userapprove_t t3 on t2.ID = t3.FORMID and t3.TASKNAME = '${taskname}' LEFT JOIN oa_userapprove_t t3 on t2.ID = t3.FORMID and t3.TASKNAME = '${taskname}'
where t1.ID in where t1.suspiciousfile = 0 and t1.ID in
<foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index"> <foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index">
#{item} #{item}
</foreach> </foreach>
@ -698,10 +698,10 @@
t1.max_similarity maxSimilarity, t1.max_similarity maxSimilarity,
ifnull(t4.STATSHIS, 1) historyStates ifnull(t4.STATSHIS, 1) historyStates
FROM ocr_check_duplicate_result t1 FROM ocr_check_duplicate_result t1
LEFT JOIN ocr_picture t2 ON t1.picture_id = t2.ID and t2.suspiciousfile = 0 LEFT JOIN ocr_picture t2 ON t1.picture_id = t2.ID
LEFT JOIN ocr_taskchild_picture t3 ON t2.ID = t3.PICTUREID LEFT JOIN ocr_taskchild_picture t3 ON t2.ID = t3.PICTUREID
LEFT JOIN oa_userapprove_t t4 ON t3.ID = t4.FORMID and t4.TASKNAME = '${taskname}' LEFT JOIN oa_userapprove_t t4 ON t3.ID = t4.FORMID and t4.TASKNAME = '${taskname}'
WHERE t1.check_duplicate_id = #{checkDuplicateId} WHERE t1.check_duplicate_id = #{checkDuplicateId} and t2.suspiciousfile = 0
<if test="pictureId != null and pictureId != ''"> <if test="pictureId != null and pictureId != ''">
and t1.picture_id != #{pictureId} and t1.picture_id != #{pictureId}
</if> </if>

Loading…
Cancel
Save