business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
flowable/src/main/java/com/ycl/common/constant/ProcessConstants.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
flowable/src/main/java/com/ycl/domain/vo/FormDetailVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
flowable/src/main/java/com/ycl/service/common/TaskCommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sql/project_management-1月24.sql | ●●●●● 补丁 | 查看 | 原始文档 | 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