@ -37,6 +37,7 @@ import cn.jyjz.xiaoyao.oa.from.vo.FlowUnionVo;
import cn.jyjz.xiaoyao.oa.from.vo.RepeatedContentVo ;
import cn.jyjz.xiaoyao.ocr.api.PrevailCloudApi ;
import cn.jyjz.xiaoyao.ocr.dataobject.* ;
import cn.jyjz.xiaoyao.ocr.enums.UserAuditTypeEnum ;
import cn.jyjz.xiaoyao.ocr.service.* ;
import cn.jyjz.xiaoyao.ocr.util.SearchParaFormatting ;
import cn.jyjz.xiaoyao.ocr.vo.OcrTaskchildPictureApproVo ;
@ -905,36 +906,29 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
if ( StringUtils . isBlank ( userTask . getAssignee ( ) ) ) {
//得到候选人
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 ( ) ) {
Random rand = new Random ( ) ;
//1.获取任务id
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 ( ) ) ) ;
List < OcrContractorTask > contractorList = contractorTaskService . list ( new LambdaQueryWrapper < OcrContractorTask > ( ) . eq ( OcrContractorTask : : getTenantId , taskchildPicture . getTenantid ( ) ) ) ;
if ( org . apache . commons . collections4 . CollectionUtils . isNotEmpty ( contractorList ) ) {
List < String > userList = contractorList . stream ( ) . map ( OcrContractorTask : : getTaskUserAssignee ) . collect ( Collectors . toList ( ) ) ;
Class < ? extends OcrPicture > aClass = first . getClass ( ) ;
Field field = aClass . getDeclaredField ( contractorList . get ( 0 ) . getField ( ) ) ;
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 ( taskchildPicture ! = null ) {
//2.任务审核鉴权,(确定由那个用户进行审核)
auditMap = ocrPictureService . userAuditRights ( taskchildPicture . getPictureid ( ) , candidateUsers ) ;
if ( auditMap ! = null ) {
availableUsers = auditMap . get ( UserAuditTypeEnum . AvailableUser ) ;
defaultUsers = auditMap . get ( UserAuditTypeEnum . DefaultUser ) ;
}
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 ( ) ) ) ) ;
}
//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 . get ( rand . nextInt ( candidateUsers . size ( ) ) ) ) ;
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 ) ;
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 ) {
String assignee = ocrTaskchildPicture . getAssignee ( ) ;
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 . setList ( list ) ;