File was renamed from flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java |
| | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.alibaba.fastjson2.TypeReference; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ycl.common.constant.ProcessConstants; |
| | | import com.ycl.common.core.domain.AjaxResult; |
| | |
| | | import com.ycl.common.core.domain.entity.SysRole; |
| | | import com.ycl.common.core.domain.entity.SysUser; |
| | | import com.ycl.common.enums.FlowComment; |
| | | import com.ycl.common.enums.business.ProcessLogEventTypeEnum; |
| | | import com.ycl.common.exception.CustomException; |
| | | import com.ycl.common.utils.SecurityUtils; |
| | | import com.ycl.domain.dto.FlowCommentDto; |
| | |
| | | import com.ycl.domain.dto.FlowTaskDto; |
| | | import com.ycl.domain.dto.FlowViewerDto; |
| | | import com.ycl.domain.entity.ProcessCoding; |
| | | import com.ycl.domain.entity.ProjectProcess; |
| | | import com.ycl.domain.entity.SysForm; |
| | | import com.ycl.domain.json.RejectData; |
| | | import com.ycl.domain.vo.FlowQueryVo; |
| | | import com.ycl.domain.vo.FlowTaskVo; |
| | | import com.ycl.domain.vo.FormDetailVO; |
| | | import com.ycl.event.event.TaskLogEvent; |
| | | import com.ycl.factory.FlowServiceFactory; |
| | | import com.ycl.flow.CustomProcessDiagramGenerator; |
| | | import com.ycl.flow.FindNextNodeUtil; |
| | | import com.ycl.flow.FlowableUtils; |
| | | import com.ycl.mapper.ProcessCodingMapper; |
| | | import com.ycl.service.ProcessLogService; |
| | | import com.ycl.service.IFlowTaskService; |
| | | import com.ycl.service.ISysDeployFormService; |
| | | import com.ycl.service.ISysFormService; |
| | | import com.ycl.mapper.ProjectProcessMapper; |
| | | import com.ycl.service.*; |
| | | import com.ycl.service.common.TaskCommonService; |
| | | import com.ycl.system.service.*; |
| | | import com.ycl.system.service.ISysDeptService; |
| | | import com.ycl.system.service.ISysDictTypeService; |
| | | import com.ycl.system.service.ISysRoleService; |
| | | import com.ycl.system.service.ISysUserService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | |
| | | import org.flowable.task.api.TaskQuery; |
| | | import org.flowable.task.api.history.HistoricTaskInstance; |
| | | import org.flowable.task.api.history.HistoricTaskInstanceQuery; |
| | | import org.springframework.context.ApplicationEventPublisher; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | private final TaskCommonService taskCommonService; |
| | | private final ProcessCodingMapper processCodingMapper; |
| | | private final ProcessLogService processLogService; |
| | | private final ApplicationEventPublisher publisher; |
| | | private final ProjectProcessMapper projectProcessMapper; |
| | | |
| | | /** |
| | | * 完成审核任务 |
| | |
| | | if (Objects.isNull(task)) { |
| | | return AjaxResult.error("任务不存在"); |
| | | } |
| | | |
| | | ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper) |
| | | .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId()) |
| | | .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId()) |
| | | .one(); |
| | | if (Objects.isNull(projectProcess)) { |
| | | return AjaxResult.error("项目流程未绑定"); |
| | | } |
| | | Map<String, Object> processVariables = new HashMap<>(); |
| | | //查出字典中需要注入的字段信息 |
| | | List<String> dictList = sysDictDService.selectDictDataByType("flow_variables").stream().map(SysDictData::getDictValue).collect(Collectors.toList()); |
| | |
| | | taskService.claim(taskId, SecurityUtils.getUserId() + ""); |
| | | taskService.complete(taskId, newV); |
| | | } |
| | | // 保存日志 |
| | | publisher.publishEvent(new TaskLogEvent(this, null, |
| | | SecurityUtils.getUserId(), |
| | | projectProcess.getProjectId(), |
| | | projectProcess.getProcessInsId(), |
| | | taskId, |
| | | ProcessLogEventTypeEnum.FINISHED, |
| | | null)); |
| | | return AjaxResult.success("提交成功"); |
| | | } |
| | | |
| | |
| | | * @param flowTaskVo |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void taskReject(FlowTaskVo flowTaskVo) { |
| | | if (taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult().isSuspended()) { |
| | | throw new CustomException("任务处于挂起状态!"); |
| | |
| | | } catch (FlowableException e) { |
| | | throw new CustomException("无法取消或开始活动"); |
| | | } |
| | | |
| | | ProjectProcess projectProcess = new LambdaQueryChainWrapper<>(projectProcessMapper) |
| | | .eq(ProjectProcess::getProcessInsId, task.getProcessInstanceId()) |
| | | .eq(ProjectProcess::getProcessDefId, task.getProcessDefinitionId()) |
| | | .one(); |
| | | if (Objects.isNull(projectProcess)) { |
| | | throw new CustomException("项目流程未绑定"); |
| | | } |
| | | // 保存日志 |
| | | publisher.publishEvent(new TaskLogEvent(this, null, |
| | | SecurityUtils.getUserId(), |
| | | projectProcess.getProjectId(), |
| | | projectProcess.getProcessInsId(), |
| | | flowTaskVo.getTaskId(), |
| | | ProcessLogEventTypeEnum.REJECT, |
| | | new RejectData(flowTaskVo.getComment()))); |
| | | } |
| | | |
| | | /** |