From 2257a0849b158429b89bc22de8b567e39b8672fd Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 26 二月 2025 17:50:23 +0800 Subject: [PATCH] 审批流 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java | 508 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 506 insertions(+), 2 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java index 3597645..72b02f5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; @@ -400,6 +401,145 @@ } return pageInfo; } + /** + * 待办 + * @param processTaskListBO + * @return + */ + @Override + public PageInfo<ProcessTaskListVO> waitTaskPageApplet(ProcessTaskListBO processTaskListBO) { + + String startTime = null; + String endTime = null; + if(Objects.nonNull(processTaskListBO.getTimeType())){ + switch (processTaskListBO.getTimeType()){ + case 1: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + case 2: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -7), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + case 3: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -30), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + } + } + + //获取当前登录用户信息 + Long userId = SecurityUtils.getLoginUser().getUserId(); + + //或签时查询其他审批人是否通过(不能省略),比如 同一任务需要A,B审核,A通过了,B不用在审核了,在历史表查询A的审核记录 + LambdaQueryWrapper<FlwHisInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.orderByDesc(FlowEntity::getCreateTime); + //待审核 + lambdaQueryWrapper.eq(FlwHisInstance::getInstanceState, 0); + + 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()); + } + if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) { + stateTaskQuery.between(StateTaskCenter::getCreateTime, startTime, endTime); + } + if (processTaskListBO.getSortBy() == 1) { + stateTaskQuery.orderByAsc(BaseModel::getCreateTime); + } + if (processTaskListBO.getSortBy() == 2) { + stateTaskQuery.orderByDesc(BaseModel::getCreateTime); + } + stateTaskQuery.in(StateTaskCenter::getFlowId, 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); + + List<String> updateUserId = processTaskListVOS.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) { + 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 pageInfo; + } @Override public PageInfo<ProcessTaskListVO> dealTaskPage(ProcessTaskListBO processTaskListBO) { @@ -447,6 +587,141 @@ } stateTaskQuery.in(StateTaskCenter::getFlowId, instanceId); stateTaskQuery.orderByDesc(BaseModel::getCreateTime); + 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); + + if (ObjectUtil.isEmpty(processTaskListVOS)) { + return pageInfo; + } + Map<Long, List<FlwHisTask>> flwHisTaskMap = flwHisTaskList.stream().collect(Collectors.groupingBy(FlwHisTask::getInstanceId)); + //查询原因 + List<String> taskIds = flwHisTaskList.stream().map(FlowEntity::getId).map(String::valueOf).collect(Collectors.toList()); + List<StateProcessInstanceAction> actions = stateProcessInstanceActionService.list( + Wrappers.<StateProcessInstanceAction>lambdaQuery().in(StateProcessInstanceAction::getNodeId, taskIds)); + Map<String, StateProcessInstanceAction> actionMap = actions.stream().collect(Collectors.toMap(StateProcessInstanceAction::getNodeId, Function.identity())); + + List<String> updateUserId = processTaskListVOS.stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList()); + Map<Long, SysUser> sysUserMap; + if (!CollectionUtils.isEmpty(updateUserId)) { + 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<>(); + } + + for (ProcessTaskListVO processTaskListVO : processTaskListVOS) { + List<FlwHisTask> flwHisTasks = flwHisTaskMap.get(NumberUtil.parseLong(processTaskListVO.getFlowId())); + if (ObjectUtil.isNotEmpty(flwHisTaskMap)) { + //当某个用户在同一个模块审批流的多个节点都存在时,多次审核后,已审核列表页报错 + for (FlwHisTask flwHisTask : flwHisTasks) { + if (flwHisTask.getInstanceId().toString().equals(processTaskListVO.getFlowId())) { + //10等于发起人与审批人一致自动审核完成 + processTaskListVO.setStatus(flwHisTask.getTaskState() == 10 ? "2" : flwHisTask.getTaskState().toString()); + processTaskListVO.setNodeName(flwHisTask.getTaskName()); + processTaskListVO.setTaskId(flwHisTask.getId().toString()); + processTaskListVO.setVariable(flwHisTask.getVariable()); + } + } + } + StateProcessInstanceAction action = actionMap.get(processTaskListVO.getTaskId()); + if (ObjectUtil.isNotEmpty(action)) { + processTaskListVO.setReason(action.getRemark()); + } + SysUser sysUser = sysUserMap.get(processTaskListVO.getCreateBy()); + if (Objects.nonNull(sysUser)) { + processTaskListVO.setCreateBy(sysUser.getNickName()); + } + } + return pageInfo; + } + @Override + public PageInfo<ProcessTaskListVO> dealTaskPageApplet(ProcessTaskListBO processTaskListBO) { + String startTime = null; + String endTime = null; + if(Objects.nonNull(processTaskListBO.getTimeType())){ + switch (processTaskListBO.getTimeType()){ + case 1: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + case 2: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -7), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + case 3: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -30), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + } + } + //获取当前登录用户信息 + Long userId = SecurityUtils.getLoginUser().getUserId(); + LambdaQueryWrapper<FlwHisTaskActor> query = Wrappers.<FlwHisTaskActor>lambdaQuery() + .and(qy -> qy.eq(FlwTaskActor::getActorId, userId) + //0指定用户 + .eq(FlwTaskActor::getActorType, 0) + //指定角色 + .or().in(FlwTaskActor::getActorId, userId) + .eq(FlwTaskActor::getActorType, 1)); + List<FlwHisTaskActor> flwHisTaskActors = flwHisTaskActorMapper.selectList(query); + + List<Long> hisTaskIds = flwHisTaskActors.stream().map(FlwTaskActor::getTaskId).collect(Collectors.toList()); + + if (hisTaskIds.isEmpty()) { + return new PageInfo<>(); + } + + List<FlwHisTask> flwHisTaskList = flwHisTaskMapper.selectList( + Wrappers.<FlwHisTask>lambdaQuery() + .notIn(FlwHisTask::getTaskType, TaskType.cc.getValue(), TaskType.major.getValue()) + .orderByDesc(FlwHisTask::getCreateTime) + .in(FlwHisTask::getId, hisTaskIds)); + if (ObjectUtil.isEmpty(flwHisTaskList)) { + new PageInfo<>(); + } + + List<String> instanceId = flwHisTaskList.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()); + } + if (ObjectUtil.isEmpty(instanceId)) { + return new PageInfo<>(); + } + if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) { + stateTaskQuery.between(StateTaskCenter::getCreateTime, startTime, endTime); + } + if (processTaskListBO.getSortBy() == 1) { + stateTaskQuery.orderByAsc(BaseModel::getCreateTime); + } + if (processTaskListBO.getSortBy() == 2) { + stateTaskQuery.orderByDesc(BaseModel::getCreateTime); + } + stateTaskQuery.in(StateTaskCenter::getFlowId, instanceId); PageInfo pageInfo = new PageInfo<>(processTaskListBO.getPageNum(), processTaskListBO.getPageSize()); PageInfo<StateTaskCenter> taskCenters = stateTaskCenterService.page(pageInfo,stateTaskQuery); //转换类 @@ -759,21 +1034,250 @@ return processTaskListVOS; } +// @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()); +// +// //查询任务参与者 +// 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); +// List<String> instanceIds = new ArrayList<>(); +// List<FlwTask> flwTasks = new ArrayList<>(); +// if (ObjectUtil.isNotEmpty(flwTaskActorPage)) { +// //查询任务信息 +// flwTasks = flwTaskMapper.selectList(Wrappers.<FlwTask>lambdaQuery() +// .orderByDesc(FlwTask::getCreateTime) +// .in(FlwTask::getId, flwTaskActorPage.stream() +// .map(FlwTaskActor::getTaskId).collect(Collectors.toList()))); +// if (ObjectUtil.isNotNull(flwTasks)) { +// instanceIds = flwTasks.stream().map(FlwTask::getInstanceId) +// .map(String::valueOf).collect(Collectors.toList()); +// } +// } +// +// LambdaQueryWrapper<FlwHisTaskActor> hisQuery= Wrappers.<FlwHisTaskActor>lambdaQuery() +// .and(qy -> qy.eq(FlwTaskActor::getActorId, userId) +// //0指定用户 +// .eq(FlwTaskActor::getActorType, 0) +// //指定角色 +// .or().in(FlwTaskActor::getActorId, userId) +// .eq(FlwTaskActor::getActorType, 1)); +// List<FlwHisTaskActor> flwHisTaskActors = flwHisTaskActorMapper.selectList(hisQuery); +// List<Long> hisTaskIds = flwHisTaskActors.stream().map(FlwTaskActor::getTaskId).collect(Collectors.toList()); +// +// if (!CollectionUtils.isEmpty(hisTaskIds)) { +// List<FlwHisTask> flwHisTaskList = flwHisTaskMapper.selectList( +// Wrappers.<FlwHisTask>lambdaQuery() +// .notIn(FlwHisTask::getTaskType, TaskType.cc.getValue(), TaskType.major.getValue()) +// .orderByDesc(FlwHisTask::getCreateTime) +// .in(FlwHisTask::getId, hisTaskIds)); +// if (ObjectUtil.isNotEmpty(flwHisTaskList)) { +// instanceIds.addAll(flwHisTaskList.stream().map(FlwHisTask::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 = new HashMap<>(); +// if(!CollectionUtils.isEmpty(flwTasks)){ +// flwHisTaskMap = flwTasks.stream().collect(Collectors.groupingBy(FlwTask::getInstanceId)); +// } +// +// for (ProcessTaskListVO processTaskListVO : processTaskListVOS.getRecords()) { +// if(!CollectionUtils.isEmpty(flwHisTaskMap)){ +// 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")); + TContract contract; + Long instanceId; + if(Objects.nonNull(flwTask)){ + instanceId = flwTask.getInstanceId(); + // 查询合同信息 + contract = contractService.getById(JSONObject.parseObject(flwTask.getVariable()).getString("projectId")); + }else { + FlwHisTask flwHisTask = flwHisTaskMapper.selectById(Long.valueOf(taskId)); + if(Objects.isNull(flwHisTask)){ + throw new GlobalException("流程不存在"); + } + instanceId = flwHisTask.getInstanceId(); + contract = contractService.getById(Objects.requireNonNull(JSONObject.parseObject(flwHisTask.getVariable())).getString("projectId")); + } BeanUtil.copyProperties(contract, processDetailVO); + + // 查询历史任务 + List<FlwHisTask> flwHisTasks = flwHisTaskMapper.selectList(Wrappers.<FlwHisTask>lambdaQuery().eq(FlwHisTask::getInstanceId, instanceId)); + processDetailVO.setFlwHisTasks(flwHisTasks); List<StateProcessInstanceAction> list = stateProcessInstanceActionService.list(Wrappers.<StateProcessInstanceAction>lambdaQuery().eq(StateProcessInstanceAction::getInstanceId, flwTask.getInstanceId()) .orderByDesc(StateProcessInstanceAction::getCreateTime)); + for (StateProcessInstanceAction stateProcessInstanceAction : list) { + SysUser sysUser = sysUserService.selectUserById(Long.valueOf(stateProcessInstanceAction.getAuditorId())); + if(Objects.nonNull(sysUser)){ + stateProcessInstanceAction.setNickName(sysUser.getNickName()); + } + } processDetailVO.setInstanceActions(list); return processDetailVO; } + @Override + public PageInfo<ProcessTaskListVO> initiateTaskPage(ProcessTaskListBO processTaskListBO) { + String startTime = null; + String endTime = null; + if(Objects.nonNull(processTaskListBO.getTimeType())){ + switch (processTaskListBO.getTimeType()){ + case 1: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + case 2: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -7), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + case 3: + startTime = DateUtil.format(DateUtil.offsetDay(new Date(), -30), "yyyy-MM-dd") + " 00:00:00"; + endTime = DateUtil.format(DateUtil.offsetDay(new Date(), -1), "yyyy-MM-dd") + " 23:59:59"; + break; + } + } + //获取当前登录用户信息 + Long userId = SecurityUtils.getLoginUser().getUserId(); + + //分页查询任务中心任务 + LambdaQueryWrapper<FlwHisTask> stateTaskQuery = new LambdaQueryWrapper<>(); + if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)) { + stateTaskQuery.between(FlwHisTask::getCreateTime, startTime, endTime); + } + if (processTaskListBO.getSortBy() == 1) { + stateTaskQuery.orderByAsc(FlwHisTask::getCreateTime); + } + if (processTaskListBO.getSortBy() == 2) { + stateTaskQuery.orderByDesc(FlwHisTask::getCreateTime); + } + stateTaskQuery.eq(FlwHisTask::getParentTaskId, 0L); + stateTaskQuery.like(FlwHisTask::getCreateId, userId); + PageInfo pageInfo = new PageInfo<>(processTaskListBO.getPageNum(), processTaskListBO.getPageSize()); + PageInfo<FlwHisTask> taskCenters = flwHisTaskMapper.selectPage(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)) { + return pageInfo; + } + List<String> updateUserId = processTaskListVOS.stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList()); + Map<Long, SysUser> sysUserMap; + if (!CollectionUtils.isEmpty(updateUserId)) { + 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<>(); + } + + for (ProcessTaskListVO processTaskListVO : processTaskListVOS) { + SysUser sysUser = sysUserMap.get(processTaskListVO.getCreateBy()); + if (Objects.nonNull(sysUser)) { + processTaskListVO.setCreateBy(sysUser.getNickName()); + } + } + return pageInfo; + } + private FlowCreator currentFlowCreator() { LoginUser loginUser = SecurityUtils.getLoginUser(); if (null == loginUser || null == loginUser.getUser().getUserId()) { -- Gitblit v1.7.1