| | |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.ycl.common.constant.ProcessConstants; |
| | | import com.ycl.common.core.domain.entity.SysDictData; |
| | | import com.ycl.common.core.domain.entity.SysUser; |
| | | import com.ycl.common.enums.FlowComment; |
| | | import com.ycl.common.enums.business.TaskStatusEnum; |
| | |
| | | import com.ycl.domain.vo.FormDetailVO; |
| | | import com.ycl.flow.FindNextNodeUtil; |
| | | import com.ycl.service.ISysFormService; |
| | | import com.ycl.system.service.ISysDeptService; |
| | | import com.ycl.system.service.ISysDictDataService; |
| | | import com.ycl.system.service.ISysDictTypeService; |
| | | import com.ycl.system.service.ISysUserService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.flowable.bpmn.model.*; |
| | |
| | | private final TaskService taskService; |
| | | private final HistoryService historyService; |
| | | private final ISysUserService sysUserService; |
| | | private final ISysDeptService deptService; |
| | | private final ISysDictTypeService sysDictDService; |
| | | |
| | | /** |
| | | * 通过当前节点定义key,获取其上一个节点的信息,如果前面是并行的会返回多个(包含当前节点) |
| | |
| | | formDetailVO.setCanJump(this.checkHasExeProperty(currentElement.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_CAN_JUMP_TEXT)); |
| | | formDetailVO.setCanWait(this.checkHasExeProperty(currentElement.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_CAN_WAIT_TEXT)); |
| | | formDetailVO.setCanHangup(this.checkHasExeProperty(currentElement.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_CAN_HANGUP_TEXT)); |
| | | |
| | | formDetailVO.setUserTask(currentElement); |
| | | defKeys.add(formDetailVO); |
| | | this.beforeNodeInfo(currentElement, defKeys); |
| | | |
| | |
| | | formDetailVO.setBeforeNodeName(incomingFlow.getSourceFlowElement().getName()); |
| | | formDetailVO.setCanJump(this.checkHasExeProperty(currentElement.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_CAN_JUMP_TEXT)); |
| | | formDetailVO.setCanWait(this.checkHasExeProperty(currentElement.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_CAN_WAIT_TEXT)); |
| | | formDetailVO.setUserTask((UserTask) incomingFlow.getSourceFlowElement()); |
| | | defKeys.add(formDetailVO); |
| | | continue; |
| | | } else { |
| | | beforeNodeInfo(incomingFlow.getSourceFlowElement(), defKeys); |
| | | } |
| | |
| | | formDetailVO.setBeforeNodeName(incomingFlow.getSourceFlowElement().getName()); |
| | | formDetailVO.setCanJump(this.checkHasExeProperty(currentElement.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_CAN_JUMP_TEXT)); |
| | | formDetailVO.setCanWait(this.checkHasExeProperty(currentElement.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_CAN_WAIT_TEXT)); |
| | | formDetailVO.setUserTask((UserTask) incomingFlow.getSourceFlowElement()); |
| | | defKeys.add(formDetailVO); |
| | | continue; |
| | | } else { |
| | | beforeNodeInfo(incomingFlow.getSourceFlowElement(), defKeys); |
| | | } |
| | |
| | | |
| | | |
| | | /** |
| | | * 获取当前节点的上一节点id,不反悔当前节点信息,如果前面是并行,那么会返回多个 |
| | | * 获取当前节点的上一节点id,不返回当前节点信息,如果前面是并行,那么会返回多个 |
| | | * |
| | | * @param processDefId 流程定义id |
| | | * @param currentNodeDefId 当前节点定义id |
| | |
| | | * @return |
| | | */ |
| | | public List<String> getCurrentUserGroups() { |
| | | String deptId = "dept:" + SecurityUtils.getLoginUser().getDeptId(); |
| | | List<String> roleIds; |
| | | if (CollectionUtils.isEmpty(SecurityUtils.getLoginUser().getUser().getRoles())) { |
| | | roleIds = new ArrayList<>(1); |
| | | } else { |
| | | roleIds = SecurityUtils.getLoginUser().getUser().getRoles().stream().map(role -> role.getRoleId() + "").collect(Collectors.toList()); |
| | | } |
| | | roleIds.add(deptId); |
| | | if (Objects.nonNull(SecurityUtils.getLoginUser().getDeptId())) { |
| | | List<Long> deptIds = deptService.getChildIds(SecurityUtils.getLoginUser().getDeptId()); |
| | | List<String> deptIdList = deptIds.stream().map(id -> "dept:" + id).collect(Collectors.toList()); |
| | | roleIds.addAll(deptIdList); |
| | | } |
| | | return roleIds; |
| | | } |
| | | |
| | | /** |
| | | * 处理流程中的变量 |
| | | * |
| | | * @param variables |
| | | * @param taskDefKey |
| | | * @return |
| | | */ |
| | | public Map<String, Object> handleVar(Map<String, Object> variables, String taskDefKey) { |
| | | Map<String, Object> processVariables = new HashMap<>(); |
| | | //查出字典中需要注入的字段信息 |
| | | List<String> dictList = sysDictDService.selectDictDataByType("flow_variables").stream().map(SysDictData::getDictValue).collect(Collectors.toList()); |
| | | Map<String, Object> newV = new HashMap<>(2); |
| | | if (!org.springframework.util.CollectionUtils.isEmpty(variables)) { |
| | | for (String key : variables.keySet()) { |
| | | newV.put(taskDefKey + "&" + key, variables.get(key)); |
| | | //字典里有就放入流程变量中 |
| | | if (!org.apache.commons.collections4.CollectionUtils.isEmpty(dictList) && dictList.contains(key)) { |
| | | processVariables.put(key,variables.get(key)); |
| | | } |
| | | } |
| | | } |
| | | return processVariables; |
| | | } |
| | | |
| | | } |