1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package cn.ibizlab.util.job;
import cn.ibizlab.util.client.IBZUAAFeignClient;
import cn.ibizlab.util.client.IBZLiteFeignClient;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.util.DigestUtils;
import java.io.InputStream;
import java.util.*;
/**
* 权限:向uaa同步当前系统菜单、权限资源任务类
*/
@Slf4j
@Component
@ConditionalOnProperty( name = "ibiz.enablePermissionValid", havingValue = "true")
public class PermissionSyncJob implements ApplicationRunner {
@Value("${ibiz.systemid:DemoSys}")
private String systemId;
@Value("${ibiz.systemname:DemoSys}")
private String systemName;
@Autowired
@Lazy
private IBZUAAFeignClient uaaClient;
@Autowired
@Lazy
IBZLiteFeignClient liteClient;
@Autowired
@Lazy
private cn.ibizlab.util.client.IBZWFFeignClient wfClient;
@Autowired
@Lazy
cn.ibizlab.util.client.IBZDictFeignClient dictClient;
@Override
public void run(ApplicationArguments args) {
try {
Thread.sleep(10000);
InputStream permission = this.getClass().getResourceAsStream("/permission/systemResource.json"); //权限资源
if (!ObjectUtils.isEmpty(permission)) {
String strPermission = IOUtils.toString(permission, "UTF-8");
JSONObject system = new JSONObject() {{
put("pssystemid", systemId);
put("pssystemname", systemName);
put("sysstructure", JSONObject.parseObject(strPermission));
put("md5check", DigestUtils.md5DigestAsHex(strPermission.getBytes()));
}};
if (uaaClient.syncSysAuthority(system)) {
log.info("向[uaa]同步系统资源成功");
} else {
log.error("向[uaa]同步系统资源失败");
}
}
} catch (Exception ex) {
log.error("向[uaa]同步系统资源失败,请检查[uaa]服务是否正常运行! {}", ex.getMessage());
}
try {
InputStream model = this.getClass().getResourceAsStream("/sysmodel/DemoSys.json"); //系统模型
if (!ObjectUtils.isEmpty(model)) {
String strModel = IOUtils.toString(model, "UTF-8");
if (liteClient.syncSysModel(JSONObject.parseObject(strModel))) {
log.info("向[lite]同步模型成功");
} else {
log.error("向[lite]同步模型失败");
}
}
} catch (Exception ex) {
log.error("向[lite]同步系统模型失败,请检查[lite]服务是否正常运行! {}", ex.getMessage());
}
try {
List<Map<String, Object>> workflows = new ArrayList(); //工作流
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/LPv1.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("LPv1.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/LPv1.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/ODSPMVv1.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("ODSPMVv1.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/ODSPMVv1.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/ODSPMVv2.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("ODSPMVv2.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/ODSPMVv2.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/ACTv1.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("ACTv1.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/ACTv1.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/SNv1.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("SNv1.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/SNv1.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/MNv1.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("MNv1.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/MNv1.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/ODSPv1.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("ODSPv1.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/ODSPv1.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/ODSPMMv1.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("ODSPMMv1.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/ODSPMMv1.bpmn"), "UTF-8"));
}});
}
if (!ObjectUtils.isEmpty(this.getClass().getResourceAsStream("/workflow/ODSPMMv2.bpmn"))) {
workflows.add(new HashMap<String, Object>() {{
put("ODSPMMv2.bpmn", IOUtils.toString(this.getClass().getResourceAsStream("/workflow/ODSPMMv2.bpmn"), "UTF-8"));
}});
}
if (workflows.size() > 0) {
if (wfClient.deployBpmnFile(workflows)) {
log.info("向[wf]部署流程成功");
} else {
log.error("向[wf]部署流程失败");
}
}
} catch (Exception ex) {
log.error("向[wf]部署流程失败,请检查[wf]服务是否正常运行! {}", ex.getMessage());
}
try {
InputStream dict = this.getClass().getResourceAsStream("/sysmodel/RuntimeDict.json"); //代码表
if (!ObjectUtils.isEmpty(dict)) {
String strDict = IOUtils.toString(dict, "UTF-8");
if (dictClient.syncRuntimeDict(JSONArray.parseArray(strDict))) {
log.info("向[dict]同步代码表成功");
} else {
log.error("向[dict]同步代码表失败");
}
}
} catch (Exception ex) {
log.error("向[dict]同步代码表失败,请检查[dict]服务是否正常运行! {}", ex.getMessage());
}
}
}