fix: 20240809-bug修复

pull/166/head
Brian Lee 11 months ago
parent 8327da7f59
commit 90f502b84a

@ -440,9 +440,7 @@ public class FlowTaskController extends BaseController {
searchQuery.addEqual("states", izstatus); searchQuery.addEqual("states", izstatus);
} }
} }
if (Boolean.parseBoolean(isFail)) {
searchQuery.addEqual("isFail", "1");
}
if (org.springframework.util.StringUtils.hasText(iztaskrrom)) { if (org.springframework.util.StringUtils.hasText(iztaskrrom)) {
if (iztaskrrom.contains(",")) { if (iztaskrrom.contains(",")) {
String[] taskrromIds = iztaskrrom.split(","); // 以逗号拆分字符串 String[] taskrromIds = iztaskrrom.split(","); // 以逗号拆分字符串
@ -485,6 +483,14 @@ public class FlowTaskController extends BaseController {
if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) { if (org.apache.commons.lang3.StringUtils.isBlank(tenantId)) {
return ResultVoUtil.error("租户主键不能为空"); return ResultVoUtil.error("租户主键不能为空");
} }
//开启终审历史数据查询
if (Boolean.parseBoolean(isFail)) {
searchQuery.addEqual("isFail", "1");
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
//终审历史数据查询,要根据权限进行过滤,过滤不属于当前任务的数据。
searchQuery = contractorTaskService.getUserAuditBySearchQuery(searchQuery,userToken.getLoginname(),tenantId);
}
User user = this.userService.getSessionUser(request); User user = this.userService.getSessionUser(request);
if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) {
} else { } else {
@ -500,11 +506,11 @@ public class FlowTaskController extends BaseController {
disSearchQuery(searchQuery, userSearch); disSearchQuery(searchQuery, userSearch);
} }
} }
List<OcrContractorTask> contractorTask = contractorTaskService.list(new LambdaQueryWrapper<OcrContractorTask>().eq(OcrContractorTask::getTenantId,tenantId )); // List<OcrContractorTask> contractorTask = contractorTaskService.list(new LambdaQueryWrapper<OcrContractorTask>().eq(OcrContractorTask::getTenantId,tenantId ));
if (!org.springframework.util.CollectionUtils.isEmpty(contractorTask)) { // if (!org.springframework.util.CollectionUtils.isEmpty(contractorTask)) {
OcrContractorTask ocrContractorTask = contractorTask.get(0); // OcrContractorTask ocrContractorTask = contractorTask.get(0);
searchQuery.addEqual("contractor", ocrContractorTask.getField()); // searchQuery.addEqual("contractor", ocrContractorTask.getField());
} // }
Map<String, Object> query = searchQuery.getQuery(); Map<String, Object> query = searchQuery.getQuery();
flowTaskService.getFinalProcessInstances(query, pageUtils, user); flowTaskService.getFinalProcessInstances(query, pageUtils, user);

@ -37,6 +37,7 @@ import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedContentVo; import cn.jyjz.xiaoyao.oa.from.vo.RepeatedContentVo;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi; import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi;
import cn.jyjz.xiaoyao.ocr.dataobject.*; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.enums.UserAuditTypeEnum;
import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.service.*;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting; import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskchildPictureApproVo; import cn.jyjz.xiaoyao.ocr.vo.OcrTaskchildPictureApproVo;
@ -905,36 +906,29 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
if (StringUtils.isBlank(userTask.getAssignee())) { if (StringUtils.isBlank(userTask.getAssignee())) {
//得到候选人 //得到候选人
List<String> candidateUsers = userTask.getCandidateUsers(); List<String> candidateUsers = userTask.getCandidateUsers();
List<String> availableUsers = new ArrayList<>();
List<String> defaultUsers = new ArrayList<>();
Map<UserAuditTypeEnum,List<String>> auditMap = null;
if (null != candidateUsers && !candidateUsers.isEmpty()) { if (null != candidateUsers && !candidateUsers.isEmpty()) {
Random rand = new Random(); //1.获取任务id
OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getProcessinstanceid, processInstanceId).eq(OcrTaskchildPicture::getProcessdefinitionid, processDefinitionId)); OcrTaskchildPicture taskchildPicture = ocrTaskchildPictureService.getOne(new LambdaQueryWrapper<OcrTaskchildPicture>().eq(OcrTaskchildPicture::getProcessinstanceid, processInstanceId).eq(OcrTaskchildPicture::getProcessdefinitionid, processDefinitionId));
OcrPicture first = ocrPictureService.getOne(new LambdaQueryWrapper<OcrPicture>().eq(OcrPicture::getId, taskchildPicture.getPictureid())); if (taskchildPicture!=null){
List<OcrContractorTask> contractorList = contractorTaskService.list(new LambdaQueryWrapper<OcrContractorTask>().eq(OcrContractorTask::getTenantId, taskchildPicture.getTenantid())); //2.任务审核鉴权,(确定由那个用户进行审核)
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(contractorList)) { auditMap = ocrPictureService.userAuditRights(taskchildPicture.getPictureid(),candidateUsers);
List<String> userList = contractorList.stream().map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList()); if (auditMap!=null){
Class<? extends OcrPicture> aClass = first.getClass(); availableUsers = auditMap.get(UserAuditTypeEnum.AvailableUser);
Field field = aClass.getDeclaredField(contractorList.get(0).getField()); defaultUsers = auditMap.get(UserAuditTypeEnum.DefaultUser);
field.setAccessible(true);
String fieldValue = (String) field.get(first);
log.info("厂商名称------{}", fieldValue);
List<String> collect = contractorList.stream().filter(contractorTask -> contractorTask.getContractor().equals(fieldValue)).map(OcrContractorTask::getTaskUserAssignee).collect(Collectors.toList());
List<String> assigneeList = getUserCollect(candidateUsers,collect,true);
// for (String str : candidateUsers) {
// if (collect.contains(str)) {
// assigneeList.add(str);
// }
// }
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(assigneeList)) {
taskService.claim(task.getId(), assigneeList.get(rand.nextInt(assigneeList.size())));
}
if (CollectionUtils.isEmpty(assigneeList) && org.apache.commons.collections4.CollectionUtils.isNotEmpty(collect)) {
List<String> userCollect = getUserCollect(candidateUsers, collect, false);
taskService.claim(task.getId(), userCollect.get(rand.nextInt(userCollect.size())));
} else {
taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
} }
} else { }
taskService.claim(task.getId(), candidateUsers.get(rand.nextInt(candidateUsers.size())));
//3.检查是否由可用审核
Random rand = new Random();
if(!availableUsers.isEmpty()){
taskService.claim(task.getId(),availableUsers.size()==1? availableUsers.get(0) : availableUsers.get(rand.nextInt(availableUsers.size())));
}else if (!defaultUsers.isEmpty()){
taskService.claim(task.getId(), defaultUsers.size()==1? defaultUsers.get(0) : defaultUsers.get(rand.nextInt(defaultUsers.size())));
}else{
taskService.claim(task.getId(), candidateUsers.size()==1? candidateUsers.get(0) : candidateUsers.get(rand.nextInt(candidateUsers.size())));
} }
} }
@ -1260,92 +1254,6 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
Long count = ocrTaskchildPictureService.listFinalCount(query); Long count = ocrTaskchildPictureService.listFinalCount(query);
List<OcrTaskchildPicture> list = ocrTaskchildPictureService.listFinal(query); List<OcrTaskchildPicture> list = ocrTaskchildPictureService.listFinal(query);
// for (OcrTaskchildPicture taskchildPicture : list) {
// //查询对应的流程分类
// Category category = categoryService.selectDtoById(taskchildPicture.getCategoryid());
// taskchildPicture.setCategoryDto(category);
//
// if (StringUtils.isNotBlank(taskchildPicture.getProcessdefinitionid())) {
//
// List<Task> taskList = this.nowRunTask(taskchildPicture.getProcessinstanceid(), taskchildPicture.getProcessdefinitionid());
// if (null != taskList && !taskList.isEmpty()) {
// taskchildPicture.setTaskId(taskList.get(0).getId());
//
// Task tasknow = taskService.createTaskQuery().taskId(taskchildPicture.getTaskId()).singleResult();
// BpmnModel bpmnModel = repositoryService.getBpmnModel(tasknow.getProcessDefinitionId());
// // 获取节点定义id
// String taskDefinitionKey = tasknow.getTaskDefinitionKey();
// // 根据节点定义id获取节点元素
// FlowElement flowElement = bpmnModel.getFlowElement(taskDefinitionKey);
// if (flowElement instanceof UserTask) {
// UserTask userTask = (UserTask) flowElement;
//
// taskchildPicture.setDocumentation(userTask.getDocumentation());
// }
// }
//
// //查询历史
// List<HistoricTaskInstanceDto> historicTaskInstanceDtos = new ArrayList<>();
// // 查询当前任务的流转信息
// List<HistoricTaskInstance> taskHiInstances = historyService.createHistoricTaskInstanceQuery()
// .processInstanceId(taskchildPicture.getProcessinstanceid())
// .includeProcessVariables()
// .orderByHistoricTaskInstanceStartTime()
// .asc()
// .list();
// for (HistoricTaskInstance taskHiInstance : taskHiInstances) {
// HistoricTaskInstanceDto dto = new HistoricTaskInstanceDto();
// dto.setTaskId(taskHiInstance.getId());
// dto.setTaskName(taskHiInstance.getName());
// dto.setFinishTime(taskHiInstance.getEndTime());
// if (taskHiInstance.getDurationInMillis() != null) {
// dto.setDuration(taskHiInstance.getDurationInMillis() / 1000 + "秒");
// }
// dto.setTaskDefKey(taskHiInstance.getTaskDefinitionKey());
//
// //Map<String,Object> variables = taskHiInstance.getTaskLocalVariables();
//
// Map<String, Object> variables = taskHiInstance.getProcessVariables();
//
// if (null != variables && null != variables.get("approvd")) {
// dto.setState(variables.get("approvd").toString());
// }
//
// if (StringUtils.isNotBlank(taskHiInstance.getAssignee())) {
// if (SystemConstantsOa.OA_TASK_SKIP_ASSIGINE.equals(taskHiInstance.getAssignee())) {
// dto.setAssigneeName(taskHiInstance.getAssignee());
// } else {
// User user1 = userService.findByLoginname(taskHiInstance.getAssignee());
//
// dto.setAssigneeName(user1.getUsername());
// }
//
// }
//
// BpmnModel bpmnModel = repositoryService.getBpmnModel(taskchildPicture.getProcessdefinitionid());
//
//// // 根据节点定义id获取节点元素
// FlowElement flowElement = bpmnModel.getFlowElement(taskHiInstance.getTaskDefinitionKey());
// if (flowElement instanceof UserTask) {
// UserTask userTask = (UserTask) flowElement;
//
// taskchildPicture.setDocumentation(userTask.getDocumentation());
// }
// // 还需要根据 HistoricTaskInstance 找到对应的 审批意见
// List<Comment> processInstanceComments = taskService.getProcessInstanceComments(taskchildPicture.getProcessinstanceid());
// for (Comment comment : processInstanceComments) {
//
// if (comment.getTaskId().equals(taskHiInstance.getId())) {
// // 审批意见
// String fullMessage = comment.getFullMessage();
// dto.setComment(fullMessage);
// }
// }
// historicTaskInstanceDtos.add(dto);
// }
// taskchildPicture.setTransferRecords(historicTaskInstanceDtos);
// }
// }
for (OcrTaskchildPicture ocrTaskchildPicture : list) { for (OcrTaskchildPicture ocrTaskchildPicture : list) {
String assignee = ocrTaskchildPicture.getAssignee(); String assignee = ocrTaskchildPicture.getAssignee();
if (assignee.contains(",")) { if (assignee.contains(",")) {
@ -1357,6 +1265,11 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
} }
} }
} }
if (ocrTaskchildPicture.getIsRepeat() !=null &&ocrTaskchildPicture.getIsRepeat()==1){
ocrTaskchildPicture.setField14("重复");
}else{
ocrTaskchildPicture.setField14("不重复");
}
} }
pageUtils.setTotalCount(count.intValue()); pageUtils.setTotalCount(count.intValue());
pageUtils.setList(list); pageUtils.setList(list);

