Pārlūkot izejas kodu

支持山信内部系统

cczhang 3 mēnešus atpakaļ
vecāks
revīzija
b0c353dbf6

+ 5
- 5
pom.xml Parādīt failu

@@ -218,11 +218,11 @@
218 218
             <version>19.22.0.0</version>
219 219
         </dependency>
220 220
 
221
-<!--        <dependency>-->
222
-<!--            <groupId>com.dameng</groupId>-->
223
-<!--            <artifactId>DmJdbcDriver18</artifactId>-->
224
-<!--            <version>8.1.3.140</version>-->
225
-<!--        </dependency>-->
221
+        <dependency>
222
+            <groupId>com.dameng</groupId>
223
+            <artifactId>DmJdbcDriver18</artifactId>
224
+            <version>8.1.3.140</version>
225
+        </dependency>
226 226
 
227 227
 
228 228
         <!--2023-3-2 8.2流程引擎jar包 start-->

+ 320
- 0
src/main/java/com/horizon/org/OrgBuilderImplShindi.java Parādīt failu

@@ -0,0 +1,320 @@
1
+package com.horizon.org;
2
+
3
+import com.horizon.common.collect.Lists;
4
+import com.horizon.core.HorizonCore;
5
+import com.horizon.db.Access;
6
+import com.horizon.third.build.OrgBuilder;
7
+import com.horizon.third.entity.OrgData;
8
+import com.horizon.third.entity.User;
9
+
10
+import java.util.*;
11
+
12
+/**
13
+ * @Author: yangff update  2024-03-21
14
+ */
15
+public class OrgBuilderImplShindi extends OrgBuilder {
16
+
17
+    @Override
18
+    public List<OrgData> depts() {
19
+        System.out.println("当前租户标识:" + HorizonCore.TENANT_CODE.value());
20
+        String dbIdentifier = "shindi";
21
+        Map<String, List<User>> usersDept = getUsersAndDept(dbIdentifier);//获取部门与用户的对应关系
22
+        // id:部门id; dept_code :部门编号 ; dept_name:部门名称 ;parent_id:部门父节点id,必须存在 ; order_no 排序号,没有可默认
23
+//        String deptsql = "select id,dept_code,dept_name,parent_id,order_no from to_horizon_dept where  id!='root_node_id' order by order_no";
24
+
25
+        String deptsql = "";
26
+        deptsql += " select d.id,d.dept_code,d.dept_name, ( select a.id from SHINDI.sys_department a where a.dept_code = d.f_id ) as parent_id  ,";
27
+        deptsql += " 'D' as type ,0 as order_no ";
28
+        deptsql += " from SHINDI.sys_department d where d.cancel_flag = '0' and  d.dept_code!='D' ";
29
+
30
+
31
+        List<Map<String, Object>> deptmap = Access.getMultiMap(deptsql, null, dbIdentifier);
32
+        //部门信息封装到datas对象中,作为返回值
33
+        List<OrgData> datas = Lists.newArrayList();
34
+        //处理根部门
35
+        OrgData data_r = new OrgData();
36
+        data_r.setId("1");
37
+        data_r.setName("部门导航");
38
+        data_r.setParentId("0");
39
+        data_r.setType("D");
40
+        datas.add(data_r);
41
+        for (Map<String, Object> map : deptmap) {
42
+            String id = map.get("id") == null ? "" : map.get("id").toString();
43
+            String name = map.get("dept_name") == null ? "" : map.get("dept_name").toString();
44
+            String bmbh = map.get("dept_code") == null ? "" : map.get("dept_code").toString();
45
+            String parentId = map.get("parent_id") == null ? "" : map.get("parent_id").toString();
46
+            String sort = map.get("order_no") == null ? "" : map.get("order_no").toString();
47
+
48
+            if ("0".equals(parentId)) {
49
+                parentId = "1"; //部门导航、最顶层
50
+            }
51
+            //一个data对象封装一个部门信息
52
+            OrgData data_d = new OrgData();
53
+            data_d.setId(id);
54
+            data_d.setName(name);
55
+            data_d.setParentId(parentId);
56
+            data_d.setType("D");
57
+            data_d.setOrderNo(Integer.parseInt(sort));
58
+            data_d.setCode(bmbh);
59
+            //usermap.get(id)根据部门ID获取此部门人员,并保存到data对象中
60
+            if (usersDept.get(id) != null) {//判断通过id键获取的用户信息不为空,增加对应用户信息
61
+                data_d.setUsers(usersDept.get(id));
62
+            }
63
+            //封装部门信息的实例增加到datas对象中
64
+            datas.add(data_d);
65
+        }
66
+        return datas;
67
+    }
68
+
69
+    /**
70
+     * 获取部门下人员信息,此方法是获取用户与部门关联的信息,部门ID作为键,User对象为值
71
+     *
72
+     * @return
73
+     */
74
+    private Map<String, List<User>> getUsersAndDept(String dbIdentifier) {
75
+//        String usersql = "select u.id,u.login_name,u.name,tor.dept_id from to_horizon_user u,tor_horizon_user_dept tor where u.id = tor.user_id";
76
+//        String usersql = "select u.id,u.user_name as login_name,u.user_desc,tor.dept_id from SHINDI.sys_user u,SHINDI.sys_user_department tor where u.id = tor.user_id";
77
+        String usersql = "";
78
+        usersql += "  SELECT u.id,u.user_name as LOGIN_NAME,u.user_desc as NAME,tor.DEPT_ID ,'' as type FROM SHINDI.sys_user u,SHINDI.sys_user_department tor WHERE u.ID = tor.USER_ID";
79
+        usersql += "  union all";
80
+        usersql += " select '1' as id ,'admin' as login_name  ,'超级管理员' as NAME ,'0' as DEPT_ID  ,'' as type from dual";
81
+
82
+
83
+        List<Map<String, Object>> userMap = Access.getMultiMap(usersql, null, dbIdentifier);
84
+        Map<String, List<User>> usersAndDept = new HashMap<String, List<User>>();
85
+        for (Map<String, Object> map : userMap) {
86
+            //部门ID
87
+            String deptId = map.get("dept_id") == null ? "" : map.get("dept_id").toString();
88
+            //用户名
89
+            String userName = map.get("name") == null ? "" : map.get("name").toString();
90
+            //用户ID
91
+            String id = map.get("id") == null ? null : map.get("id").toString();
92
+            //若存在ID为null的User对象,那么在获取用户信息时,会出现空指针错误
93
+            if (id != null) {
94
+                //用户信息存入user对象中
95
+                User user = new User();
96
+                user.setId(id);
97
+                user.setUserName(userName);
98
+                List<User> users = new ArrayList<User>();
99
+                if (usersAndDept.get(deptId) == null) {//第一次存入部门与用户对应信息
100
+                    users.add(user);
101
+                    usersAndDept.put(deptId, users);
102
+                } else {//已存在该部门与用户的对应信息
103
+                    users = usersAndDept.get(deptId);
104
+                    users.add(user);
105
+                    usersAndDept.put(deptId, users);
106
+                }
107
+            }
108
+        }
109
+        return usersAndDept;
110
+    }
111
+
112
+    @Override
113
+    public List<OrgData> groups() {
114
+
115
+        return null;
116
+
117
+//        String dbIdentifier = "shindi";
118
+//        Map<String,List<User>> usersAndGroup = getUsersAndGroup(dbIdentifier);
119
+//        // code是编号;  群组跟部门一样,支持树形结构
120
+//        String usersql = "select id,group_name,group_code,parent_id from to_horizon_group WHERE ID!='root_node_id'";
121
+//        List<Map<String,Object>> userMap = Access.getMultiMap(usersql, null, dbIdentifier);
122
+//        //群组信息封装到datas对象中,作为返回值
123
+//        List<OrgData> datas = Lists.newArrayList();
124
+//        OrgData data_r = new OrgData();//群组根数据,根数据的parentid需要为null
125
+//        data_r.setId("group_root");
126
+//        data_r.setName("角色导航");
127
+//        data_r.setParentId(null);
128
+//        data_r.setType("G");
129
+//        datas.add(data_r);
130
+//        for (Map<String, Object> map : userMap) {
131
+//            String id = map.get("id")==null?"":map.get("id").toString();
132
+//            String name = map.get("group_name")==null?"":map.get("group_name").toString();
133
+//            String code = map.get("group_code")==null?"":map.get("group_code").toString();
134
+//            String parentid = map.get("parent_id")==null?"":map.get("parent_id").toString();
135
+//
136
+//            //如果是一级群组,需要转换下根部门,根据实际情况修改名称
137
+//            if("root_node_id".equals(parentid)){
138
+//                parentid="group_root";
139
+//            }
140
+//            OrgData data_g = new OrgData();
141
+//            data_g.setId(id);
142
+//            data_g.setName(name);
143
+//            data_g.setCode(code);
144
+//            data_g.setParentId(parentid);
145
+//            if (usersAndGroup.get(id) != null){//判断通过id键获取的用户信息不为空,增加对应用户信息
146
+//                data_g.setUsers(usersAndGroup.get(id));
147
+//            }
148
+//            //必须固定
149
+//            data_g.setType("G");
150
+//            datas.add(data_g);
151
+//        }
152
+//         return datas;
153
+
154
+    }
155
+
156
+    @Override
157
+    public List<OrgData> positions() {
158
+        System.out.println("当前租户标识:" + HorizonCore.TENANT_CODE.value());
159
+        String dbIdentifier = "shindi";
160
+        Map<String, List<User>> usersDept = getUsersAndPost(dbIdentifier);//获取部门与用户的对应关系
161
+        // id:部门id; dept_code :部门编号 ; dept_name:部门名称 ;parent_id:部门父节点id,必须存在 ; order_no 排序号,没有可默认
162
+//        String deptsql = "select id,dept_code,dept_name,parent_id,order_no from to_horizon_dept where  id!='root_node_id' order by order_no";
163
+
164
+        String deptsql = "";
165
+        deptsql += " select d.id,d.post_code,d.post_name, 'position_root' as parent_id,";
166
+        deptsql += " 'P' as type ,0 as order_no";
167
+        deptsql += " from SHINDI.sys_post d where d.cancel_flag = '0'";
168
+
169
+
170
+        List<Map<String, Object>> deptmap = Access.getMultiMap(deptsql, null, dbIdentifier);
171
+        //部门信息封装到datas对象中,作为返回值
172
+        List<OrgData> datas = Lists.newArrayList();
173
+        //处理根部门
174
+        OrgData data_r = new OrgData();
175
+        data_r.setId("position_root");
176
+        data_r.setName("岗位导航");
177
+        data_r.setParentId("0");
178
+        data_r.setType("P");
179
+        datas.add(data_r);
180
+        for (Map<String, Object> map : deptmap) {
181
+            String id = map.get("id") == null ? "" : map.get("id").toString();
182
+            String name = map.get("post_name") == null ? "" : map.get("post_name").toString();
183
+            String bmbh = map.get("post_code") == null ? "" : map.get("post_code").toString();
184
+            String parentId = map.get("parent_id") == null ? "" : map.get("parent_id").toString();
185
+            String sort = map.get("order_no") == null ? "" : map.get("order_no").toString();
186
+
187
+            if ("0".equals(parentId)) {
188
+                parentId = "1"; //部门导航、最顶层
189
+            }
190
+            //一个data对象封装一个部门信息
191
+            OrgData data_d = new OrgData();
192
+            data_d.setId(id);
193
+            data_d.setName(name);
194
+            data_d.setParentId(parentId);
195
+            data_d.setType("P");
196
+            data_d.setOrderNo(Integer.parseInt(sort));
197
+            data_d.setCode(bmbh);
198
+            //usermap.get(id)根据部门ID获取此部门人员,并保存到data对象中
199
+            if (usersDept.get(id) != null) {//判断通过id键获取的用户信息不为空,增加对应用户信息
200
+                data_d.setUsers(usersDept.get(id));
201
+            }
202
+            //封装部门信息的实例增加到datas对象中
203
+            datas.add(data_d);
204
+        }
205
+        return datas;
206
+    }
207
+
208
+
209
+    private Map<String, List<User>> getUsersAndPost(String dbIdentifier) {
210
+        String usersql = " SELECT u.id,u.user_name as LOGIN_NAME,u.user_desc as NAME,tor.post_ID ,'' as type FROM SHINDI.sys_user u,SHINDI.sys_user_post tor WHERE u.ID = tor.USER_ID ";
211
+        List<Map<String, Object>> userMap = Access.getMultiMap(usersql, null, dbIdentifier);
212
+        Map<String, List<User>> usersAndDept = new HashMap<String, List<User>>();
213
+        for (Map<String, Object> map : userMap) {
214
+            //部门ID
215
+            String deptId = map.get("post_id") == null ? "" : map.get("post_id").toString();
216
+            //用户名
217
+            String userName = map.get("name") == null ? "" : map.get("name").toString();
218
+            //用户ID
219
+            String id = map.get("id") == null ? null : map.get("id").toString();
220
+            //若存在ID为null的User对象,那么在获取用户信息时,会出现空指针错误
221
+            if (id != null) {
222
+                //用户信息存入user对象中
223
+                User user = new User();
224
+                user.setId(id);
225
+                user.setUserName(userName);
226
+                List<User> users = new ArrayList<User>();
227
+                if (usersAndDept.get(deptId) == null) {//第一次存入部门与用户对应信息
228
+                    users.add(user);
229
+                    usersAndDept.put(deptId, users);
230
+                } else {//已存在该部门与用户的对应信息
231
+                    users = usersAndDept.get(deptId);
232
+                    users.add(user);
233
+                    usersAndDept.put(deptId, users);
234
+                }
235
+            }
236
+        }
237
+        return usersAndDept;
238
+    }
239
+
240
+
241
+    @Override
242
+    public List<OrgData> roles() {
243
+        return null;
244
+    }
245
+
246
+    //获取工作群组人员
247
+    private Map<String, List<User>> getUsersAndGroup(String dbIdentifier) {
248
+        // 需要群组id,用户id,用户name
249
+        String userSql = "select tor.workgroup_id,u.id,u.name from tor_horizon_user_group tor , to_horizon_user u where tor.user_id= u.id";
250
+        List<Map<String, Object>> userMap = Access.getMultiMap(userSql, null, dbIdentifier);
251
+        Map<String, List<User>> usersAndGroup = new HashMap<String, List<User>>();
252
+        for (Map<String, Object> map : userMap) {
253
+            List<User> users = new ArrayList<User>();
254
+            String id = map.get("id") == null ? "" : map.get("id").toString();
255
+            String userName = map.get("name") == null ? "" : map.get("name").toString();
256
+            String workGroupId = map.get("workgroup_id") == null ? "" : map.get("workgroup_id").toString();
257
+            if (id != null) {//避免出现空指针错误,如此处ID与users方法中的userid不一致也会出现空指针错误
258
+                if (usersAndGroup.get(workGroupId) == null) {//第一次操作岗位信息
259
+                    User user = new User();
260
+                    user.setId(id);
261
+                    user.setUserName(userName);
262
+                    users.add(user);
263
+                    usersAndGroup.put(workGroupId, users);
264
+                } else {//已有岗位信息,进行从新编辑
265
+                    users = usersAndGroup.get(workGroupId);
266
+                    User user = new User();
267
+                    user.setId(id);
268
+                    user.setUserName(userName);
269
+                    users.add(user);
270
+                    usersAndGroup.put(workGroupId, users);
271
+                }
272
+            }
273
+        }
274
+        return usersAndGroup;
275
+    }
276
+
277
+
278
+    @Override
279
+    public List<User> users() {
280
+        String dbIdentifier = "shindi";
281
+        //id,用户唯一id;  login_name,用户登录名;   name,用户姓名;  dept_id,用户所属部门id ;
282
+//        String sql="SELECT u.id,u.LOGIN_NAME,'F;D' as type,u.NAME,tor.DEPT_ID FROM TO_HORIZON_USER u,TOR_HORIZON_USER_DEPT tor WHERE u.ID = tor.USER_ID";
283
+
284
+        String sql = "";
285
+        sql += "  SELECT u.id,u.user_name as LOGIN_NAME,u.user_desc as NAME,tor.DEPT_ID ,'' as type FROM SHINDI.sys_user u,SHINDI.sys_user_department tor WHERE u.ID = tor.USER_ID";
286
+        sql += "  union all";
287
+        sql += " select '1' as id ,'admin' as login_name  ,'超级管理员' as NAME ,'0' as DEPT_ID  ,'' as type from dual";
288
+
289
+        //从数据库获取用户信息
290
+        List<Map<String, Object>> usermap = Access.getMultiMap(sql, null, dbIdentifier);
291
+        //用户信息保存到datas集合对象中返回
292
+        List<User> datas = Lists.newArrayList();
293
+        for (Map<String, Object> map : usermap) {
294
+            String id = map.get("id") == null ? "" : map.get("id").toString();
295
+            String name = map.get("name") == null ? "" : map.get("name").toString();
296
+            String loginName = map.get("login_name") == null ? "" : map.get("login_name").toString();
297
+            String deptid = map.get("dept_id") == null ? "" : map.get("dept_id").toString();
298
+
299
+            //处理用户所属部门,可以所属多个部门
300
+            List<String> listDept = Lists.newArrayList(deptid);
301
+//            listDept.add(deptid);
302
+            //用户信息保存到User类的对象中
303
+            User u = new User();
304
+            u.setId(id);
305
+            u.setUserName(name);
306
+            u.setLoginName(loginName);
307
+            u.setPasswd("xxjsgs@1234");//密码,一般设置默认统一的密码
308
+            u.setDepartment(listDept);
309
+            u.setOrderNo(1);//用户排序,可选
310
+
311
+            if(Objects.equals(id, "24F955A08CD8CDECE063040011AC9F7F") && listDept.contains("25855EBF0D906250E063040011ACA98F")){
312
+                u.setOperType("F");//用户类型(F:直接部门领导,C:上级主管领导,I:部门管理员,空:一般用户,可传多值,多值用;隔开)
313
+            }else {
314
+                u.setOperType("");//用户类型(F:直接部门领导,C:上级主管领导,I:部门管理员,空:一般用户,可传多值,多值用;隔开)
315
+            }
316
+            datas.add(u);
317
+        }
318
+        return datas;
319
+    }
320
+}

