fuliqi
2025-02-07 55819f6adb25e414ab69f95d73588b8029e83a9a
Merge remote-tracking branch 'origin/master'
5个文件已修改
1个文件已添加
119360 ■■■■■ 已修改文件
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flowable/src/main/java/com/ycl/domain/vo/FormDetailVO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flowable/src/main/java/com/ycl/service/common/TaskCommonService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/project_management-1月24.sql 119290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -476,7 +476,7 @@
            for (FlowElement flowElement : flowElements) {
                if (flowElement instanceof UserTask && flowElement.getId().equals(task.getTaskDefinitionKey())) {
                    UserTask userTask = (UserTask) flowElement;
                    needAuditing = taskCommonService.checkTaskNeedAuditing(userTask.getExtensionElements().get("properties"));
                    needAuditing = taskCommonService.checkHasExeProperty(userTask.getExtensionElements().get("properties"), ProcessConstants.EXTENSION_PROPERTY_NEED_AUDITING_TEXT);
                    break;
                }
flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java
@@ -98,8 +98,13 @@
     * æ‰©å±•属性中的:节点是否审批
     *
     */
    public static final String EXTENSION_PROPERTY_NEED_AUDITING_TEXT = "该节点是审批节点";
    public static final String EXTENSION_PROPERTY_NEED_AUDITING_VALUE = "是";
    public static final String EXTENSION_PROPERTY_NEED_AUDITING_TEXT = "是否审批节点";
    public static final String EXTENSION_PROPERTY_CAN_JUMP_TEXT = "是否允许跳过";
    public static final String EXTENSION_PROPERTY_CAN_WAIT_TEXT = "是否允许容缺";
    public static final String EXTENSION_PROPERTY_VALUE = "是";
}
flowable/src/main/java/com/ycl/domain/vo/FormDetailVO.java
@@ -22,6 +22,18 @@
    private Boolean current = false;
    /**
     * æ˜¯å¦å…è®¸è·³è¿‡
     *
     */
    private boolean canJump;
    /**
     * æ˜¯å¦å…è®¸å®¹ç¼º
     *
     */
    private boolean canWait;
    /**
     * å‰ç½®èŠ‚ç‚¹å®šä¹‰id
     *
     */
flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
@@ -85,7 +85,7 @@
            throw new RuntimeException("未找到该任务的流程定义节点");
        }
        // èŽ·å–å½“å‰èŠ‚ç‚¹çš„è¾“å…¥
        // èŽ·å–å½“å‰èŠ‚ç‚¹çš„ä¿¡æ¯
        List<FormDetailVO> defKeys = new ArrayList<>(2);
        FormDetailVO formDetailVO = new FormDetailVO();
        formDetailVO.setCurrent(Boolean.TRUE);
@@ -103,6 +103,8 @@
                formDetailVO.setFormJsonObj(data);
            }
        }
        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));
        defKeys.add(formDetailVO);
        this.beforeNodeInfo(currentElement, defKeys);
