| | |
| | | import com.ruoyi.system.mapper.StateProcessTemplateMapper; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.service.*; |
| | | import com.ruoyi.system.vo.ProcessDetailVO; |
| | | import com.ruoyi.system.vo.ProcessTaskListVO; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.commons.io.IOUtils; |
| | |
| | | private FlwHisTaskActorMapper flwHisTaskActorMapper; |
| | | @Autowired |
| | | private ISysUserService sysUserService; |
| | | @Autowired |
| | | private TContractService contractService; |
| | | |
| | | /** |
| | | * 流程模版分页 |
| | |
| | | stateTaskCenter.setRemark(processStartBO.getRemark()); |
| | | stateTaskCenter.setCreateBy(loginUser.getUser().getNickName()); |
| | | stateTaskCenter.setVariable(JSONUtil.toJsonStr(processStartBO.getVariable())); |
| | | stateTaskCenter.setProjectId(JSONObject.parseObject(JSONUtil.toJsonStr(processStartBO.getVariable())).getString("projectId")); |
| | | stateTaskCenterService.save(stateTaskCenter); |
| | | |
| | | // action记录 |
| | |
| | | |
| | | //转换类 |
| | | List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class); |
| | | |
| | | // 查询合同信息 |
| | | for (ProcessTaskListVO processTaskListVO : processTaskListVOS) { |
| | | // 查询合同信息 |
| | | TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId")); |
| | | processTaskListVO.setContract(contract); |
| | | } |
| | | |
| | | pageInfo.setRecords(processTaskListVOS); |
| | | |
| | | List<String> updateUserId = processTaskListVOS.stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList()); |
| | |
| | | PageInfo<StateTaskCenter> taskCenters = stateTaskCenterService.page(pageInfo,stateTaskQuery); |
| | | //转换类 |
| | | List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class); |
| | | |
| | | // 查询合同信息 |
| | | for (ProcessTaskListVO processTaskListVO : processTaskListVOS) { |
| | | // 查询合同信息 |
| | | TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId")); |
| | | processTaskListVO.setContract(contract); |
| | | } |
| | | |
| | | pageInfo.setRecords(processTaskListVOS); |
| | | |
| | | if (ObjectUtil.isEmpty(processTaskListVOS)) { |
| | |
| | | stateProcessInstanceActionService.save(record); |
| | | } |
| | | |
| | | @Override |
| | | public PageInfo<ProcessTaskListVO> dealAndWaitTaskPage(ProcessTaskListBO processTaskListBO) { |
| | | //获取当前登录用户信息 |
| | | Long userId = SecurityUtils.getLoginUser().getUserId(); |
| | | |
| | | //或签时查询其他审批人是否通过(不能省略),比如 同一任务需要A,B审核,A通过了,B不用在审核了,在历史表查询A的审核记录 |
| | | LambdaQueryWrapper<FlwHisInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | lambdaQueryWrapper.orderByDesc(FlowEntity::getCreateTime); |
| | | //待审核,通过,拒绝 |
| | | lambdaQueryWrapper.in(FlwHisInstance::getInstanceState, 0,1,2); |
| | | |
| | | List<Long> flwHisInstances = flwHisInstanceMapper.selectList(lambdaQueryWrapper).stream() |
| | | .map(FlwHisInstance::getId).collect(Collectors.toList()); |
| | | if (ObjectUtil.isEmpty(flwHisInstances)) { |
| | | return new PageInfo<>(); |
| | | } |
| | | |
| | | //查询任务参与者 |
| | | LambdaQueryWrapper<FlwTaskActor> query = new LambdaQueryWrapper<>(); |
| | | query.and(qy -> qy.eq(FlwTaskActor::getActorId, userId) |
| | | //0指定用户 |
| | | .eq(FlwTaskActor::getActorType, 0) |
| | | .or().in(FlwTaskActor::getActorId, userId) |
| | | //1指定角色 |
| | | .eq(FlwTaskActor::getActorType, 1)); |
| | | if (ObjectUtil.isNotNull(processTaskListBO) && ObjectUtil.isNotNull(flwHisInstances)) { |
| | | // 添加条件 |
| | | query = query.in(FlwTaskActor::getInstanceId, flwHisInstances); |
| | | } |
| | | List<FlwTaskActor> flwTaskActorPage = flwTaskActorMapper.selectList(query); |
| | | if (ObjectUtil.isEmpty(flwTaskActorPage)) { |
| | | return new PageInfo<>(); |
| | | } |
| | | //查询任务信息 |
| | | List<FlwTask> flwTasks = flwTaskMapper.selectList(Wrappers.<FlwTask>lambdaQuery() |
| | | .orderByDesc(FlwTask::getCreateTime) |
| | | .in(FlwTask::getId, flwTaskActorPage.stream() |
| | | .map(FlwTaskActor::getTaskId).collect(Collectors.toList()))); |
| | | |
| | | if (ObjectUtil.isNull(flwTasks)) { |
| | | return new PageInfo<>(); |
| | | } |
| | | List<String> instanceIds = flwTasks.stream().map(FlwTask::getInstanceId) |
| | | .map(String::valueOf).collect(Collectors.toList()); |
| | | //分页查询任务中心任务 |
| | | // LambdaQueryWrapper<StateTaskCenter> stateTaskQuery = new LambdaQueryWrapper<>(); |
| | | // if (ObjectUtil.isNotEmpty(processTaskListBO.getName())) { |
| | | // stateTaskQuery.like(StateTaskCenter::getName, processTaskListBO.getName()); |
| | | // } |
| | | // if (ObjectUtil.isNotEmpty(processTaskListBO.getModuleName())) { |
| | | // stateTaskQuery.like(StateTaskCenter::getModuleName, processTaskListBO.getModuleName()); |
| | | // } |
| | | // if (ObjectUtil.isNotEmpty(processTaskListBO.getCreateBy())) { |
| | | // stateTaskQuery.like(StateTaskCenter::getCreateBy, processTaskListBO.getCreateBy()); |
| | | // } |
| | | // stateTaskQuery.in(StateTaskCenter::getFlowId, instanceIds); |
| | | // stateTaskQuery.orderByDesc(BaseModel::getCreateTime); |
| | | processTaskListBO.setInstanceIds(instanceIds); |
| | | // PageInfo pageInfo = new PageInfo(processTaskListBO.getPageNum(), processTaskListBO.getPageSize()); |
| | | // PageInfo<StateTaskCenter> taskCenters = stateTaskCenterService.page(pageInfo,stateTaskQuery); |
| | | // //转换类 |
| | | // List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class); |
| | | // // 查询合同信息 |
| | | // for (ProcessTaskListVO processTaskListVO : processTaskListVOS) { |
| | | // // 查询合同信息 |
| | | // TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId")); |
| | | // processTaskListVO.setContract(contract); |
| | | // } |
| | | // pageInfo.setRecords(processTaskListVOS); |
| | | |
| | | PageInfo<ProcessTaskListVO> processTaskListVOS = stateTaskCenterService.pageList(processTaskListBO); |
| | | |
| | | List<String> updateUserId = processTaskListVOS.getRecords().stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList()); |
| | | Map<Long, SysUser> sysUserMap; |
| | | if (!CollectionUtils.isEmpty(updateUserId)) { |
| | | //根据用户id查询更新人信息 |
| | | List<SysUser> sysUsers = sysUserService.selectUserByUserNameList(updateUserId); |
| | | |
| | | if (!CollectionUtils.isEmpty(sysUsers)) { |
| | | sysUserMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity())); |
| | | } else { |
| | | sysUserMap = new HashMap<>(); |
| | | } |
| | | } else { |
| | | sysUserMap = new HashMap<>(); |
| | | } |
| | | |
| | | |
| | | Map<Long, List<FlwTask>> flwHisTaskMap = flwTasks.stream().collect(Collectors.groupingBy(FlwTask::getInstanceId)); |
| | | |
| | | for (ProcessTaskListVO processTaskListVO : processTaskListVOS.getRecords()) { |
| | | List<FlwTask> flwTask = flwHisTaskMap.get(NumberUtil.parseLong(processTaskListVO.getFlowId())); |
| | | if (!CollectionUtils.isEmpty(flwTask) && ObjectUtil.isNotEmpty(flwTask.get(0))) { |
| | | //待审核 |
| | | processTaskListVO.setStatus("0"); |
| | | processTaskListVO.setNodeName(flwTask.get(0).getTaskName()); |
| | | processTaskListVO.setTaskId(flwTask.get(0).getId().toString()); |
| | | processTaskListVO.setVariable(flwTask.get(0).getVariable()); |
| | | } |
| | | SysUser sysUser = sysUserMap.get(processTaskListVO.getCreateBy()); |
| | | if (Objects.nonNull(sysUser)) { |
| | | processTaskListVO.setCreateBy(sysUser.getNickName()); |
| | | } |
| | | } |
| | | return processTaskListVOS; |
| | | } |
| | | |
| | | @Override |
| | | public ProcessDetailVO detail(String taskId) { |
| | | ProcessDetailVO processDetailVO = new ProcessDetailVO(); |
| | | FlwTask flwTask = flwTaskMapper.selectById(Long.valueOf(taskId)); |
| | | // 查询合同信息 |
| | | TContract contract = contractService.getById(JSONObject.parseObject(flwTask.getVariable()).getString("projectId")); |
| | | BeanUtil.copyProperties(contract, processDetailVO); |
| | | |
| | | List<StateProcessInstanceAction> list = stateProcessInstanceActionService.list(Wrappers.<StateProcessInstanceAction>lambdaQuery().eq(StateProcessInstanceAction::getInstanceId, flwTask.getInstanceId()) |
| | | .orderByDesc(StateProcessInstanceAction::getCreateTime)); |
| | | processDetailVO.setInstanceActions(list); |
| | | |
| | | return processDetailVO; |
| | | } |
| | | |
| | | private FlowCreator currentFlowCreator() { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | if (null == loginUser || null == loginUser.getUser().getUserId()) { |