Browse Source

工作流生成审批数据代码调整;添加审核不通过等消息通知

fuyuchuan 1 month ago
parent
commit
8932fa4eff

+ 5 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/controller/web/OaApprovalController.java

@@ -76,5 +76,10 @@ public class OaApprovalController {
         oaApprovalService.approve(id, approvalStatus, opinion);
     }
 
+    @GetMapping("/analysisTest")
+    public void analysisTest(@RequestParam(value = "id") Integer id) {
+        oaApprovalService.analysisTest(id);
+    }
+
 }
 

+ 2 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/OaApprovalService.java

@@ -45,4 +45,6 @@ public interface OaApprovalService extends CrudService<OaApproval> {
      * @param approvalStatus 审批状态(1:审批中,2:审批通过,3:审批不通过)
      */
     void approve(Integer id, Integer approvalStatus, String opinion);
+
+    void analysisTest(Integer id);
 }

+ 17 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/impl/OaApprovalServiceImpl.java

@@ -10,10 +10,13 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.oa.domain.OaApproval;
 import com.usky.oa.domain.OaDocument;
+import com.usky.oa.domain.OaFormDefinition;
 import com.usky.oa.mapper.OaApprovalMapper;
 import com.usky.oa.mapper.OaDocumentMapper;
+import com.usky.oa.mapper.OaFormDefinitionMapper;
 import com.usky.oa.service.OaApprovalService;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.oa.service.utils.OaProcessAnalysis;
 import com.usky.oa.service.utils.OaSendMessageCenter;
 import com.usky.oa.service.vo.OaApprovalCountVO;
 import com.usky.system.domain.SysUser;
@@ -51,6 +54,12 @@ public class OaApprovalServiceImpl extends AbstractCrudService<OaApprovalMapper,
     @Autowired
     private OaSendMessageCenter oaSendMessageCenter;
 
+    @Autowired
+    private OaProcessAnalysis oaProcessAnalysis;
+
+    @Autowired
+    private OaFormDefinitionMapper oaFormDefinitionMapper;
+
 
     // 我的申请-待处理、已处理、我发起、我收到-统计(暂时统计近一年数据)
     @Override
@@ -154,6 +163,14 @@ public class OaApprovalServiceImpl extends AbstractCrudService<OaApprovalMapper,
         oaSendMessageCenter.sendAsyncMessage(oaApproval.getCreateBy(), Long.valueOf(oaApproval.getProposer()), oaApproval.getId(), receivers, isPass);
     }
 
+    @Override
+    public void analysisTest(Integer id) {
+        LambdaQueryWrapper<OaFormDefinition> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(OaFormDefinition::getId, id);
+        String flowInfo = oaFormDefinitionMapper.selectOne(queryWrapper).getFlowInfo();
+        oaProcessAnalysis.processAnalysis(flowInfo);
+    }
+
     // 待处理
     private List<OaApproval> getPendingSum(Integer tenantId, Long userId, LocalDateTime oneYearAgo, LocalDateTime now) {
         LambdaQueryWrapper<OaApproval> queryWrapper = Wrappers.lambdaQuery();

+ 53 - 0
service-oa/service-oa-biz/src/main/java/com/usky/oa/service/utils/OaProcessAnalysis.java

@@ -0,0 +1,53 @@
+package com.usky.oa.service.utils;
+
+import com.usky.common.core.exception.BusinessException;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import java.io.StringReader;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ *
+ * @author fyc
+ * @email yuchuan.fu@chinausky.com
+ * @date 2025/1/23
+ */
+@Slf4j
+@Configuration
+public class OaProcessAnalysis {
+    public void processAnalysis(String xmlString) {
+        try {
+            // 创建 SAXReader 对象
+            SAXReader reader = new SAXReader();
+            // 将 XML 字符串解析为 Document 对象
+            Document document = reader.read(new StringReader(xmlString));
+
+            // 获取根元素
+            Element root = document.getRootElement();
+
+            // 遍历根元素的子元素
+            parseElement(root);
+        } catch (DocumentException e) {
+            throw new BusinessException("解析流程xml文件失败" + e);
+        }
+    }
+
+    private void parseElement(Element element) {
+        // 输出元素名称
+        System.out.println("元素名称: " + element.getName());
+        // 处理元素的属性
+        element.attributes().forEach(attribute -> {
+            System.out.println("元素属性: " + attribute.getName() + ", 元素值: " + attribute.getValue());
+        });
+        // 遍历子元素
+        element.elements().forEach(subElement -> {
+            // 递归处理子元素
+            parseElement((Element) subElement);
+        });
+    }
+}