@ -21,7 +21,10 @@ import cn.jyjz.xiaoyao.ocr.thread.entity.PictureImgToLocalEntity;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpClient; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpClient;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpMethod; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpMethod;
import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers; import cn.jyjz.xiaoyao.ocr.util.httputil.HttpParamers;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@ -102,7 +105,7 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
if (resultData.getStatus() == 100) { if (resultData.getStatus() == 100) {
//解析基础数据 //解析基础数据
String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData); String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData);
ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class); ApiPage<PictureSourceResult> apiPage = JSON.parseObject(data, new TypeReference<ApiPage<PictureSourceResult>>() {});
//日志增加拉取数量 //日志增加拉取数量
prevailCloudLog.setResponseParam(prevailCloudLog.getResponseParam()+",拉取数量:"+apiPage.getTotal()); prevailCloudLog.setResponseParam(prevailCloudLog.getResponseParam()+",拉取数量:"+apiPage.getTotal());
if(!isRetry && apiPage.getTotal()==0){ if(!isRetry && apiPage.getTotal()==0){
@ -110,7 +113,15 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
return null; return null;
} }
//解析数据结果为List //解析数据结果为List
List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()), PictureSourceResult.class); // 创建 PropertyFilter 实例,用于过滤掉值为 null 的字段
PropertyFilter filter = new PropertyFilter() {
@Override
public boolean apply(Object object, String name, Object value) {
return value != null; // 过滤掉值为 null 的字段
}
};
// List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()), PictureSourceResult.class);
List<PictureSourceResult> listResult = apiPage.getRecords();
ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>(); ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>();
resultApiPage.setPageNo(apiPage.getPageNo()); resultApiPage.setPageNo(apiPage.getPageNo());
resultApiPage.setPageSize(apiPage.getPageSize()); resultApiPage.setPageSize(apiPage.getPageSize());
@ -248,7 +259,6 @@ public class PrevailCloudApiImpl implements PrevailCloudApi {
//解析基础数据 //解析基础数据
String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData); String data = ApiHelper.decryptResponse(apiConfig.getAccessCode(), resultData);
ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class); ApiPage<String> apiPage = JSONUtil.toBean(data, ApiPage.class);
System.out.println(apiPage);
//解析数据结果为List //解析数据结果为List
// List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()),PictureSourceResult.class); // List<PictureSourceResult> listResult = JSONUtil.toList(JSONObject.toJSONString(apiPage.getRecords()),PictureSourceResult.class);
// ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>(); // ApiPage<PictureSourceResult> resultApiPage = new ApiPage<>();

