权限阅览代码提交

This commit is contained in:
zhaol 2025-01-25 20:09:54 +08:00
parent 3dbe45bc56
commit 6935405ca2

View File

@ -30,6 +30,7 @@ import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListenerInterface;
import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.org.model.DepartmentModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
@ -413,12 +414,26 @@ public class PublishExecuteListenerInterfaceImpl extends ExecuteListener impleme
/**
* 流程发布范围权限单独存储
* @param bo 流程发布bo主表
*
* @param publish 流程发布bo主表
* @param bolistN 新增发布流程信息
* @param bolistC 变更发布流程信息需要将已存在的相应流程权限信息进行删除再进行权限存储
* @param bolistS 停用发布流程信息删除相应流程权限信息
*/
private void savePublishScope(BO publish, List<BO> bolistN, List<BO> bolistC, List<BO> bolistS) {
ProcessInstance boProcessInstances = SDK.getProcessAPI()
.createBOProcessInstance("obj_e0ba99c88d4e423a88c00da30700d722","admin", "阅览权限监控");
BO viewing=new BO();
viewing.set("PROCESSID", publish.getBindId());
//存储发布流程的流程实例ID与权限阅览数据视图做关联
viewing.set("PROCESSTITLE" , publish.getString("PROCESS_TITLE"));
SDK.getBOAPI().create("BO_ACT_VIEWING_RIGHTS",viewing,boProcessInstances.getId(),"");
String newBoName = "BO_ACT_PUBLISH_PERM_SCOPE";
String bindId = publish.getBindId();
String wsId = publish.getString("WSID");
String applyUser = publish.getString("APPLYUSERID");
@ -428,6 +443,8 @@ public class PublishExecuteListenerInterfaceImpl extends ExecuteListener impleme
String sendScopeLevel = publish.getString("SEND_SCOPE_LEVEL");
Set<String> removeVerIds = new HashSet<>();
Map<String, String> addVerMap = new HashMap<>();
//将发布范围权限信息保存至范围权限表
if (bolistN != null) {
for (BO boN : bolistN) {
@ -465,7 +482,6 @@ public class PublishExecuteListenerInterfaceImpl extends ExecuteListener impleme
}
}
String newBoName = "BO_ACT_PUBLISH_PERM_SCOPE";
// 先删除相应原有权限数据再进行数据更新
Set<String> removeIds = new HashSet<>();
for (String removeVerId : removeVerIds) {
@ -479,9 +495,8 @@ public class PublishExecuteListenerInterfaceImpl extends ExecuteListener impleme
for (String removeId : removeIds) {
SDK.getBOAPI().remove(newBoName, removeId);
}
// 重新添加权限
List<BO> list = new ArrayList<>();
//List<BO> list = new ArrayList<>();
for (Map.Entry<String, String> entry : addVerMap.entrySet()) {
String verId = entry.getKey();
String name = entry.getValue();
@ -494,12 +509,99 @@ public class PublishExecuteListenerInterfaceImpl extends ExecuteListener impleme
bo.set("ORGPERM", "1".equals(sendScope) ? SDK.getORGAPI().getCompanyByUser(applyUser).getId() : sendScopeOrg);
bo.set("POSTPERM", "1".equals(sendScope) ? "" : sendScopePost);
bo.set("LEVELPERM", "1".equals(sendScope) ? "" : sendScopeLevel);
list.add(bo);
}
if (list.size() > 0) {
SDK.getBOAPI().create(newBoName, list, bindId, applyUser);
SDK.getLogAPI().consoleInfo("[发布范围权限信息保存至范围权限表]更新成功");
//存储发布流程的流程实例ID与权限阅览数据视图做关联
bo.set("PUBLISHPROCESSID" , bindId);
RowMap rowMap = DBSql.getMap("SELECT ID FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID=?", verId);
if(rowMap!=null){
String plid=rowMap.getString("ID");
RowMap PROCESS_ARCHITECTURE_L1= DBSql.getMap("SELECT PROPERTYVALUE FROM APP_ACT_COE_PAL_PROP where PLID='"+plid+"' and PROPERTYID='Process_Architecture_L1'");
RowMap PROCESS_ARCHITECTURE_L2= DBSql.getMap("SELECT PROPERTYVALUE FROM APP_ACT_COE_PAL_PROP where PLID='"+plid+"' and PROPERTYID='Process_Architecture_L2'");
RowMap PROCESS_ARCHITECTURE_L3= DBSql.getMap("SELECT PROPERTYVALUE FROM APP_ACT_COE_PAL_PROP where PLID='"+plid+"' and PROPERTYID='Process_Architecture_L3'");
RowMap PROCESS_ARCHITECTURE_L4= DBSql.getMap("SELECT PROPERTYVALUE FROM APP_ACT_COE_PAL_PROP where PLID='"+plid+"' and PROPERTYID='Process_Architecture_L4'");
RowMap versions= DBSql.getMap("SELECT PROPERTYVALUE FROM APP_ACT_COE_PAL_PROP where PLID = '"+plid+"' and PROPERTYID='versions'");
List<RowMap> rlatRowMap= DBSql.getMaps("SELECT RELATIONSHAPETEXT FROM APP_ACT_COE_PAL_SHAPE_RLAT where FILEID='"+plid+"' and ATTRID='Issuing_department'");
//事业部
BO publishBO = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH").detailByBindId(bindId);
String applydepid=publishBO.getString("APPLYDEPTID");
String applydeptname=publishBO.getString("APPLYDEPTNAME");
// 发布部门
String dempId = "";
String dempname="";
for(RowMap oneRowMap:rlatRowMap){
String relationshapetext=oneRowMap.getString("RELATIONSHAPETEXT");
JSONObject js=JSONObject.parseObject(relationshapetext);
if(js!=null){
dempId += js.getString("id") + ",";
dempname += js.getString("name") + ",";
}
}
if(UtilString.isNotEmpty(dempId)){
dempId = dempId.substring(0, dempId.length() - 1);
bo.set("PUBLISHDEPTID",dempId);
}
if(UtilString.isNotEmpty(dempname)){
dempname = dempname.substring(0, dempname.length() - 1);
bo.set("PUBLISHDEPT",dempname);
}
PALRepositoryModel palRepositoryModel = PALRepositoryCache.getCache().get(plid);
String version=String.valueOf(palRepositoryModel.getVersion());
if(version!=null){
String plver=version.substring(0,version.indexOf(".")) + "." + version.substring(version.length() - 1, version.length());
bo.set("VERSION",plver);
}
bo.set("PROCESS_ARCHITECTURE_L1",PROCESS_ARCHITECTURE_L1.getString("PROPERTYVALUE"));
bo.set("PROCESS_ARCHITECTURE_L2",PROCESS_ARCHITECTURE_L2.getString("PROPERTYVALUE"));
bo.set("PROCESS_ARCHITECTURE_L3",PROCESS_ARCHITECTURE_L3.getString("PROPERTYVALUE"));
bo.set("PROCESS_ARCHITECTURE_L4",PROCESS_ARCHITECTURE_L4.getString("PROPERTYVALUE"));
DepartmentModel departmentModel=SDK.getORGAPI().getDepartmentById(applydepid);
if(departmentModel!=null){
boolean isclosed=departmentModel.isClosed();
if(isclosed==false){
String allpath = SDK.getORGAPI().getDepartmentById(applydepid).getPathNameOfCache();
if(allpath.contains("事业部")){
//String depname=allpath.substring(allpath.indexOf("/")+2,allpath.indexOf("事业部")+3);
// 原始字符串
String input = allpath;
if(input.contains("/")){
// 使用split方法按"/"分割字符串
String[] parts = input.split("/");
// 检查是否分割成功且有数据
if (parts.length > 0) {
String department = parts[0];
bo.set("BUSINESS_DIVISION",department);
}
}
} else if(allpath.contains("伊利集团总部")){
bo.set("BUSINESS_DIVISION","伊利集团总部");
}
}
}
}
ProcessInstance boProcessInstance = SDK.getProcessAPI()
.createBOProcessInstance("obj_e076b01bd0d04bc39e5af12e2c8c188c", applyUser, "权限阅览");
SDK.getBOAPI().create(newBoName, bo, boProcessInstance.getId(), applyUser);
// list.add(bo);
}
// if (list.size() > 0) {
// SDK.getBOAPI().create(newBoName, list, bindId, applyUser);
// SDK.getLogAPI().consoleInfo("[发布范围权限信息保存至范围权限表]更新成功");
// }
SDK.getLogAPI().consoleInfo("[发布范围权限信息保存至范围权限表]更新成功");
}