问题描述
@Override
public Page<ApprovalProcessEntity> getApprovalProcess(int page,int size,String approvalNum,String approvalType,int approvalStatus,Date start,Date end) {
//jpa inseart
checkAndInsertApprovalProcess();
//querydsl select
return getApprovalProcess2(page,size,approvalNum,approvalType,approvalStatus,start,end);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void checkAndInsertApprovalProcess() {
List<Task> list = taskService.createTaskQuery().taskCandidateOrAssigned(curUserId()).list();
String confirmVar = "IS_CONFIRM";
List<ApprovalProcessEntity> entities = new ArrayList<>();
Set<String> processInstanceIds = new HashSet<>();
for (Task task : list) {
processInstanceIds.add(task.getProcessInstanceId());
}
Map<String,ApprovalApplyEntity> map = approvalApplyDao.findAllByProcessInstanceIdIn(processInstanceIds).stream().collect(Collectors.toMap(ApprovalApplyEntity::getProcessInstanceId,k -> k));
for (Task task : list) {
Object confirm = taskService.getvariable(task.getId(),confirmVar);
if (confirm != null) {
continue;
}
taskService.setvariable(task.getId(),confirmVar,true);
ApprovalProcessEntity entity = new ApprovalProcessEntity();
String processInstanceId = task.getProcessInstanceId();
ApprovalApplyEntity apply = map.get(processInstanceId);
entity.setApprovalStatus(1);
entity.setCurNode(task.getName());
entities.add(entity);
}
approvalProcessDao.saveAll(entities);
}
Page<ApprovalProcessEntity> getApprovalProcess2(int page,Date end) {
String userId = curUserId();
QApprovalProcessEntity qEntity = QApprovalProcessEntity.approvalProcessEntity;
JPAQuery<ApprovalProcessEntity> jpaQuery = queryFactory
.selectFrom(qEntity)
.where(qEntity.createTime.between(start,end))
.where(qEntity.createPerson.eq(userId));
if (StrUtil.isNotBlank(approvalNum)) {
jpaQuery = jpaQuery.where(qEntity.approvalNum.eq(approvalNum));
}
if (StrUtil.isNotBlank(approvalType)) {
jpaQuery = jpaQuery.where(qEntity.approvalType.eq(approvalType));
}
if (approvalStatus != -1) {
jpaQuery = jpaQuery.where(qEntity.approvalStatus.eq(approvalStatus));
}
PageRequest pr = PageRequest.of(page,size);
List<ApprovalProcessEntity> entities = jpaQuery.offset(pr.getoffset()).limit(pr.getPageSize()).fetch();
return new PageImpl<>(entities,pr,jpaQuery.fetchCount());
}
如果某些任务没有被确认,则在表中插入一个新实体;
然后从这个表中选择数据; 如果我使用以下代码, 当我有一个新任务时,它可以成功插入, 但不能立即选择数据,
如果再次调用 getApprovalProcess(),getApprovalProcess2() 方法运行良好, 那么如何在插入后立即选择数据; 同时,如果我改变 getApprovalProcess2() 像:
Page<ApprovalProcessEntity> getApprovalProcess2(int page,Date end) {
return approvalProcessDao.findAll(PageRequest.of(page,size));
}
然后创建一个新任务并再次调用getApprovalProcess()方法() 它可以立即选择数据,效果很好 但实际上我想要的是PrevIoUs Impl,所以我应该怎么做才能使它起作用;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)