Browse Source

结算申请事件类

zhenghao 2 months ago
parent
commit
96e0981aed
1 changed files with 103 additions and 0 deletions
  1. 103
    0
      src/main/java/com/horizon/wf/core/rule/purPayReqRule.java

+ 103
- 0
src/main/java/com/horizon/wf/core/rule/purPayReqRule.java View File

@@ -0,0 +1,103 @@
1
+package com.horizon.wf.core.rule;
2
+
3
+import cn.hutool.http.HttpUtil;
4
+import com.horizon.common.constant.Constants;
5
+import com.horizon.wf.bean.WorkParaBean;
6
+import com.horizon.wf.core.runtime.RunningData;
7
+import com.horizon.wf.definition.pub.IFlowNode;
8
+import com.horizon.wf.entity.db.DBTrack;
9
+import com.horizon.wf.entity.db.DBWork;
10
+import com.horizon.wf.entity.user.IRunUser;
11
+import com.horizon.wf.global.StaticVarExtend;
12
+
13
+import java.util.HashMap;
14
+import java.util.List;
15
+import java.util.Map;
16
+
17
+/**
18
+ * 合同业务相关的事件触发器
19
+ * 用于更新合同状态
20
+ */
21
+public class purPayReqRule extends BaseRuleImpl implements IBaseRule {
22
+
23
+    /**
24
+     * 具体的实现,参考下面方法中的说明,所有的实现都差不多结构,
25
+     * 只有自定义的异常处理接口实现中是没有传入 runningdata的.
26
+     * 不同的接口 仅仅是额外传入的参数有些差异,额外的参数多数都是可以从runningdata中获取的
27
+     * 系统为了方便接口的实现,额外传入了一些认为会用到的参数
28
+     *
29
+     * @return
30
+     */
31
+    @Override
32
+    public boolean executeRule() {
33
+        // 从引擎获取到核心数据对象(如果接口没有额外传入需要的数据时,可以从此对象中获取)
34
+        RunningData runningdata = getRunningdata();
35
+        Map<String, String> flowVar = runningdata.getFlowVar().getAllFlowVarMap();
36
+
37
+        //事件处理类额外传入参数
38
+        // 1.执行事件的节点对象
39
+        IFlowNode eventNode = (IFlowNode) getParameter(StaticVarExtend.Parameter_IFlowNode);
40
+
41
+        // 2.当前节点对象
42
+        IFlowNode curNode = (IFlowNode) getParameter(StaticVarExtend.Parameter_Current_IFlowNode);
43
+        // 3.引擎调用时,传入的参数对象
44
+        WorkParaBean paraBean = (WorkParaBean) getParameter(StaticVarExtend.Parameter_WorkParaBean);
45
+        // Map<String, String> varMap = paraBean.getFlowVarMap();
46
+        String action = paraBean.getActionname();
47
+        // 4.当前实例对象
48
+        DBWork work = (DBWork) getParameter(StaticVarExtend.Parameter_DBWork);
49
+        // 5.当前执行人对象
50
+        IRunUser user = (IRunUser) getParameter(StaticVarExtend.Parameter_RunUser);
51
+        // 6.当前路径对象
52
+        DBTrack track = (DBTrack) getParameter(StaticVarExtend.Parameter_DBTrack);
53
+        int status = track.getFlowstatus();
54
+        String nodeId = track.getNodeid();
55
+        String statusName = track.getFunname();
56
+        String nodeName = track.getNodename();
57
+        // 7.需要保存的SQL数据如果需要引擎来保存,请放入此 map中(key=SQL,value=List为SQL中对应的参数)
58
+        Map<String, List<Object>> dataMap = (Map<String, List<Object>>) getParameter(StaticVarExtend.Parameter_SaveMap);
59
+        // 8.事件类型
60
+        String eventType = (String) getParameter("eventType");
61
+        // 9.事件实际执行内容
62
+        // 10.返回 true 表示执行成功,引擎从第7步中的dataMap里获取需要保存的数据,引擎继续往下执行,
63
+        // 返回 false表示执行失败, 引擎会根据事件类型,确定是否继续往下执行
64
+
65
+        System.err.println(
66
+                ",status:" + status +
67
+                        ",nodeId:" + nodeId +
68
+                        ",nodeName:" + nodeName +
69
+                        ",statusName:" + statusName +
70
+                        ",action:" + action +
71
+                        ",eventNodeId:" + eventNode.getNodeid() +
72
+                        ",eventNodeName:" + eventNode.getNodename());
73
+
74
+        if (eventNode.getNodeid().contains("End")) {
75
+            status = 170;
76
+        } else if (eventNode.getNodeid().equals("Node1")) {
77
+            if (statusName.equals("JumpReject") || statusName.equals("Reject")) {
78
+                status = 130;
79
+            } else if (statusName.equals("Getback")) {
80
+                status = 190;
81
+            } else if (statusName.equals("autofirst")) {
82
+                status = 110;
83
+            }
84
+        } else {
85
+            status = 110;
86
+        }
87
+
88
+        // 业务使用
89
+        // flowVar就是业务传递过来的参数集
90
+        // 获取这里面的变量需要在流程中配置——流程建模时,右键——**属性设置——流程变量——添加变量——要不然获取不到变量
91
+        String url = Constants.WF_PRE_URL + "/pur/PayReqHead/horizonApprovalProcess";
92
+        System.err.println(flowVar.toString());
93
+        String id = flowVar.get("id");
94
+        Map<String, Object> params = new HashMap<>();
95
+        params.put("id", id);
96
+        params.put("processInstanceStatus", status);
97
+        String result = HttpUtil.post(url, params);
98
+        System.err.println("result:" + result);
99
+        return true;
100
+    }
101
+}
102
+
103
+

Loading…
Cancel
Save