@@ -170,6 +172,8 @@
                        FormDetailVO formDetailVO = new FormDetailVO();
                        formDetailVO.setBeforeNodeDefId(incomingFlow.getSourceFlowElement().getId());
                        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));
                        defKeys.add(formDetailVO);
                    } else {
                        beforeNodeInfo(incomingFlow.getSourceFlowElement(), defKeys);
@@ -184,6 +188,8 @@
                        FormDetailVO formDetailVO = new FormDetailVO();
                        formDetailVO.setBeforeNodeDefId(incomingFlow.getSourceFlowElement().getId());
                        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));
                        defKeys.add(formDetailVO);
                    } else {
                        beforeNodeInfo(incomingFlow.getSourceFlowElement(), defKeys);
@@ -241,30 +247,29 @@
    /**
     * æ£€æŸ¥ä»»åŠ¡èŠ‚ç‚¹æ˜¯å¦é…ç½®äº†ï¼šéœ€è¦å®¡æ ¸  çš„æ‰©å±•属性
     * æ£€æŸ¥ä»»åŠ¡èŠ‚ç‚¹æ˜¯å¦é…ç½®äº†æŸä¸ªçš„æ‰©å±•å±žæ€§
     *
     * @param extensionElements æ‰©å±•列表
     * @return
     */
    public Boolean checkTaskNeedAuditing(List<ExtensionElement> extensionElements) {
    public Boolean checkHasExeProperty(List<ExtensionElement> extensionElements, String exePropertyName) {
        if (CollectionUtils.isEmpty(extensionElements)) {
            return Boolean.FALSE;
        }
        for (ExtensionElement extensionElement : extensionElements) {
        return extensionElements.stream().anyMatch(extensionElement -> {
            if (CollectionUtils.isEmpty(extensionElement.getAttributes())) { // å¦‚果本身没有属性,则递归child
                return checkTaskNeedAuditing(extensionElement.getChildElements().get("property"));
                return checkHasExeProperty(extensionElement.getChildElements().get("property"), exePropertyName);
            } else {
                // å¦åˆ™å…ˆæŸ¥æœ¬èº«çš„属性有不有:需要审核 çš„属性,没有也是递归child
                if (extensionElement.getAttributes().get("name").stream().anyMatch(attribute -> ProcessConstants.EXTENSION_PROPERTY_NEED_AUDITING_TEXT.equals(attribute.getValue()))
                        && extensionElement.getAttributes().get("value").stream().anyMatch(attribute -> ProcessConstants.EXTENSION_PROPERTY_NEED_AUDITING_VALUE.equals(attribute.getValue()))
                // å¦åˆ™å…ˆæŸ¥æœ¬èº«çš„属性有不有,没有也是递归child
                if (extensionElement.getAttributes().get("name").stream().anyMatch(attribute -> exePropertyName.equals(attribute.getValue()))
                        && extensionElement.getAttributes().get("value").stream().anyMatch(attribute -> ProcessConstants.EXTENSION_PROPERTY_VALUE.equals(attribute.getValue()))
                ) {
                    return Boolean.TRUE;
                } else {
                    return checkTaskNeedAuditing(extensionElement.getChildElements().get("property"));
                    return checkHasExeProperty(extensionElement.getChildElements().get("property"), exePropertyName);
                }
            }
        }
        return Boolean.FALSE;
        });
    }
flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -1243,31 +1243,13 @@
     *
     * @param parameters    æ ¹æ®ä»»åŠ¡æŸ¥æ‰¾å‡ºæ¥çš„å‚æ•°
     * @param formKey       task自身关联的表单id
     * @param taskName      task自身的任务名
     * @param taskName      ä»»åŠ¡
     * @param processDefId  æµç¨‹å®šä¹‰id
     * @param processDefKey æµç¨‹å®žä¾‹id
     * @return
     */
    private List<FormDetailVO> getBeforeNodeForm(Map<String, Object> parameters, String formKey, String taskName, String processDefId, String processDefKey, Boolean currentNeedData) {
        if (!parameters.keySet().stream().anyMatch(key -> key.contains(ProcessConstants.TASK_FORM_KEY))) {
            FormDetailVO formDetailVO = new FormDetailVO();
            formDetailVO.setBeforeNodeName(taskName);
            formDetailVO.setCurrent(Boolean.TRUE);
            // å¦‚果是空的,使用formId去查
            if (StringUtils.isNotBlank(formKey)) {
                SysForm sysForm = sysFormService.selectSysFormById(Long.parseLong(formKey));
                if (Objects.isNull(sysForm)) {
                    throw new RuntimeException("该流程绑定的表单不存在或已被删除");
                }
                Map<String, Object> data = new HashMap<>(1);
                data.put(ProcessConstants.TASK_FORM_KEY, JSONObject.parseObject(sysForm.getFormContent()));
                formDetailVO.setFormJsonObj(data);
                return Arrays.asList(formDetailVO);
            } else {
                return Arrays.asList(formDetailVO);
            }
        }
        // è¿™é‡Œåªéœ€è¦æŸ¥è‡ªèº«ä»¥åŠä¸Šä¸€ä¸ªèŠ‚ç‚¹(如果并行的有多个)的表单数据
        List<FormDetailVO> beforeNodes = taskCommonService.getBeforeNodeDefInfo(processDefId, processDefKey, sysFormService, Boolean.TRUE);
        List<String> beforeNodeDefIds = beforeNodes.stream().filter(item -> !item.getCurrent() || currentNeedData).map(FormDetailVO::getBeforeNodeDefId).collect(Collectors.toList());
sql/project_management-1ÔÂ24.sql
New file
Diff too large