Merge branch 'apps_dev_ydq_portal_process' into apps_4_test
This commit is contained in:
commit
c2540118d3
@ -1280,7 +1280,7 @@
|
||||
if(mrStatus == undefined || mrStatus == 0){//生效
|
||||
//先弹出二次确认框
|
||||
var options = {
|
||||
title : "当前管理办法未生效,是否更新管理办法的生效状态?",
|
||||
title : "是否确定在流程文件中添加管理要求?(确认后,内容显示位置可以在“管理要求位置”属性中修改)",
|
||||
content:"确认生效",
|
||||
onConfirm: function(){
|
||||
$.ajax({
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.constant;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: yuandongqiang
|
||||
* @Date: 2025/9/16
|
||||
* @Description:
|
||||
*/
|
||||
public class Constant {
|
||||
public static final String APP_ID = "com.awspaas.user.apps.nqms.portal.view.process";
|
||||
public static final String APP_ACT_COE_PAL_REPOSITORY = "APP_ACT_COE_PAL_REPOSITORY";
|
||||
public static final String PAL_PROP = "APP_ACT_COE_PAL_PROP";
|
||||
|
||||
}
|
||||
@ -0,0 +1,131 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.constant;
|
||||
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-04-17 11:00
|
||||
* @description
|
||||
*/
|
||||
public class Constants {
|
||||
// 此初始化可废弃,已改为应用启动事件中进行初始化
|
||||
public Constants(){
|
||||
defaultName = SDK.getAppAPI().getProperty("com.awspaas.user.apps.nqms.portal.util", "defaultName");
|
||||
processCheckType = SDK.getAppAPI().getProperty("com.awspaas.user.apps.nqms.portal.util", "processCheckType");
|
||||
factorCheckType = SDK.getAppAPI().getProperty("com.awspaas.user.apps.nqms.portal.util", "factorCheckType");
|
||||
openCmd = SDK.getAppAPI().getProperty("com.awspaas.user.apps.nqms.portal.util", "openType");
|
||||
}
|
||||
|
||||
/**
|
||||
* 门户相关应用id及应用参数
|
||||
*/
|
||||
public static final String app_util = "com.awspaas.user.apps.nqms.portal.util";
|
||||
|
||||
public static final String app_util_defaultName = "defaultName";
|
||||
public static final String app_util_processCheckType = "processCheckType";
|
||||
public static final String app_util_factorCheckType = "factorCheckType";
|
||||
public static final String app_util_openType = "openType";
|
||||
|
||||
|
||||
|
||||
public static final String app_process = "com.awspaas.user.apps.nqms.portal.view.process";
|
||||
|
||||
|
||||
public static final String app_org = "com.awspaas.user.apps.nqms.portal.view.org";
|
||||
|
||||
|
||||
public static final String app_indexpage = "com.awspaas.user.apps.nqms.portal.indexpage";
|
||||
|
||||
|
||||
public static final String app_factorstore = "com.awspaas.user.apps.nqms.portal.factorstore";
|
||||
|
||||
|
||||
public static final String app_compliance = "com.awspaas.user.apps.nqms.portal.view.compliance";
|
||||
|
||||
|
||||
public static final String app_person = "com.awspaas.user.apps.nqms.portal.view.person";
|
||||
|
||||
|
||||
public static final String app_strategy = "com.awspaas.user.apps.nqms.portal.view.strategy";
|
||||
|
||||
/**
|
||||
* 空值时的默认显示内容
|
||||
*/
|
||||
public static String defaultName= "";
|
||||
// public static String defaultName="";
|
||||
/**
|
||||
* 1:已发布 2:适用中
|
||||
*/
|
||||
// public static String processCheckType= SDK.getAppAPI().getProperty("com.awspaas.user.apps.nqms.portal.util", "processCheckType");
|
||||
public static String processCheckType="";
|
||||
|
||||
/**
|
||||
* 1:已发布 2:适用中
|
||||
*/
|
||||
// public static String factorCheckType= SDK.getAppAPI().getProperty("com.awspaas.user.apps.nqms.portal.util", "factorCheckType");
|
||||
public static String factorCheckType="";
|
||||
|
||||
public static String openCmd="";
|
||||
|
||||
public static String APP_ID="com.awspaas.user.apps.nqms.portal.util";
|
||||
|
||||
/**
|
||||
* 模型文件表
|
||||
*/
|
||||
public static final String APP_ACT_COE_PAL_REPOSITORY="APP_ACT_COE_PAL_REPOSITORY";
|
||||
|
||||
|
||||
/**
|
||||
* 模型文件表
|
||||
*/
|
||||
public static final String STRUCTURED_R="APP_EU_PAL_STRUCT_R";
|
||||
/**
|
||||
* 模型属性表
|
||||
*/
|
||||
public static final String STRUCT_R_P="APP_EU_PAL_STRUCT_R_PROP";
|
||||
/**
|
||||
*模型关联属性表
|
||||
*/
|
||||
public static final String STRUCT_R_P_REL="APP_EU_PAL_STRUCT_R_P_REL";
|
||||
/**
|
||||
* 形状表
|
||||
*/
|
||||
public static final String STRUCT_S="APP_EU_PAL_STRUCT_SHAPE";
|
||||
/**
|
||||
* 形状属性表
|
||||
*/
|
||||
public static final String STRUCT_S_P="APP_EU_PAL_STRUCT_S_PROP";
|
||||
/**
|
||||
* 形状关联属性信息表
|
||||
*/
|
||||
public static final String STRUCT_S_P_REL="APP_EU_PAL_STRUCT_S_P_REL";
|
||||
/**
|
||||
* 形状联系连线表
|
||||
*/
|
||||
public static final String STRUCT_S_LINE="APP_EU_PAL_STRUCT_S_LINE";
|
||||
|
||||
public static final String number="number";
|
||||
public static final String desc="desc";
|
||||
public static final String dutyDept="dept";
|
||||
public static final String dutyPerson="person";
|
||||
|
||||
|
||||
public static final String control_icon ="el-icon-tickets";//制度文件图标
|
||||
public static final String process_icon ="el-icon-share";//末阶流程文件图标
|
||||
public static final String highProcess_icon ="el-icon-notebook-1";//高阶流程文件图标
|
||||
/**
|
||||
* 图形关联业务域的标识
|
||||
*/
|
||||
public static final String SHAPE_BUSINESS = "shape_business";
|
||||
/**
|
||||
* 被识别为末级流程图的类型,多个用逗号隔开
|
||||
*/
|
||||
public static final String processTypeArr = "process.bpmn2,nqms.procEpc";
|
||||
/**
|
||||
* 高阶流程图id
|
||||
*/
|
||||
public static final String highProcessType = "nqms.busiProcessLink";
|
||||
|
||||
public static final Integer businessLevel = 1;
|
||||
public static final Integer processGroupLevel = 2;
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.constant;
|
||||
|
||||
public enum PalAttrEnum {
|
||||
//通用属性
|
||||
NUMBER("number","编号"),
|
||||
DESC("desc","描述"),
|
||||
DUTY_PERSON("bpm_person","责任人"),
|
||||
DUTY_DEPT( "department","责任部门"),
|
||||
|
||||
//流程文件的属性
|
||||
|
||||
POSITION("position","岗位"),
|
||||
FORM("form","表单"),
|
||||
KPI("kpi","绩效"),
|
||||
REGIME("institution","制度"),
|
||||
COMPLIANCEFILE("Compliance","合规文件"),
|
||||
COMPLIANCE("compliance","合规条款"),
|
||||
RISK("danger","风险"),
|
||||
CONTROL("regulate","控制"),
|
||||
SYSTEM("itsystem","应用系统"),
|
||||
TERM("term","术语"),
|
||||
|
||||
//组织图(文件)属性
|
||||
dutyPerson("nqmsDepartmentHead","负责人"),
|
||||
manager("nqmsCompetentLeader","主管领导"),
|
||||
deptType("nqmsDepartmentType","部门类型"),
|
||||
target("nqmsWorkTarget","工作目标"),
|
||||
dutyDesc("nqmsFunctionDesc","职能说明"),
|
||||
postDuty("nqms_responsibility","职责"),
|
||||
mission("nqmsMission","使命"),
|
||||
|
||||
//角色清单
|
||||
relPost("relPost","关联岗位"),
|
||||
|
||||
//合规文件
|
||||
comLevel("level","文件级别"),
|
||||
comType("nqmsComplianceType","文件类型"),
|
||||
//合规条款(形状的属性)
|
||||
applicability("nqmsApplicable","适用性"),
|
||||
termLevel("nqmsRequirementDegree","要求程度"),
|
||||
termRiskLevel("nqmsRiskLevel","风险等级"),
|
||||
termCount("nqmsClauseContent","要求内容");
|
||||
|
||||
private String key;
|
||||
private String value;
|
||||
PalAttrEnum(String key , String value){
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.controller;
|
||||
|
||||
import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate;
|
||||
import com.actionsoft.bpms.server.UserContext;
|
||||
import com.actionsoft.bpms.server.bind.annotation.Controller;
|
||||
import com.actionsoft.bpms.server.bind.annotation.Mapping;
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.constant.Constant;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.service.PortalProcessService;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: yuandongqiang
|
||||
* @Date: 2025/9/16
|
||||
* @Description:
|
||||
*/
|
||||
@Controller
|
||||
public class PortalProcessController {
|
||||
|
||||
/**
|
||||
* 页面入口
|
||||
*
|
||||
* @param me
|
||||
* @return
|
||||
*/
|
||||
@Mapping("com.awspaas.user.apps.nqms.portal.view.process_toPage")
|
||||
public String getListHomePage(UserContext me) {
|
||||
HashMap<String, Object> macroLibraries = new HashMap<>(1);
|
||||
String processMapId = SDK.getAppAPI().getProperty(Constant.APP_ID, "processMapId");
|
||||
macroLibraries.put("sid", me.getSessionId());
|
||||
macroLibraries.put("uuid", processMapId);
|
||||
macroLibraries.put("settingParam", JSON.toJSON(macroLibraries));
|
||||
return HtmlPageTemplate.merge(Constant.APP_ID, "main.html", macroLibraries);
|
||||
}
|
||||
|
||||
/**
|
||||
* 页面初始化数据 获取流程树
|
||||
*
|
||||
* @param ux 用户上下文
|
||||
* @param parentId 父级节点
|
||||
* @param queryName 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Mapping("com.awspaas.user.apps.nqms.portal.view.process_list_initData")
|
||||
public String getInitData(UserContext ux, String parentId, String queryName) {
|
||||
SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.process_list_initData] 查询人:" + ux.getUID() + ",parentId:" + parentId + ",queryName:" + queryName);
|
||||
return PortalProcessService.getInstance().getTreeData(ux, parentId, queryName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定节点下的流程情况
|
||||
*
|
||||
* @param ux
|
||||
* @param id 指定的根节点
|
||||
* @param page
|
||||
* @param size
|
||||
* @return
|
||||
*/
|
||||
@Mapping("com.awspaas.user.apps.nqms.portal.view.process_list_getFileData")
|
||||
public String queryFileData(UserContext ux, String id, int page, int size, String queryParams) {
|
||||
SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.process_list_getFileData] 查询人:" + ux.getUID() + ",查询条件为 id:" + id + ",page:" + page + ",size:" + size + ",queryParams:" + queryParams);
|
||||
return PortalProcessService.getInstance().getFileData(ux, id, page, size, true, null, queryParams);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.dao;
|
||||
|
||||
import com.actionsoft.bpms.commons.database.RowMapper;
|
||||
import com.actionsoft.bpms.commons.mvc.dao.DaoObject;
|
||||
import com.actionsoft.bpms.util.DBSql;
|
||||
import com.actionsoft.exception.AWSDataAccessException;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.constant.Constant;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.FileBasicAttrEntity;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.util.ViewUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-05-22 17:21
|
||||
* @description
|
||||
*/
|
||||
public class FileBasicAttrDao extends DaoObject<FileBasicAttrEntity> {
|
||||
@Override
|
||||
public int insert(FileBasicAttrEntity fileBasicAttrEntity) throws AWSDataAccessException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(FileBasicAttrEntity fileBasicAttrEntity) throws AWSDataAccessException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String entityName() {
|
||||
return Constant.PAL_PROP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RowMapper<FileBasicAttrEntity> rowMapper() {
|
||||
return new FileBasicAttrDao.Mapper();
|
||||
}
|
||||
|
||||
private static class Mapper implements RowMapper<FileBasicAttrEntity> {
|
||||
@Override
|
||||
public FileBasicAttrEntity mapRow(ResultSet rset, int i) throws SQLException {
|
||||
FileBasicAttrEntity entity = new FileBasicAttrEntity();
|
||||
entity.setID(rset.getString("ID"));
|
||||
entity.setPLID(rset.getString("PLID"));
|
||||
entity.setPROPERTYID(rset.getString("PROPERTYID"));
|
||||
entity.setPROPERTYNAME(rset.getString("PROPERTYNAME"));
|
||||
entity.setPROPERTYVALUE(rset.getString("PROPERTYVALUE"));
|
||||
entity.setORDERINDEX(rset.getString("ORDERINDEX"));
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据pal模型id进行查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<FileBasicAttrEntity> selectBasicAttrByFileIds(List<String> fileIdList) {
|
||||
String fileIds = ViewUtil.listToSqlStr(fileIdList);
|
||||
String query = "";
|
||||
if (StringUtils.isNotEmpty(fileIds)) {
|
||||
query += " AND PLID IN " + fileIds;
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
String sql = "SELECT * FROM " + entityName() + " WHERE 1=1 " + query;
|
||||
List<FileBasicAttrEntity> list = DBSql.query(sql, new Mapper());
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.dao;
|
||||
|
||||
import com.actionsoft.bpms.commons.database.RowMap;
|
||||
import com.actionsoft.bpms.util.DBSql;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.constant.Constant;
|
||||
|
||||
/**
|
||||
* @author ydq
|
||||
* @date 2025/08/15
|
||||
* @description
|
||||
*/
|
||||
public class RepositoryDao {
|
||||
public String getWsId(String wsName) {
|
||||
String sql = "SELECT ID FROM APP_ACT_COE_PAL_WORKSPACE WHERE WSNAME=?";
|
||||
String wsId = DBSql.getString(sql, new Object[]{wsName});
|
||||
return wsId;
|
||||
}
|
||||
public RowMap selectById(String id){
|
||||
String sql = "SELECT * FROM "+ Constant.APP_ACT_COE_PAL_REPOSITORY +" WHERE ID = ?";
|
||||
RowMap map = DBSql.getMap(sql, id);
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,109 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.dao;
|
||||
|
||||
import com.actionsoft.bpms.commons.database.RowMapper;
|
||||
import com.actionsoft.bpms.commons.mvc.dao.DaoObject;
|
||||
import com.actionsoft.bpms.util.DBSql;
|
||||
import com.actionsoft.exception.AWSDataAccessException;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.RlatBpmnModel;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.RlatEntity;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.util.StructUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-05-22 16:02
|
||||
* @description
|
||||
*/
|
||||
public class RlatDao extends DaoObject<RlatEntity> {
|
||||
|
||||
|
||||
@Override
|
||||
public int insert(RlatEntity rlatEntity) throws AWSDataAccessException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(RlatEntity rlatEntity) throws AWSDataAccessException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String entityName() {
|
||||
return "APP_ACT_COE_PAL_SHAPE_RLAT";
|
||||
}
|
||||
|
||||
@Override
|
||||
public RowMapper rowMapper() {
|
||||
return new Mapper();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据文件id批量查询形状关联属性
|
||||
*
|
||||
* @param fileIds
|
||||
* @return
|
||||
*/
|
||||
public List<RlatEntity> selectShapeRlatById(List<String> fileIds) {
|
||||
String query = "";
|
||||
String str = StructUtil.listToSqlStr(fileIds);
|
||||
if (StringUtils.isNotEmpty(str)) {
|
||||
query += " AND FILEID IN " + str;
|
||||
}
|
||||
|
||||
String sql = "SELECT E.*, (SELECT PLNAME FROM APP_ACT_COE_PAL_REPOSITORY WHERE ID =E.RELATIONFILEID) AS PLNAME FROM " + entityName() + " E WHERE 1=1 " + query;
|
||||
List<RlatEntity> list = DBSql.query(sql, new Mapper());
|
||||
return list;
|
||||
}
|
||||
|
||||
private static class Mapper implements RowMapper<RlatEntity> {
|
||||
|
||||
@Override
|
||||
public RlatEntity mapRow(ResultSet rset, int i) throws SQLException {
|
||||
String plname = "";
|
||||
try {
|
||||
plname = rset.getString("PLNAME");
|
||||
} catch (SQLException sqlException) {
|
||||
|
||||
}
|
||||
|
||||
String relationshapetext = rset.getString("RELATIONSHAPETEXT");
|
||||
String relationshapeid = rset.getString("RELATIONSHAPEID");
|
||||
String relationfileid = rset.getString("RELATIONFILEID");
|
||||
|
||||
if (StringUtils.isEmpty(relationshapeid)) {
|
||||
relationshapetext = plname;
|
||||
}
|
||||
RlatEntity entity = new RlatEntity();
|
||||
entity.setID(rset.getString("ID"));
|
||||
entity.setATTRID(rset.getString("ATTRID"));
|
||||
entity.setFILEID(rset.getString("FILEID"));
|
||||
entity.setRELATIONFILEID(rset.getString("RELATIONFILEID"));
|
||||
entity.setRELATIONSHAPEID(rset.getString("RELATIONSHAPEID"));
|
||||
entity.setSHAPEID(rset.getString("SHAPEID"));
|
||||
entity.setSHAPETEXT(rset.getString("SHAPETEXT"));
|
||||
try {
|
||||
String plmethodid = rset.getString("PLMETHODID");
|
||||
String plcategory = rset.getString("PLCATEGORY");
|
||||
entity.setPLMETHODID(plmethodid);
|
||||
entity.setPLCATEGORY(plcategory);
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
if (StringUtils.isNotEmpty(relationfileid) && relationfileid.equals("00000000-0000-0000-0000-000000000000")) {
|
||||
RlatBpmnModel model = JSONObject.parseObject(relationshapetext, RlatBpmnModel.class);
|
||||
entity.setRELATIONSHAPETEXT(model);
|
||||
} else {
|
||||
entity.setRELATIONSHAPETEXT(relationshapetext);
|
||||
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,93 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.entity;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-05-22 17:08
|
||||
* @description
|
||||
*/
|
||||
public class FileBasicAttrEntity {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String ID;
|
||||
/**
|
||||
*PAL模型ID
|
||||
*/
|
||||
private String PLID;
|
||||
/**
|
||||
*属性Key
|
||||
*/
|
||||
private String PROPERTYID;
|
||||
/**
|
||||
*属性名称
|
||||
*/
|
||||
private String PROPERTYNAME;
|
||||
/**
|
||||
*属性值
|
||||
*/
|
||||
private String PROPERTYVALUE;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String ORDERINDEX;
|
||||
|
||||
public String getID() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
public void setID(String ID) {
|
||||
this.ID = ID;
|
||||
}
|
||||
|
||||
public String getPLID() {
|
||||
return PLID;
|
||||
}
|
||||
|
||||
public void setPLID(String PLID) {
|
||||
this.PLID = PLID;
|
||||
}
|
||||
|
||||
public String getPROPERTYID() {
|
||||
return PROPERTYID;
|
||||
}
|
||||
|
||||
public void setPROPERTYID(String PROPERTYID) {
|
||||
this.PROPERTYID = PROPERTYID;
|
||||
}
|
||||
|
||||
public String getPROPERTYNAME() {
|
||||
return PROPERTYNAME;
|
||||
}
|
||||
|
||||
public void setPROPERTYNAME(String PROPERTYNAME) {
|
||||
this.PROPERTYNAME = PROPERTYNAME;
|
||||
}
|
||||
|
||||
public String getPROPERTYVALUE() {
|
||||
return PROPERTYVALUE;
|
||||
}
|
||||
|
||||
public void setPROPERTYVALUE(String PROPERTYVALUE) {
|
||||
this.PROPERTYVALUE = PROPERTYVALUE;
|
||||
}
|
||||
|
||||
public String getORDERINDEX() {
|
||||
return ORDERINDEX;
|
||||
}
|
||||
|
||||
public void setORDERINDEX(String ORDERINDEX) {
|
||||
this.ORDERINDEX = ORDERINDEX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "FileBasicAttrEntity{" +
|
||||
"ID='" + ID + '\'' +
|
||||
", PLID='" + PLID + '\'' +
|
||||
", PROPERTYID='" + PROPERTYID + '\'' +
|
||||
", PROPERTYNAME='" + PROPERTYNAME + '\'' +
|
||||
", PROPERTYVALUE='" + PROPERTYVALUE + '\'' +
|
||||
", ORDERINDEX='" + ORDERINDEX + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,45 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.entity;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-05-22 16:08
|
||||
* @description 关联的bpmn组织模型
|
||||
*/
|
||||
public class RlatBpmnModel {
|
||||
private String ID;
|
||||
private String NAME;
|
||||
private String TYPE;
|
||||
|
||||
public String getID() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
public void setID(String ID) {
|
||||
this.ID = ID;
|
||||
}
|
||||
|
||||
public String getNAME() {
|
||||
return NAME;
|
||||
}
|
||||
|
||||
public void setNAME(String NAME) {
|
||||
this.NAME = NAME;
|
||||
}
|
||||
|
||||
public String getTYPE() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
public void setTYPE(String TYPE) {
|
||||
this.TYPE = TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RlatBpmnModel{" +
|
||||
"ID='" + ID + '\'' +
|
||||
", NAME='" + NAME + '\'' +
|
||||
", TYPE='" + TYPE + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,154 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.entity;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-05-22 15:58
|
||||
* @description 关联属性存储表
|
||||
*/
|
||||
public class RlatEntity {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String ID;
|
||||
/**
|
||||
*PAL模型ID
|
||||
*/
|
||||
private String FILEID;
|
||||
/**
|
||||
*PAL模型形状ID
|
||||
*/
|
||||
private String SHAPEID;
|
||||
/**
|
||||
*PAL模型形状名称
|
||||
*/
|
||||
private String SHAPETEXT;
|
||||
/**
|
||||
*属性Key
|
||||
*/
|
||||
private String ATTRID;
|
||||
/**
|
||||
*关联的PAL模型ID
|
||||
*/
|
||||
private String RELATIONFILEID;
|
||||
/**
|
||||
*关联的PAL模型形状ID
|
||||
*/
|
||||
private String RELATIONSHAPEID;
|
||||
/**
|
||||
*关联的PAL模型形状名称
|
||||
*/
|
||||
private Object RELATIONSHAPETEXT;
|
||||
|
||||
/**
|
||||
* 主动关联文件的类型
|
||||
*/
|
||||
private String PLMETHODID;
|
||||
/**
|
||||
*主动关联文件的分类
|
||||
*/
|
||||
private String PLCATEGORY;
|
||||
|
||||
public String getID() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
public void setID(String ID) {
|
||||
this.ID = ID;
|
||||
}
|
||||
|
||||
public String getFILEID() {
|
||||
return FILEID;
|
||||
}
|
||||
|
||||
public void setFILEID(String FILEID) {
|
||||
this.FILEID = FILEID;
|
||||
}
|
||||
|
||||
public String getSHAPEID() {
|
||||
return SHAPEID;
|
||||
}
|
||||
|
||||
public void setSHAPEID(String SHAPEID) {
|
||||
this.SHAPEID = SHAPEID;
|
||||
}
|
||||
|
||||
public String getSHAPETEXT() {
|
||||
return SHAPETEXT;
|
||||
}
|
||||
|
||||
public void setSHAPETEXT(String SHAPETEXT) {
|
||||
this.SHAPETEXT = SHAPETEXT;
|
||||
}
|
||||
|
||||
public String getATTRID() {
|
||||
return ATTRID;
|
||||
}
|
||||
|
||||
public void setATTRID(String ATTRID) {
|
||||
this.ATTRID = ATTRID;
|
||||
}
|
||||
|
||||
public String getRELATIONFILEID() {
|
||||
return RELATIONFILEID;
|
||||
}
|
||||
|
||||
public void setRELATIONFILEID(String RELATIONFILEID) {
|
||||
this.RELATIONFILEID = RELATIONFILEID;
|
||||
}
|
||||
|
||||
public String getRELATIONSHAPEID() {
|
||||
return RELATIONSHAPEID;
|
||||
}
|
||||
|
||||
public void setRELATIONSHAPEID(String RELATIONSHAPEID) {
|
||||
this.RELATIONSHAPEID = RELATIONSHAPEID;
|
||||
}
|
||||
|
||||
public Object getRELATIONSHAPETEXT() {
|
||||
return RELATIONSHAPETEXT;
|
||||
}
|
||||
|
||||
public void setRELATIONSHAPETEXT(Object RELATIONSHAPETEXT) {
|
||||
// if (StringUtils.isNotEmpty(this.RELATIONFILEID)&&this.RELATIONFILEID.equals("00000000-0000-0000-0000-000000000000") ){
|
||||
// RlatBpmnModel model = new RlatBpmnModel();
|
||||
// if (StringUtils.isNotEmpty(RELATIONSHAPETEXT)){
|
||||
// model= JSONObject.parseObject(RELATIONSHAPETEXT, RlatBpmnModel.class);
|
||||
// }
|
||||
// this.RELATIONSHAPETEXT = model;
|
||||
//
|
||||
// }else {
|
||||
// this.RELATIONSHAPETEXT = RELATIONSHAPETEXT;
|
||||
// }
|
||||
this.RELATIONSHAPETEXT = RELATIONSHAPETEXT;
|
||||
}
|
||||
|
||||
public String getPLMETHODID() {
|
||||
return PLMETHODID;
|
||||
}
|
||||
|
||||
public void setPLMETHODID(String PLMETHODID) {
|
||||
this.PLMETHODID = PLMETHODID;
|
||||
}
|
||||
|
||||
public String getPLCATEGORY() {
|
||||
return PLCATEGORY;
|
||||
}
|
||||
|
||||
public void setPLCATEGORY(String PLCATEGORY) {
|
||||
this.PLCATEGORY = PLCATEGORY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RlatEntity{" +
|
||||
"ID='" + ID + '\'' +
|
||||
", FILEID='" + FILEID + '\'' +
|
||||
", SHAPEID='" + SHAPEID + '\'' +
|
||||
", SHAPETEXT='" + SHAPETEXT + '\'' +
|
||||
", ATTRID='" + ATTRID + '\'' +
|
||||
", RELATIONFILEID='" + RELATIONFILEID + '\'' +
|
||||
", RELATIONSHAPEID='" + RELATIONSHAPEID + '\'' +
|
||||
", RELATIONSHAPETEXT=" + RELATIONSHAPETEXT +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,333 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.service;
|
||||
|
||||
import com.actionsoft.bpms.commons.database.RowMap;
|
||||
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
||||
import com.actionsoft.bpms.form.engine.FormEngine;
|
||||
import com.actionsoft.bpms.server.UserContext;
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.constant.Constants;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.constant.PalAttrEnum;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.dao.FileBasicAttrDao;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.dao.RepositoryDao;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.dao.RlatDao;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.FileBasicAttrEntity;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.RlatBpmnModel;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.RlatEntity;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.util.OrgUtil;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.util.TreeNode;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.util.TreeUtil;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.util.ViewUtil;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.vo.ProcessFileVO;
|
||||
import jodd.util.StringUtil;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: yuandongqiang
|
||||
* @Date: 2025/9/17
|
||||
* @Description:
|
||||
*/
|
||||
public class PortalProcessService {
|
||||
private PortalProcessService() {
|
||||
|
||||
}
|
||||
|
||||
private static class PortalProcessInstance {
|
||||
public static PortalProcessService instance = new PortalProcessService();
|
||||
}
|
||||
|
||||
public static PortalProcessService getInstance() {
|
||||
return PortalProcessInstance.instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程清单页面左侧树结构初始化数据
|
||||
*
|
||||
* @param ux 用户上下文
|
||||
* @param parentId 父级ID
|
||||
* @param queryName 查询条件
|
||||
* @return
|
||||
*/
|
||||
public String getTreeData(UserContext ux, String parentId, String queryName) {
|
||||
if (StringUtils.isBlank(parentId)) {
|
||||
parentId = "process";
|
||||
}
|
||||
UtilService service = UtilService.getInstance();
|
||||
String wsId = service.getDefaultWsId();
|
||||
if (StringUtils.isEmpty(wsId)) {
|
||||
return service.getWsIdWarnMsg();
|
||||
}
|
||||
List<JSONObject> files = SDK.getPALRepositoryQueryAPI().getPalRepositoryModelsByPid(wsId, parentId);
|
||||
List<TreeNode> treeNodes = new ArrayList<>();
|
||||
for (JSONObject row : files) {
|
||||
Boolean use = row.getBoolean("use");
|
||||
if (!use) {
|
||||
continue;
|
||||
}
|
||||
if ("process".equals(parentId)) {
|
||||
String name = row.getString("name");
|
||||
int index = row.getIntValue("orderIndex");
|
||||
if (!name.startsWith(String.valueOf(index))) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (StringUtil.isNotBlank(queryName)) {
|
||||
if (!row.getString("name").contains(queryName)) {
|
||||
boolean hasQUery = false;
|
||||
String id = row.getString("id");
|
||||
List<JSONObject> list = SDK.getPALRepositoryQueryAPI().getAllPublishedPalRepositoryModelsByPid(wsId, id);
|
||||
for (JSONObject jsonObject : list) {
|
||||
if (jsonObject.getString("name").contains(queryName)) {
|
||||
hasQUery = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!hasQUery) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
TreeNode node = new TreeNode(row.getString("id"), row.getString("name"), row.getString("newParentId"));
|
||||
treeNodes.add(node);
|
||||
}
|
||||
List<TreeNode> processTree = TreeUtil.treeMenu(treeNodes, parentId);
|
||||
|
||||
ResponseObject ro = ResponseObject.newOkResponse();
|
||||
ro.put("treeData", processTree);
|
||||
return ro.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定节点下的流程文件数据
|
||||
*
|
||||
* @param ux
|
||||
* @param parentId 当前点击的节点
|
||||
* @param page
|
||||
* @param size
|
||||
* @param flag 是否添加当前点击节点的信息
|
||||
* @return
|
||||
*/
|
||||
public String getFileData(UserContext ux, String parentId, int page, int size, boolean flag, List<String> myFiles, String params) {
|
||||
JSONObject paramsMap = null;
|
||||
if (StringUtils.isNotEmpty(params)) {
|
||||
paramsMap = JSONObject.parseObject(params);
|
||||
}
|
||||
UtilService service = UtilService.getInstance();
|
||||
String rootId = "process";
|
||||
String wsId = service.getDefaultWsId();
|
||||
if (StringUtils.isEmpty(wsId)) {
|
||||
return service.getWsIdWarnMsg();
|
||||
}
|
||||
JSONObject rootFile = null;
|
||||
if (StringUtils.isEmpty(parentId)) {
|
||||
parentId = rootId;
|
||||
} else {
|
||||
RepositoryDao RepositoryDao = new RepositoryDao();
|
||||
RowMap rowMap = RepositoryDao.selectById(parentId);
|
||||
rootFile = ViewUtil.toJsonObject(rowMap);
|
||||
}
|
||||
List<JSONObject> allFiles = service.getAllDirAndProcessPalByPid(wsId, rootId);
|
||||
List<JSONObject> files = service.getAllProcessPalByPid(wsId, parentId);
|
||||
Map<String, List<JSONObject>> allCollect = allFiles.stream().collect(Collectors.groupingBy(el -> el.getString("id")));
|
||||
|
||||
if (rootFile != null && flag) {
|
||||
files.add(rootFile);
|
||||
}
|
||||
|
||||
List<JSONObject> collect = files.stream().sorted(Comparator.comparing(el -> el.getString("orderIndex"))).filter(el ->
|
||||
CollectionUtils.isEmpty(myFiles) || myFiles.contains(el.getString("versionId"))
|
||||
).sorted(Comparator.comparing(el -> el.getString("name"))).collect(Collectors.toList());
|
||||
List data = new ArrayList();
|
||||
if (null == paramsMap) {
|
||||
data = ViewUtil.pageUtil(collect, page, size);
|
||||
data = setProcessAttr(ux, data, allCollect, paramsMap);
|
||||
} else {
|
||||
collect = setProcessAttr(ux, collect, allCollect, paramsMap);
|
||||
data = ViewUtil.pageUtil(collect, page, size);
|
||||
}
|
||||
|
||||
ResponseObject ro = ResponseObject.newOkResponse();
|
||||
ro.put("fileData", data);
|
||||
ro.put("count", collect.size());
|
||||
ro.put("processCount", collect.size());
|
||||
return ro.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建文件的相关属性信息
|
||||
*
|
||||
* @param ux
|
||||
* @param files
|
||||
* @param allFileMap
|
||||
* @return
|
||||
*/
|
||||
public List setProcessAttr(UserContext ux, List<JSONObject> files, Map<String, List<JSONObject>> allFileMap, JSONObject paramsMap) {
|
||||
String queryName = "";
|
||||
String queryDept = "";
|
||||
if (null != paramsMap) {
|
||||
queryName = paramsMap.getString("name");
|
||||
queryDept = paramsMap.getString("dept");
|
||||
}
|
||||
List<ProcessFileVO> data = new ArrayList<>();
|
||||
String sid = ux.getSessionId();
|
||||
List<String> fileIdList = new ArrayList<>();
|
||||
for (JSONObject file : files) {
|
||||
String id = file.getString("id");
|
||||
fileIdList.add(id);
|
||||
}
|
||||
Map<String, List<RlatEntity>> relAttr = queryRelAttr(fileIdList);
|
||||
Map<String, List<FileBasicAttrEntity>> basicAttr = queryBasicAttr(fileIdList);
|
||||
|
||||
for (JSONObject row : files) {
|
||||
String id = row.getString("id");
|
||||
List<FileBasicAttrEntity> basic = basicAttr.get(id);
|
||||
String number = "";
|
||||
if (CollectionUtils.isNotEmpty(basic)) {
|
||||
for (FileBasicAttrEntity fileBasic : basic) {
|
||||
if (fileBasic.getPROPERTYID().equals("number")) {
|
||||
number = fileBasic.getPROPERTYVALUE();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 业务域与流程组
|
||||
List<JSONObject> fileLink = findFileLink(allFileMap, id);
|
||||
String businessName = "";
|
||||
String proGroupName = "";
|
||||
if (fileLink != null && fileLink.size() > 1) {
|
||||
JSONObject firstLevel = fileLink.get(1);
|
||||
businessName = firstLevel == null ? "" : firstLevel.getString("name");
|
||||
}
|
||||
if (fileLink != null && fileLink.size() > 2) {
|
||||
JSONObject secondLevel = fileLink.get(2);
|
||||
proGroupName = secondLevel == null ? "" : secondLevel.getString("name");
|
||||
}
|
||||
|
||||
//发布时间
|
||||
Date date = row.getDate("publishDate");
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
String publishDate = date == null ? "" : format.format(date);
|
||||
//跳转链接
|
||||
String url = "./w?sid=" + sid + "&cmd=" + Constants.openCmd + "&uuid=" + id + "&taskId=";
|
||||
|
||||
//关联文件
|
||||
List<String> compIds = new ArrayList<>();//关联合规文件
|
||||
List<String> regimeIds = new ArrayList<>();//关联制度文件
|
||||
List<String> formIds = new ArrayList<>();//关联表单文件
|
||||
String duty_dept = "";
|
||||
String duty_person = "";
|
||||
List<RlatEntity> list = relAttr.get(id);
|
||||
if (list != null && !list.isEmpty()) {
|
||||
Map<String, List<RlatEntity>> collect = list.stream().collect(Collectors.groupingBy(RlatEntity::getATTRID));
|
||||
|
||||
//责任人
|
||||
List<RlatEntity> duty_p = collect.get(PalAttrEnum.DUTY_PERSON.getKey());
|
||||
if (duty_p != null && !duty_p.isEmpty()) {
|
||||
try {
|
||||
RlatBpmnModel model = (RlatBpmnModel) duty_p.get(0).getRELATIONSHAPETEXT();
|
||||
duty_person = model.getNAME();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
SDK.getLogAPI().consoleErr("流程的【责任人】查询异常,其属性【" + PalAttrEnum.DUTY_PERSON.getKey() + "】不是关联的aws组织结构");
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtils.isNotEmpty(queryName) && !duty_person.contains(queryName)) continue;
|
||||
//责任部门
|
||||
duty_dept = OrgUtil.getRelAttr(collect, PalAttrEnum.DUTY_DEPT.getKey());
|
||||
if (StringUtils.isNotEmpty(queryDept) && !duty_dept.contains(queryDept)) continue;
|
||||
|
||||
//表单
|
||||
List<RlatEntity> formList = collect.get(PalAttrEnum.FORM.getKey()) == null ? new ArrayList<>() : collect.get(PalAttrEnum.FORM.getKey());
|
||||
for (RlatEntity form : formList) {
|
||||
if (!formIds.contains(form.getRELATIONFILEID())) {
|
||||
formIds.add(form.getRELATIONFILEID());
|
||||
}
|
||||
}
|
||||
//合规文件
|
||||
List<RlatEntity> complianceList = collect.get(PalAttrEnum.COMPLIANCE.getKey()) == null ? new ArrayList<>() : collect.get(PalAttrEnum.COMPLIANCE.getKey());
|
||||
|
||||
for (RlatEntity comp : complianceList) {
|
||||
if (!compIds.contains(comp.getRELATIONSHAPEID())) {
|
||||
compIds.add(comp.getRELATIONSHAPEID());
|
||||
}
|
||||
}
|
||||
//制度
|
||||
List<RlatEntity> regimeList = collect.get(PalAttrEnum.REGIME.getKey()) == null ? new ArrayList<>() : collect.get(PalAttrEnum.REGIME.getKey());
|
||||
regimeList = regimeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
|
||||
new TreeSet<>(Comparator.comparing(el -> el.getFILEID() + "-" + el.getRELATIONFILEID() +
|
||||
"-" + el.getRELATIONSHAPEID()))), ArrayList::new));
|
||||
for (RlatEntity regime : regimeList) {
|
||||
regimeIds.add(regime.getRELATIONSHAPEID());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
if (null != paramsMap && CollectionUtils.isEmpty(list)) {
|
||||
continue;
|
||||
}
|
||||
ProcessFileVO fileVO = new ProcessFileVO(url, id, businessName, proGroupName, number, row.getString("name"), "", publishDate, compIds, regimeIds, formIds, duty_dept, duty_person);
|
||||
data.add(fileVO);
|
||||
}
|
||||
|
||||
// List<ProcessFileVO> fileData = TestData.getFileData();
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询文件的关联属性
|
||||
*
|
||||
* @param fileIdList
|
||||
* @return
|
||||
*/
|
||||
|
||||
public Map<String, List<RlatEntity>> queryRelAttr(List<String> fileIdList) {
|
||||
RlatDao dao = new RlatDao();
|
||||
List<RlatEntity> list = dao.selectShapeRlatById(fileIdList);
|
||||
Map<String, List<RlatEntity>> collect = list.stream().collect(Collectors.groupingBy(el -> el.getFILEID()));
|
||||
return collect;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询文件的基础属性
|
||||
*
|
||||
* @param fileIdList
|
||||
* @return
|
||||
*/
|
||||
public Map<String, List<FileBasicAttrEntity>> queryBasicAttr(List<String> fileIdList) {
|
||||
FileBasicAttrDao dao = new FileBasicAttrDao();
|
||||
List<FileBasicAttrEntity> list = dao.selectBasicAttrByFileIds(fileIdList);
|
||||
Map<String, List<FileBasicAttrEntity>> collect = list.stream().collect(Collectors.groupingBy(el -> el.getPLID()));
|
||||
return collect;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从最底层向上查询出文件链
|
||||
*
|
||||
* @param collect
|
||||
* @param id
|
||||
* @return list的index即为从下往上的层数
|
||||
*/
|
||||
public List<JSONObject> findFileLink(Map<String, List<JSONObject>> collect, String id) {
|
||||
List<JSONObject> fileModels = collect.get(id);
|
||||
List<JSONObject> list = new ArrayList<>();
|
||||
// SDK.getLogAPI().consoleInfo(id+":开始寻找流程链");
|
||||
while (fileModels != null && !fileModels.isEmpty()) {
|
||||
JSONObject file = fileModels.get(0);
|
||||
id = file.getString("newParentId");
|
||||
fileModels = collect.get(id);
|
||||
list.add(file);
|
||||
}
|
||||
// SDK.getLogAPI().consoleInfo(id+":结束寻找流程链");
|
||||
Collections.reverse(list);
|
||||
return list;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,87 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.service;
|
||||
|
||||
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.constant.Constants;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.dao.RepositoryDao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-05-24 10:49
|
||||
* @description
|
||||
*/
|
||||
public class UtilService {
|
||||
|
||||
|
||||
private UtilService() {
|
||||
}
|
||||
|
||||
private static class FactorInstance {
|
||||
private static UtilService instance = new UtilService();
|
||||
}
|
||||
|
||||
public static UtilService getInstance() {
|
||||
return FactorInstance.instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询默认访问的资产库id
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String getDefaultWsId() {
|
||||
String wsName = SDK.getAppAPI().getProperty("com.awspaas.user.apps.nqms.portal.indexpage", "wsName");
|
||||
RepositoryDao repositoryDao = new RepositoryDao();
|
||||
return repositoryDao.getWsId(wsName);
|
||||
}
|
||||
|
||||
public String getWsIdWarnMsg() {
|
||||
ResponseObject ro = ResponseObject.newWarnResponse("请检查【门户首页】应用中参数[默认资产库名称]是否配置正确");
|
||||
return ro.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据根id获取下面的全部数据(流程类)
|
||||
* 包含文件夹
|
||||
*
|
||||
* @param wsId
|
||||
* @param pid
|
||||
* @return
|
||||
*/
|
||||
public List<JSONObject> getAllDirAndProcessPalByPid(String wsId, String pid) {
|
||||
//查找使用中状态下的文件,可以查出来文件夹,发布状态的无法查出来文件夹
|
||||
List<JSONObject> list;
|
||||
if (new Constants().processCheckType.equals("1")) {
|
||||
List<JSONObject> useList = SDK.getPALRepositoryQueryAPI().getAllUsedPalRepositoryModelsByPid(wsId, pid);
|
||||
useList = useList.stream().filter(el -> "default".equals(el.getString("methodId"))).collect(Collectors.toList());
|
||||
list = SDK.getPALRepositoryQueryAPI().getAllPublishedPalRepositoryModelsByPid(wsId, pid);
|
||||
list.addAll(useList);
|
||||
} else {
|
||||
list = SDK.getPALRepositoryQueryAPI().getAllUsedPalRepositoryModelsByPid(wsId, pid);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据根id获取下面的全部数据(流程类)
|
||||
* 不包含文件夹
|
||||
*
|
||||
* @param wsId
|
||||
* @param pid
|
||||
* @return
|
||||
*/
|
||||
public List<JSONObject> getAllProcessPalByPid(String wsId, String pid) {
|
||||
List<JSONObject> list;
|
||||
if (new Constants().processCheckType.equals("1")) {
|
||||
list = SDK.getPALRepositoryQueryAPI().getAllPublishedPalRepositoryModelsByPid(wsId, pid);
|
||||
} else {
|
||||
list = SDK.getPALRepositoryQueryAPI().getAllUsedPalRepositoryModelsByPid(wsId, pid);
|
||||
list = list.stream().filter(el -> !"default".equals(el.getString("methodId"))).collect(Collectors.toList());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.util;
|
||||
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.RlatBpmnModel;
|
||||
import com.awspaas.user.apps.nqms.portal.view.process.entity.RlatEntity;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-05-25 17:01
|
||||
* @description 组织数据相关
|
||||
*/
|
||||
public class OrgUtil {
|
||||
|
||||
public static String getRelAttr(Map<String, List<RlatEntity>> relAttr , String attrId){
|
||||
String attrVal = "";
|
||||
List<RlatEntity> attr = relAttr.get(attrId);
|
||||
if (attr!=null&&!attr.isEmpty()){
|
||||
RlatEntity entity = attr.get(0);
|
||||
if ( entity.getRELATIONFILEID().equals("00000000-0000-0000-0000-000000000000")) {
|
||||
RlatBpmnModel bpmnModel = (RlatBpmnModel) entity.getRELATIONSHAPETEXT();
|
||||
return bpmnModel.getNAME();
|
||||
}else {
|
||||
return (String) entity.getRELATIONSHAPETEXT();
|
||||
}
|
||||
|
||||
}else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,361 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.util;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-04-17 14:08
|
||||
* @description
|
||||
*/
|
||||
public class StructUtil {
|
||||
/**
|
||||
* @param list
|
||||
* @return
|
||||
*/
|
||||
public static String listToSqlStr(List<String> list) {
|
||||
if (list == null || list.isEmpty()) return "";
|
||||
StringBuilder sqlStr = new StringBuilder("(");
|
||||
for (String el : list) {
|
||||
if (StringUtils.isEmpty(el)) continue;
|
||||
String str = "'" + el + "',";
|
||||
sqlStr.append(str);
|
||||
}
|
||||
sqlStr.append(")");
|
||||
int i = sqlStr.lastIndexOf(",");
|
||||
if (i>=0){
|
||||
sqlStr.deleteCharAt(i);
|
||||
}
|
||||
String str = sqlStr.toString();
|
||||
return str.equals("()")?"":str;
|
||||
}
|
||||
/*
|
||||
|
||||
*/
|
||||
/**
|
||||
* 转为basemodel
|
||||
*
|
||||
* @param list
|
||||
* @return
|
||||
*//*
|
||||
|
||||
public static List<FileModel> toFileModel(List<RowMap> list) {
|
||||
Map<String, List<RowMap>> processFile = list.stream().collect(Collectors.groupingBy(el -> el.getString("ID")));
|
||||
|
||||
List<FileModel> data = new ArrayList<>();
|
||||
for (String key : processFile.keySet()) {
|
||||
FileModel model = new FileModel();
|
||||
model = setFileModel(model, processFile.get(key).get(0));
|
||||
updateFileModel(processFile.get(key), model);
|
||||
data.add(model);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
public static List<FileModel> setFileAttr(List<RowMap> list, List<FileModel> fileModels) {
|
||||
Map<String, List<RowMap>> rel = list.stream().collect(Collectors.groupingBy(el -> el.getString("PL_ID")));
|
||||
for (FileModel file : fileModels) {
|
||||
String plId = file.getID();
|
||||
List<RowMap> rowMaps = rel.get(plId);
|
||||
updateFileModel(rowMaps, file);
|
||||
}
|
||||
return fileModels;
|
||||
}
|
||||
|
||||
|
||||
|
||||
*/
|
||||
/**
|
||||
* 根据结果集,更新文件模型里形状的属性
|
||||
* @param list
|
||||
* @param fileModels
|
||||
* @return
|
||||
*//*
|
||||
|
||||
public static List<FileModel> setShapeAttr(List<RowMap> list, List<FileModel> fileModels) {
|
||||
Map<String, List<RowMap>> rel = list.stream().collect(Collectors.groupingBy(el -> el.getString("PL_ID")));
|
||||
for (FileModel file : fileModels) {
|
||||
String plId = file.getID();
|
||||
List<RowMap> rowMaps = rel.get(plId);
|
||||
updateShapeModelAttr(rowMaps, file);
|
||||
}
|
||||
return fileModels;
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 更新文件模型的属性
|
||||
*
|
||||
* @param rowMaps
|
||||
* @param model
|
||||
*//*
|
||||
|
||||
public static void updateFileModel(List<RowMap> rowMaps, FileModel model) {
|
||||
AttrModel attrModel = model.getAttrModel() == null ? new AttrModel() : model.getAttrModel();
|
||||
for (RowMap map : rowMaps) {
|
||||
// String parentId = map.getString("PL_ID");
|
||||
// //被哪个文件使用
|
||||
// if (StringUtils.isNotEmpty(parentId) && !parentId.equals(model.getID())) {
|
||||
// List<Map<String,String>> relationId = attrModel.getRelationList() == null ? new ArrayList<>() : attrModel.getRelationList();
|
||||
// HashMap<String, String> rel = new HashMap<>();
|
||||
// if (!relationId.contains(parentId)) {
|
||||
// relationId.add(parentId);
|
||||
// attrModel.setRelationId(relationId);
|
||||
// }
|
||||
// }
|
||||
setBasicAttr(map, attrModel);
|
||||
setAwsRelAttr(map, attrModel);
|
||||
setRelAttr(map, attrModel);
|
||||
}
|
||||
model.setAttrModel(attrModel);
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 更新形状模型的属性
|
||||
* @param rowMaps
|
||||
* @param model
|
||||
*//*
|
||||
|
||||
public static void updateShapeModelAttr(List<RowMap> rowMaps, FileModel model){
|
||||
Map<String, List<RowMap>> attrs = rowMaps.stream().collect(Collectors.groupingBy(el -> el.getString("SHAPE_ID")));
|
||||
// List<ShapeModel> shapes = model.getAttrModel().getShapes();
|
||||
List<ShapeModel> shapes = model.getShapes();
|
||||
for (ShapeModel shape:shapes) {
|
||||
ShapeAttrModel shapeAttrModel = shape.getShapeAttrModel()==null?new ShapeAttrModel(): shape.getShapeAttrModel();
|
||||
List<RowMap> shapeAttrs = attrs.get(shape.getID());
|
||||
for (RowMap shapeAttr:shapeAttrs) {
|
||||
setBasicAttr(shapeAttr,shapeAttrModel);
|
||||
setRelAttr(shapeAttr,shapeAttrModel);
|
||||
setAwsRelAttr(shapeAttr,shapeAttrModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void setAttrModel(RowMap map, AttrModel attrModel) {
|
||||
setBasicAttr(map,attrModel);
|
||||
setAwsRelAttr(map,attrModel);
|
||||
setRelAttr(map,attrModel);
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* 设置基础属性
|
||||
*
|
||||
* @param map
|
||||
* @param attrModel
|
||||
*//*
|
||||
|
||||
public static void setBasicAttr(RowMap map, AttrModel attrModel) {
|
||||
String attr_id = map.getString("ATTR_ID");
|
||||
String attr_name = map.getString("ATTR_NAME");
|
||||
String attr_value = map.getString("ATTR_VALUE");
|
||||
if (attr_value != null) {
|
||||
if (Constants.number.equals(attr_id)) {
|
||||
attrModel.setNumber(attr_value);
|
||||
} else if (Constants.desc.equals(attr_id)) {
|
||||
attrModel.setDesc(attr_value);
|
||||
} else {
|
||||
List<BasicAttrModel> basicAttr = attrModel.getBasicAttr() == null ? new ArrayList<>() : attrModel.getBasicAttr();
|
||||
BasicAttrModel basicAttrModel = new BasicAttrModel();
|
||||
basicAttrModel.setID(attr_id);
|
||||
basicAttrModel.setNAME(attr_name);
|
||||
basicAttrModel.setVALUE(attr_value);
|
||||
basicAttr.add(basicAttrModel);
|
||||
attrModel.setBasicAttr(basicAttr);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 设置关联aws组织的属性
|
||||
*
|
||||
* @param map
|
||||
* @param attrModel
|
||||
*//*
|
||||
|
||||
public static void setAwsRelAttr(RowMap map, AttrModel attrModel) {
|
||||
String attr_id = map.getString("ATTR_ID");
|
||||
String fileId = map.getString("RELATION_FILE_ID");
|
||||
String textId = map.getString("RELATION_TEXT_ID");
|
||||
String textName = map.getString("RELATION_TEXT_NAME");
|
||||
String textType = map.getString("RELATION_TEXT_TYPE");
|
||||
List<AwsOrgModel> dutyDept=attrModel.getDuty_dept()==null?new ArrayList<>():attrModel.getDuty_dept();
|
||||
List<AwsOrgModel> dutyPerson=attrModel.getDuty_person()==null?new ArrayList<>():attrModel.getDuty_person();
|
||||
AwsOrgModel dutyDeptMap = new AwsOrgModel();
|
||||
AwsOrgModel dutyPersonMap = new AwsOrgModel();
|
||||
if ("00000000-0000-0000-0000-000000000000".equals(fileId)) {
|
||||
if (Constants.dutyDept.equals(attr_id)) {
|
||||
dutyDeptMap.setID(textId);
|
||||
dutyDeptMap.setNAME(textName);
|
||||
dutyDeptMap.setTYPE(textType);
|
||||
dutyDept.add(dutyDeptMap);
|
||||
} else if (Constants.dutyPerson.equals(attr_id)) {
|
||||
dutyPersonMap.setID(textId);
|
||||
dutyPersonMap.setNAME(textName);
|
||||
dutyPersonMap.setTYPE(textType);
|
||||
dutyPerson.add(dutyPersonMap);
|
||||
}
|
||||
attrModel.setDuty_dept(dutyDept);
|
||||
attrModel.setDuty_person(dutyPerson);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 设置关联pal文件的属性
|
||||
*
|
||||
* @param map
|
||||
* @param attrModel
|
||||
*//*
|
||||
|
||||
public static void setRelAttr(RowMap map, AttrModel attrModel) {
|
||||
String fileId = map.getString("RELATION_FILE_ID");
|
||||
String shapeId = map.getString("RELATION_SHAPE_ID");
|
||||
String shapeText = map.getString("RELATION_SHAPE_TEXT");
|
||||
if (StringUtils.isEmpty(shapeId)) {
|
||||
List<FileModel> relationFile = attrModel.getRelationFile() == null ? new ArrayList<>() : attrModel.getRelationFile();
|
||||
FileModel relation = new FileModel();
|
||||
relation.setID(fileId);
|
||||
relationFile.add(relation);
|
||||
attrModel.setRelationFile(relationFile);
|
||||
} else if (StringUtils.isNotEmpty(shapeId)) {
|
||||
List<ShapeModel> relationShape = attrModel.getRelationShape() == null ? new ArrayList<>() : attrModel.getRelationShape();
|
||||
ShapeModel relation = new ShapeModel();
|
||||
relation.setID(fileId);
|
||||
relationShape.add(relation);
|
||||
attrModel.setRelationShape(relationShape);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 将查询结果转为shape对象
|
||||
*
|
||||
* @param rowMaps
|
||||
* @param files
|
||||
* @return
|
||||
*//*
|
||||
|
||||
public static List<FileModel> toShapeModel(List<RowMap> rowMaps, List<FileModel> files) {
|
||||
Map<String, List<RowMap>> shapeMap = rowMaps.stream().collect(Collectors.groupingBy(el -> el.getString("PL_ID")));
|
||||
for (FileModel file : files) {
|
||||
String fileId = file.getID();
|
||||
// AttrModel attrModel = file.getAttrModel() == null ? new AttrModel() : file.getAttrModel();
|
||||
List<ShapeModel> shapeModels = file.getShapes() == null ? new ArrayList<>() : file.getShapes();
|
||||
List<RowMap> shapes = shapeMap.get(fileId);
|
||||
for (RowMap row : shapes) {
|
||||
ShapeModel shapeModel = new ShapeModel();
|
||||
shapeModels.add(setShapeModel(shapeModel, row));
|
||||
}
|
||||
file.setShapes(shapeModels);
|
||||
// file.setAttrModel(attrModel);
|
||||
}
|
||||
return files;
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 转为形状模型
|
||||
* @param rowMaps
|
||||
* @return
|
||||
*//*
|
||||
|
||||
public static List<ShapeModel> toShapeModel(List<RowMap> rowMaps) {
|
||||
ArrayList<ShapeModel> list = new ArrayList<>();
|
||||
for (RowMap map:rowMaps
|
||||
) {
|
||||
ShapeModel shapeModel = new ShapeModel();
|
||||
StructUtil.setShapeModel(shapeModel, map);
|
||||
list.add(shapeModel);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* @param model
|
||||
* @param map
|
||||
*//*
|
||||
|
||||
public static FileModel setFileModel(FileModel model, RowMap map) {
|
||||
model.setID(map.getString("ID")); // 唯一标识
|
||||
model.setWS_ID(map.getString("WS_ID"));
|
||||
model.setMODEL_NAME(map.getString("MODEL_NAME"));
|
||||
model.setMODEL_PARENT_ID(map.getString("MODEL_PARENT_ID"));
|
||||
model.setMODEL_PARENT_NAME(map.getString("MODEL_PARENT_NAME"));
|
||||
model.setREPO_LEVEL(map.getString("REPO_LEVEL"));
|
||||
model.setIS_USE(map.getString("IS_USE"));
|
||||
model.setIS_APPROVAL(map.getString("IS_APPROVAL"));
|
||||
model.setIS_PUBLISH(map.getString("IS_PUBLISH"));
|
||||
model.setIS_STOP(map.getString("IS_STOP"));
|
||||
model.setPUBLISH_USER(map.getString("PUBLISH_USER"));
|
||||
model.setPUBLISH_DATE(map.getString("PUBLISH_DATE"));
|
||||
model.setCATEGORY_ID(map.getString("CATEGORY_ID"));
|
||||
model.setCATEGORY_NAME(map.getString("CATEGORY_NAME"));
|
||||
model.setMETHOD_ID(map.getString("METHOD_ID"));
|
||||
model.setMETHOD_NAME(map.getString("METHOD_NAME"));
|
||||
model.setVERSION_NUM(map.getString("VERSION_NUM"));
|
||||
model.setVERSION_ID(map.getString("VERSION_ID"));
|
||||
model.setPROCESSINST_ID(map.getString("PROCESSINST_ID"));
|
||||
model.setIS_CORRELATE(map.getString("IS_CORRELATE"));
|
||||
model.setCORRELATE_TYPE(map.getString("CORRELATE_TYPE"));
|
||||
model.setCORRELATE_AWS_ID(map.getString("CORRELATE_AWS_ID"));
|
||||
return model;
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 转换形状模型
|
||||
* @param model
|
||||
* @param map
|
||||
* @return
|
||||
*//*
|
||||
|
||||
public static ShapeModel setShapeModel(ShapeModel model, RowMap map) {
|
||||
model.setID(map.getString("ID"));
|
||||
model.setDEFAULT_NAME(map.getString("DEFAULT_NAME"));
|
||||
model.setPL_ID(map.getString("PL_ID"));
|
||||
model.setSHAPE_CATEGORY(map.getString("SHAPE_CATEGORY"));
|
||||
model.setSHAPE_ID(map.getString("SHAPE_ID"));
|
||||
model.setSHAPE_NAME(map.getString("SHAPE_NAME"));
|
||||
model.setSHAPE_TYPE(map.getString("SHAPE_TYPE"));
|
||||
model.setWS_ID(map.getString("WS_ID"));
|
||||
return model;
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 从文件模型集合中获取文件ID的集合
|
||||
* @param files
|
||||
* @return
|
||||
*//*
|
||||
|
||||
public static List<String> getFileIds(List<FileModel> files) {
|
||||
List<String> ids = new ArrayList<>();
|
||||
for (FileModel model : files
|
||||
) {
|
||||
ids.add(model.getID());
|
||||
}
|
||||
// return listToSqlStr(ids);
|
||||
return ids;
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* 从形状模型中获取形状id的集合
|
||||
* @param shapes
|
||||
* @return
|
||||
*//*
|
||||
|
||||
public static List<String> getShapeIds(List<ShapeModel> shapes){
|
||||
List<String> ids = new ArrayList<>();
|
||||
for (ShapeModel model : shapes
|
||||
) {
|
||||
ids.add(model.getID());
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
@ -0,0 +1,148 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.util;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ZHULIMIN
|
||||
*/
|
||||
public class TreeNode {
|
||||
|
||||
|
||||
/**
|
||||
* 节点id
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
private String label;
|
||||
|
||||
/**
|
||||
* 父节点 默认0为根节点
|
||||
*/
|
||||
private String parentId;
|
||||
|
||||
/**
|
||||
* 是否显示 true false
|
||||
*/
|
||||
private Boolean disabled;
|
||||
|
||||
/**
|
||||
* 是否有子节点
|
||||
*/
|
||||
private boolean hasChild;
|
||||
/**
|
||||
* 是否有子节点
|
||||
*/
|
||||
private String isPublish;
|
||||
/**
|
||||
* 子节点
|
||||
*/
|
||||
private List<TreeNode> children;
|
||||
|
||||
/**
|
||||
* 图标
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
private String methodId = "";
|
||||
|
||||
public TreeNode() {
|
||||
}
|
||||
|
||||
public TreeNode(String id, String label, String parentId) {
|
||||
this.id = id;
|
||||
this.label = label;
|
||||
this.parentId = parentId;
|
||||
}
|
||||
|
||||
public TreeNode(String id, String label, String parentId, Boolean disabled, boolean hasChild, String isPublish, List<TreeNode> children, String icon, String methodId) {
|
||||
this.id = id;
|
||||
this.label = label;
|
||||
this.parentId = parentId;
|
||||
this.disabled = disabled;
|
||||
this.hasChild = hasChild;
|
||||
this.isPublish = isPublish;
|
||||
this.children = children;
|
||||
this.icon = icon;
|
||||
this.methodId = methodId;
|
||||
}
|
||||
|
||||
public String getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
public void setIcon(String icon) {
|
||||
this.icon = icon;
|
||||
}
|
||||
|
||||
public String getMethodId() {
|
||||
return methodId;
|
||||
}
|
||||
|
||||
public void setMethodId(String methodId) {
|
||||
this.methodId = methodId;
|
||||
}
|
||||
|
||||
public String getIsPublish() {
|
||||
return isPublish;
|
||||
}
|
||||
|
||||
public void setIsPublish(String isPublish) {
|
||||
this.isPublish = isPublish;
|
||||
}
|
||||
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getParentId() {
|
||||
return parentId;
|
||||
}
|
||||
|
||||
public void setParentId(String parentId) {
|
||||
this.parentId = parentId;
|
||||
}
|
||||
|
||||
public Boolean getDisabled() {
|
||||
return disabled;
|
||||
}
|
||||
|
||||
public void setDisabled(Boolean disabled) {
|
||||
this.disabled = disabled;
|
||||
}
|
||||
|
||||
public boolean isHasChild() {
|
||||
return hasChild;
|
||||
}
|
||||
|
||||
public void setHasChild(boolean hasChild) {
|
||||
this.hasChild = hasChild;
|
||||
}
|
||||
|
||||
public List<TreeNode> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void setChildren(List<TreeNode> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,177 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.util;
|
||||
|
||||
|
||||
import com.actionsoft.bpms.commons.database.RowMap;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
* 树形结构工具类
|
||||
*
|
||||
* @author ZHULIMIN
|
||||
* @version 1.0
|
||||
* @date 2023-02-28 14:57:00
|
||||
*/
|
||||
public final class TreeUtil {
|
||||
|
||||
|
||||
/**
|
||||
* 树形结构工具类
|
||||
* <p>
|
||||
* 将一组list对象转成树形结构
|
||||
* 该list需符合设定的字段类型
|
||||
*/
|
||||
|
||||
static List<TreeNode> menuCommon = null;
|
||||
|
||||
private static List list;
|
||||
|
||||
/**
|
||||
* 转为树结构
|
||||
*
|
||||
* @param menu
|
||||
* @return
|
||||
*/
|
||||
public static List<TreeNode> treeMenu(final List<TreeNode> menu) {
|
||||
menuCommon = menu;
|
||||
list = new ArrayList<>();
|
||||
for (TreeNode treeNode : menu) {
|
||||
Map mapArr = Collections.synchronizedMap(new LinkedHashMap<>());
|
||||
if ("0".equals(treeNode.getParentId())) {
|
||||
setTreeMap(mapArr, treeNode);
|
||||
list.add(mapArr);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List<TreeNode> treeMenu(final List<TreeNode> menu, List<String> parentList) {
|
||||
menuCommon = menu;
|
||||
list = new ArrayList<>();
|
||||
for (TreeNode treeNode : menu) {
|
||||
Map mapArr = Collections.synchronizedMap(new LinkedHashMap<>());
|
||||
if (parentList.contains(treeNode.getParentId())) {
|
||||
setTreeMap(mapArr, treeNode);
|
||||
list.add(mapArr);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
public static List<TreeNode> treeMenu(final List<TreeNode> menu, String parentId) {
|
||||
menuCommon = menu;
|
||||
list = new ArrayList<>();
|
||||
for (TreeNode treeNode : menu) {
|
||||
Map mapArr = Collections.synchronizedMap(new LinkedHashMap<>());
|
||||
if (parentId.equals(treeNode.getParentId())) {
|
||||
setTreeMap(mapArr, treeNode);
|
||||
list.add(mapArr);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List menuChild(String id) {
|
||||
List lists = new ArrayList();
|
||||
for (TreeNode a : menuCommon) {
|
||||
Map childArray = Collections.synchronizedMap(new LinkedHashMap());
|
||||
if (a.getParentId().equals(id)) {
|
||||
setTreeMap(childArray, a);
|
||||
lists.add(childArray);
|
||||
}
|
||||
}
|
||||
return lists;
|
||||
}
|
||||
|
||||
|
||||
private static void setTreeMap(Map mapArr, TreeNode treeNode) {
|
||||
mapArr.put("id", treeNode.getId());
|
||||
mapArr.put("label", treeNode.getLabel());
|
||||
mapArr.put("parentId", treeNode.getParentId());
|
||||
mapArr.put("methodId", treeNode.getMethodId());
|
||||
mapArr.put("icon", treeNode.getIcon());
|
||||
List childrens = menuChild(treeNode.getId());
|
||||
if (childrens.size() > 0) {
|
||||
mapArr.put("hasChild", true);
|
||||
} else {
|
||||
mapArr.put("hasChild", false);
|
||||
}
|
||||
mapArr.put("children", menuChild(treeNode.getId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据父节点寻找对应的node
|
||||
*
|
||||
* @param list
|
||||
* @param parentId
|
||||
* @return
|
||||
*/
|
||||
public static List<TreeNode> findTreeByNode(List<TreeNode> list, String parentId) {
|
||||
for (TreeNode node : list) {
|
||||
String id = node.getId();
|
||||
List<TreeNode> data = new ArrayList<>();
|
||||
data.add(node);
|
||||
if (id.equals(parentId)) {
|
||||
return data;
|
||||
} else {
|
||||
if (node.isHasChild()) {
|
||||
List<TreeNode> treeByNode = findTreeByNode(data, parentId);
|
||||
if (treeByNode == null) continue;
|
||||
return treeByNode;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据父节点寻找对应的node
|
||||
*
|
||||
* @param list
|
||||
* @param parentId
|
||||
* @return
|
||||
*/
|
||||
public static List<Map> findTreeByParentId(List<RowMap> list, String parentId, List<Map> treeData) {
|
||||
if (null == list || list.isEmpty()) {
|
||||
return treeData;
|
||||
}
|
||||
;
|
||||
//// Map<String, List<Map>> parentIdList = list.stream().collect(Collectors.groupingBy(el -> el.get("parentId").toString()));
|
||||
// List<RowMap> newList = new ArrayList<>();
|
||||
// newList.addAll(list);
|
||||
for (Map map : list) {
|
||||
String id = map.get("ID").toString();
|
||||
String pid = map.get("PLPARENTID").toString();
|
||||
if (id.equals(parentId)) {
|
||||
if (!treeData.contains(map)) {
|
||||
treeData.add(map);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (pid.equals(parentId)) {
|
||||
if (!treeData.contains(map)) {
|
||||
|
||||
treeData.add(map);
|
||||
treeData = findTreeByParentId(list, id, treeData);
|
||||
}
|
||||
}
|
||||
}
|
||||
return treeData;
|
||||
}
|
||||
|
||||
public static List<TreeNode> toTreeNode(List<RowMap> list) {
|
||||
ArrayList<TreeNode> nodes = new ArrayList<>();
|
||||
for (Map map : list) {
|
||||
TreeNode node = new TreeNode();
|
||||
node.setId( map.get("ID")==null?"":(String) map.get("ID"));
|
||||
node.setLabel( map.get("MODEL_NAME")==null?"":(String) map.get("MODEL_NAME"));
|
||||
node.setParentId( map.get("MODEL_PARENT_ID")==null?"":(String) map.get("MODEL_PARENT_ID"));
|
||||
node.setIsPublish( map.get("IS_PUBLISH")==null?"":(String) map.get("IS_PUBLISH"));
|
||||
node.setMethodId( map.get("METHOD_ID")==null?"":(String) map.get("METHOD_ID"));
|
||||
nodes.add(node);
|
||||
}
|
||||
return nodes;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.util;
|
||||
|
||||
import com.actionsoft.bpms.commons.database.RowMap;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-04-24 10:52
|
||||
* @description
|
||||
*/
|
||||
public class ViewUtil {
|
||||
public static List pageUtil(List list, int page, int size) {
|
||||
if (page==0&&size==0){
|
||||
return list;
|
||||
}
|
||||
List data = new ArrayList<>();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
if (size * (page - 1) <= i && i < (size * page)) {
|
||||
data.add(list.get(i));
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
public static String listToSqlStr(List<String> list) {
|
||||
if (list == null || list.isEmpty()) return "";
|
||||
StringBuilder sqlStr = new StringBuilder("(");
|
||||
for (String el : list) {
|
||||
if (StringUtils.isEmpty(el)) continue;
|
||||
String str = "'" + el + "',";
|
||||
sqlStr.append(str);
|
||||
}
|
||||
sqlStr.append(")");
|
||||
sqlStr.deleteCharAt(sqlStr.lastIndexOf(","));
|
||||
return sqlStr.toString();
|
||||
}
|
||||
public static JSONObject toJsonObject(RowMap map){
|
||||
JSONObject object = new JSONObject();
|
||||
object.put("id",map.getString("ID"));
|
||||
object.put("publish",map.getString("ISPUBLISH").equals("1"));
|
||||
object.put("publishDate",map.getDate("PUBLISHDATE"));
|
||||
object.put("name",map.getString("PLNAME"));
|
||||
object.put("orderIndex",map.getString("PLORDERINDEX"));
|
||||
object.put("methodId",map.getString("PLMETHODID"));
|
||||
return object;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,226 @@
|
||||
package com.awspaas.user.apps.nqms.portal.view.process.vo;
|
||||
|
||||
import com.alipay.remoting.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
* @author wym
|
||||
* @date 2023-04-23 15:34
|
||||
* @description
|
||||
*/
|
||||
public class ProcessFileVO {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String url;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String id;
|
||||
/**
|
||||
*业务域
|
||||
*/
|
||||
private String businessAreas;
|
||||
/**
|
||||
*流程组
|
||||
*/
|
||||
private String processGroup;
|
||||
/**
|
||||
*流程编号
|
||||
*/
|
||||
private String processNO;
|
||||
/**
|
||||
*业务流程
|
||||
*/
|
||||
private String processName;
|
||||
/**
|
||||
*活动步骤
|
||||
*/
|
||||
private String activeName;
|
||||
/**
|
||||
*发布时间
|
||||
*/
|
||||
private String publishDate;
|
||||
/**
|
||||
*责任部门
|
||||
*/
|
||||
private String dutyDept;
|
||||
/**
|
||||
*责任人
|
||||
*/
|
||||
private String dutyPerson;
|
||||
|
||||
private List<String> compFiles;
|
||||
private List<String> regimeFiles;
|
||||
private List<String> formFiles;
|
||||
|
||||
public ProcessFileVO() {
|
||||
}
|
||||
|
||||
public ProcessFileVO(String id, String businessAreas, String processGroup, String processNO, String processName, String activeName, String publishDate) {
|
||||
this.id = id;
|
||||
this.businessAreas = businessAreas;
|
||||
this.processGroup = processGroup;
|
||||
this.processNO = processNO;
|
||||
this.processName = processName;
|
||||
this.activeName = activeName;
|
||||
this.publishDate = publishDate;
|
||||
|
||||
}
|
||||
|
||||
public ProcessFileVO(String id, String businessAreas, String processGroup, String processNO, String processName, String activeName, String publishDate, List<String> compFiles, List<String> regimeFiles, List<String> formFiles, String dutyDept, String dutyPerson) {
|
||||
this.id = id;
|
||||
this.businessAreas = businessAreas;
|
||||
this.processGroup = processGroup;
|
||||
this.processNO = processNO;
|
||||
this.processName = processName;
|
||||
this.activeName = activeName;
|
||||
this.publishDate = publishDate;
|
||||
this.compFiles = compFiles;
|
||||
this.regimeFiles = regimeFiles;
|
||||
this.formFiles = formFiles;
|
||||
this.dutyDept = dutyDept;
|
||||
this.dutyPerson = dutyPerson;
|
||||
}
|
||||
public ProcessFileVO(String url, String id, String businessAreas, String processGroup, String processNO, String processName, String activeName, String publishDate, List<String> compFiles, List<String> regimeFiles, List<String> formFiles, String dutyDept, String dutyPerson) {
|
||||
|
||||
this.url = url;
|
||||
this.id = id;
|
||||
this.businessAreas = businessAreas;
|
||||
this.processGroup = processGroup;
|
||||
this.processNO = processNO;
|
||||
this.processName = processName;
|
||||
this.activeName = activeName;
|
||||
this.publishDate = publishDate;
|
||||
this.compFiles = compFiles;
|
||||
this.regimeFiles = regimeFiles;
|
||||
this.formFiles = formFiles;
|
||||
this.dutyDept = dutyDept;
|
||||
this.dutyPerson = dutyPerson;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getBusinessAreas() {
|
||||
return businessAreas;
|
||||
}
|
||||
|
||||
public void setBusinessAreas(String businessAreas) {
|
||||
this.businessAreas = businessAreas;
|
||||
}
|
||||
|
||||
public String getProcessGroup() {
|
||||
return processGroup;
|
||||
}
|
||||
|
||||
public void setProcessGroup(String processGroup) {
|
||||
this.processGroup = processGroup;
|
||||
}
|
||||
|
||||
public String getProcessNO() {
|
||||
return processNO;
|
||||
}
|
||||
|
||||
public void setProcessNO(String processNO) {
|
||||
|
||||
this.processNO = processNO;
|
||||
}
|
||||
|
||||
public String getProcessName() {
|
||||
return processName;
|
||||
}
|
||||
|
||||
public void setProcessName(String processName) {
|
||||
this.processName = processName;
|
||||
}
|
||||
|
||||
public String getActiveName() {
|
||||
return activeName;
|
||||
}
|
||||
|
||||
public void setActiveName(String activeName) {
|
||||
this.activeName = activeName;
|
||||
}
|
||||
|
||||
public String getPublishDate() {
|
||||
return publishDate;
|
||||
}
|
||||
|
||||
public void setPublishDate(String publishDate) {
|
||||
this.publishDate = publishDate;
|
||||
}
|
||||
|
||||
public List<String> getCompFiles() {
|
||||
return compFiles;
|
||||
}
|
||||
|
||||
public void setCompFiles(List<String> compFiles) {
|
||||
this.compFiles = compFiles;
|
||||
}
|
||||
|
||||
public List<String> getRegimeFiles() {
|
||||
return regimeFiles;
|
||||
}
|
||||
|
||||
public void setRegimeFiles(List<String> regimeFiles) {
|
||||
this.regimeFiles = regimeFiles;
|
||||
}
|
||||
|
||||
public List<String> getFormFiles() {
|
||||
return formFiles;
|
||||
}
|
||||
|
||||
public void setFormFiles(List<String> formFiles) {
|
||||
this.formFiles = formFiles;
|
||||
}
|
||||
|
||||
public String getDutyDept() {
|
||||
return dutyDept;
|
||||
}
|
||||
|
||||
public void setDutyDept(String dutyDept) {
|
||||
|
||||
this.dutyDept = dutyDept;
|
||||
}
|
||||
|
||||
public String getDutyPerson() {
|
||||
return dutyPerson;
|
||||
}
|
||||
|
||||
public void setDutyPerson(String dutyPerson) {
|
||||
this.dutyPerson = dutyPerson;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProcessFileVO{" +
|
||||
"url='" + url + '\'' +
|
||||
", id='" + id + '\'' +
|
||||
", businessAreas='" + businessAreas + '\'' +
|
||||
", processGroup='" + processGroup + '\'' +
|
||||
", processNO='" + processNO + '\'' +
|
||||
", processName='" + processName + '\'' +
|
||||
", activeName='" + activeName + '\'' +
|
||||
", publishDate='" + publishDate + '\'' +
|
||||
", dutyDept='" + dutyDept + '\'' +
|
||||
", dutyPerson='" + dutyPerson + '\'' +
|
||||
", compFiles=" + compFiles +
|
||||
", regimeFiles=" + regimeFiles +
|
||||
", formFiles=" + formFiles +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user