| | |
| | | Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize()); |
| | | |
| | | // 基于workFlowType查询流程实例ID集合 |
| | | List<String> workFlowIds = fetchWorkflowProcessInstanceIds( |
| | | List<Object> workFlowsList = fetchWorkflowProcessInstanceIds( |
| | | queryDTO.getWorkFlowType(), |
| | | queryDTO.getUserId(), |
| | | queryDTO.getDepartmentId(), |
| | |
| | | ); |
| | | |
| | | // 如果没有任何流程ID,直接返回空分页 |
| | | if (workFlowIds == null || workFlowIds.isEmpty()) { |
| | | if (workFlowsList == null || workFlowsList.isEmpty()) { |
| | | return new PageResult<OrderDetailVO>( |
| | | java.util.Collections.emptyList(), |
| | | 0L, |
| | |
| | | 0L |
| | | ); |
| | | } |
| | | |
| | | List<String> workFlowIds = workFlowsList.stream() |
| | | .filter(item -> item instanceof Map) |
| | | .map(item -> (Map<?, ?>) item) |
| | | .map(m -> m.get("processInstanceId")) |
| | | .filter(Objects::nonNull) |
| | | .map(Object::toString) |
| | | .collect(Collectors.toList()); |
| | | |
| | | Map<String,String> workFlowIdAndTaskIdMap = workFlowsList.stream() |
| | | .filter(item -> item instanceof Map) |
| | | .map(item -> (Map<?, ?>) item).collect(Collectors.toMap(m -> m.get("processInstanceId").toString(), m -> m.get("taskId").toString(),(k1,k2) -> k2)); |
| | | |
| | | // 执行分页查询 |
| | | IPage<OrderInfo> result = baseMapper.selectPendingApprovalOrderPage( |
| | |
| | | return item; |
| | | }).collect(java.util.stream.Collectors.toList()); |
| | | vo.setOrderDetails(items); |
| | | vo.setTaskId(workFlowIdAndTaskIdMap.get(vo.getWorkflowId())); |
| | | return vo; |
| | | }).collect(java.util.stream.Collectors.toList()); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public PageResult<OrderInfo> getPendingApprovalOrderPageWithProductConditions(OrderQueryDTO queryDTO) { |
| | | public PageResult<OrderDetailVO> getPendingApprovalOrderPageWithProductConditions(OrderQueryDTO queryDTO) { |
| | | // 根据产品条件查询产品ID列表 |
| | | List<String> productIds = null; |
| | | if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) || |
| | |
| | | |
| | | // 如果没有找到匹配的产品,直接返回空结果 |
| | | if (CollectionUtils.isEmpty(productIds)) { |
| | | return new PageResult<OrderInfo>( |
| | | return new PageResult<OrderDetailVO>( |
| | | java.util.Collections.emptyList(), |
| | | 0L, |
| | | queryDTO.getPageNum().longValue(), |
| | |
| | | |
| | | // 执行分页查询 |
| | | // 基于workFlowType查询流程实例ID集合 |
| | | List<String> workFlowIds = fetchWorkflowProcessInstanceIds( |
| | | List<?> workFlowList = fetchWorkflowProcessInstanceIds( |
| | | queryDTO.getWorkFlowType(), |
| | | queryDTO.getUserId(), |
| | | queryDTO.getDepartmentId(), |
| | |
| | | queryDTO.getPageNum(), |
| | | queryDTO.getPageSize() |
| | | ); |
| | | |
| | | // 如果没有任何流程ID,直接返回空分页 |
| | | if (workFlowIds == null || workFlowIds.isEmpty()) { |
| | | return new PageResult<OrderInfo>( |
| | | java.util.Collections.emptyList(), |
| | | 0L, |
| | | queryDTO.getPageNum().longValue(), |
| | | queryDTO.getPageSize().longValue(), |
| | | 0L |
| | | if (workFlowList == null || workFlowList.isEmpty()) { |
| | | return new PageResult<OrderDetailVO>( |
| | | java.util.Collections.emptyList(), |
| | | 0L, |
| | | queryDTO.getPageNum().longValue(), |
| | | queryDTO.getPageSize().longValue(), |
| | | 0L |
| | | ); |
| | | } |
| | | |
| | | List<String> workFlowIds = workFlowList.stream() |
| | | .filter(item -> item instanceof Map) |
| | | .map(item -> (Map<?, ?>) item) |
| | | .map(m -> m.get("processInstanceId")) |
| | | .filter(Objects::nonNull) |
| | | .map(Object::toString) |
| | | .collect(Collectors.toList()); |
| | | |
| | | Map<String,String> workFlowIdAndTaskIdMap = workFlowList.stream() |
| | | .filter(item -> item instanceof Map) |
| | | .map(item -> (Map<?, ?>) item).collect(Collectors.toMap(m -> m.get("processInstanceId").toString(), m -> m.get("taskId").toString(),(k1,k2) -> k2)); |
| | | |
| | | |
| | | IPage<OrderInfo> result = baseMapper.selectPendingApprovalOrderPageWithProductConditions( |
| | | page, queryDTO.getOrderStatus(), queryDTO.getProductName(), queryDTO.getProviderName(), |
| | |
| | | queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().toString() : null, |
| | | queryDTO.getOrderBy(), queryDTO.getOrderDirection(), productIds, workFlowIds |
| | | ); |
| | | // 将订单与详情联表封装到VO |
| | | List<OrderDetailVO> voList = result.getRecords().stream().map(order -> { |
| | | OrderDetailVO vo = new OrderDetailVO(); |
| | | BeanUtils.copyProperties(order, vo); |
| | | List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId()); |
| | | List<OrderDetailItemVO> items = details.stream().map(d -> { |
| | | OrderDetailItemVO item = new OrderDetailItemVO(); |
| | | BeanUtils.copyProperties(d, item); |
| | | return item; |
| | | }).collect(java.util.stream.Collectors.toList()); |
| | | vo.setOrderDetails(items); |
| | | vo.setTaskId(workFlowIdAndTaskIdMap.get(vo.getWorkflowId())); |
| | | return vo; |
| | | }).collect(java.util.stream.Collectors.toList()); |
| | | |
| | | // 构建返回结果 |
| | | return new PageResult<OrderInfo>( |
| | | result.getRecords(), |
| | | return new PageResult<OrderDetailVO>( |
| | | voList, |
| | | result.getTotal(), |
| | | queryDTO.getPageNum().longValue(), |
| | | queryDTO.getPageSize().longValue(), |
| | |
| | | // 根据审批结果调用提交或驳回接口 |
| | | String comment = orderApprovalDTO.getApprovalResult().contains("驳回") ? "审核驳回" : "审核通过"; |
| | | if ("审核驳回".equals(comment)) { |
| | | rejectWorkflowTask(orderInfo.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), comment); |
| | | rejectWorkflowTask(orderApprovalDTO.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), comment); |
| | | } else { |
| | | completeWorkflowTask(orderInfo.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), comment); |
| | | completeWorkflowTask(orderApprovalDTO.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), comment); |
| | | } |
| | | |
| | | log.info("审批记录添加成功,订单ID: {}, 审批类型: {}, 审批结果: {}, 审批人: {}, 审批意见: {}", |
| | |
| | | * 按照workFlowType查询流程实例ID集合 |
| | | * workFlowType: 0=代办,1=已办 |
| | | */ |
| | | private List<String> fetchWorkflowProcessInstanceIds(Integer workFlowType, String userId, String depId,String businessKey,Integer pageIndex, Integer pageSize) { |
| | | private List<Object> fetchWorkflowProcessInstanceIds(Integer workFlowType, String userId, String depId,String businessKey,Integer pageIndex, Integer pageSize) { |
| | | try { |
| | | if (workFlowType == null) { |
| | | return java.util.Collections.emptyList(); |
| | |
| | | if (!(dataObj instanceof java.util.List)) { |
| | | return java.util.Collections.emptyList(); |
| | | } |
| | | java.util.List<?> list = (java.util.List<?>) dataObj; |
| | | return list.stream() |
| | | .filter(item -> item instanceof Map) |
| | | .map(item -> (Map<?, ?>) item) |
| | | .map(m -> m.get("processInstanceId")) |
| | | .filter(Objects::nonNull) |
| | | .map(Object::toString) |
| | | .collect(Collectors.toList()); |
| | | java.util.List<Object> list = (java.util.List<Object>) dataObj; |
| | | return list; |
| | | // list.stream() |
| | | // .filter(item -> item instanceof Map) |
| | | // .map(item -> (Map<?, ?>) item) |
| | | // .map(m -> m.get("processInstanceId")) |
| | | // .filter(Objects::nonNull) |
| | | // .map(Object::toString) |
| | | // .collect(Collectors.toList()); |
| | | }else { |
| | | if (!(dataObj instanceof Map)) { |
| | | return java.util.Collections.emptyList(); |
| | | } |
| | | Map<?,?> map = (Map<?,?>) dataObj; |
| | | Object dataObj1 = ((Map<?, ?>) dataObj).get("list"); |
| | | java.util.List<?> list = (java.util.List<?>) dataObj1; |
| | | return list.stream() |
| | | .filter(item -> item instanceof Map) |
| | | .map(item -> (Map<?, ?>) item) |
| | | .map(m -> m.get("processInstanceId")) |
| | | .filter(Objects::nonNull) |
| | | .map(Object::toString) |
| | | .collect(Collectors.toList()); |
| | | java.util.List<Object> list = (java.util.List<Object>) dataObj1; |
| | | return list; |
| | | // list.stream() |
| | | // .filter(item -> item instanceof Map) |
| | | // .map(item -> (Map<?, ?>) item) |
| | | // .map(m -> m.get("processInstanceId")) |
| | | // .filter(Objects::nonNull) |
| | | // .map(Object::toString) |
| | | // .collect(Collectors.toList()); |
| | | } |
| | | |
| | | } catch (Exception e) { |