权限申请功能增加发布部门匹配子部门功能

This commit is contained in:
yujh 2024-06-24 17:55:30 +08:00
parent 843692ff53
commit f628a7df74

View File

@ -1,17 +1,15 @@
package com.actionsoft.apps.coe.pal.publisher.event;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryPropertyCache;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryPropertyModel;
import com.actionsoft.apps.coe.pal.publisher.constant.FilePermConstant;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListenerInterface;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.org.model.DepartmentModel;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;
import java.util.List;
@ -78,13 +76,23 @@ public class AddFilePermTaskEndEvent extends ExecuteListener implements ExecuteL
* 发布部门更新
* @param ctx
* @param sourceBo
* @param wsId
*/
public void updatePublishScopeDept(ProcessExecutionContext ctx,BO sourceBo){
//先查询发布部门为当前部门一致的权限
String publishDept = sourceBo.getString("PUBLISHDEPT");//所选发布部门
String inClause = "'" + String.join("', '", publishDept.split(",")) + "'";
List<BO> list = SDK.getBOAPI().query(FilePermConstant.BO_ACT_PUBLISH_PERM_SCOPE).addQuery("PUBLISHDEPTID IN (" + inClause + ")", null).list();
StringBuilder likeClause = new StringBuilder();//like 语句
JSONArray deptArray = new JSONArray();
String[] split = publishDept.split(",");
for (String s : split) {
addDeptToArray(deptArray,s);
}
for (Object deptId : deptArray) {
if(UtilString.isNotEmpty(likeClause.toString())){
likeClause.append(" OR ");
}
likeClause.append(" PUBLISHDEPTID LIKE '").append(deptId).append("'");
}
List<BO> list = SDK.getBOAPI().query(FilePermConstant.BO_ACT_PUBLISH_PERM_SCOPE).addQuery(likeClause.toString(), null).list();
for (BO oldBo : list) {
updateData(ctx,oldBo);
}
@ -113,4 +121,21 @@ public class AddFilePermTaskEndEvent extends ExecuteListener implements ExecuteL
SDK.getBOAPI().update(FilePermConstant.BO_ACT_PUBLISH_PERM_SCOPE,oldBo);
}
}
/**
* 遍历部门与子部门并增加数据
* @param deptArray
* @param deptId
*/
public void addDeptToArray(JSONArray deptArray,String deptId){
if(!deptArray.contains(deptId)){//先添加当前部门
deptArray.add(deptId);
}
List<DepartmentModel> subDepartments = SDK.getORGAPI().getSubDepartments(deptId);
if(!subDepartments.isEmpty()){
for (DepartmentModel subDepartment : subDepartments) {
addDeptToArray(deptArray,subDepartment.getId());
}
}
}
}