package com.sxd.activiti.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.Page;
import com.sxd.activiti.constant.OaConstant;
import com.sxd.activiti.dao.*;
import com.sxd.activiti.entity.*;
import com.sxd.activiti.entity.pojo.ActTaskDTO;
import com.sxd.activiti.entity.pojo.HistoryDataDTO;
import com.sxd.activiti.entity.pojo.TaskQueryParam;
import com.sxd.activiti.service.ActTaskService;
import com.sxd.activiti.service.OaCheckRecordService;
import com.sxd.activiti.service.ProcessService;
import com.sxd.common.core.domain.entity.SysUser;
import com.sxd.common.exception.ServiceException;
import com.sxd.common.utils.DateUtils;
import com.sxd.common.utils.SecurityUtils;
import com.sxd.common.utils.StringUtils;
import com.sxd.system.mapper.UserMapper;
import com.sxd.system.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.activiti.bpmn.model.FormProperty;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskInfo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor
public class ActTaskServiceImpl implements ActTaskService {
private final RepositoryService repositoryService;
private final RuntimeService runtimeService;
private final OaCheckRecordMapper oaCheckRecordMapper;
private final ProcessService processService;
private final HistoryService historyService;
private final TaskService taskService;
private final UserMapper userMapper;
private final OaCheckRecordService oaCheckRecordService;
private final UserService userService;
private final AskForLeaveDao askForLeaveDao;
private final OaCardReplacementDao oaCardReplacementDao;
private final OaEvectionDao oaEvectionDao;
private final OaEntryDao oaEntryDao;
private final OaOvertimeMapper oaOvertimeMapper;
private final OaPurchaseMapper oaPurchaseMapper;
private final OaRecruitDao oaRecruitDao;
private final OaResignMapper oaResignMapper;
private final OaUseCarMapper oaUseCarMapper;
private final SubmitApprovalDao submitApprovalDao;
private final TransferDao transferDao;
private final OaProcessDao oaProcessDao;
@Override
public Page<ActTaskDTO> getTodoTasks(TaskQueryParam param) {
Page<ActTaskDTO> list = new Page<>();
param.setAssignee(SecurityUtils.getLoginUser().getUser().getUid());
org.activiti.api.runtime.shared.query.Page<Task> pageTasks =
processService.queryTasksByAssignee(param);
List<Task> tasks = pageTasks.getContent();
int totalItems = pageTasks.getTotalItems();
list.setTotal(totalItems);
if (totalItems != 0) {
// 流程实例id列表
Set<String> processInstanceIdIds = tasks.parallelStream()
.map(Task::getProcessInstanceId).collect(Collectors.toSet());
// 查询流程实例
List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery()
.processInstanceIds(processInstanceIdIds).list();
List<ActTaskDTO> actTaskDTOS = tasks.stream()
.map(t -> {
ProcessInstance processInstance = processInstanceList.parallelStream()
.filter(pi -> t.getProcessInstanceId().equals(pi.getId()))
.findAny().get();
ActTaskDTO actTaskDTO = new ActTaskDTO();
actTaskDTO.setId(t.getId());
actTaskDTO.setName(t.getName());
actTaskDTO.setAssignee(t.getAssignee());
actTaskDTO.setInstanceId(t.getProcessInstanceId());
actTaskDTO.setInstanceName(processInstance.getName());
actTaskDTO.setDefinitionKey(processInstance.getProcessDefinitionKey());
actTaskDTO.setCreateBy(processInstance.getStartUserId());
actTaskDTO.setCreatedDate(processInstance.getStartTime());
actTaskDTO.setReceiveTime(t.getCreateTime());
return actTaskDTO;
}).collect(Collectors.toList());
// 处理uid对应的用户名称
Set<String> uidSet = actTaskDTOS.stream().map(ActTaskDTO::getCreateBy).collect(Collectors.toSet());
Set<String> assigneeUidSet = actTaskDTOS.stream().map(ActTaskDTO::getAssignee).collect(Collectors.toSet());
uidSet.addAll(assigneeUidSet);
List<SysUser> sysUsers = userMapper.selectList(new LambdaQueryWrapper<SysUser>().in(SysUser::getUid, uidSet));
actTaskDTOS = actTaskDTOS.stream().peek(t -> {
for (SysUser sysUser : sysUsers) {
if (Objects.equals(t.getCreateBy(), sysUser.getUid())) {
t.setCreateName(sysUser.getName());
}
if (Objects.equals(t.getAssignee(), sysUser.getUid())) {
t.setAssigneeName(sysUser.getName());
}
}
}).collect(Collectors.toList());
list.addAll(actTaskDTOS);
}
return list;
}
@Override
public Page<ActTaskDTO> getDoneTasks(TaskQueryParam param) {
Page<ActTaskDTO> list = new Page<>();
param.setAssignee(SecurityUtils.getLoginUser().getUser().getUid());
org.activiti.api.runtime.shared.query.Page<HistoricTaskInstance> pageTasks =
processService.queryHistoricTasks(param);
List<HistoricTaskInstance> historicTasks = pageTasks.getContent();
int totalItems = pageTasks.getTotalItems();
list.setTotal(totalItems);
if (totalItems <= 0) {
return list;
}
// 流程实例id列表
Set<String> processInstanceIds = historicTasks.parallelStream()
.map(HistoricTaskInstance::getProcessInstanceId).collect(Collectors.toSet());
// 查询流程实例
List<HistoricProcessInstance> processInstanceList =
historyService.createHistoricProcessInstanceQuery()
.orderByProcessInstanceStartTime()
.desc()
.processInstanceIds(processInstanceIds)
.list();
// 提前查询所有的历史任务,并按照流程实例的ID进行分类
Map<String, List<HistoricTaskInstance>> historicTaskMap = historicTasks.stream()
.collect(Collectors.groupingBy(HistoricTaskInstance::getProcessInstanceId));
// 提前查询所有的当前活动任务,并按照流程实例的ID进行分类
Map<String, List<Task>> activeTaskMap = taskService.createTaskQuery()
.active()
.list()
.stream()
.collect(Collectors.groupingBy(Task::getProcessInstanceId));
// 查询审批结束的流程
Map<String, OaProcess> oaProcessMap = oaProcessDao.getProcessDone(processInstanceIds).stream()
.collect(Collectors.toMap(OaProcess::getInstanceId, Function.identity()));
List<ActTaskDTO> actTaskDTOS = processInstanceList.stream()
.map(pi -> {
ActTaskDTO ac
没有合适的资源?快使用搜索试试~ 我知道了~
activiti.zip
共508个文件
class:220个
java:216个
xml:71个
需积分: 5 0 下载量 127 浏览量
2023-11-02
14:32:01
上传
评论
收藏 897KB ZIP 举报
温馨提示
activiti.zip
资源推荐
资源详情
资源评论
收起资源包目录
activiti.zip (508个子文件)
HrEmployee.class 64KB
ActTaskServiceImpl.class 38KB
OaOvertimeServiceImpl.class 30KB
OaUseCarServiceImpl.class 24KB
OaPurchaseServiceImpl.class 23KB
OaResignServiceImpl.class 23KB
OaEvection.class 20KB
OaEvectionServiceImpl.class 19KB
OaRecruit.class 19KB
OaDailyLogServiceImpl.class 18KB
AskForLeaveController.class 18KB
WeiXinEvection.class 17KB
AskForLeaveServiceImpl.class 17KB
OaCardReplacementServiceImpl.class 17KB
OaEntryServiceImpl.class 16KB
OaRecruitServiceImpl.class 16KB
OaEntryController.class 16KB
OaPurchase.class 15KB
OaUseCar.class 15KB
OaEntry.class 15KB
OaOvertime.class 14KB
OaRecruitController.class 14KB
OaResign.class 14KB
ProcessServiceImpl.class 14KB
OaCardReplacement.class 13KB
ExcelUtil.class 13KB
OaCardReplacementController.class 13KB
SubmitApprovalServiceImpl.class 12KB
OaNoticeServiceImpl.class 11KB
OaNotice.class 11KB
ProcessDefinitionServiceImpl.class 11KB
ActRuTask.class 11KB
ActTaskDTO.class 10KB
SubmitApproval.class 10KB
Institution.class 10KB
OaEvectionController.class 10KB
AskForLeave.class 10KB
TransferServiceImpl.class 9KB
Transfer.class 9KB
SubmitApprovalController.class 9KB
OaOvertimeCompensation.class 9KB
OaDailyLog.class 8KB
OaDailyLogReviewImpl.class 7KB
OaMessage.class 7KB
ActWorkflowFormData.class 7KB
SysRoles.class 7KB
OaCheckRecord.class 7KB
InstitutionServiceImpl.class 7KB
ExcelService.class 7KB
OaNoticeController.class 7KB
OaPurchaseItem.class 7KB
DailyLogData.class 7KB
OaDailyLogTemplateVisit.class 6KB
OaAreaServiceImpl.class 6KB
SubmitApprovalVo.class 6KB
AskForLeaveVo.class 6KB
OaDailyLogReview.class 6KB
ClockController.class 6KB
OaResignController.class 6KB
OaAreaController.class 6KB
OaPurchaseController.class 6KB
OaOvertimeController.class 6KB
OaUseCarController.class 6KB
OaOvertimeCompensationServiceImpl.class 6KB
DailyLogShow.class 6KB
ProcessDefinitionDTO.class 5KB
OaUseCarItem.class 5KB
OaDailyLogReceiver.class 5KB
ExcelPoiUtils.class 5KB
TransferController.class 5KB
ProcessDefinitionController.class 5KB
TaskController.class 5KB
TransferVo.class 5KB
OaMessageController.class 5KB
OaWeixnController.class 5KB
TransferEndStateListener.class 5KB
OaPurchaseQueryParam.class 5KB
OaOvertimeQueryParam.class 5KB
TaskQueryParam.class 5KB
TaskVue.class 4KB
OaDailyLogController.class 4KB
ClockDTO.class 4KB
FormHistoryDataServiceImpl.class 4KB
OaProcess.class 4KB
OaDailyLogReceiverServiceImpl.class 4KB
HrEmployeeServiceImpl.class 4KB
OaEventionReport.class 4KB
OaUseCarQueryParam.class 4KB
OaResignQueryParam.class 4KB
OaMessageServiceImpl.class 4KB
SubmitApprovalEndStateListener.class 4KB
ActReProcdefController.class 4KB
AskforLeaveEndStateListener.class 4KB
HrEmployeeController.class 4KB
HrDepartment.class 4KB
HistoryDataDTO.class 4KB
ActWorkflowFormDataDTO.class 4KB
OaPurchaseItemServiceImpl.class 4KB
OaUseCarItemServiceImpl.class 4KB
OaRecruitEndStateListener.class 4KB
共 508 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
Summer524!
- 粉丝: 16
- 资源: 110
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功