@ -265,11 +265,19 @@ public class OcrTaskchildPicture implements BaseDto, java.io.Serializable {
@ApiModelProperty(value = "拜访终端") @ApiModelProperty(value = "拜访终端")
@TableField(exist = false) @TableField(exist = false)
private String field3 = "测试拜访终端"; private String field3;
@ApiModelProperty(value = "子计划名称")
@TableField(exist = false)
private String planchildname;
@ApiModelProperty(value = "是否重复") @ApiModelProperty(value = "是否重复")
@TableField(exist = false) @TableField(exist = false)
private String field14 = "重复"; private String field14;
@Schema(description = "是否图片重复")
@TableField(exist = false)
private Integer isRepeat;
@ApiModelProperty(value = "历史状态") @ApiModelProperty(value = "历史状态")
@TableField(exist = false) @TableField(exist = false)

@ -56,4 +56,8 @@ public class ApproveNodeDto {
* *
*/ */
private Integer isBriefRepeat; private Integer isBriefRepeat;
/**
*
*/
private Long approveDate;
} }

@ -0,0 +1,12 @@
package cn.jyjz.xiaoyao.ocr.enums;
/**
* TODO
*
* @author shuli.Yao
* @version 1.0
* @date 2024/8/6 19:12
*/
public enum UserAuditTypeEnum {
AvailableUser,DefaultUser,NoAuditUser
}

@ -1,14 +1,35 @@
package cn.jyjz.xiaoyao.ocr.service; package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask; import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.enums.UserAuditTypeEnum;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/**
import java.util.List;
import java.util.Map;
/**
* ClassName $className$.java * ClassName $className$.java
* Description: * Description:
* Author scl. * Author scl.
* Date 2024/6/23 11:20 * Date 2024/6/23 11:20
*/ */
public interface OcrContractorTaskService extends IService<OcrContractorTask>{ public interface OcrContractorTaskService extends IService<OcrContractorTask>{
/**
*
* @param picture
* @param userName
* @return
*/
UserAuditTypeEnum checkUsersAuditByPicture(OcrPicture picture, String userName);
/**
* searchQuery
* @param searchQuery
* @param username
* @param tenantId
* @return
*/
SearchQuery getUserAuditBySearchQuery(SearchQuery searchQuery, String username, String tenantId);
} }

@ -5,6 +5,7 @@ import cn.jyjz.xiaoyao.common.base.vo.UserToken;
import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService; import cn.jyjz.xiaoyao.common.mybatisplus.base.BaseService;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture; import cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture;
import cn.jyjz.xiaoyao.ocr.enums.UserAuditTypeEnum;
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.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -95,4 +96,13 @@ public interface OcrPictureService extends BaseService<OcrPicture> {
OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId); OcrTaskchildPicture getOcrTaskChildPictureByPictureId(String pictureId);
IPage<OcrPicture> pagePictureSimilarity(String pictureId, Page<OcrPicture> page, QueryWrapper<OcrPicture> queryWrapper); IPage<OcrPicture> pagePictureSimilarity(String pictureId, Page<OcrPicture> page, QueryWrapper<OcrPicture> queryWrapper);
/**
* id
*
* @param pictureid
* @param candidateUsers
* @return
*/
Map<UserAuditTypeEnum,List<String>> userAuditRights(Long pictureid, List<String> candidateUsers);
} }