+ 3
- 2
src/main/java/com/horizon/wf/core/rule/LogBidRule.java Parādīt failu

@@ -41,7 +41,7 @@ public class LogBidRule extends BaseRuleImpl implements IBaseRule {
41 41
         IFlowNode curNode = (IFlowNode)getParameter(StaticVarExtend.Parameter_Current_IFlowNode);
42 42
         // 3.引擎调用时,传入的参数对象
43 43
         WorkParaBean paraBean = (WorkParaBean)getParameter(StaticVarExtend.Parameter_WorkParaBean);
44
-        // Map<String, String> varMap = paraBean.getFlowVarMap();
44
+        Map<String, String> varMap = paraBean.getFlowVarMap();
45 45
         String action = paraBean.getActionname();
46 46
         // 4.当前实例对象
47 47
         DBWork work = (DBWork)getParameter(StaticVarExtend.Parameter_DBWork);
@@ -87,7 +87,7 @@ public class LogBidRule extends BaseRuleImpl implements IBaseRule {
87 87
         // 业务使用
88 88
         // flowVar就是业务传递过来的参数集
89 89
         // 获取这里面的变量需要在流程中配置——流程建模时,右键——**属性设置——流程变量——添加变量——要不然获取不到变量
90
-        final String url = Constants.WF_PRE_URL + "/tms/Tender/horizonApprovalProcess";
90
+        final String url = "https://jlwuliu.shansteelgroup.com/tms/Tender/horizonApprovalProcess";
91 91
         String id = flowVar.get("id");
92 92
         String json = flowVar.get("json");
93 93
         String date = flowVar.get("date");
@@ -98,6 +98,7 @@ public class LogBidRule extends BaseRuleImpl implements IBaseRule {
98 98
         params.put("json", json);
99 99
         params.put("userId", userId);
100 100
         params.put("processInstanceStatus", status);
101
+        System.err.println(params.toString());
101 102
         Constants.EXECUTOR_SERVICE.submit(new Runnable() {
102 103
             @Override
103 104
             public void run() {

+ 1
- 1
src/main/resources/workflow-conf/workflow-context.xml Parādīt failu

@@ -137,7 +137,7 @@
137 137
 
138 138
 <!--	 组织机构实现-->
139 139
 	<bean id="workflowAdapterFactory" class="com.horizon.third.init.WorkflowAdapterFactory">
140
-		<property name="organizationBuilder" value="com.horizon.org.OrgBuilderImpl"/>
140
+		<property name="organizationBuilder" value="com.horizon.org.OrgBuilderImplShindi"/>
141 141
 	</bean>
142 142
 
143 143
 	<!-- 流程外部表单 -->

Notiek ielāde…
Atcelt
Saglabāt