@ -324,6 +324,9 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
List<OcrPicture> pictures = new ArrayList<>(); List<OcrPicture> pictures = new ArrayList<>();
pictures.add(ocrPicture); pictures.add(ocrPicture);
try { try {
if ("287798960352200777".equals(ocrPicture.getId()) || "287798960268309961".equals(ocrPicture.getId())) {
System.out.println("adsd");
}
this.saveCheckDuplicateData(checkDuplicateId,saveList,pictures,ocrPictureList.get(0).getTenantId().toString(),sysUser); this.saveCheckDuplicateData(checkDuplicateId,saveList,pictures,ocrPictureList.get(0).getTenantId().toString(),sysUser);
} catch (Exception e) { } catch (Exception e) {
logger.error("比对结果入库异常! error:{}",e.getMessage()); logger.error("比对结果入库异常! error:{}",e.getMessage());
@ -349,6 +352,7 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl<OcrCheckDuplicateM
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveCheckDuplicateData(Long checkDuplicateId,List<OcrCheckDuplicateResult> saveList,List<OcrPicture> ocrPictureList, String tenantId,UserToken sysUser) throws Exception { public boolean saveCheckDuplicateData(Long checkDuplicateId,List<OcrCheckDuplicateResult> saveList,List<OcrPicture> ocrPictureList, String tenantId,UserToken sysUser) throws Exception {
//1.批量入库 //1.批量入库
logger.debug("查重任务:{},开启批量入库任务",checkDuplicateId); logger.debug("查重任务:{},开启批量入库任务",checkDuplicateId);
boolean b = checkDuplicateResultService.saveOrUpdateBatch(saveList); boolean b = checkDuplicateResultService.saveOrUpdateBatch(saveList);

@ -1,12 +1,23 @@
package cn.jyjz.xiaoyao.ocr.service.impl; package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.hutool.core.util.ArrayUtil;
import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrPicture;
import cn.jyjz.xiaoyao.ocr.enums.UserAuditTypeEnum;
import cn.jyjz.xiaoyao.ocr.service.OcrPictureService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask; import cn.jyjz.xiaoyao.ocr.dataobject.OcrContractorTask;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrContractorTaskMapper; import cn.jyjz.xiaoyao.ocr.dataDao.OcrContractorTaskMapper;
import cn.jyjz.xiaoyao.ocr.service.OcrContractorTaskService; import cn.jyjz.xiaoyao.ocr.service.OcrContractorTaskService;
import javax.annotation.Resource;
/** /**
* ClassName $className$.java * ClassName $className$.java
* Description: * Description:
@ -16,4 +27,61 @@ import cn.jyjz.xiaoyao.ocr.service.OcrContractorTaskService;
@Service @Service
public class OcrContractorTaskServiceImpl extends ServiceImpl<OcrContractorTaskMapper, OcrContractorTask> implements OcrContractorTaskService{ public class OcrContractorTaskServiceImpl extends ServiceImpl<OcrContractorTaskMapper, OcrContractorTask> implements OcrContractorTaskService{
@Resource
private OcrPictureService pictureService;
@Override
public UserAuditTypeEnum checkUsersAuditByPicture(OcrPicture picture, String userName) {
//获取当前用户的审核权限
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("task_user_assignee",userName);
queryWrapper.eq("tenant_id",picture.getTenantId());
List<OcrContractorTask> contractorTasks = baseMapper.selectList(queryWrapper);
if (contractorTasks.isEmpty()){
return UserAuditTypeEnum.DefaultUser;
}
//组装检索sql
QueryWrapper checkWrapper = new QueryWrapper();
for (OcrContractorTask contractorTask : contractorTasks) {
String queryVal = contractorTask.getContractor();
//检查是否可能时多个结果
if (queryVal.indexOf(",") >0) {
//多个筛选值,以 xxx,xxx拼接
String [] queryValues = queryVal.split(",");
checkWrapper.in(contractorTask.getField(),queryValues);
}else{
//单个值直接进行筛选即可
checkWrapper.eq(contractorTask.getField(),queryVal);
}
}
checkWrapper.eq("id",picture.getId());
if(pictureService.list(checkWrapper).isEmpty()){
return UserAuditTypeEnum.NoAuditUser;
}
return UserAuditTypeEnum.AvailableUser;
}
@Override
public SearchQuery getUserAuditBySearchQuery(SearchQuery searchQuery, String username, String tenantId) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("task_user_assignee",username);
queryWrapper.eq("tenant_id",tenantId);
List<OcrContractorTask> contractorTasks = baseMapper.selectList(queryWrapper);
for (OcrContractorTask contractorTask : contractorTasks) {
String queryVal = contractorTask.getContractor();
//检查是否可能时多个结果
if (queryVal.indexOf(",") >0) {
//多个筛选值,以 xxx,xxx拼接
String [] queryValues = queryVal.split(",");
searchQuery.addIn(contractorTask.getField(), Arrays.asList(queryValues));
}else{
//单个值直接进行筛选即可
searchQuery.addEqual(contractorTask.getField(),queryVal);
}
}
return searchQuery;
}
} }

@ -16,6 +16,7 @@ import cn.jyjz.xiaoyao.oa.from.service.UserapproveService;
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.*; import cn.jyjz.xiaoyao.ocr.dataobject.*;
import cn.jyjz.xiaoyao.ocr.enums.UserAuditTypeEnum;
import cn.jyjz.xiaoyao.ocr.service.*; import cn.jyjz.xiaoyao.ocr.service.*;
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;
@ -91,6 +92,10 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
@Resource @Resource
private IOcrPictureDuplicateHisService ocrPictureDuplicateHisService; private IOcrPictureDuplicateHisService ocrPictureDuplicateHisService;
private Object lock = new Object(); private Object lock = new Object();
@Resource
private OcrContractorTaskService contractorTaskService;
/** /**
* *
*/ */
@ -406,6 +411,29 @@ public class OcrPictureServiceImpl extends BaseServiceImpl<OcrPictureMybatisDao,
return page; return page;
} }
@Override
public Map<UserAuditTypeEnum,List<String>> userAuditRights(Long pictureid,List<String> candidateUsers) {
List<String> availableAuditUsers = new ArrayList<>();
List<String> defaultAuditUsers = new ArrayList<>();
List<String> noAuditUsers = new ArrayList<>();
OcrPicture picture = baseMapper.selectById(pictureid);
for (String userName : candidateUsers) {
UserAuditTypeEnum userAuditTypeEnum = contractorTaskService.checkUsersAuditByPicture(picture,userName);
if (UserAuditTypeEnum.AvailableUser == userAuditTypeEnum){
availableAuditUsers.add(userName);
}else if (UserAuditTypeEnum.NoAuditUser == userAuditTypeEnum){
noAuditUsers.add(userName);
}else{
defaultAuditUsers.add(userName);
}
}
Map<UserAuditTypeEnum,List<String>> result = new HashMap<>();
result.put(UserAuditTypeEnum.AvailableUser,availableAuditUsers);
result.put(UserAuditTypeEnum.DefaultUser,defaultAuditUsers);
result.put(UserAuditTypeEnum.NoAuditUser,noAuditUsers);
return result;
}
// @Override // @Override
// public Long getPhotoDateTime(OcrPicture picture) { // public Long getPhotoDateTime(OcrPicture picture) {
// long timestamp = 0L; // long timestamp = 0L;

@ -851,14 +851,17 @@ public class OcrTaskchildPictureServiceImpl extends BaseServiceImpl<OcrTaskchild
return this.save(taskchildPicture); return this.save(taskchildPicture);
} }
private static ApproveNodeDto getApproveNodeDto(Userapprove userApprove) { private ApproveNodeDto getApproveNodeDto(Userapprove userApprove) {
Long approveCount = userapproveService.count(new LambdaQueryWrapper<Userapprove>().eq(Userapprove::getFormid, userApprove.getFormid()).eq(Userapprove::getTaskname,userApprove.getTaskname()));
ApproveNodeDto approveNode = new ApproveNodeDto(); ApproveNodeDto approveNode = new ApproveNodeDto();
approveNode.setApproveRemark(userApprove.getTaskcomment()); approveNode.setApproveRemark(userApprove.getTaskcomment());
approveNode.setApproveResult(userApprove.getStatshis() == 2 ? 0 : 1); approveNode.setApproveResult(userApprove.getStatshis() == 2 ? 0 : 1);
approveNode.setApproveWay(0); approveNode.setApproveWay(approveCount>1?1:2);
approveNode.setNodeName(userApprove.getTaskname()); approveNode.setNodeName(userApprove.getTaskname());
approveNode.setReason(userApprove.getReason()); approveNode.setReason(userApprove.getReason());
approveNode.setApproveByName(userApprove.getUsername()); approveNode.setApproveByName(userApprove.getUsername());
approveNode.setApproveDate(userApprove.getCreatedate());
//审批不通过出来方式 //审批不通过出来方式
approveNode.setProcessMethod(1); approveNode.setProcessMethod(1);
return approveNode; return approveNode;

@ -222,11 +222,9 @@ public class PictureDisposeTask implements Runnable {
//图片创建时间 //图片创建时间
// picture.setPhotoDateTimestamp(System.currentTimeMillis()); // picture.setPhotoDateTimestamp(System.currentTimeMillis());
System.out.println("SubmitDateTimestamp1=================>>>>>>>" + pictureSourceResult.getSubmitTime());
System.out.println("SubmitDateTimestamp2=================>>>>>>>" + picture.getSubmitDateTimestamp());
//定位距离 //定位距离
if (StringUtils.isNotBlank(pictureSourceResult.getDistance())) { if (StringUtils.isNotBlank(pictureSourceResult.getDistance())) {
picture.setField12(pictureSourceResult.getDistance());
} }
//设置图片信息 //设置图片信息
if (map.get("imgName") != null) { if (map.get("imgName") != null) {

@ -188,7 +188,7 @@
and OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend} and OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend}
</if> </if>
<if test="pictureresult != null"> <if test="pictureresult != null">
and PICTURERESULT ${pictureresult.dataOp} ${pictureresult.likestar}#{pictureresult.value}${pictureresult.likeend} and PICTURERESULT ${pictureresult.dataOp} ${pictureresult.likestar}#{pictureresult.value}${pictureresult.likeend}
@ -309,7 +309,7 @@
</if> </if>
<if test="ocpictureid != null"> <if test="ocpictureid != null">
and tcp.OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend} and tcp.OCPICTUREID ${ocpictureid.dataOp} ${ocpictureid.likestar}#{ocpictureid.value}${ocpictureid.likeend}
</if> </if>
<if test="pictureresult != null"> <if test="pictureresult != null">
and tcp.PICTURERESULT ${pictureresult.dataOp} ${pictureresult.likestar}#{pictureresult.value}${pictureresult.likeend} and tcp.PICTURERESULT ${pictureresult.dataOp} ${pictureresult.likestar}#{pictureresult.value}${pictureresult.likeend}
@ -487,6 +487,147 @@
OR tcp.FROMTASKNAME LIKE CONCAT('%', #{fuzzyRetrieval.value}, '%') OR tcp.FROMTASKNAME LIKE CONCAT('%', #{fuzzyRetrieval.value}, '%')
) )
</if> </if>
<!-- pic 相关条件检索-->
<if test="tenantname != null">
and pic.tenantname ${tenantname.dataOp} ${tenantname.likestar}
<if test="tenantname.value instanceof java.util.List">
<foreach item="item" collection="tenantname.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!tenantname.value instanceof java.util.List">
#{tenantname.value}
</if>
${tenantname.likeend}
</if>
<if test="projectId != null">
and pic.projectId ${projectId.dataOp} ${projectId.likestar}
<if test="projectId.value instanceof java.util.List">
<foreach item="item" collection="projectId.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!projectId.value instanceof java.util.List">
#{projectId.value}
</if>
${projectId.likeend}
</if>
<if test="projectIdName != null">
and pic.projectIdName ${projectIdName.dataOp} ${projectIdName.likestar}
<if test="projectIdName.value instanceof java.util.List">
<foreach item="item" collection="projectIdName.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!projectIdName.value instanceof java.util.List">
#{projectIdName.value}
</if>
${projectIdName.likeend}
</if>
<if test="planId != null">
and pic.planId ${planId.dataOp} ${planId.likestar}
<if test="planId.value instanceof java.util.List">
<foreach item="item" collection="planId.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!planId.value instanceof java.util.List">
#{planId.value}
</if>
${planId.likeend}
</if>
<if test="planName != null">
and pic.planName ${planName.dataOp} ${planName.likestar}
<if test="planName.value instanceof java.util.List">
<foreach item="item" collection="planName.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!planName.value instanceof java.util.List">
#{planName.value}
</if>
${planName.likeend}
</if>
<if test="releaseArea != null">
and pic.releaseArea ${releaseArea.dataOp} ${releaseArea.likestar}
<if test="releaseArea.value instanceof java.util.List">
<foreach item="item" collection="releaseArea.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!releaseArea.value instanceof java.util.List">
#{releaseArea.value}
</if>
${releaseArea.likeend}
</if>
<if test="field5 != null">
and pic.field5 ${field5.dataOp} ${field5.likestar}
<if test="field5.value instanceof java.util.List">
<foreach item="item" collection="field5.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!field5.value instanceof java.util.List">
#{field5.value}
</if>
${field5.likeend}
</if>
<if test="field3 != null">
and pic.field3 ${field3.dataOp} ${field3.likestar}
<if test="field3.value instanceof java.util.List">
<foreach item="item" collection="field3.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!field3.value instanceof java.util.List">
#{field3.value}
</if>
${field3.likeend}
</if>
<if test="field1 != null">
and pic.field1 ${field1.dataOp} ${field1.likestar}
<if test="field1.value instanceof java.util.List">
<foreach item="item" collection="field1.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!field1.value instanceof java.util.List">
#{field1.value}
</if>
${field1.likeend}
</if>
<if test="field2 != null">
and pic.field2 ${field2.dataOp} ${field2.likestar}
<if test="field2.value instanceof java.util.List">
<foreach item="item" collection="field2.value" open="" separator="," close="">
#{item}
</foreach>
</if>
<if test="!field2.value instanceof java.util.List">
#{field2.value}
</if>
${field2.likeend}
</if>
</trim> </trim>
</where> </where>
</sql> </sql>
@ -561,7 +702,7 @@
<when test="izuptimeStart.rulesOp == 'or' || izuptimeEnd.rulesOp == 'or'"> <when test="izuptimeStart.rulesOp == 'or' || izuptimeEnd.rulesOp == 'or'">
<if test="izuptimeEnd != null"> <if test="izuptimeEnd != null">
and (tcp.FROMUPTIME ${izuptimeStart.dataOp} '${izuptimeStart.value}' and (tcp.FROMUPTIME ${izuptimeStart.dataOp} '${izuptimeStart.value}'
or tcp.FROMUPTIME ${izuptimeEnd.dataOp} '${izuptimeEnd.value}') or tcp.FROMUPTIME ${izuptimeEnd.dataOp} '${izuptimeEnd.value}')
</if> </if>
</when> </when>
<otherwise> <otherwise>
@ -581,19 +722,19 @@
select tcp.*, pic.field11 reporttime, pic.similarity_score similarityscore from ( select tcp.*, pic.field11 reporttime, pic.similarity_score similarityscore from (
select tc.* select tc.*
from ocr_taskchild_picture tc, from ocr_taskchild_picture tc,
OA_USERFINAL_T uf OA_USERFINAL_T uf
where tc.ID = uf.FORMID where tc.ID = uf.FORMID
<if test="thisLoginUserid != null"> <if test="thisLoginUserid != null">
and uf.USERID ${thisLoginUserid.dataOp} ${thisLoginUserid.likestar}#{thisLoginUserid.value}${thisLoginUserid.likeend} and uf.USERID ${thisLoginUserid.dataOp} ${thisLoginUserid.likestar}#{thisLoginUserid.value}${thisLoginUserid.likeend}
</if> </if>
UNION UNION
select select
tc.* tc.*
from ocr_taskchild_picture tc from ocr_taskchild_picture tc
where tc.STATES = 5 where tc.STATES = 5
) as tcp ) as tcp
left join ocr_picture pic left join ocr_picture pic
on tcp.PICTUREID = pic.ID on tcp.PICTUREID = pic.ID
<include refid="Base_Where_union"> <include refid="Base_Where_union">
</include> </include>
and pic.suspiciousfile = 0 and pic.suspiciousfile = 0
@ -644,44 +785,60 @@
parameterType="java.util.Map"> parameterType="java.util.Map">
select tcp.* from ( select tcp.* from (
select tc.*, select tc.*,
uf.COMMENTHIS, uf.COMMENTHIS,
uf.TASKNAME as TASKNAMEHIS, uf.TASKNAME as TASKNAMEHIS,
uf.STATSHIS, uf.STATSHIS,
uf.TASKNO, uf.TASKNO,
uf.TASKINDEX as taskNodeIndex, uf.TASKINDEX as taskNodeIndex,
op.field6 as fromCustomerLevel, op.field6 as fromCustomerLevel,
op.releaseArea as fromCity, op.releaseArea as fromCity,
op.is_repeat, op.is_repeat,
tc.is_repeated_nodules as isRepeatedNodules tc.is_repeated_nodules as isRepeatedNodules
from ocr_taskchild_picture tc from ocr_taskchild_picture tc
LEFT JOIN OA_USERAPPROVE_T uf ON tc.ID = uf.ID LEFT JOIN OA_USERAPPROVE_T uf ON tc.ID = uf.ID
left join ocr_picture op on tc.PICTUREID = op.ID left join ocr_picture op on tc.PICTUREID = op.ID
where FIND_IN_SET(#{searchassignee}, tc.ASSIGNEE) where FIND_IN_SET(#{searchassignee}, tc.ASSIGNEE)
and tc.TENANTID = #{searchtenantid} and tc.TENANTID = #{searchtenantid}
and tc.STATES = 2 and tc.STATES = 2
and op.suspiciousfile = 0 and op.suspiciousfile = 0
<if test="izApprovalStatus != null"> <if test="izApprovalStatus != null">
${izApprovalStatus.rulesOp} ${izApprovalStatus.rulesOp}
( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS (
, 1) <if test="!izApprovalStatus.value instanceof java.lang.String">
) <foreach item="item" collection="izApprovalStatus.value" open="" separator="OR" close="">
#{item} = COALESCE (uf.STATSHIS, 1)
</foreach>
</if>
<if test="izApprovalStatus.value instanceof java.lang.String">
#{izApprovalStatus.value} = COALESCE (uf.STATSHIS, 1)
</if>
)
</if> </if>
UNION UNION
select select
tc.*, uf.COMMENTHIS, uf.TASKNAME as TASKNAMEHIS, uf.STATSHIS, uf.TASKNO, uf.TASKINDEX as taskNodeIndex, op.field6 as fromCustomerLevel, op.releaseArea as fromCity, op.is_repeat, tc.is_repeated_nodules as isRepeatedNodules tc.*, uf.COMMENTHIS, uf.TASKNAME as TASKNAMEHIS, uf.STATSHIS, uf.TASKNO, uf.TASKINDEX as taskNodeIndex, op.field6 as fromCustomerLevel, op.releaseArea as fromCity, op.is_repeat, tc.is_repeated_nodules as isRepeatedNodules
from ocr_taskchild_picture tc, OA_USERAPPROVE_T uf, ocr_picture op from ocr_taskchild_picture tc, OA_USERAPPROVE_T uf, ocr_picture op
where tc.ID = uf.FORMID where tc.ID = uf.FORMID
and tc.PICTUREID = op.ID and tc.PICTUREID = op.ID
and op.suspiciousfile = 0 and op.suspiciousfile = 0
and tc.TENANTID = #{searchtenantid} and tc.TENANTID = #{searchtenantid}
<if test="thisLoginUserid != null"> <if test="thisLoginUserid != null">
and uf.USERID = #{thisLoginUserid} and uf.USERID = #{thisLoginUserid}
</if> </if>
<if test="izApprovalStatus != null"> <if test="izApprovalStatus != null">
${izApprovalStatus.rulesOp} ${izApprovalStatus.rulesOp}
( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS (
, 1) <if test="!izApprovalStatus.value instanceof java.lang.String">
) <foreach item="item" collection="izApprovalStatus.value" open="" separator="OR" close="">
#{item} = COALESCE (uf.STATSHIS, 1)
</foreach>
</if>
<if test="izApprovalStatus.value instanceof java.lang.String">
#{izApprovalStatus.value} = COALESCE (uf.STATSHIS, 1)
</if>
)
</if> </if>
) as tcp ) as tcp
<include refid="Base_Where_union"> <include refid="Base_Where_union">
@ -714,8 +871,16 @@
and op.suspiciousfile = 0 and op.suspiciousfile = 0
<if test="izApprovalStatus != null"> <if test="izApprovalStatus != null">
${izApprovalStatus.rulesOp} ${izApprovalStatus.rulesOp}
( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS (
, 1) <if test="!izApprovalStatus.value instanceof java.lang.String">
<foreach item="item" collection="izApprovalStatus.value" open="" separator="OR" close="">
#{item} = COALESCE (uf.STATSHIS, 1)
</foreach>
</if>
<if test="izApprovalStatus.value instanceof java.lang.String">
#{izApprovalStatus.value} = COALESCE (uf.STATSHIS, 1)
</if>
) )
</if> </if>
UNION UNION
@ -730,8 +895,16 @@
</if> </if>
<if test="izApprovalStatus != null "> <if test="izApprovalStatus != null ">
${izApprovalStatus.rulesOp} ${izApprovalStatus.rulesOp}
( #{izApprovalStatus.value} ${izApprovalStatus.dataOp} COALESCE (uf.STATSHIS (
, 1) <if test="!izApprovalStatus.value instanceof java.lang.String">
<foreach item="item" collection="izApprovalStatus.value" open="" separator="OR" close="">
#{item} = COALESCE (uf.STATSHIS, 1)
</foreach>
</if>
<if test="izApprovalStatus.value instanceof java.lang.String">
#{izApprovalStatus.value} = COALESCE (uf.STATSHIS, 1)
</if>
) )
</if> </if>
) as tcp ) as tcp
@ -764,16 +937,16 @@
<select id="queryExamineApprove" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro"> <select id="queryExamineApprove" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro">
select tc.*, select tc.*,
op.is_repeat, op.is_repeat,
tc.is_repeated_nodules as isRepeatedNodules tc.is_repeated_nodules as isRepeatedNodules
from ocr_taskchild_picture tc from ocr_taskchild_picture tc
left join ocr_picture op on tc.PICTUREID = op.ID left join ocr_picture op on tc.PICTUREID = op.ID
where tc.TENANTID = #{tenantId} where tc.TENANTID = #{tenantId}
and op.suspiciousfile = 0 and op.suspiciousfile = 0
and tc.ID IN and tc.ID IN
<foreach item="formId" collection="formIdList" open="(" separator="," close=")"> <foreach item="formId" collection="formIdList" open="(" separator="," close=")">
#{formId} #{formId}
</foreach> </foreach>
</select> </select>
<select id="queryPendingApproval" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro"> <select id="queryPendingApproval" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPictureAppro">
select tc.*, select tc.*,
@ -799,51 +972,51 @@
<select id="getPictureHistoryList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo"> <select id="getPictureHistoryList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo">
SELECT distinct t2.ID id, SELECT distinct t2.ID id,
t2.PICTUREID pictureId, t2.PICTUREID pictureId,
t2.STATES states, t2.STATES states,
t2.PROCESSINSTANCEID processInstanceId, t2.PROCESSINSTANCEID processInstanceId,
t2.PROCESSDEFINITIONID processDefinitionId, t2.PROCESSDEFINITIONID processDefinitionId,
t2.DEPLOYMENTID deploymentId, t2.DEPLOYMENTID deploymentId,
t2.ASSIGNEENAME assigneeName, t2.ASSIGNEENAME assigneeName,
t2.ASSIGNEE assignee, t2.ASSIGNEE assignee,
t2.FILEANNEX fileAnnex, t2.FILEANNEX fileAnnex,
t2.GUIDANG guiDang, t2.GUIDANG guiDang,
t2.CREATEUSER createUser, t2.CREATEUSER createUser,
t2.CREATEUSERNAME createUserName, t2.CREATEUSERNAME createUserName,
t2.CREATEDATE createDate, t2.CREATEDATE createDate,
t2.USERID userId, t2.USERID userId,
t2.USERNAME userName, t2.USERNAME userName,
t2.FROMTASKID fromTaskId, t2.FROMTASKID fromTaskId,
t2.FROMTASKNAME fromTaskName, t2.FROMTASKNAME fromTaskName,
t2.FROMUSERID fromUserId, t2.FROMUSERID fromUserId,
t2.FROMPROJECTID fromProjectId, t2.FROMPROJECTID fromProjectId,
t2.FROMPLANID fromPlanId, t2.FROMPLANID fromPlanId,
t2.FROMUPTIME fromupTime, t2.FROMUPTIME fromupTime,
t2.FROMSOURCEID fromSourceId, t2.FROMSOURCEID fromSourceId,
t2.HAVEPOINTS havePoints, t2.HAVEPOINTS havePoints,
t2.TASKNAME taskName, t2.TASKNAME taskName,
t2.TASKID taskId, t2.TASKID taskId,
t2.FROMUSERNAME fromUserName, t2.FROMUSERNAME fromUserName,
t2.FROMPROJECTNAME fromProjectName, t2.FROMPROJECTNAME fromProjectName,
t2.FINISHTIME finishTime, t2.FINISHTIME finishTime,
t1.imgUrl, t1.imgUrl,
t1.submit_date_timestamp submitDateTimestamp, t1.submit_date_timestamp submitDateTimestamp,
t1.photo_date_timestamp photoDateTimestamp, t1.photo_date_timestamp photoDateTimestamp,
t1.similarity_score similarityScore, t1.similarity_score similarityScore,
t1.server_thumbnail_url serverThumbnailUrl, t1.server_thumbnail_url serverThumbnailUrl,
IF(EXISTS (SELECT STATSHIS IF(EXISTS (SELECT STATSHIS
FROM oa_userapprove_t FROM oa_userapprove_t
WHERE FORMID = t2.ID and STATSHIS = 3 and 'finale_judgment' = #{taskNode}), 3, WHERE FORMID = t2.ID and STATSHIS = 3 and 'finale_judgment' = #{taskNode}), 3,
IFNULL((SELECT t3.STATSHIS IFNULL((SELECT t3.STATSHIS
FROM oa_userapprove_t t3 FROM oa_userapprove_t t3
WHERE t3.FORMID = t2.ID WHERE t3.FORMID = t2.ID
and t3.TASKINDEX = #{taskNode} and t3.TASKINDEX = #{taskNode}
LIMIT 1), 1)) AS historyStates LIMIT 1), 1)) AS historyStates
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 on t1.ID = t2.PICTUREID
where t1.suspiciousfile = 0 where t1.suspiciousfile = 0
and t1.ID in 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}
@ -914,50 +1087,50 @@
<select id="getPackageSimilarityList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo"> <select id="getPackageSimilarityList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo">
SELECT distinct t3.ID id, SELECT distinct t3.ID id,
t3.PICTUREID pictureId, t3.PICTUREID pictureId,
t3.STATES states, t3.STATES states,
t3.PROCESSINSTANCEID processInstanceId, t3.PROCESSINSTANCEID processInstanceId,
t3.PROCESSDEFINITIONID processDefinitionId, t3.PROCESSDEFINITIONID processDefinitionId,
t3.DEPLOYMENTID deploymentId, t3.DEPLOYMENTID deploymentId,
t3.ASSIGNEENAME assigneeName, t3.ASSIGNEENAME assigneeName,
t3.ASSIGNEE assignee, t3.ASSIGNEE assignee,
t3.FILEANNEX fileAnnex, t3.FILEANNEX fileAnnex,
t3.GUIDANG guiDang, t3.GUIDANG guiDang,
t3.CREATEUSER createUser, t3.CREATEUSER createUser,
t3.CREATEUSERNAME createUserName, t3.CREATEUSERNAME createUserName,
t3.CREATEDATE createDate, t3.CREATEDATE createDate,
t3.USERID userId, t3.USERID userId,
t3.USERNAME userName, t3.USERNAME userName,
t3.FROMTASKID fromTaskId, t3.FROMTASKID fromTaskId,
t3.FROMTASKNAME fromTaskName, t3.FROMTASKNAME fromTaskName,
t3.FROMUSERID fromUserId, t3.FROMUSERID fromUserId,
t3.FROMPROJECTID fromProjectId, t3.FROMPROJECTID fromProjectId,
t3.FROMPLANID fromPlanId, t3.FROMPLANID fromPlanId,
t3.FROMUPTIME fromupTime, t3.FROMUPTIME fromupTime,
t3.FROMSOURCEID fromSourceId, t3.FROMSOURCEID fromSourceId,
t3.HAVEPOINTS havePoints, t3.HAVEPOINTS havePoints,
t3.TASKNAME taskName, t3.TASKNAME taskName,
t3.FROMUSERNAME fromUserName, t3.FROMUSERNAME fromUserName,
t3.FROMPROJECTNAME fromProjectName, t3.FROMPROJECTNAME fromProjectName,
t3.FINISHTIME finishTime, t3.FINISHTIME finishTime,
t3.TASKID taskId, t3.TASKID taskId,
t2.imgUrl, t2.imgUrl,
t2.submit_date_timestamp submitDateTimestamp, t2.submit_date_timestamp submitDateTimestamp,
t2.photo_date_timestamp photoDateTimestamp, t2.photo_date_timestamp photoDateTimestamp,
t2.server_thumbnail_url serverThumbnailUrl, t2.server_thumbnail_url serverThumbnailUrl,
t1.max_similarity maxSimilarity, t1.max_similarity maxSimilarity,
COALESCE( COALESCE(
(SELECT t4.STATSHIS (SELECT t4.STATSHIS
FROM oa_userapprove_t t4 FROM oa_userapprove_t t4
WHERE t4.FORMID = t3.ID WHERE t4.FORMID = t3.ID
ORDER BY t4.CREATEDATE DESC ORDER BY t4.CREATEDATE DESC
LIMIT 1), 1) AS historyStates, LIMIT 1), 1) AS historyStates,
t1.check_duplicate_id t1.check_duplicate_id
FROM ocr_check_duplicate_result t1 FROM ocr_check_duplicate_result t1
LEFT JOIN ocr_picture t2 ON t1.picture_id = t2.ID 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
WHERE t1.check_duplicate_id = #{checkDuplicateId} WHERE t1.check_duplicate_id = #{checkDuplicateId}
and t2.suspiciousfile = 0 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>
@ -971,43 +1144,43 @@
<select id="getDubiousfileList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo"> <select id="getDubiousfileList" resultType="cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo">
SELECT t2.ID id, SELECT t2.ID id,
t2.PICTUREID pictureId, t2.PICTUREID pictureId,
t2.STATES states, t2.STATES states,
t2.PROCESSINSTANCEID processInstanceId, t2.PROCESSINSTANCEID processInstanceId,
t2.PROCESSDEFINITIONID processDefinitionId, t2.PROCESSDEFINITIONID processDefinitionId,
t2.DEPLOYMENTID deploymentId, t2.DEPLOYMENTID deploymentId,
t2.ASSIGNEENAME assigneeName, t2.ASSIGNEENAME assigneeName,
t2.ASSIGNEE assignee, t2.ASSIGNEE assignee,
t2.FILEANNEX fileAnnex, t2.FILEANNEX fileAnnex,
t2.GUIDANG guiDang, t2.GUIDANG guiDang,
t2.CREATEUSER createUser, t2.CREATEUSER createUser,
t2.CREATEUSERNAME createUserName, t2.CREATEUSERNAME createUserName,
t2.CREATEDATE createDate, t2.CREATEDATE createDate,
t2.USERID userId, t2.USERID userId,
t2.USERNAME userName, t2.USERNAME userName,
t2.FROMTASKID fromTaskId, t2.FROMTASKID fromTaskId,
t2.FROMTASKNAME fromTaskName, t2.FROMTASKNAME fromTaskName,
t2.FROMUSERID fromUserId, t2.FROMUSERID fromUserId,
t2.FROMPROJECTID fromProjectId, t2.FROMPROJECTID fromProjectId,
t2.FROMPLANID fromPlanId, t2.FROMPLANID fromPlanId,
t2.FROMUPTIME fromupTime, t2.FROMUPTIME fromupTime,
t2.FROMSOURCEID fromSourceId, t2.FROMSOURCEID fromSourceId,
t2.HAVEPOINTS havePoints, t2.HAVEPOINTS havePoints,
t2.TASKNAME taskName, t2.TASKNAME taskName,
t2.TASKID taskId, t2.TASKID taskId,
t2.FROMUSERNAME fromUserName, t2.FROMUSERNAME fromUserName,
t2.FROMPROJECTNAME fromProjectName, t2.FROMPROJECTNAME fromProjectName,
t2.FINISHTIME finishTime, t2.FINISHTIME finishTime,
t1.imgUrl, t1.imgUrl,
t1.server_thumbnail_url serverThumbnailUrl, t1.server_thumbnail_url serverThumbnailUrl,
ifnull(t3.STATSHIS, 1) historyStates, ifnull(t3.STATSHIS, 1) historyStates,
t1.submit_date_timestamp submitDateTimestamp, t1.submit_date_timestamp submitDateTimestamp,
t1.photo_date_timestamp photoDateTimestamp, t1.photo_date_timestamp photoDateTimestamp,
t1.similarity_score similarityScore t1.similarity_score similarityScore
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 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.ID in
<foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index"> <foreach collection="pictureIds" open="(" close=")" item="item" separator="," index="index">
#{item} #{item}
@ -1016,33 +1189,32 @@
<select id="listFinalTask" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture" <select id="listFinalTask" resultType="cn.jyjz.xiaoyao.ocr.dataobject.OcrTaskchildPicture"
parameterType="java.util.Map"> parameterType="java.util.Map">
select distinct tcp.*, select tcp.*,
pic.field11 reporttime, pic.field11 reporttime,
pic.similarity_score similarityscore, pic.similarity_score similarityscore,
pic.server_thumbnail_url serverThumbnailUrl, pic.server_thumbnail_url serverThumbnailUrl,
pic.imgUrl imgUrl pic.imgUrl imgUrl,
pic.field3 field3,
pic.planName planchildname,
pic.field14 field14,
pic.is_repeat is_repeat
from ocr_taskchild_picture tcp from ocr_taskchild_picture tcp
left join ocr_picture pic left join ocr_picture pic
on tcp.PICTUREID = pic.ID on tcp.PICTUREID = pic.ID
<include refid="Base_Where_union"> <include refid="Base_Where_union">
</include> </include>
and tcp.ISFINAIL = 1 and tcp.ISFINAIL = 1
and pic.suspiciousfile = 0 and pic.suspiciousfile = 0
<if test="thisLoginUserid != null and isFail == null"> <if test="thisLoginUserid != null and isFail == null">
and FIND_IN_SET(#{thisLoginUserid.value} and FIND_IN_SET(#{thisLoginUserid.value}
, tcp.ASSIGNEE) , tcp.ASSIGNEE)
</if> </if>
<if test="thisLoginUserid != null and isFail != null"> <if test="thisLoginUserid != null and isFail != null">
and (FIND_IN_SET(#{thisLoginUserid.value} and (FIND_IN_SET(#{thisLoginUserid.value}
, tcp.ASSIGNEE) or , tcp.ASSIGNEE)
<if test="contractor != null"> or tcp.STATES = 5)
if((select count(1) from ocr_contractor_task where tenant_id =#{tenantid.value} and pic.${contractor.value} = contractor and FIND_IN_SET(#{thisLoginUserid.value},task_user_assignee))>1, 1=1,tcp.STATES = 5)
</if>
<if test="contractor == null">
tcp.STATES = 5
</if>
)
</if> </if>
<if test="fromuptimeStart != null"> <if test="fromuptimeStart != null">
and tcp.fromuptime &gt;= ${fromuptimeStart.value} and tcp.fromuptime &gt;= ${fromuptimeStart.value}
</if> </if>

Loading…
Cancel
Save