数据看板代码提交

This commit is contained in:
lihongyu 2022-11-09 15:22:35 +08:00
parent 9d7f2e0475
commit 9a2f1ce7e3
22 changed files with 9517 additions and 0 deletions

View File

@ -0,0 +1,588 @@
package com.awspaas.user.apps.yili.reportform.aslp;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.CoeDesignerUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.apps.resource.interop.aslp.ASLP;
import com.actionsoft.apps.resource.interop.aslp.Meta;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.awspaas.user.apps.yili.reportform.util.CheckUtil;
import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil;
import com.awspaas.user.apps.yili.reportform.util.RepositoryAttribute;
/**
* @author:Lizj
* @create: 2022-08-03 17:16
* @Description: 增量同步文件信息aslp
*/
public class AttrSynAslp implements ASLP {
public AttrSynAslp() {
}
@Meta(
parameter = {"name:'wsId',required:true,desc:'资产内容库id'","name:'fileId',required:true,desc:'文件idjson数组[id1,id2,id3]'"}
)
public ResponseObject call(Map<String, Object> params) {
ResponseObject ro = ResponseObject.newOkResponse();
String wsId = String.valueOf(params.get("wsId"));
String fileIds = String.valueOf(params.get("fileId"));
JSONArray fileIdArray = JSONArray.parseArray(fileIds);
SDK.getLogAPI().consoleInfo("增量同步文件信息开始执行");
SDK.getLogAPI().consoleInfo("同步个数"+fileIdArray.size());
long startTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("开始时间"+startTime);
//筛选出角色类文件list
/* String org = "org";
List<PALRepositoryModel> palOrgList = new ArrayList<>();
Set<String> palOrgIds = new HashSet<>();
PALRepositoryCache.getAllChildrenModelsByPid(wsId, org, palOrgList, palOrgIds);
SDK.getLogAPI().consoleInfo("org下文件数量" + palOrgList.size());
List<PALRepositoryModel> palRoleFileList = palOrgList.stream().filter(x -> x.getMethodId().equals("org.role")).collect(Collectors.toList());
SDK.getLogAPI().consoleInfo("角色文件数量:" + palRoleFileList.size());*/
//初始化架构文件节点 old/new list
ArrayList<Map<String, ?>> oldFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newNodeDataMaps = new ArrayList<>();
HashMap<String, Object> dataMap = new HashMap<>();
Object[] sqlParams = new Object[]{};
//获取底表数据
List<String> frameIdList = DBSql.getList("SELECT FRAMEID FROM BO_EU_PAL_FRAME", String.class);
SDK.getLogAPI().consoleInfo("架构底表长度:" + frameIdList.size());
List<String> fileIdList = DBSql.getList("SELECT FILEID FROM BO_EU_PAL_FILE1", String.class);
SDK.getLogAPI().consoleInfo("文件底表长度:" + fileIdList.size());
List<String> nodeIdList = DBSql.getList("SELECT NODEID FROM BO_EU_PAL_FILENODE5", String.class);
SDK.getLogAPI().consoleInfo("节点底表长度:" + nodeIdList.size());
//系统字段
String uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
Date nowDateJ = new Date(System.currentTimeMillis());
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (null!=fileIdArray && !fileIdArray.isEmpty()) {
for (Object fileIdO : fileIdArray) {
String fileIdString = String.valueOf(fileIdO);
PALRepositoryModel fileModel = PALRepositoryCache.getCache().get(fileIdString);
if (fileModel.getMethodId().equals("process.framework")) {
//更新/新增架构
String FRAMENAME = fileModel.getName();
Integer FRAMELEVEL = fileModel.getLevel();
String FRAMETYPE = null;
String FRAMEPARENTID = fileModel.getParentId();
Integer FRAMEORDERINDEX = fileModel.getOrderIndex();
Map<String, JSONObject> frameAttrs = new RepositoryAttribute().queryRepositoryAttributeById(fileIdString);
if (null!=frameAttrs && !frameAttrs.isEmpty()) {
JSONObject Frame_type = frameAttrs.get("Frame_type");
FRAMETYPE = Frame_type.getString("text");
}
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
if (fileIdList.contains(fileIdString)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FRAMEID", fileIdString);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("FRAMENAME", FRAMENAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldFrameDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FRAMEID", fileIdString);
dataMap.put("FRAMENAME", FRAMENAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newFrameDataMaps.add(dataMap);
}
} else {
String plRid = fileModel.getPlRid();
String sql1 = "SELECT ID FROM (SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLRID = '"+plRid+"' AND ISPUBLISH ='1' ORDER BY PLVER DESC ) WHERE ROWNUM<2";
String palId = DBSql.getString(sql1);
System.err.println("本次发布替换已发布文件:"+palId);
String sql2 = "SELECT * FROM BO_EU_PAL_FILE1 WHERE FILEID ='"+palId+"'";
RowMap map = DBSql.getMap(sql2);
if(map!=null) {
String dsql = "DELETE FROM BO_EU_PAL_FILE1 WHERE FILEID = '"+palId+"'";
DBSql.update(dsql);
}
//更新/新增文件
String PLNAME = fileModel.getName();
Integer PLLEVEL = fileModel.getLevel();
String PLPARENTID = fileModel.getParentId();
Integer PLORDERINDEX = fileModel.getOrderIndex();
String PLCATEGORY = fileModel.getMethodCategory();
String PLMETHODID = fileModel.getMethodId();
double FILEVERSION = fileModel.getVersion();
String CREATEPER = fileModel.getCreateUser();
String MODIFYPER = fileModel.getModifyUser();
Timestamp CREATEDATETIME = fileModel.getCreateDate();
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
String PUBDEPT = "";
String PUBDATETIME = "";
String FILESTATE = "";
String FILEUSESTATE =
"";
Long VIEWCOUNT = fileModel.getViewCount();
String L1ID = "";
String L2ID = "";
String L3ID = "";
String LEADPROCESS = "";
String REARPROCESS = "";
String PROCESSKPI = "";
String RELEVANTFILE = "";
String SUPPORTFILE = "";
String POLICYTYPE = "";
List<Map<String, Object>> nodeElements = new ArrayList<>();
List<RowMap> parentMaps = new ArrayList<>();
if (null!=PLPARENTID && !PLPARENTID.equals("")) {
parentMaps = GetNodesUtil.getParentFrame(PLPARENTID, parentMaps);
}
if (null != parentMaps && !parentMaps.isEmpty()) {
for (RowMap parentMap : parentMaps) {
Integer parentLevel = parentMap.getInt("FRAMELEVEL");
String parentID = parentMap.getString("FRAMEID");
if (parentLevel.equals(3)) {
L3ID = parentID;
}
if (parentLevel.equals(2)) {
L2ID = parentID;
}
if (parentLevel.equals(1)) {
L1ID = parentID;
}
}
}
//文件状态
FILESTATE = "0";
if (fileModel.isPublish()==true) {
FILESTATE = "1";
}
if (fileModel.isApproval()==true) {
FILESTATE = "2";
}
if (fileModel.isStop()==true) {
FILESTATE = "3";
}
//文件生效状态
if (fileModel.isUse()==true) {
FILEUSESTATE = "1";
} else {
FILEUSESTATE = "0";
}
Map<String, JSONObject> fileAttrJsonMap = new HashMap<>();
try {
fileAttrJsonMap = new RepositoryAttribute().queryRepositoryAttributeById(fileIdString);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("文件ID"+fileIdString+"数据异常");
}
if (null!=fileAttrJsonMap && !fileAttrJsonMap.isEmpty()) {
//发布部门
JSONObject Issuing_department = fileAttrJsonMap.get("Issuing_department");
if (null!=Issuing_department && !Issuing_department.equals("")) {
JSONArray PUBDEPTJA = Issuing_department.getJSONArray("value");
if (null!=PUBDEPTJA && !PUBDEPTJA.isEmpty()) {
for (Object PUBDEPTO : PUBDEPTJA) {
JSONObject PUBDEPTJO = JSONObject.parseObject(String.valueOf(PUBDEPTO));
PUBDEPT = PUBDEPT + " " + PUBDEPTJO.getString("id");
}
PUBDEPT = PUBDEPT.substring(1);
}
}
//发布时间
PUBDATETIME = "";
JSONObject effective_date = fileAttrJsonMap.get("Drafted_and_revised_date");
if (null!=effective_date && !effective_date.equals("")) {
String pubDateString = effective_date.getString("text");
if (null!=pubDateString && !pubDateString.equals("")) {
if (CheckUtil.isDate(pubDateString)) {
Date parse = null;
try {
parse = sdf1.parse(pubDateString);
} catch (ParseException e) {
e.printStackTrace();
}
PUBDATETIME = sdf1.format(parse);
}
}
}
//前置流程
JSONObject lead_process = fileAttrJsonMap.get("lead_process");
if (null != lead_process && !lead_process.equals("")) {
JSONArray lpValue = lead_process.getJSONArray("value");
if (null != lpValue && !lpValue.isEmpty()) {
LEADPROCESS = "1";
} else {
LEADPROCESS = "0";
}
} else {
LEADPROCESS = "0";
}
//后置流程
JSONObject rear_process = fileAttrJsonMap.get("rear_process");
if (null != rear_process && !rear_process.equals("")) {
JSONArray rpValue = rear_process.getJSONArray("value");
if (null != rpValue && !rpValue.isEmpty()) {
REARPROCESS = "1";
} else {
REARPROCESS = "0";
}
} else {
REARPROCESS = "0";
}
//流程绩效
JSONObject performance = fileAttrJsonMap.get("Process_performance_metrics");
if (null!=performance && !performance.equals("")) {
JSONArray performanceJA = performance.getJSONArray("value");
if (null!=performanceJA && !performanceJA.isEmpty()) {
for (Object performanceO : performanceJA) {
JSONObject performanceJO = JSONObject.parseObject(String.valueOf(performanceO));
PROCESSKPI = PROCESSKPI + " " + performanceJO.getString("fileId");
}
PROCESSKPI = PROCESSKPI.substring(1);
}
}
//相关文件
JSONObject R_relevant_flies = fileAttrJsonMap.get("R_relevant_flies");
if (null!=R_relevant_flies && !R_relevant_flies.equals("")) {
JSONArray RELEVANTFILEJA = R_relevant_flies.getJSONArray("value");
if (null!=RELEVANTFILEJA && !RELEVANTFILEJA.isEmpty()) {
for (Object RELEVANTFILEO : RELEVANTFILEJA) {
JSONObject RELEVANTFILEJO = JSONObject.parseObject(String.valueOf(RELEVANTFILEO));
RELEVANTFILE = RELEVANTFILE + " " + RELEVANTFILEJO.getString("fileId");
}
RELEVANTFILE = RELEVANTFILE.substring(1);
}
}
//支持文件
JSONObject support_files = fileAttrJsonMap.get("support_files");
if (null!=support_files && !support_files.equals("")) {
JSONArray SUPPORTFILEJA = support_files.getJSONArray("value");
if (null!=SUPPORTFILEJA && !SUPPORTFILEJA.isEmpty()) {
for (Object SUPPORTFILEO : SUPPORTFILEJA) {
JSONObject SUPPORTFILEJO = JSONObject.parseObject(String.valueOf(SUPPORTFILEO));
SUPPORTFILE = SUPPORTFILE + " " + SUPPORTFILEJO.getString("fileId");
}
SUPPORTFILE = SUPPORTFILE.substring(1);
}
}
}
//制度类型
nodeElements = new ArrayList<>();
if(PLMETHODID.equals("control.policy")) {
try {
nodeElements = CoeDesignerUtil.getShapeMessageJson4(fileIdString);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取制度类型过程中,"+"文件ID"+fileIdString+"获取节点形状属性异常");
}
}
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("regulation")) {
POLICYTYPE = "regulation";
} else if (NODETYPE.equals("I/O_L4")) {
POLICYTYPE = "I/O_L4";
}
}
}
if (fileIdList.contains(fileIdString)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FILEID", fileIdString);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("FILEVERSION", FILEVERSION);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
oldFileDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FILEID", fileIdString);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("FILEVERSION", FILEVERSION);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
newFileDataMaps.add(dataMap);
}
//更新/新增节点
nodeElements = new ArrayList<>();
if(PLMETHODID.equals("process.epc")) {
try {
nodeElements = CoeDesignerUtil.getShapeMessageJson4(fileIdString);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取节点属性过程中,"+"文件ID"+fileIdString+"获取节点形状属性异常");
}
}
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node") || NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4") || NODETYPE.equals("role")) {
//节点信息
String NODEID = String.valueOf(nodeElement.get("id"));
String NODENAME = String.valueOf(nodeElement.get("name"));
//形状属性数组
JSONArray attributesArray = JSON.parseArray(String.valueOf(nodeElement.get("attributes")));
//形状属性信息系统活动序号活动描述角色岗位
String ITSYSVAL = "";
String ACTIVITYNUMBER = "";
String ACTIVITYDESC = "";
String ROLE = "";
String ROLENAME = "";
String POST = "";
String POSTNAME = "";
if (null != attributesArray && !attributesArray.isEmpty()) {
for (Object attribute : attributesArray) {
JSONObject attributeJO = JSON.parseObject(String.valueOf(attribute));
String SHAPEATTRKEY = attributeJO.getString("key");
if (SHAPEATTRKEY.equals("information_systems")) {
ITSYSVAL = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_number")) {
ACTIVITYNUMBER = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_description")) {
ACTIVITYDESC = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("role")) {
String nodeRoleText = attributeJO.getString("value");
ROLE = nodeRoleText;
SDK.getLogAPI().consoleInfo("ROLE" + ROLE);
if (null != ROLE && !ROLE.equals("")) {
sqlParams = new Object[]{fileIdString};
List<RowMap> roleFileRowMaps = new ArrayList<>();
try {
roleFileRowMaps = DBSql.getMaps("SELECT RELATIONFILEID FROM APP_ACT_COE_PAL_SHAPE_RLAT WHERE FILEID=? AND ATTRID='role'", sqlParams);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取流程节点角色属性关联文件时" + "文件ID" + fileIdString + "节点ID" + NODEID + "异常");
}
if (null != roleFileRowMaps && !roleFileRowMaps.isEmpty()) {
for (RowMap roleFileRowMap : roleFileRowMaps) {
String RELATIONFILEID = roleFileRowMap.getString("RELATIONFILEID");
//角色文件属性
List<Map<String, Object>> roleShapes = new ArrayList<>();
try {
roleShapes = CoeDesignerUtil.getShapeMessageJson4(RELATIONFILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取关联角色文件属性" + "文件ID" + RELATIONFILEID + "异常");
}
if (null != roleShapes && !roleShapes.isEmpty()) {
for (Map<String, Object> roleShape : roleShapes) {
String roleFileNodeName = String.valueOf(roleShape.get("name"));
if (nodeRoleText.contains(roleFileNodeName)) {
//角色节点形状属性
JSONArray roleShapeJA = null;
try {
roleShapeJA = JSONArray.parseArray(String.valueOf(roleShape.get("attributes")));
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取角色节点形状属性jsonArray" + "文件ID" + RELATIONFILEID + "异常");
}
if (null != roleShapeJA && !roleShapeJA.isEmpty()) {
for (Object roleShapeO : roleShapeJA) {
JSONObject roleShapeJO = JSON.parseObject(String.valueOf(roleShapeO));
String roleShapeKey = roleShapeJO.getString("key");
if (roleShapeKey.equals("post")) {
//SDK.getLogAPI().consoleInfo("角色岗位"+roleShapeJO.getString("value"));
POST = roleShapeJO.getString("value");
}
if (roleShapeKey.equals("post_text")) {
//SDK.getLogAPI().consoleInfo("角色岗位文本"+roleShapeJO);
ROLENAME = roleShapeJO.getString("value");
POSTNAME = roleShapeJO.getString("value");
}
}
}
}
}
}
}
}
} else {
for (Object attribute1 : attributesArray) {
JSONObject attributeJO1 = JSON.parseObject(String.valueOf(attribute1));
String SHAPEATTRKEY1 = attributeJO1.getString("key");
if (SHAPEATTRKEY1.equals("post")) {
POST = attributeJO1.getString("value");
}
if (SHAPEATTRKEY1.equals("post_text")) {
POSTNAME = attributeJO1.getString("value");
}
}
}
}
}
}
if (nodeIdList.contains(NODEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POST", POST);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("PLID", fileIdString);
dataMap.put("NODEID", NODEID);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldNodeDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("NODEID", NODEID);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLID", fileIdString);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("POST", POST);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newNodeDataMaps.add(dataMap);
}
}
}
}
}
}
SDK.getLogAPI().consoleInfo("新增架构"+newFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("修改架构"+oldFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("新增文件"+newFileDataMaps.size());
SDK.getLogAPI().consoleInfo("修改文件"+oldFileDataMaps.size());
SDK.getLogAPI().consoleInfo("新增节点"+newNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("修改节点"+oldNodeDataMaps.size());
if (null != oldFrameDataMaps && !oldFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FRAME SET"
+ " FRAMENAME=:FRAMENAME, FRAMELEVEL=:FRAMELEVEL, FRAMETYPE=:FRAMETYPE, FRAMEPARENTID=:FRAMEPARENTID, FRAMEORDERINDEX=:FRAMEORDERINDEX, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE WHERE FRAMEID=:FRAMEID", oldFrameDataMaps);
}
if (null != newFrameDataMaps && !newFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FRAME(ID,FRAMEID,FRAMENAME,FRAMELEVEL,FRAMETYPE,FRAMEPARENTID,FRAMEORDERINDEX,MODIFYDATETIME) "
+ " VALUES(:uuId, :FRAMEID, :FRAMENAME, :FRAMELEVEL, :FRAMETYPE, :FRAMEPARENTID, :FRAMEORDERINDEX, :MODIFYDATETIME)", newFrameDataMaps);
}
if (null != oldFileDataMaps && !oldFileDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILE1 SET"
+ " PLNAME=:PLNAME, PLLEVEL=:PLLEVEL, PLPARENTID=:PLPARENTID, PLORDERINDEX=:PLORDERINDEX, PLCATEGORY=:PLCATEGORY, "
+ " PLMETHODID=:PLMETHODID, FILEVERSION=:FILEVERSION, CREATEPER=:CREATEPER, MODIFYPER=:MODIFYPER, "
+ " PUBDEPT=:PUBDEPT, PUBDATETIME=:PUBDATETIME, FILESTATE=:FILESTATE, VIEWCOUNT=:VIEWCOUNT, L1ID=:L1ID, "
+ " L2ID=:L2ID, L3ID=:L3ID, LEADPROCESS=:LEADPROCESS, REARPROCESS=:REARPROCESS, PROCESSKPI=:PROCESSKPI, "
+ " RELEVANTFILE=:RELEVANTFILE, SUPPORTFILE=:SUPPORTFILE, POLICYTYPE=:POLICYTYPE, "
+ " CREATEDATETIME=:CREATEDATETIME, MODIFYDATETIME=:MODIFYDATETIME, FILEUSESTATE=:FILEUSESTATE, UPDATEDATE=:UPDATEDATE "
+ " WHERE FILEID=:FILEID", oldFrameDataMaps);
}
if (null != newFileDataMaps && !newFileDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILE1"
+ " (ID, FILEID, PLNAME, PLLEVEL, PLPARENTID, PLORDERINDEX, PLCATEGORY, PLMETHODID, FILEVERSION, CREATEPER, MODIFYPER, PUBDEPT, PUBDATETIME, "
+ " FILESTATE, VIEWCOUNT, L1ID, L2ID, L3ID, LEADPROCESS, REARPROCESS, PROCESSKPI, RELEVANTFILE, SUPPORTFILE, POLICYTYPE, FILEUSESTATE, CREATEDATETIME, MODIFYDATETIME ) "
+ " VALUES(:uuId, :FILEID, :PLNAME, :PLLEVEL, :PLPARENTID, :PLORDERINDEX, :PLCATEGORY, :PLMETHODID, "
+ " :FILEVERSION, :CREATEPER, :MODIFYPER, :PUBDEPT, :PUBDATETIME, :FILESTATE, :VIEWCOUNT, :L1ID, :L2ID, "
+ " :L3ID, :LEADPROCESS, :REARPROCESS, :PROCESSKPI, :RELEVANTFILE, :SUPPORTFILE, :POLICYTYPE, :FILEUSESTATE, :CREATEDATETIME, :MODIFYDATETIME)", newFileDataMaps);
}
if (null != oldNodeDataMaps && !oldNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILENODE5 SET"
+ " NODENAME=:NODENAME, NODETYPE=:NODETYPE, PLNAME=:PLNAME, NODECATEGORY=:NODECATEGORY, ITSYSVAL=:ITSYSVAL, "
+ " ACTIVITYNUMBER=:ACTIVITYNUMBER, ACTIVITYDESC=:ACTIVITYDESC, ROLE=:ROLE, POST=:POST, ROLENAME=:ROLENAME, POSTNAME=:POSTNAME, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE "
+ " WHERE PLID=:PLID AND NODEID=:NODEID", oldNodeDataMaps);
}
if (null != newNodeDataMaps && !newNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILENODE5"
+ " (ID, NODEID, NODENAME, NODETYPE, PLID, PLNAME, NODECATEGORY, ITSYSVAL, ACTIVITYNUMBER, ACTIVITYDESC, ROLE, POST, ROLENAME, POSTNAME, MODIFYDATETIME) "
+ " VALUES(:uuId, :NODEID, :NODENAME, :NODETYPE, :PLID, :PLNAME, :NODECATEGORY, :ITSYSVAL, :ACTIVITYNUMBER, :ACTIVITYDESC, :ROLE, :POST, :ROLENAME, :POSTNAME, :MODIFYDATETIME)", newNodeDataMaps);
}
}
long endTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("结束时间"+endTime);
SDK.getLogAPI().consoleInfo("运行时间"+(endTime-startTime));
ro.ok("增量同步执行成功");
return ro;
}
}

View File

@ -0,0 +1,23 @@
package com.awspaas.user.apps.yili.reportform.controller;
import com.actionsoft.bpms.server.RequestParams;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.server.bind.annotation.Controller;
import com.actionsoft.bpms.server.bind.annotation.Mapping;
import com.awspaas.user.apps.yili.reportform.service.AttrSynService;
/**
* @author:Lizj
* @create: 2022-07-05 11:46
* @Description: 测试形状属性
*/
@Controller
public class AttrSynController {
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.AttrSynService_incrementSyn")
public String incrementSyn(UserContext uc, RequestParams params) {
return new AttrSynService().incrementSyn(uc,params);
}
}

View File

@ -0,0 +1,76 @@
package com.awspaas.user.apps.yili.reportform.controller;
import com.actionsoft.bpms.server.RequestParams;
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.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.awspaas.user.apps.yili.reportform.service.DataViewService;
import com.awspaas.user.apps.yili.reportform.service.ToPageService;
import java.sql.Connection;
/**
* @author:Lizj
* @create: 2022-07-11 15:42
* @Description: 个人/部门视图
*/
@Controller
public class DataViewController {
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.DataViewService_queryTermsPerson",
desc = "个人信息")
public String queryTermsPerson(UserContext uc, RequestParams params) {
String queryTermsPersonVal = null;
try {
queryTermsPersonVal = new DataViewService(uc).queryTermsPerson(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTermsPerson异常");
}
return queryTermsPersonVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.DataViewService_queryTermsPosition",
desc = "筛选条件:岗位")
public String queryTermsPosition(UserContext uc, RequestParams params) {
String queryTermsPositionVal = null;
try {
queryTermsPositionVal = new DataViewService(uc).queryTermsPosition(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTermsPosition异常");
}
return queryTermsPositionVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.DataViewService_personalView",
desc = "个人视图")
public String personalView(UserContext uc, RequestParams params) {
String personalViewVal = null;
try {
personalViewVal = new DataViewService(uc).personalView(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("personalView异常");
}
return personalViewVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.DataViewService_queryTermsDept",
desc = "筛选条件:当前用户部门、部门")
public String queryTermsDept(UserContext uc, RequestParams params) {
String queryTermsDeptVal = null;
try {
queryTermsDeptVal = new DataViewService(uc).queryTermsDept(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTermsDept异常");
}
return queryTermsDeptVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.DataViewService_deptView",
desc = "部门视图")
public String deptView(UserContext uc, RequestParams params) {
String deptViewVal = deptViewVal = new DataViewService(uc).deptView(uc, params);
try {
} catch (Exception e) {
SDK.getLogAPI().consoleErr("deptView异常");
}
return deptViewVal;
}
}

View File

@ -0,0 +1,119 @@
package com.awspaas.user.apps.yili.reportform.controller;
import com.actionsoft.bpms.server.RequestParams;
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.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.awspaas.user.apps.yili.reportform.service.FileManagementService;
import java.sql.Connection;
/**
* @author:Lizj
* @create: 2022-06-27 15:34
* @Description: 文件管理看板
*/
@Controller
public class FileManagementController {
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_fileTotal",
desc = "流程制度类文件总数")
public String fileTotal(UserContext uc, RequestParams params) {
String fileTotalVal = null;
try {
fileTotalVal = new FileManagementService(uc).fileTotal(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("fileTotal异常");
}
return fileTotalVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_queryTerms5",
desc = "制度管理看板筛选条件 文件类型、发布单位、所属领域")
public String queryTerms5(UserContext uc, RequestParams params) {
String queryTerms5Val = null;
try {
queryTerms5Val = new FileManagementService(uc).queryTerms5(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTerms5异常");
}
return queryTerms5Val;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_fileStatistics",
desc = "制度管理看板")
public String fileStatistics(UserContext uc, RequestParams params) {
return new FileManagementService(uc).fileStatistics(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_deptFileCount",
desc = "部门文件数量")
public String deptFileCount(UserContext uc, RequestParams params) {
String deptFileCountVal = null;
try {
deptFileCountVal = new FileManagementService(uc).deptFileCount(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("deptFileCount异常"+e.toString());
}
return deptFileCountVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_deptFileYearRenewRate",
desc = "部门文件年度更新率")
public String deptFileYearRenewRate(UserContext uc, RequestParams params) {
return new FileManagementService(uc).deptFileYearRenewRate(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_deptFileYearRenewSituation",
desc = "部门文件年度更新情况")
public String deptFileYearRenewSituation(UserContext uc, RequestParams params) {
String deptFileYearRenewSituationVal = null;
try {
deptFileYearRenewSituationVal = new FileManagementService(uc).deptFileYearRenewSituation(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("deptFileYearRenewSituation异常"+e.toString());
}
return deptFileYearRenewSituationVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_queryTerms6",
desc = "文件发布时间分布筛选条件:发布单位、所属领域")
public String queryTerms6(UserContext uc, RequestParams params) {
String queryTerms6Val = null;
try {
queryTerms6Val = new FileManagementService(uc).queryTerms6(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTerms6异常");
}
return queryTerms6Val;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_filePubTimeDistribution",
desc = "文件发布时间分布")
public String filePubTimeDistribution(UserContext uc, RequestParams params) {
String filePubTimeDistributionVal = null;
try {
filePubTimeDistributionVal = new FileManagementService(uc).filePubTimeDistribution(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("filePubTimeDistribution异常");
}
return filePubTimeDistributionVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_queryTerms7",
desc = "引用情况分析筛选条件:发布单位、所属领域、文件类型")
public String queryTerms7(UserContext uc, RequestParams params) {
String queryTerms7Val = null;
try {
queryTerms7Val = new FileManagementService(uc).queryTerms7(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTerms7异常");
}
return queryTerms7Val;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.FileManagementService_citationAnalysis",
desc = "引用情况分析")
public String citationAnalysis(UserContext uc, RequestParams params) {
String citationAnalysisVal = null;
try {
citationAnalysisVal = new FileManagementService(uc).citationAnalysis(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("citationAnalysis异常");
}
return citationAnalysisVal;
}
}

View File

@ -0,0 +1,220 @@
package com.awspaas.user.apps.yili.reportform.controller;
import com.actionsoft.bpms.server.RequestParams;
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.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.awspaas.user.apps.yili.reportform.service.ProcessPubService;
import java.sql.Connection;
/**
* @author:Lizj
* @create: 2022-06-14 10:33
* @Description: 流程发布平台
*/
@Controller
public class ProcessPubController {
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_processTotalCount",
desc = "返回总 流程、制度、覆盖率")
public String processTotalCount(UserContext uc, RequestParams params) {
String processTotalCountVal = null;
try {
processTotalCountVal = new ProcessPubService(uc).processTotalCount(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("processTotalCount异常");
}
return processTotalCountVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_queryTerms1",
desc = "返回表格部分下拉框数据")
public String queryTerms1(UserContext uc, RequestParams params) {
String queryTerms1Val = null;
try {
queryTerms1Val = new ProcessPubService(uc).queryTerms1(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTerms1异常");
}
return queryTerms1Val;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_processList",
desc = "返回表格部分数据")
public String processList(UserContext uc, RequestParams params) {
String processListVal = null;
try {
processListVal = new ProcessPubService(uc).processList(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("processList异常");
}
return processListVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_queryTerms2",
desc = "流程连接度分析筛选条件:所属单位、所属领域")
public String queryTerms2(UserContext uc, RequestParams params) {
String queryTerms2Val = null;
try {
queryTerms2Val = new ProcessPubService(uc).queryTerms2(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTerms2异常");
}
return queryTerms2Val;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_processCONND",
desc = "流程连接度分析")
public String processCONND(UserContext uc, RequestParams params) {
String processCONNDVal = null;
try {
processCONNDVal = new ProcessPubService(uc).processCONND(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("processCONND异常");
}
return processCONNDVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_processCONNDDetail",
desc = "事业部、职能部门流程连接度有前后置和无前后置占比")
public String processCONNDDetail(UserContext uc, RequestParams params) {
String processCONNDDetailVal = null;
try {
processCONNDDetailVal = new ProcessPubService(uc).processCONNDDetail(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("processCONNDDetail异常");
}
return processCONNDDetailVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_processComment",
desc = "流程评论")
public String processComment(UserContext uc, RequestParams params, Connection open) {
String processCommentVal = null;
try {
processCommentVal = new ProcessPubService(uc).processComment(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("processComment异常");
}
return processCommentVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_queryTerms3",
desc = "流程成熟度筛选条件 所属领域、评估周期")
public String queryTerms3(UserContext uc, RequestParams params) {
String queryTerms3Val = null;
try {
queryTerms3Val = new ProcessPubService(uc).queryTerms3(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTerms3异常");
}
return queryTerms3Val;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_processMaturity",
desc = "流程成熟度雷达图和评分明细")
public String processMaturity(UserContext uc, RequestParams params) {
String processMaturityVal = null;
try {
processMaturityVal = new ProcessPubService(uc).processMaturity(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("processMaturity异常");
}
return processMaturityVal;
}
/* @Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_maturityReachRate",
desc = "成熟度目标达成率")
public String maturityReachRate(UserContext uc, RequestParams params, Connection open) {
String maturityReachRateVal = null;
try {
maturityReachRateVal = new ProcessPubService(uc).maturityReachRate(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("maturityReachRate异常");
}
return maturityReachRateVal;
}*/
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_queryTerms4",
desc = "领域成熟度情况查询条件:评估维度")
public String queryTerms4(UserContext uc, RequestParams params) {
String queryTerms4Val = null;
try {
queryTerms4Val = new ProcessPubService(uc).queryTerms4(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("queryTerms4异常");
}
return queryTerms4Val;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_maturityField",
desc = "领域成熟度情况")
public String maturityField(UserContext uc, RequestParams params) {
String maturityFieldVal = null;
try {
maturityFieldVal = new ProcessPubService(uc).maturityField(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("maturityField异常");
}
return maturityFieldVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_sysDistribution",
desc = "流程系统分布图")
public String sysDistribution(UserContext uc, RequestParams params) {
String sysDistributionVal = null;
try {
sysDistributionVal = new ProcessPubService(uc).sysDistribution(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("sysDistribution异常");
}
return sysDistributionVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_nodeAnalysisTerms",
desc = "流程节点分析筛选条件:所属领域、发布单位")
public String nodeAnalysisTerms(UserContext uc, RequestParams params) {
String sysDistributionVal = null;
try {
sysDistributionVal = new ProcessPubService(uc).nodeAnalysisTerms(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("nodeAnalysisTerms异常");
}
return sysDistributionVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_nodeAnalysis",
desc = "流程节点分析")
public String nodeAnalysis(UserContext uc, RequestParams params) {
String sysDistributionVal = null;
try {
sysDistributionVal = new ProcessPubService(uc).nodeAnalysis(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("nodeAnalysis异常");
}
return sysDistributionVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_deptNodeAttrTerms",
desc = "事业部/职能部门节点信息筛选条件:所属领域")
public String deptNodeAttrTerms(UserContext uc, RequestParams params) {
String deptNodeAttrTermsVal = null;
try {
deptNodeAttrTermsVal = new ProcessPubService(uc).deptNodeAttrTerms(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("deptNodeAttrTerms异常");
}
return deptNodeAttrTermsVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_deptNodeAttrApproval",
desc = "事业部/职能部门审批节点信息")
public String deptNodeAttrApproval(UserContext uc, RequestParams params) {
String deptNodeAttrApprovalVal = null;
try {
deptNodeAttrApprovalVal = new ProcessPubService(uc).deptNodeAttrApproval(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("deptNodeAttrApproval异常");
}
return deptNodeAttrApprovalVal;
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ProcessPubService_deptNodeAttrOperation",
desc = "事业部/职能部门操作节点信息")
public String deptNodeAttrOperation(UserContext uc, RequestParams params) {
String deptNodeAttrOperationVal = null;
try {
deptNodeAttrOperationVal = new ProcessPubService(uc).deptNodeAttrOperation(uc,params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("deptNodeAttrOperation异常");
}
return deptNodeAttrOperationVal;
}
}

View File

@ -0,0 +1,70 @@
package com.awspaas.user.apps.yili.reportform.controller;
import com.actionsoft.bpms.server.RequestParams;
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.awspaas.user.apps.yili.reportform.service.ToPageService;
/**
* @author:Lizj
* @create: 2022-07-08 14:23
* @Description: 跳转页面
*/
@Controller
public class ToPageController {
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ToPageService_toIndex",
desc = "跳转首页(流程管理看板)")
public String toIndex(UserContext uc, RequestParams params) {
return new ToPageService(uc).toIndex(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ToPageService_toFileboard",
desc = "跳转文件管理看板")
public String toFileboard(UserContext uc, RequestParams params) {
return new ToPageService(uc).toFileboard(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ToPageService_toTerritory",
desc = "领域流程绩效看板")
public String toTerritory(UserContext uc, RequestParams params) {
return new ToPageService(uc).toTerritory(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.reportform.service.ToPageService_toDomainprocess",
desc = "流程运行看板")
public String toDomainprocess(UserContext uc, RequestParams params) {
return new ToPageService(uc).toDomainprocess(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.integration.service.ToPageService_toPersonView",
desc = "跳转个人视图")
public String toPersonView(UserContext uc, RequestParams params) {
return new ToPageService(uc).toPersonView(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.integration.service.ToPageService_toDeptView",
desc = "跳转部门视图")
public String toDeptView(UserContext uc, RequestParams params) {
return new ToPageService(uc).toDeptView(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.integration.service.ToPageService_toFrameView",
desc = "跳转架构视图")
public String toFrameView(UserContext uc, RequestParams params) {
return new ToPageService(uc).toFrameView(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.integration.service.ToPageService_queryTermsFileType",
desc = "架构视图筛选条件:文件类型")
public String queryTermsFileType(UserContext uc, RequestParams params) {
return new ToPageService(uc).queryTermsFileType(uc, params);
}
@Mapping(value = "com.awspaas.user.apps.yili.integration.service.ToPageService_frameView",
desc = "架构视图")
public String frameView(UserContext uc, RequestParams params) {
String frameViewVal = null;
try {
frameViewVal = new ToPageService(uc).frameView(uc, params);
} catch (Exception e) {
SDK.getLogAPI().consoleErr("frameView异常");
}
return frameViewVal;
}
}

View File

@ -0,0 +1,74 @@
package com.awspaas.user.apps.yili.reportform.job;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.coe.pal.pal.repository.designer.manage.CoeDesignerAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.designer.model.BaseModel;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONObject;
/**
* @author:lihongyu
* @create: 2022-11-03 11:32
* @Description: 同步制度文件的类型到 app_act_coe_pal_repository EXT3
*/
@DisallowConcurrentExecution
public class SyncControlPolicyTypeToPalRepository implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
DBSql.update("UPDATE APP_ACT_COE_PAL_REPOSITORY SET EXT3 = '' WHERE PLMETHODID='control.policy'");
int regulationNum =0;
int L4Num =0;
SDK.getLogAPI().consoleInfo("同步制度文件的类型");
long startTime = System.currentTimeMillis();
Date nowDateJ = new Date(System.currentTimeMillis());
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf2.format(nowDateJ);
SDK.getLogAPI().consoleInfo("开始时间" + format);
String sql = "SELECT ID,PLMETHODID,EXT3 FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLMETHODID='control.policy'";
List<RowMap> fileListMap = DBSql.getMaps(sql);
for (RowMap fileRowMap : fileListMap) {
try {
String plId = fileRowMap.getString("ID");
BaseModel defineModel = CoeDesignerAPIManager.getInstance().getDefinition(plId, 0);
if (defineModel != null) {
String define = defineModel.getDefinition();
JSONObject definition = JSONObject.parseObject(define);
JSONObject elements = definition.getJSONObject("elements");
for (String key : elements.keySet()) {
JSONObject shape1 = elements.getJSONObject(key);
String name = shape1.getString("name");
if ("regulation".equals(name)&&!"regulation".equals(fileRowMap.getString("EXT3"))) {
regulationNum+=DBSql.update("UPDATE APP_ACT_COE_PAL_REPOSITORY SET EXT3 = 'regulation' WHERE ID = '" + plId
+ "'");
} else if ("I/O_L4".equals(name)&&!"I/O_L4".equals(fileRowMap.getString("EXT3"))) {
L4Num+=DBSql.update(
"UPDATE APP_ACT_COE_PAL_REPOSITORY SET EXT3 = 'I/O_L4' WHERE ID = '" + plId + "'");
}
}
}
} catch (Exception e) {
// TODO: handle exception
} finally {
}
}
long endTime = System.currentTimeMillis();
long time = endTime - startTime;
System.err.println("同步制度文件类型完成,同步制度文件:"+regulationNum+"个,同步操作指导:"+L4Num+""+"用时" + time /1000/60/60+"");
}
}

View File

@ -0,0 +1,676 @@
package com.awspaas.user.apps.yili.reportform.job;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.CoeDesignerUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.bpms.api.Utils;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.awspaas.user.apps.yili.reportform.util.CheckUtil;
import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil;
import com.awspaas.user.apps.yili.reportform.util.RepositoryAttribute;
/**
* @author:Lizj
* @create: 2022-07-05 15:58
* @Description: 定时同步数据
*/
@DisallowConcurrentExecution
public class SyncData implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SDK.getLogAPI().consoleInfo("全量定时同步文件信息开始执行");
long startTime = System.currentTimeMillis();
Date nowDateJ = new Date(System.currentTimeMillis());
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf2.format(nowDateJ);
SDK.getLogAPI().consoleInfo("开始时间" + format);
String wsId = SDK.getJobAPI().getJobParameter(jobExecutionContext);
//总文件集合
String process = "process";
String org = "org";
String data = "data";
String itsystem = "itsystem";
String control = "control";
List<PALRepositoryModel> palProcessList = new ArrayList<>();
Set<String> palProcessIds = new HashSet<>();
List<PALRepositoryModel> palOrgList = new ArrayList<>();
Set<String> palOrgIds = new HashSet<>();
List<PALRepositoryModel> palDataList = new ArrayList<>();
Set<String> palDataIds = new HashSet<>();
List<PALRepositoryModel> palItsystemList = new ArrayList<>();
Set<String> palItsystemIds = new HashSet<>();
List<PALRepositoryModel> palControlList = new ArrayList<>();
Set<String> palControlIds = new HashSet<>();
PALRepositoryCache.getAllChildrenModelsByPid(wsId, process, palProcessList, palProcessIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, org, palOrgList, palOrgIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, data, palDataList, palDataIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, itsystem, palItsystemList, palItsystemIds);
PALRepositoryCache.getAllChildrenModelsByPid(wsId, control, palControlList, palControlIds);
//合并为文件总量list
List<PALRepositoryModel> palTotalList = new ArrayList<>();
palTotalList.addAll(palProcessList);
palTotalList.addAll(palOrgList);
palTotalList.addAll(palDataList);
palTotalList.addAll(palItsystemList);
palTotalList.addAll(palControlList);
SDK.getLogAPI().consoleInfo("process下文件数量" + palProcessList.size());
SDK.getLogAPI().consoleInfo("org下文件数量" + palOrgList.size());
SDK.getLogAPI().consoleInfo("data下文件数量" + palDataList.size());
SDK.getLogAPI().consoleInfo("itsystem下文件数量" + palItsystemList.size());
SDK.getLogAPI().consoleInfo("control下文件数量" + palControlList.size());
SDK.getLogAPI().consoleInfo("文件总数量:" + palTotalList.size());
//过滤出角色文件
/* List<PALRepositoryModel> palRoleFileList = palOrgList.stream().filter(x -> x.getMethodId().equals("org.role")).collect(Collectors.toList());
SDK.getLogAPI().consoleInfo("角色文件数量:" + palRoleFileList.size());*/
//初始化架构文件节点 old/new/del/fromDataID/dis list
ArrayList<Map<String, ?>> oldFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delFrameDataMaps = new ArrayList<>();
ArrayList<String> fromFrameDataIDMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delFileDataMaps = new ArrayList<>();
ArrayList<String> fromFileDataIDMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> delNodeDataMaps = new ArrayList<>();
ArrayList<String> fromNodeDataIDMaps = new ArrayList<>();
HashMap<String, Object> dataMap = new HashMap<>();
Object[] sqlParams = new Object[]{};
//获取底表数据
List<String> frameIdList = DBSql.getList("SELECT FRAMEID FROM BO_EU_PAL_FRAME", String.class);
SDK.getLogAPI().consoleInfo("架构底表长度:" + frameIdList.size());
List<String> fileIdList = DBSql.getList("SELECT FILEID FROM BO_EU_PAL_FILE1", String.class);
SDK.getLogAPI().consoleInfo("文件底表长度:" + fileIdList.size());
List<String> nodeIdList = DBSql.getList("SELECT NODEID FROM BO_EU_PAL_FILENODE5", String.class);
SDK.getLogAPI().consoleInfo("节点底表长度:" + nodeIdList.size());
//系统字段
String uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
//遍历总文件集合
for (PALRepositoryModel fileModel : palTotalList) {
List<Map<String, Object>> nodeElements = new ArrayList<>();
String PLMETHODID = fileModel.getMethodId();
String FILEID = fileModel.getId();
String PLNAME = fileModel.getName();
String plRid = fileModel.getPlRid();
String sql = "SELECT ID FROM (SELECT * FROM APP_ACT_COE_PAL_REPOSITORY WHERE PLRID = '"+plRid+"' AND ISPUBLISH ='1' ORDER BY PLVER DESC ) WHERE ROWNUM<2";
String palId = DBSql.getString(sql);
if(UtilString.isNotEmpty(palId)) {
if(!FILEID.equals(palId)) {
SDK.getLogAPI().consoleInfo("同步数据发现旧版本文件名称:"+PLNAME+"——文件id"+FILEID);
String dsql = "DELETE FROM BO_EU_PAL_FILE1 WHERE FILEID = '"+FILEID+"'";
DBSql.update(dsql);
continue;
}
}
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
if (PLMETHODID.equals("process.framework")) {
//更新/新增架构
Integer FRAMELEVEL = fileModel.getLevel();
String FRAMETYPE = null;
String FRAMEPARENTID = fileModel.getParentId();
Integer FRAMEORDERINDEX = fileModel.getOrderIndex();
Map<String, JSONObject> frameAttrs = new HashMap<>();
try {
frameAttrs = new RepositoryAttribute().queryRepositoryAttributeById(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("更新架构时文件ID" + FILEID + "数据异常");
}
if (null != frameAttrs && !frameAttrs.isEmpty()) {
JSONObject Frame_type = frameAttrs.get("Frame_type");
FRAMETYPE = Frame_type.getString("text");
}
fromFrameDataIDMaps.add(FILEID);
if (frameIdList.contains(FILEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FRAMEID", FILEID);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("FRAMENAME", PLNAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldFrameDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FRAMEID", FILEID);
dataMap.put("FRAMENAME", PLNAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newFrameDataMaps.add(dataMap);
}
} else {
//更新/新增文件
Integer PLLEVEL = fileModel.getLevel();
String PLPARENTID = fileModel.getParentId();
Integer PLORDERINDEX = fileModel.getOrderIndex();
String PLCATEGORY = fileModel.getMethodCategory();
String CREATEPER = fileModel.getCreateUser();
String MODIFYPER = fileModel.getModifyUser();
Timestamp CREATEDATETIME = fileModel.getCreateDate();
double FILEVERSION = fileModel.getVersion();
String PUBDEPT = "";
String PUBDATETIME = "";
String FILESTATE = "";
String FILEUSESTATE = "";
Long VIEWCOUNT = fileModel.getViewCount();
String L1ID = "";
String L2ID = "";
String L3ID = "";
String LEADPROCESS = "";
String REARPROCESS = "";
String PROCESSKPI = "";
String RELEVANTFILE = "";
String SUPPORTFILE = "";
String POLICYTYPE = "";
List<RowMap> parentMaps = new ArrayList<>();
if (null != PLPARENTID && !PLPARENTID.equals("")) {
parentMaps = GetNodesUtil.getParentFrame(PLPARENTID, parentMaps);
}
if (null != parentMaps && !parentMaps.isEmpty()) {
for (RowMap parentMap : parentMaps) {
Integer parentLevel = parentMap.getInt("FRAMELEVEL");
String parentID = parentMap.getString("FRAMEID");
if (parentLevel.equals(3)) {
L3ID = parentID;
}
if (parentLevel.equals(2)) {
L2ID = parentID;
}
if (parentLevel.equals(1)) {
L1ID = parentID;
}
}
}
//文件状态
FILESTATE = "0";
if (fileModel.isPublish() == true) {
FILESTATE = "1";
}
if (fileModel.isApproval() == true) {
FILESTATE = "2";
}
if (fileModel.isStop() == true) {
FILESTATE = "3";
}
//文件生效状态
if (fileModel.isUse() == true) {
FILEUSESTATE = "1";
} else {
FILEUSESTATE = "0";
}
Map<String, JSONObject> fileAttrJsonMap = new HashMap<>();
try {
fileAttrJsonMap = new RepositoryAttribute().queryRepositoryAttributeById(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("更新文件时文件ID" + FILEID + "数据异常");
}
if (null != fileAttrJsonMap && !fileAttrJsonMap.isEmpty()) {
//发布部门
JSONObject Issuing_department = fileAttrJsonMap.get("Issuing_department");
if (null != Issuing_department && !Issuing_department.equals("")) {
JSONArray PUBDEPTJA = Issuing_department.getJSONArray("value");
if (null != PUBDEPTJA && !PUBDEPTJA.isEmpty()) {
for (Object PUBDEPTO : PUBDEPTJA) {
JSONObject PUBDEPTJO = JSONObject.parseObject(String.valueOf(PUBDEPTO));
PUBDEPT = PUBDEPT + " " + PUBDEPTJO.getString("id");
}
PUBDEPT = PUBDEPT.substring(1);
}
}
//发布时间
PUBDATETIME = "";
JSONObject effective_date = fileAttrJsonMap.get("Drafted_and_revised_date");
if (null != effective_date && !effective_date.equals("")) {
String pubDateString = effective_date.getString("text");
if (null != pubDateString && !pubDateString.equals("")) {
if (CheckUtil.isDate(pubDateString)) {
Date parse = null;
try {
parse = sdf1.parse(pubDateString);
} catch (ParseException e) {
e.printStackTrace();
}
PUBDATETIME = sdf1.format(parse);
}
}
}
//前置流程
if (PLMETHODID.equals("process.epc")) {
JSONObject lead_process = fileAttrJsonMap.get("lead_process");
if (null != lead_process && !lead_process.equals("")) {
JSONArray lpValue = lead_process.getJSONArray("value");
if (null != lpValue && !lpValue.isEmpty()) {
LEADPROCESS = "1";
} else {
LEADPROCESS = "0";
}
} else {
LEADPROCESS = "0";
}
//后置流程
JSONObject rear_process = fileAttrJsonMap.get("rear_process");
if (null != rear_process && !rear_process.equals("")) {
JSONArray rpValue = rear_process.getJSONArray("value");
if (null != rpValue && !rpValue.isEmpty()) {
REARPROCESS = "1";
} else {
REARPROCESS = "0";
}
} else {
REARPROCESS = "0";
}
}
//流程绩效
JSONObject performance = fileAttrJsonMap.get("Process_performance_metrics");
if (null != performance && !performance.equals("")) {
JSONArray performanceJA = performance.getJSONArray("value");
if (null != performanceJA && !performanceJA.isEmpty()) {
for (Object performanceO : performanceJA) {
JSONObject performanceJO = JSONObject.parseObject(String.valueOf(performanceO));
PROCESSKPI = PROCESSKPI + " " + performanceJO.getString("fileId");
}
PROCESSKPI = PROCESSKPI.substring(1);
}
}
//相关文件
JSONObject R_relevant_flies = fileAttrJsonMap.get("R_relevant_flies");
if (null != R_relevant_flies && !R_relevant_flies.equals("")) {
JSONArray RELEVANTFILEJA = R_relevant_flies.getJSONArray("value");
if (null != RELEVANTFILEJA && !RELEVANTFILEJA.isEmpty()) {
for (Object RELEVANTFILEO : RELEVANTFILEJA) {
JSONObject RELEVANTFILEJO = JSONObject.parseObject(String.valueOf(RELEVANTFILEO));
RELEVANTFILE = RELEVANTFILE + " " + RELEVANTFILEJO.getString("fileId");
}
RELEVANTFILE = RELEVANTFILE.substring(1);
}
}
//支持文件
JSONObject support_files = fileAttrJsonMap.get("support_files");
if (null != support_files && !support_files.equals("")) {
JSONArray SUPPORTFILEJA = support_files.getJSONArray("value");
if (null != SUPPORTFILEJA && !SUPPORTFILEJA.isEmpty()) {
for (Object SUPPORTFILEO : SUPPORTFILEJA) {
JSONObject SUPPORTFILEJO = JSONObject.parseObject(String.valueOf(SUPPORTFILEO));
SUPPORTFILE = SUPPORTFILE + " " + SUPPORTFILEJO.getString("fileId");
}
SUPPORTFILE = SUPPORTFILE.substring(1);
}
}
}
//制度类型
nodeElements = new ArrayList<>();
if (PLMETHODID.equals("control.policy")) {
try {
nodeElements = CoeDesignerUtil.getShapeMessageJson4(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取制度类型过程中," + "文件ID" + FILEID + "获取节点形状属性异常");
}
}
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("regulation")) {
POLICYTYPE = "regulation";
} else if (NODETYPE.equals("I/O_L4")) {
POLICYTYPE = "I/O_L4";
}
}
}
fromFileDataIDMaps.add(FILEID);
if (fileIdList.contains(FILEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FILEID", FILEID);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("FILEVERSION", FILEVERSION);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
oldFileDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FILEID", FILEID);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("FILEVERSION", FILEVERSION);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
newFileDataMaps.add(dataMap);
}
//更新/新增节点
nodeElements = new ArrayList<>();
if(PLMETHODID.equals("process.epc")) {
try {
nodeElements = CoeDesignerUtil.getShapeMessageJson4(FILEID);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取节点属性过程中,"+"文件ID"+FILEID+"获取节点形状属性异常");
}
}
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node") || NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) {
//节点信息
String NODEID = String.valueOf(nodeElement.get("id"));
String NODENAME = String.valueOf(nodeElement.get("name"));
//形状属性数组
JSONArray attributesArray = JSON.parseArray(String.valueOf(nodeElement.get("attributes")));
//形状属性信息系统活动序号活动描述角色岗位
String ITSYSVAL = "";
String ACTIVITYNUMBER = "";
String ACTIVITYDESC = "";
String ROLE = "";
String ROLENAME = "";
String POST = "";
String POSTNAME = "";
if (null != attributesArray && !attributesArray.isEmpty()) {
for (Object attribute : attributesArray) {
JSONObject attributeJO = JSON.parseObject(String.valueOf(attribute));
String SHAPEATTRKEY = attributeJO.getString("key");
if (SHAPEATTRKEY.equals("information_systems")) {
ITSYSVAL = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_number")) {
ACTIVITYNUMBER = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_description")) {
ACTIVITYDESC = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("role")) {
String nodeRoleText = attributeJO.getString("value");
ROLE = nodeRoleText;
if (null!=ROLE && !ROLE.equals("")) {
sqlParams = new Object[]{FILEID};
List<RowMap> roleFileRowMaps = new ArrayList<>();
try {
roleFileRowMaps = DBSql.getMaps("SELECT RELATIONFILEID FROM APP_ACT_COE_PAL_SHAPE_RLAT WHERE FILEID=? AND ATTRID='role'", sqlParams);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取流程节点角色属性关联文件时"+"文件ID"+FILEID+"节点ID"+NODEID+"异常");
}
if (null!=roleFileRowMaps && !roleFileRowMaps.isEmpty()) {
for (RowMap roleFileRowMap : roleFileRowMaps) {
String RELATIONFILEID = roleFileRowMap.getString("RELATIONFILEID");
//角色文件属性
List<Map<String, Object>> roleShapes = new ArrayList<>();
try {
roleShapes = CoeDesignerUtil.getShapeMessageJson4(RELATIONFILEID);
} catch (Exception e) {
//SDK.getLogAPI().consoleInfo("获取关联角色文件属性"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapes && !roleShapes.isEmpty()) {
for (Map<String, Object> roleShape : roleShapes) {
String roleFileNodeName = String.valueOf(roleShape.get("name"));
if (nodeRoleText.contains(roleFileNodeName)) {
//角色节点形状属性
JSONArray roleShapeJA = null;
try {
roleShapeJA = JSONArray.parseArray(String.valueOf(roleShape.get("attributes")));
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("获取角色节点形状属性jsonArray"+"文件ID"+RELATIONFILEID+"异常");
}
if (null != roleShapeJA && !roleShapeJA.isEmpty()) {
for (Object roleShapeO : roleShapeJA) {
JSONObject roleShapeJO = JSON.parseObject(String.valueOf(roleShapeO));
String roleShapeKey = roleShapeJO.getString("key");
if (roleShapeKey.equals("post")) {
//SDK.getLogAPI().consoleInfo("角色岗位"+roleShapeJO.getString("value"));
POST = roleShapeJO.getString("value");
}
if (roleShapeKey.equals("post_text")) {
//SDK.getLogAPI().consoleInfo("角色岗位文本"+roleShapeJO);
ROLENAME = roleShapeJO.getString("value");
POSTNAME = roleShapeJO.getString("value");
}
}
}
}
}
}
}
}
} else {
for (Object attribute1 : attributesArray) {
JSONObject attributeJO1 = JSON.parseObject(String.valueOf(attribute1));
String SHAPEATTRKEY1 = attributeJO1.getString("key");
if (SHAPEATTRKEY1.equals("post")) {
POST = attributeJO1.getString("value");
}
if (SHAPEATTRKEY1.equals("post_text")) {
POSTNAME = attributeJO1.getString("value");
}
}
}
}
}
}
fromNodeDataIDMaps.add(NODEID);
if (nodeIdList.contains(NODEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POST", POST);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("PLID", FILEID);
dataMap.put("NODEID", NODEID);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldNodeDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("NODEID", NODEID);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLID", FILEID);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("POST", POST);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newNodeDataMaps.add(dataMap);
}
}
}
}
}
}
//执行批量新增修改删除
if (null != frameIdList && !frameIdList.isEmpty()) {
for (String frameIdOfList : frameIdList) {
if (!fromFrameDataIDMaps.contains(frameIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("FRAMEID", frameIdOfList);
delFrameDataMaps.add(dataMap);
}
}
}
if (null != oldFrameDataMaps && !oldFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FRAME SET"
+ " FRAMENAME=:FRAMENAME, FRAMELEVEL=:FRAMELEVEL, FRAMETYPE=:FRAMETYPE, FRAMEPARENTID=:FRAMEPARENTID, FRAMEORDERINDEX=:FRAMEORDERINDEX, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE WHERE FRAMEID=:FRAMEID", oldFrameDataMaps);
}
if (null != newFrameDataMaps && !newFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FRAME(ID,FRAMEID,FRAMENAME,FRAMELEVEL,FRAMETYPE,FRAMEPARENTID,FRAMEORDERINDEX,MODIFYDATETIME) "
+ " VALUES(:uuId, :FRAMEID, :FRAMENAME, :FRAMELEVEL, :FRAMETYPE, :FRAMEPARENTID, :FRAMEORDERINDEX, :MODIFYDATETIME)", newFrameDataMaps);
}
if (null != delFrameDataMaps && !delFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FRAME WHERE FRAMEID=:FRAMEID", delFrameDataMaps);
}
SDK.getLogAPI().consoleInfo("新增架构" + newFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("修改架构" + oldFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("删除架构" + delFrameDataMaps.size());
if (null != fileIdList && !fileIdList.isEmpty()) {
for (String fileIdOfList : fileIdList) {
if (!fromFileDataIDMaps.contains(fileIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("FILEID", fileIdOfList);
delFileDataMaps.add(dataMap);
}
}
}
if (null != oldFileDataMaps && !oldFileDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILE1 SET"
+ " PLNAME=:PLNAME, PLLEVEL=:PLLEVEL, PLPARENTID=:PLPARENTID, PLORDERINDEX=:PLORDERINDEX, PLCATEGORY=:PLCATEGORY, "
+ " PLMETHODID=:PLMETHODID, FILEVERSION=:FILEVERSION, CREATEPER=:CREATEPER, MODIFYPER=:MODIFYPER, "
+ " PUBDEPT=:PUBDEPT, PUBDATETIME=:PUBDATETIME, FILESTATE=:FILESTATE, VIEWCOUNT=:VIEWCOUNT, L1ID=:L1ID, "
+ " L2ID=:L2ID, L3ID=:L3ID, LEADPROCESS=:LEADPROCESS, REARPROCESS=:REARPROCESS, PROCESSKPI=:PROCESSKPI, "
+ " RELEVANTFILE=:RELEVANTFILE, SUPPORTFILE=:SUPPORTFILE, POLICYTYPE=:POLICYTYPE, "
+ " CREATEDATETIME=:CREATEDATETIME, MODIFYDATETIME=:MODIFYDATETIME, FILEUSESTATE=:FILEUSESTATE, UPDATEDATE=:UPDATEDATE "
+ " WHERE FILEID=:FILEID", oldFileDataMaps);
}
if (null != newFileDataMaps && !newFileDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILE1"
+ " (ID, FILEID, PLNAME, PLLEVEL, PLPARENTID, PLORDERINDEX, PLCATEGORY, PLMETHODID, FILEVERSION, CREATEPER, MODIFYPER, PUBDEPT, PUBDATETIME, "
+ " FILESTATE, VIEWCOUNT, L1ID, L2ID, L3ID, LEADPROCESS, REARPROCESS, PROCESSKPI, RELEVANTFILE, SUPPORTFILE, POLICYTYPE, FILEUSESTATE, CREATEDATETIME, MODIFYDATETIME ) "
+ " VALUES(:uuId, :FILEID, :PLNAME, :PLLEVEL, :PLPARENTID, :PLORDERINDEX, :PLCATEGORY, :PLMETHODID, "
+ " :FILEVERSION, :CREATEPER, :MODIFYPER, :PUBDEPT, :PUBDATETIME, :FILESTATE, :VIEWCOUNT, :L1ID, :L2ID, "
+ " :L3ID, :LEADPROCESS, :REARPROCESS, :PROCESSKPI, :RELEVANTFILE, :SUPPORTFILE, :POLICYTYPE, :FILEUSESTATE, :CREATEDATETIME, :MODIFYDATETIME)", newFileDataMaps);
}
if (null != delFileDataMaps && !delFileDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FILE1 WHERE FILEID=:FILEID", delFileDataMaps);
}
SDK.getLogAPI().consoleInfo("新增文件" + newFileDataMaps.size());
SDK.getLogAPI().consoleInfo("修改文件" + oldFileDataMaps.size());
SDK.getLogAPI().consoleInfo("删除文件" + delFileDataMaps.size());
if (null != nodeIdList && !nodeIdList.isEmpty()) {
for (String nodeIdOfList : nodeIdList) {
if (!fromNodeDataIDMaps.contains(nodeIdOfList)) {
dataMap = new HashMap<>();
dataMap.put("NODEID", nodeIdOfList);
delNodeDataMaps.add(dataMap);
}
}
}
if (null != oldNodeDataMaps && !oldNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILENODE5 SET"
+ " NODENAME=:NODENAME, NODETYPE=:NODETYPE, PLNAME=:PLNAME, NODECATEGORY=:NODECATEGORY, ITSYSVAL=:ITSYSVAL, "
+ " ACTIVITYNUMBER=:ACTIVITYNUMBER, ACTIVITYDESC=:ACTIVITYDESC, ROLE=:ROLE, POST=:POST, ROLENAME=:ROLENAME, POSTNAME=:POSTNAME, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE "
+ " WHERE PLID=:PLID AND NODEID=:NODEID", oldNodeDataMaps);
}
if (null != newNodeDataMaps && !newNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILENODE5"
+ " (ID, NODEID, NODENAME, NODETYPE, PLID, PLNAME, NODECATEGORY, ITSYSVAL, ACTIVITYNUMBER, ACTIVITYDESC, ROLE, POST, ROLENAME, POSTNAME, MODIFYDATETIME) "
+ " VALUES(:uuId, :NODEID, :NODENAME, :NODETYPE, :PLID, :PLNAME, :NODECATEGORY, :ITSYSVAL, :ACTIVITYNUMBER, :ACTIVITYDESC, :ROLE, :POST, :ROLENAME, :POSTNAME, :MODIFYDATETIME)", newNodeDataMaps);
}
if (null != delNodeDataMaps && !delNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("DELETE FROM BO_EU_PAL_FILENODE5 WHERE NODEID=:NODEID", delNodeDataMaps);
}
SDK.getLogAPI().consoleInfo("新增节点" + newNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("修改节点" + oldNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("删除节点" + delNodeDataMaps.size());
long endTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("结束时间" + endTime);
SDK.getLogAPI().consoleInfo("运行时间" + (endTime - startTime));
}
}

View File

@ -0,0 +1,392 @@
package com.awspaas.user.apps.yili.reportform.job;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.sql.Timestamp;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* @author:Lizj
* @create: 2022-08-04 16:40
* @Description: 同步文件数量
*/
@DisallowConcurrentExecution
public class SyncGroupCount implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SDK.getLogAPI().consoleInfo("定时同步文件数量(报表用)开始执行");
long startTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("开始时间"+startTime);
//初始化 old/new list
ArrayList<Map<String, ?>> oldDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newDataMaps = new ArrayList<>();
HashMap<String, Object> dataMap = new HashMap<>();
Object[] sqlParams = new Object[]{};
//系统字段
String uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
Date nowDateJ = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取底表数据
List<RowMap> frameMaps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMELEVEL,FRAMEPARENTID,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME");
List<RowMap> fileMaps = DBSql.getMaps("SELECT FILEID,PLPARENTID,PLORDERINDEX,PLMETHODID,PUBDEPT,PUBDATETIME,FILEUSESTATE,PROCESSKPI,RELEVANTFILE,SUPPORTFILE,POLICYTYPE,MODIFYDATETIME FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'");
List<RowMap> nodeMaps = DBSql.getMaps("SELECT NODEID,NODETYPE,PLID,ITSYSVAL FROM BO_EU_PAL_FILENODE5");
//更新/新增文件数量
ArrayList<Map> totalDataMaps = new ArrayList<>();
oldDataMaps = new ArrayList<>();
newDataMaps = new ArrayList<>();
dataMap = new HashMap<>();
NumberFormat numberformat = NumberFormat.getInstance();
numberformat.setMaximumFractionDigits(2);
//流程总数制度总数覆盖率
Integer bpmn2TotalNum = DBSql.getInt("SELECT COUNT(*) AS bpmn2TotalNum FROM BO_EU_PAL_FILE1 WHERE (PLMETHODID='process.epc' OR PLMETHODID='process.flowchart') AND FILESTATE='1'", "bpmn2TotalNum");
Integer policyTotalNum = DBSql.getInt("SELECT COUNT(*) AS policyTotalNum FROM BO_EU_PAL_FILE1 WHERE PLMETHODID='control.policy' AND (POLICYTYPE='regulation' OR POLICYTYPE IS NULL) AND FILESTATE='1'", "policyTotalNum");
Integer coverTotalNum = 0;
Integer frameTotalNum = 0;
if (null!=frameMaps && !frameMaps.isEmpty()) {
for (RowMap frameMap : frameMaps) {
String frameID = frameMap.getString("FRAMEID");
int frameLevel = frameMap.getInt("FRAMELEVEL");
if (frameLevel > 1) {
frameTotalNum += 1;
sqlParams = new Object[]{frameID};
Integer pocNum = DBSql.getInt("SELECT COUNT(*) AS POCNum FROM BO_EU_PAL_FILE1 WHERE PLPARENTID=? AND (PLMETHODID='process.epc' OR PLMETHODID='process.flowchart' OR (PLMETHODID='control.policy' AND (POLICYTYPE='regulation' OR POLICYTYPE IS NULL))) AND FILESTATE='1'", sqlParams);
if (pocNum > 0) {
coverTotalNum += 1;
}
}
}
}
String coveragePoCTotal = "0";
if (frameTotalNum!=0) {
coveragePoCTotal = numberformat.format((float) coverTotalNum / (float) frameTotalNum * 100);
}
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "bpmn2TotalNum");
dataMap.put("COUNTOFGROUP", bpmn2TotalNum);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "policyTotalNum");
dataMap.put("COUNTOFGROUP", policyTotalNum);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "coveragePoCTotal");
dataMap.put("COUNTOFGROUP", coveragePoCTotal);
totalDataMaps.add(dataMap);
ArrayList<Map> frameList = new ArrayList<>();
String hasRoot = "";
List<RowMap> L1Maps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL ");
//ORDER BY TO_NUMBER(FRAMEORDERINDEX) ASC
//领域流程数制度数覆盖率绩效/系统
if (null != L1Maps && !L1Maps.isEmpty()) {
for (RowMap l1Map : L1Maps) {
Integer l2ol3frameNum = 0;
Integer l2ol3PoCcoverNum = 0;
Integer l2ol3BPMN2NUMSUM = 0;
Integer l2ol3POLICYNUMSUM = 0;
Integer ACVcoverNum = 0;
Integer ACVNUM = 0;
Integer SYScoverNum = 0;
Integer SYSNUM = 0;
String L1ID = l1Map.getString("FRAMEID");
String groupID = l1Map.getString("FRAMETYPE");
frameList = new ArrayList<>();
frameList = GetNodesUtil.getChildFrame(L1ID, hasRoot, frameList);
if (null != frameList && !frameList.isEmpty()) {
for (Map frameMap : frameList) {
String frameID = String.valueOf(frameMap.get("FRAMEID"));
l2ol3frameNum += 1;
ArrayList<RowMap> PoCFileMaps = new ArrayList<>();
ArrayList<RowMap> KPIFileMaps = new ArrayList<>();
ArrayList<RowMap> ITsysFileMaps = new ArrayList<>();
if (null != fileMaps && !fileMaps.isEmpty()) {
for (RowMap fileMap : fileMaps) {
String FILEID = fileMap.getString("FILEID");
String PLMETHODID = fileMap.getString("PLMETHODID");
String POLICYTYPE = fileMap.getString("POLICYTYPE");
String PLPARENTID = fileMap.getString("PLPARENTID");
if (PLPARENTID.equals(frameID)) {
if (PLMETHODID.equals("process.epc") || PLMETHODID.equals("process.flowchart")) {
l2ol3BPMN2NUMSUM += 1;
PoCFileMaps.add(fileMap);
String PROCESSKPI = fileMap.getString("PROCESSKPI");
if (null!=PROCESSKPI && !PROCESSKPI.equals("")) {
String[] PROCESSKPIIDs = PROCESSKPI.split(" ");
ACVNUM += PROCESSKPIIDs.length;
KPIFileMaps.add(fileMap);
}
if (null != nodeMaps && !nodeMaps.isEmpty()) {
for (RowMap nodeMap : nodeMaps) {
if (FILEID.equals(nodeMap.getString("PLID"))) {
String ITSYSVAL = nodeMap.getString("ITSYSVAL");
if (null!=ITSYSVAL && !ITSYSVAL.equals("")) {
SYSNUM += 1;
ITsysFileMaps.add(fileMap);
}
}
}
}
}
if (PLMETHODID.equals("control.policy") && (POLICYTYPE.equals("regulation") || null==POLICYTYPE || POLICYTYPE.equals(""))) {
l2ol3POLICYNUMSUM += 1;
PoCFileMaps.add(fileMap);
}
}
}
}
if (null!=PoCFileMaps && !PoCFileMaps.isEmpty()) {
l2ol3PoCcoverNum += 1;
}
if (null!=KPIFileMaps && !KPIFileMaps.isEmpty()) {
ACVcoverNum += 1;
}
if (null!=ITsysFileMaps && !ITsysFileMaps.isEmpty()) {
SYScoverNum += 1;
}
}
}
String coveragePoC = "0";
String coverageAVC = "0";
String coverageSYS = "0";
if (l2ol3frameNum!=0) {
coveragePoC = numberformat.format((float) l2ol3PoCcoverNum / (float) l2ol3frameNum * 100);
coverageAVC = numberformat.format((float) ACVcoverNum / (float) l2ol3frameNum * 100);
coverageSYS = numberformat.format((float) SYScoverNum / (float) l2ol3frameNum * 100);
}
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "l2ol3BPMN2NUMSUM");
dataMap.put("GROUPIDEXT1", L1ID);
dataMap.put("GROUPIDEXT2", groupID);
dataMap.put("COUNTOFGROUP", l2ol3BPMN2NUMSUM);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "l2ol3POLICYNUMSUM");
dataMap.put("GROUPIDEXT1", L1ID);
dataMap.put("GROUPIDEXT2", groupID);
dataMap.put("COUNTOFGROUP", l2ol3POLICYNUMSUM);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "coveragePoC");
dataMap.put("GROUPIDEXT1", L1ID);
dataMap.put("GROUPIDEXT2", groupID);
dataMap.put("COUNTOFGROUP", coveragePoC);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "ACVNUM");
dataMap.put("GROUPIDEXT1", L1ID);
dataMap.put("GROUPIDEXT2", groupID);
dataMap.put("COUNTOFGROUP", ACVNUM);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "coverageAVC");
dataMap.put("GROUPIDEXT1", L1ID);
dataMap.put("GROUPIDEXT2", groupID);
dataMap.put("COUNTOFGROUP", coverageAVC);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "SYSNUM");
dataMap.put("GROUPIDEXT1", L1ID);
dataMap.put("GROUPIDEXT2", groupID);
dataMap.put("COUNTOFGROUP", SYSNUM);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "coverageSYS");
dataMap.put("GROUPIDEXT1", L1ID);
dataMap.put("GROUPIDEXT2", groupID);
dataMap.put("COUNTOFGROUP", coverageSYS);
totalDataMaps.add(dataMap);
}
}
//流程评论
Integer replyCount = 0;
List<RowMap> replyRowMaps = DBSql.getMaps("SELECT DR.DATAID,BF.PLPARENTID,DR.REPLYER,DR.ORGID FROM APP_ACT_PAL_DATA_REPLY DR LEFT JOIN BO_EU_PAL_FILE1 BF ON DR.DATAID=BF.FILEID");
List<RowMap> frameHeadRowMaps = DBSql.getMaps("SELECT FRAMEID FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL");
List<RowMap> deptHeadRowMaps = DBSql.getMaps("SELECT DEPTID FROM BO_EU_DEPT_ABBREVIATION");
ArrayList<String> deptIDList = new ArrayList<>();
ArrayList<Map> fieldList = new ArrayList<>();
if (null!=frameHeadRowMaps && !frameHeadRowMaps.isEmpty()) {
for (RowMap frameHeadRowMap : frameHeadRowMaps) {
replyCount = 0;
String FRAMEID = frameHeadRowMap.getString("FRAMEID");
fieldList = new ArrayList<Map>();
fieldList = GetNodesUtil.getChildFrame(FRAMEID,"", fieldList);
for (Map fieldMap : fieldList) {
String fieldID = String.valueOf(fieldMap.get("FRAMEID"));
if (null!=replyRowMaps && !replyRowMaps.isEmpty()) {
for (RowMap replyRowMap : replyRowMaps) {
String PLPARENTID = replyRowMap.getString("PLPARENTID");
if (PLPARENTID.equals(fieldID)) {
replyCount += 1;
}
}
}
}
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "reply");
dataMap.put("GROUPIDEXT1", "frame");
dataMap.put("GROUPIDEXT2", FRAMEID);
dataMap.put("COUNTOFGROUP", replyCount);
totalDataMaps.add(dataMap);
}
}
if (null!=deptHeadRowMaps && !deptHeadRowMaps.isEmpty()) {
for (RowMap deptHeadRowMap : deptHeadRowMaps) {
replyCount = 0;
String DEPTID = deptHeadRowMap.getString("DEPTID");
deptIDList = new ArrayList<String>();
deptIDList = GetNodesUtil.getChildDept(DEPTID, deptIDList);
for (String deptID : deptIDList) {
if (null!=replyRowMaps && !replyRowMaps.isEmpty()) {
for (RowMap replyRowMap : replyRowMaps) {
String ORGID = replyRowMap.getString("ORGID");
if (ORGID.equals(deptID)) {
replyCount += 1;
}
}
}
}
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "reply");
dataMap.put("GROUPIDEXT1", "dept");
dataMap.put("GROUPIDEXT2", DEPTID);
dataMap.put("COUNTOFGROUP", replyCount);
totalDataMaps.add(dataMap);
}
}
//流程引用情况
Integer appearNum = 0;
Integer lastNum = 0;
Integer nowNum = 0;
//本月上月
LocalDate nowDate = LocalDate.now();
int nowMonth = nowDate.getMonthValue();
int lastMonth = nowDate.minusMonths(1).getMonthValue();
if (null!=fileMaps && fileMaps.isEmpty()==false) {
for (RowMap fileMap : fileMaps) {
String FILEID = fileMap.getString("FILEID");
for (RowMap fileMap1 : fileMaps) {
String RELEVANTFILE = fileMap1.getString("RELEVANTFILE");
String SUPPORTFILE = fileMap1.getString("SUPPORTFILE");
if (null != RELEVANTFILE && !RELEVANTFILE.equals("")) {
if (RELEVANTFILE.contains(FILEID)) {
appearNum += 1;
}
}
if (null != SUPPORTFILE && !SUPPORTFILE.equals("")) {
if (SUPPORTFILE.contains(FILEID)) {
appearNum += 1;
}
}
Timestamp MODIFYDATETIME = fileMap1.getTimestamp("MODIFYDATETIME");
String modifyTimeString = sdf.format(MODIFYDATETIME);
LocalDateTime modifyDatetime = LocalDateTime.parse(modifyTimeString, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
if (modifyDatetime.getMonthValue() <= nowMonth) {
if (null != RELEVANTFILE && !RELEVANTFILE.equals("")) {
if (RELEVANTFILE.contains(FILEID)) {
nowNum += 1;
}
}
if (null != SUPPORTFILE && !SUPPORTFILE.equals("")) {
if (SUPPORTFILE.contains(FILEID)) {
nowNum += 1;
}
}
}
if (modifyDatetime.getMonthValue() <= lastMonth) {
if (null != RELEVANTFILE && !RELEVANTFILE.equals("")) {
if (RELEVANTFILE.contains(FILEID)) {
lastNum += 1;
}
}
if (null != SUPPORTFILE && !SUPPORTFILE.equals("")) {
if (SUPPORTFILE.contains(FILEID)) {
lastNum += 1;
}
}
}
}
}
}
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "appearNum");
dataMap.put("GROUPIDEXT1", "total");
dataMap.put("COUNTOFGROUP", appearNum);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "lastNum");
dataMap.put("GROUPIDEXT1", "total");
dataMap.put("COUNTOFGROUP", lastNum);
totalDataMaps.add(dataMap);
dataMap = new HashMap<>();
dataMap.put("GROUPIDMAIN", "nowNum");
dataMap.put("GROUPIDEXT1", "total");
dataMap.put("COUNTOFGROUP", nowNum);
totalDataMaps.add(dataMap);
if(null!=totalDataMaps && !totalDataMaps.isEmpty()) {
for (Map totalDataMap : totalDataMaps) {
//系统字段
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
String GROUPIDMAIN = String.valueOf(totalDataMap.get("GROUPIDMAIN"));
String GROUPIDEXT1 = String.valueOf(totalDataMap.get("GROUPIDEXT1"));
String GROUPIDEXT2 = String.valueOf(totalDataMap.get("GROUPIDEXT2"));
String COUNTOFGROUP = String.valueOf(totalDataMap.get("COUNTOFGROUP"));
sqlParams = new Object[]{GROUPIDMAIN,GROUPIDEXT1,GROUPIDEXT2};
RowMap countDataMap = DBSql.getMap("SELECT COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN=? AND GROUPIDEXT1=? AND GROUPIDEXT2=?", sqlParams);
if (null!=countDataMap && !countDataMap.isEmpty()) {
dataMap = new HashMap<>();
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("GROUPIDMAIN", GROUPIDMAIN);
dataMap.put("GROUPIDEXT1", GROUPIDEXT1);
dataMap.put("GROUPIDEXT2", GROUPIDEXT2);
dataMap.put("COUNTOFGROUP", COUNTOFGROUP);
oldDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
dataMap.put("uuId", uuId);
dataMap.put("GROUPIDMAIN", GROUPIDMAIN);
dataMap.put("GROUPIDEXT1", GROUPIDEXT1);
dataMap.put("GROUPIDEXT2", GROUPIDEXT2);
dataMap.put("COUNTOFGROUP", COUNTOFGROUP);
newDataMaps.add(dataMap);
}
}
}
if (null!=oldDataMaps && !oldDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILE_GROUPCOUNT SET"
+ " COUNTOFGROUP=:COUNTOFGROUP, UPDATEDATE=:UPDATEDATE "
+ " WHERE GROUPIDMAIN=:GROUPIDMAIN AND GROUPIDEXT1=:GROUPIDEXT1 AND GROUPIDEXT2=:GROUPIDEXT2", oldDataMaps);
}
if (null!=newDataMaps && !newDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILE_GROUPCOUNT"
+ " (ID, GROUPIDMAIN, GROUPIDEXT1, GROUPIDEXT2, COUNTOFGROUP) "
+ " VALUES(:uuId, :GROUPIDMAIN, :GROUPIDEXT1, :GROUPIDEXT2, :COUNTOFGROUP)", newDataMaps);
}
SDK.getLogAPI().consoleInfo("新增文件数量"+newDataMaps.size());
SDK.getLogAPI().consoleInfo("修改文件数量"+oldDataMaps.size());
long endTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("结束时间" + endTime);
SDK.getLogAPI().consoleInfo("运行时间" + (endTime - startTime));
}
}

View File

@ -0,0 +1,41 @@
package com.awspaas.user.apps.yili.reportform.job;
import java.util.List;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.schedule.IJob;
import com.actionsoft.bpms.util.DBSql;
/**
* @author:lihongyu
* @create: 2022-11-03 11:32
* @Description: 同步制度文件的类型到 app_act_coe_pal_repository EXT3
*/
@DisallowConcurrentExecution
public class UpdateKMSFileName implements IJob {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
int count =0;
long startTime = System.currentTimeMillis();
String sql = "SELECT * FROM APP_ACT_KMS_CARD WHERE CARDNAME like '%V11%'";
List<RowMap> fileListMap = DBSql.getMaps(sql);
for (RowMap fileRowMap : fileListMap) {
String name = fileRowMap.getString("CARDNAME");
String id = fileRowMap.getString("ID");
String substring = name.substring(name.length()-1);
String substring2 = name.substring(0,name.length()-1);
String newName = substring2 +"."+substring;
String sqlS = "UPDATE APP_ACT_KMS_CARD SET CARDNAME = '"+newName+"' where ID = '"+id+"'";
count+=DBSql.update(sqlS);
}
long endTime = System.currentTimeMillis();
long time = endTime - startTime;
System.err.println("修改知识库文件名称:"+count+"个,用时" + time /1000/60/60+"");
}
}

View File

@ -0,0 +1,26 @@
package com.awspaas.user.apps.yili.reportform.plugin;
import com.actionsoft.apps.listener.PluginListener;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.apps.resource.plugin.profile.*;
import com.awspaas.user.apps.yili.reportform.aslp.AttrSynAslp;
import java.util.ArrayList;
import java.util.List;
/**
* @author:Lizj
* @create: 2022-08-03 17:17
* @Description: 注册类
*/
public class Plugins implements PluginListener {
public Plugins() {
}
public List<AWSPluginProfile> register(AppContext context) {
List<AWSPluginProfile> list = new ArrayList();
// 注册ASLP
list.add(new ASLPPluginProfile("AttrSynAslp", AttrSynAslp.class.getName(), "增量同步数据", (HttpASLP)null));
return list;
}
}

View File

@ -0,0 +1,529 @@
package com.awspaas.user.apps.yili.reportform.service;
import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.CoeDesignerUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.bpms.commons.database.BatchPreparedStatementSetter;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.commons.mvc.view.ActionWeb;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.RequestParams;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.awspaas.user.apps.yili.reportform.util.CheckUtil;
import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil;
import com.awspaas.user.apps.yili.reportform.util.RepositoryAttribute;
import com.google.common.collect.Maps;
import org.docx4j.wml.R;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import static org.codehaus.groovy.runtime.DefaultGroovyMethods.collect;
/**
* @author:Lizj
* @create: 2022-08-03 11:29
* @Description:
*/
public class AttrSynService extends ActionWeb {
/**
* @methodName:
* @param:
* @return:
* @description:增量同步数据
* @auther: Lizj
* @date: 2022/8/3 10:02
*/
public String incrementSyn(UserContext uc, RequestParams params) {
ResponseObject ro = ResponseObject.newOkResponse();
String wsId = params.get("wsId");
String fileIds = params.get("fileId");
JSONArray fileIdArray = JSONArray.parseArray(fileIds);
SDK.getLogAPI().consoleInfo("增量同步文件信息开始执行");
SDK.getLogAPI().consoleInfo("同步个数"+fileIdArray.size());
long startTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("开始时间"+startTime);
//筛选出角色类文件list
String org = "org";
List<PALRepositoryModel> palOrgList = new ArrayList<>();
Set<String> palOrgIds = new HashSet<>();
PALRepositoryCache.getAllChildrenModelsByPid(wsId, org, palOrgList, palOrgIds);
palOrgList = palOrgList.stream().filter(x -> x.getMethodId().equals("org.role")).collect(Collectors.toList());
//初始化架构文件节点 old/new list
ArrayList<Map<String, ?>> oldFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFrameDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newFileDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> oldNodeDataMaps = new ArrayList<>();
ArrayList<Map<String, ?>> newNodeDataMaps = new ArrayList<>();
HashMap<String, Object> dataMap = new HashMap<>();
Object[] sqlParams = new Object[]{};
//获取底表数据
List<String> frameIdList = DBSql.getList("SELECT FRAMEID FROM BO_EU_PAL_FRAME", String.class);
Set<String> frameSet = frameIdList.stream().collect(Collectors.toSet());
List<String> fileIdList = DBSql.getList("SELECT FILEID FROM BO_EU_PAL_FILE1", String.class);
Set<String> fileSet = fileIdList.stream().collect(Collectors.toSet());
List<String> nodeIdList = DBSql.getList("SELECT NODEID FROM BO_EU_PAL_FILENODE5", String.class);
Set<String> nodeSet = nodeIdList.stream().collect(Collectors.toSet());
//系统字段
String uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
Date nowDateJ = new Date(System.currentTimeMillis());
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (null!=fileIdArray && !fileIdArray.isEmpty()) {
for (Object fileIdO : fileIdArray) {
String fileIdString = String.valueOf(fileIdO);
PALRepositoryModel fileModel = PALRepositoryCache.getCache().get(fileIdString);
if (fileModel.getMethodId().equals("process.framework")) {
//更新/新增架构
String FRAMENAME = fileModel.getName();
Integer FRAMELEVEL = fileModel.getLevel();
String FRAMETYPE = null;
String FRAMEPARENTID = fileModel.getParentId();
Integer FRAMEORDERINDEX = fileModel.getOrderIndex();
Map<String, JSONObject> frameAttrs = new RepositoryAttribute().queryRepositoryAttributeById(fileIdString);
if (null!=frameAttrs && !frameAttrs.isEmpty()) {
JSONObject Frame_type = frameAttrs.get("Frame_type");
FRAMETYPE = Frame_type.getString("text");
}
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
if (frameSet.contains(fileIdString)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FRAMEID", fileIdString);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("FRAMENAME", FRAMENAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldFrameDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FRAMEID", fileIdString);
dataMap.put("FRAMENAME", FRAMENAME);
dataMap.put("FRAMELEVEL", FRAMELEVEL);
dataMap.put("FRAMETYPE", FRAMETYPE);
dataMap.put("FRAMEPARENTID", FRAMEPARENTID);
dataMap.put("FRAMEORDERINDEX", FRAMEORDERINDEX);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newFrameDataMaps.add(dataMap);
}
} else {
//更新/新增文件
String PLNAME = fileModel.getName();
Integer PLLEVEL = fileModel.getLevel();
String PLPARENTID = fileModel.getParentId();
Integer PLORDERINDEX = fileModel.getOrderIndex();
String PLCATEGORY = fileModel.getMethodCategory();
String PLMETHODID = fileModel.getMethodId();
String CREATEPER = fileModel.getCreateUser();
String MODIFYPER = fileModel.getModifyUser();
Timestamp CREATEDATETIME = fileModel.getCreateDate();
Timestamp MODIFYDATETIME = fileModel.getModifyDate();
String PUBDEPT = "";
String PUBDATETIME = "";
String FILESTATE = "";
String FILEUSESTATE = "";
Long VIEWCOUNT = fileModel.getViewCount();
String L1ID = "";
String L2ID = "";
String L3ID = "";
String LEADPROCESS = "0";
String REARPROCESS = "0";
String PROCESSKPI = "";
String RELEVANTFILE = "";
String SUPPORTFILE = "";
String POLICYTYPE = "";
List<RowMap> parentMaps = new ArrayList<>();
parentMaps = GetNodesUtil.getParentFrame(PLPARENTID, parentMaps);
if (null != parentMaps && !parentMaps.isEmpty()) {
for (RowMap parentMap : parentMaps) {
Integer parentLevel = parentMap.getInt("FRAMELEVEL");
String parentID = parentMap.getString("FRAMEID");
if (parentLevel.equals(3)) {
L3ID = parentID;
}
if (parentLevel.equals(2)) {
L2ID = parentID;
}
if (parentLevel.equals(1)) {
L1ID = parentID;
}
}
}
//文件状态
FILESTATE = "0";
if (fileModel.isPublish()==true) {
FILESTATE = "1";
}
if (fileModel.isApproval()==true) {
FILESTATE = "2";
}
if (fileModel.isStop()==true) {
FILESTATE = "3";
}
//文件生效状态
if (fileModel.isUse()==true) {
FILEUSESTATE = "1";
} else {
FILEUSESTATE = "0";
}
Map<String, JSONObject> fileAttrJsonMap = new HashMap<>();
try {
fileAttrJsonMap = new RepositoryAttribute().queryRepositoryAttributeById(fileIdString);
} catch (Exception e) {
SDK.getLogAPI().consoleInfo("文件ID"+fileIdString+"数据异常");
}
finally {
if (null!=fileAttrJsonMap && !fileAttrJsonMap.isEmpty()) {
//发布部门
JSONObject Issuing_department = fileAttrJsonMap.get("Issuing_department");
if (null!=Issuing_department && !Issuing_department.equals("")) {
JSONArray PUBDEPTJA = Issuing_department.getJSONArray("value");
if (null!=PUBDEPTJA && !PUBDEPTJA.isEmpty()) {
for (Object PUBDEPTO : PUBDEPTJA) {
JSONObject PUBDEPTJO = JSONObject.parseObject(String.valueOf(PUBDEPTO));
PUBDEPT = PUBDEPT + " " + PUBDEPTJO.getString("id");
}
PUBDEPT = PUBDEPT.substring(1);
}
}
//发布时间
PUBDATETIME = "";
JSONObject effective_date = fileAttrJsonMap.get("Drafted_and_revised_date");
if (null!=effective_date && !effective_date.equals("")) {
String pubDateString = effective_date.getString("text");
if (null!=pubDateString && !pubDateString.equals("")) {
if (CheckUtil.isDate(pubDateString)) {
Date parse = null;
try {
parse = sdf1.parse(pubDateString);
} catch (ParseException e) {
e.printStackTrace();
}
PUBDATETIME = sdf1.format(parse);
}
}
}
//前置流程
JSONObject lead_process = fileAttrJsonMap.get("lead_process");
if (null != lead_process && !lead_process.equals("")) {
JSONArray lpValue = lead_process.getJSONArray("value");
if (null != lpValue && !lpValue.isEmpty()) {
LEADPROCESS = "1";
} else {
LEADPROCESS = "0";
}
} else {
LEADPROCESS = "0";
}
//后置流程
JSONObject rear_process = fileAttrJsonMap.get("rear_process");
if (null != rear_process && !rear_process.equals("")) {
JSONArray rpValue = rear_process.getJSONArray("value");
if (null != rpValue && !rpValue.isEmpty()) {
REARPROCESS = "1";
} else {
REARPROCESS = "0";
}
} else {
REARPROCESS = "0";
}
//流程绩效
JSONObject performance = fileAttrJsonMap.get("Process_performance_metrics");
if (null!=performance && !performance.equals("")) {
JSONArray performanceJA = performance.getJSONArray("value");
if (null!=performanceJA && !performanceJA.isEmpty()) {
for (Object performanceO : performanceJA) {
JSONObject performanceJO = JSONObject.parseObject(String.valueOf(performanceO));
PROCESSKPI = PROCESSKPI + " " + performanceJO.getString("fileId");
}
PROCESSKPI = PROCESSKPI.substring(1);
}
}
//相关文件
JSONObject R_relevant_flies = fileAttrJsonMap.get("R_relevant_flies");
if (null!=R_relevant_flies && !R_relevant_flies.equals("")) {
JSONArray RELEVANTFILEJA = R_relevant_flies.getJSONArray("value");
if (null!=RELEVANTFILEJA && !RELEVANTFILEJA.isEmpty()) {
for (Object RELEVANTFILEO : RELEVANTFILEJA) {
JSONObject RELEVANTFILEJO = JSONObject.parseObject(String.valueOf(RELEVANTFILEO));
RELEVANTFILE = RELEVANTFILE + " " + RELEVANTFILEJO.getString("fileId");
}
RELEVANTFILE = RELEVANTFILE.substring(1);
}
}
//支持文件
JSONObject support_files = fileAttrJsonMap.get("support_files");
if (null!=support_files && !support_files.equals("")) {
JSONArray SUPPORTFILEJA = support_files.getJSONArray("value");
if (null!=SUPPORTFILEJA && !SUPPORTFILEJA.isEmpty()) {
for (Object SUPPORTFILEO : SUPPORTFILEJA) {
JSONObject SUPPORTFILEJO = JSONObject.parseObject(String.valueOf(SUPPORTFILEO));
SUPPORTFILE = SUPPORTFILE + " " + SUPPORTFILEJO.getString("fileId");
}
SUPPORTFILE = SUPPORTFILE.substring(1);
}
}
//制度类型
List<Map<String, Object>> nodeElements = CoeDesignerUtil.getShapeMessageJson4(fileIdString);
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("regulation")) {
POLICYTYPE = "regulation";
} else if (NODETYPE.equals("I/O_L4")) {
POLICYTYPE = "I/O_L4";
}
}
}
}
}
if (fileSet.contains(fileIdString)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("FILEID", fileIdString);
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
oldFileDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("FILEID", fileIdString);
dataMap.put("PLNAME", PLNAME);
dataMap.put("PLLEVEL", PLLEVEL);
dataMap.put("PLPARENTID", PLPARENTID);
dataMap.put("PLORDERINDEX", PLORDERINDEX);
dataMap.put("PLCATEGORY", PLCATEGORY);
dataMap.put("PLMETHODID", PLMETHODID);
dataMap.put("CREATEPER", CREATEPER);
dataMap.put("MODIFYPER", MODIFYPER);
dataMap.put("CREATEDATETIME", CREATEDATETIME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
dataMap.put("PUBDEPT", PUBDEPT);
dataMap.put("PUBDATETIME", PUBDATETIME);
dataMap.put("FILESTATE", FILESTATE);
dataMap.put("FILEUSESTATE", FILEUSESTATE);
dataMap.put("VIEWCOUNT", VIEWCOUNT);
dataMap.put("L1ID", L1ID);
dataMap.put("L2ID", L2ID);
dataMap.put("L3ID", L3ID);
dataMap.put("LEADPROCESS", LEADPROCESS);
dataMap.put("REARPROCESS", REARPROCESS);
dataMap.put("PROCESSKPI", PROCESSKPI);
dataMap.put("RELEVANTFILE", RELEVANTFILE);
dataMap.put("SUPPORTFILE", SUPPORTFILE);
dataMap.put("POLICYTYPE", POLICYTYPE);
newFileDataMaps.add(dataMap);
}
//更新/新增节点
List<Map<String, Object>> nodeElements = CoeDesignerUtil.getShapeMessageJson4(fileIdString);
if (null != nodeElements && !nodeElements.isEmpty()) {
for (Map<String, Object> nodeElement : nodeElements) {
String NODETYPE = String.valueOf(nodeElement.get("type"));
if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node") || NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4") || NODETYPE.equals("role")) {
//节点信息
String NODEID = String.valueOf(nodeElement.get("id"));
String NODENAME = String.valueOf(nodeElement.get("name"));
//形状属性数组
JSONArray attributesArray = JSON.parseArray(String.valueOf(nodeElement.get("attributes")));
//形状属性信息系统活动序号活动描述角色岗位
String ITSYSVAL = "";
String ACTIVITYNUMBER = "";
String ACTIVITYDESC = "";
String ROLE = "";
String ROLENAME = "";
String POST = "";
String POSTNAME = "";
if (null != attributesArray && !attributesArray.isEmpty()) {
for (Object attribute : attributesArray) {
JSONObject attributeJO = JSON.parseObject(String.valueOf(attribute));
String SHAPEATTRKEY = attributeJO.getString("key");
if (SHAPEATTRKEY.equals("information_systems")) {
ITSYSVAL = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_number")) {
ACTIVITYNUMBER = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("activity_description")) {
ACTIVITYDESC = attributeJO.getString("value");
}
if (SHAPEATTRKEY.equals("role")) {
//SDK.getLogAPI().consoleInfo("文件名称"+PLNAME+"\n节点名称"+NODENAME+"\n节点角色信息"+attributeJO);
for (PALRepositoryModel model : palOrgList) {
List<Map<String, Object>> roleShapes = CoeDesignerUtil.getShapeMessageJson4(model.getId());
if (null!=roleShapes && !roleShapes.isEmpty()) {
for (Map<String, Object> roleShape : roleShapes) {
if (attributeJO.getString("value").equals(roleShape.get("name"))) {
JSONArray roleShapeAttrs = JSON.parseArray(String.valueOf(roleShape.get("attributes")));
if (null != roleShapeAttrs && !roleShapeAttrs.isEmpty()) {
for (Object roleShapeAttr : roleShapeAttrs) {
JSONObject roleShapeAttrJO = JSON.parseObject(String.valueOf(roleShapeAttr));
String ROLESHAPEATTRKEY = roleShapeAttrJO.getString("key");
if (ROLESHAPEATTRKEY.equals("post")) {
ROLE = roleShapeAttrJO.getString("value");
ROLENAME = roleShapeAttrJO.getString("value");
}
}
}
}
}
}
}
}
if (SHAPEATTRKEY.equals("post")) {
POST = attributeJO.getString("value");
POSTNAME = attributeJO.getString("value");
}
}
}
if (nodeSet.contains(NODEID)) {
dataMap = new HashMap<>();
nowDateJ = new Date(System.currentTimeMillis());
Timestamp nowDateTime = new Timestamp(nowDateJ.getTime());
dataMap.put("UPDATEDATE", nowDateTime);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POST", POST);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("PLID", fileIdString);
dataMap.put("NODEID", NODEID);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
oldNodeDataMaps.add(dataMap);
} else {
dataMap = new HashMap<>();
uuId = SDK.getRuleAPI().executeAtScript("@uuid()");
dataMap.put("uuId", uuId);
dataMap.put("NODEID", NODEID);
dataMap.put("NODENAME", NODENAME);
dataMap.put("NODETYPE", NODETYPE);
dataMap.put("PLID", fileIdString);
dataMap.put("PLNAME", PLNAME);
dataMap.put("NODECATEGORY", PLMETHODID);
dataMap.put("ITSYSVAL", ITSYSVAL);
dataMap.put("ACTIVITYNUMBER", ACTIVITYNUMBER);
dataMap.put("ACTIVITYDESC", ACTIVITYDESC);
dataMap.put("ROLE", ROLE);
dataMap.put("POST", POST);
dataMap.put("ROLENAME", ROLENAME);
dataMap.put("POSTNAME", POSTNAME);
dataMap.put("MODIFYDATETIME", MODIFYDATETIME);
newNodeDataMaps.add(dataMap);
}
}
}
}
}
}
SDK.getLogAPI().consoleInfo("新增架构"+newFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("修改架构"+oldFrameDataMaps.size());
SDK.getLogAPI().consoleInfo("新增文件"+newFileDataMaps.size());
SDK.getLogAPI().consoleInfo("修改文件"+oldFileDataMaps.size());
SDK.getLogAPI().consoleInfo("新增节点"+newNodeDataMaps.size());
SDK.getLogAPI().consoleInfo("修改节点"+oldNodeDataMaps.size());
if (null != oldFrameDataMaps && !oldFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FRAME SET"
+ " FRAMENAME=:FRAMENAME, FRAMELEVEL=:FRAMELEVEL, FRAMETYPE=:FRAMETYPE, FRAMEPARENTID=:FRAMEPARENTID, FRAMEORDERINDEX=:FRAMEORDERINDEX, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE WHERE FRAMEID=:FRAMEID", oldFrameDataMaps);
}
if (null != newFrameDataMaps && !newFrameDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FRAME(ID,FRAMEID,FRAMENAME,FRAMELEVEL,FRAMETYPE,FRAMEPARENTID,FRAMEORDERINDEX,MODIFYDATETIME) "
+ " VALUES(:uuId, :FRAMEID, :FRAMENAME, :FRAMELEVEL, :FRAMETYPE, :FRAMEPARENTID, :FRAMEORDERINDEX, :MODIFYDATETIME)", newFrameDataMaps);
}
if (null != oldFileDataMaps && !oldFileDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILE1 SET"
+ " PLNAME=:PLNAME, PLLEVEL=:PLLEVEL, PLPARENTID=:PLPARENTID, PLORDERINDEX=:PLORDERINDEX, PLCATEGORY=:PLCATEGORY, "
+ " PLMETHODID=:PLMETHODID, CREATEPER=:CREATEPER, MODIFYPER=:MODIFYPER, "
+ " PUBDEPT=:PUBDEPT, PUBDATETIME=:PUBDATETIME, FILESTATE=:FILESTATE, VIEWCOUNT=:VIEWCOUNT, L1ID=:L1ID, "
+ " L2ID=:L2ID, L3ID=:L3ID, LEADPROCESS=:LEADPROCESS, REARPROCESS=:REARPROCESS, PROCESSKPI=:PROCESSKPI, "
+ " RELEVANTFILE=:RELEVANTFILE, SUPPORTFILE=:SUPPORTFILE, POLICYTYPE=:POLICYTYPE, "
+ " CREATEDATETIME=:CREATEDATETIME, MODIFYDATETIME=:MODIFYDATETIME, FILEUSESTATE=:FILEUSESTATE, UPDATEDATE=:UPDATEDATE "
+ " WHERE FILEID=:FILEID", oldFrameDataMaps);
}
if (null != newFileDataMaps && !newFileDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILE1"
+ " (ID, FILEID, PLNAME, PLLEVEL, PLPARENTID, PLORDERINDEX, PLCATEGORY, PLMETHODID, CREATEPER, MODIFYPER, PUBDEPT, PUBDATETIME, "
+ " FILESTATE, VIEWCOUNT, L1ID, L2ID, L3ID, LEADPROCESS, REARPROCESS, PROCESSKPI, RELEVANTFILE, SUPPORTFILE, POLICYTYPE, FILEUSESTATE, CREATEDATETIME, MODIFYDATETIME ) "
+ " VALUES(:uuId, :FILEID, :PLNAME, :PLLEVEL, :PLPARENTID, :PLORDERINDEX, :PLCATEGORY, :PLMETHODID, "
+ " :CREATEPER, :MODIFYPER, :PUBDEPT, :PUBDATETIME, :FILESTATE, :VIEWCOUNT, :L1ID, :L2ID, "
+ " :L3ID, :LEADPROCESS, :REARPROCESS, :PROCESSKPI, :RELEVANTFILE, :SUPPORTFILE, :POLICYTYPE, :FILEUSESTATE, :CREATEDATETIME, :MODIFYDATETIME)", newFileDataMaps);
}
if (null != oldNodeDataMaps && !oldNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("UPDATE BO_EU_PAL_FILENODE5 SET"
+ " NODENAME=:NODENAME, NODETYPE=:NODETYPE, PLNAME=:PLNAME, NODECATEGORY=:NODECATEGORY, ITSYSVAL=:ITSYSVAL, "
+ " ACTIVITYNUMBER=:ACTIVITYNUMBER, ACTIVITYDESC=:ACTIVITYDESC, ROLE=:ROLE, POST=:POST, ROLENAME=:ROLENAME, POSTNAME=:POSTNAME, MODIFYDATETIME=:MODIFYDATETIME, UPDATEDATE=:UPDATEDATE "
+ " WHERE PLID=:PLID AND NODEID=:NODEID", oldNodeDataMaps);
}
if (null != newNodeDataMaps && !newNodeDataMaps.isEmpty()) {
DBSql.batchUpdate("INSERT INTO BO_EU_PAL_FILENODE5"
+ " (ID, NODEID, NODENAME, NODETYPE, PLID, PLNAME, NODECATEGORY, ITSYSVAL, ACTIVITYNUMBER, ACTIVITYDESC, ROLE, POST, ROLENAME, POSTNAME, MODIFYDATETIME) "
+ " VALUES(:uuId, :NODEID, :NODENAME, :NODETYPE, :PLID, :PLNAME, :NODECATEGORY, :ITSYSVAL, :ACTIVITYNUMBER, :ACTIVITYDESC, :ROLE, :POST, :ROLENAME, :POSTNAME, :MODIFYDATETIME)", newNodeDataMaps);
}
}
long endTime = System.currentTimeMillis();
SDK.getLogAPI().consoleInfo("结束时间"+endTime);
SDK.getLogAPI().consoleInfo("运行时间"+(endTime-startTime));
return ro.toString();
}
}

View File

@ -0,0 +1,288 @@
package com.awspaas.user.apps.yili.reportform.service;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate;
import com.actionsoft.bpms.commons.login.constant.LoginConst;
import com.actionsoft.bpms.commons.mvc.view.ActionWeb;
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
import com.actionsoft.bpms.server.RequestParams;
import com.actionsoft.bpms.server.SSOUtil;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.awspaas.user.apps.yili.reportform.util.TreeUtil;
import java.sql.Connection;
import java.util.*;
import static com.awspaas.user.apps.yili.reportform.util.TaskUtil.getLastPublishTaskIdByModelId;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
/**
* @author:Lizj
* @create: 2022-07-08 14:09
* @Description: 跳转页面
*/
public class ToPageService extends ActionWeb {
UserContext _uc;
public ToPageService(UserContext uc) {
super(uc);
_uc = uc;
}
//定义全局变量
private static String frameIDtoFrameView = null;
public String toIndex(UserContext uc, RequestParams params) {
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", _uc.getSessionId());
return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.reportform", "index.html", macroLibraries);
}
public String toFileboard(UserContext uc, RequestParams params) {
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", _uc.getSessionId());
return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.reportform", "fileboard.html", macroLibraries);
}
public String toTerritory(UserContext uc, RequestParams params) {
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", _uc.getSessionId());
return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.reportform", "territory.html", macroLibraries);
}
public String toDomainprocess(UserContext uc, RequestParams params) {
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", _uc.getSessionId());
return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.reportform", "domainprocess.html", macroLibraries);
}
public String toPersonView(UserContext uc, RequestParams params) {
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", _uc.getSessionId());
macroLibraries.put("uid", _uc.getUID());
macroLibraries.put("ip", SDK.getPortalAPI().getPortalUrl());
return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.integration", "index.html", macroLibraries);
}
public String toDeptView(UserContext uc, RequestParams params) {
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", _uc.getSessionId());
return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.integration", "Department.html", macroLibraries);
}
public String toFrameView(UserContext uc, RequestParams params) {
frameIDtoFrameView = params.get("frameID");
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", _uc.getSessionId());
macroLibraries.put("frameID", frameIDtoFrameView);
return HtmlPageTemplate.merge("com.awspaas.user.apps.yili.integration", "listview.html", macroLibraries);
}
/**
* @methodName:
* @param:
* @return:
* @description:架构视图筛选条件文件类型
* @auther: Lizj
* @date: 2022/8/11 9:57
*/
public String queryTermsFileType (UserContext uc, RequestParams params) {
ResponseObject ro = ResponseObject.newOkResponse();
HashMap<String, Object> fileType = new HashMap<>();
ArrayList<Map> fileTypes = new ArrayList<>();
fileType.put("termsKey","processFile");
fileType.put("termsVal","流程");
fileTypes.add(fileType);
fileType = new HashMap<String, Object>();
fileType.put("termsKey","policyFile");
fileType.put("termsVal","制度");
fileTypes.add(fileType);
fileType = new HashMap<String, Object>();
fileType.put("termsKey","guideFile");
fileType.put("termsVal","操作指导");
fileTypes.add(fileType);
fileType = new HashMap<String, Object>();
fileType.put("termsKey","formFile");
fileType.put("termsVal","表单/模板");
fileTypes.add(fileType);
fileType = new HashMap<String, Object>();
fileType.put("termsKey","totalFile");
fileType.put("termsVal","全部");
fileTypes.add(fileType);
ro.put("fileTypes",fileTypes);
return ro.toString();
}
/**
* @methodName:
* @param:
* @return:
* @description:架构视图
* @auther: Lizj
* @date: 2022/8/11 10:09
*/
public String frameView (UserContext uc, RequestParams params) {
ResponseObject ro = ResponseObject.newOkResponse();
//String frameID = params.get("frameID");
String fileType = params.get("fileType");
if (null!=frameIDtoFrameView && !frameIDtoFrameView.equals("")) {
//SDK.getLogAPI().consoleInfo("当前架构ID1"+frameID);
SDK.getLogAPI().consoleInfo("当前架构ID全局"+frameIDtoFrameView);
Object[] sqlParams = {frameIDtoFrameView};
HashMap<String, Object> fileMap = new HashMap<>();
ArrayList<Map> fileMaps = new ArrayList<>();
String nodeType = null;
RowMap frameRowMap = DBSql.getMap("SELECT FRAMEID,FRAMEPARENTID,FRAMENAME,FRAMEORDERINDEX,FRAMELEVEL FROM BO_EU_PAL_FRAME WHERE FRAMEID=?", sqlParams);
String sid = _uc.getSessionId();
String path = "";
PALRepositoryModel model = null;
String taskId="";
if (null!=frameRowMap && !frameRowMap.isEmpty()) {
fileMap = new HashMap<String, Object>();
nodeType = "frame";
fileMap.put("ID", frameRowMap.getString("FRAMEID"));
fileMap.put("PARENTID", frameRowMap.getString("FRAMEPARENTID"));
fileMap.put("name", frameRowMap.getString("FRAMENAME"));
fileMap.put("ORDERINDEX", frameRowMap.getString("FRAMEORDERINDEX"));
fileMap.put("TLEVEL", frameRowMap.getString("FRAMELEVEL"));
fileMap.put("nodeType", nodeType);
fileMaps.add(fileMap);
List<RowMap> fileRowMaps = DBSql.getMaps("SELECT FILEID,PLPARENTID,PLNAME,PLMETHODID,SUPPORTFILE,PUBDEPT,PUBDATETIME,PLORDERINDEX,PLLEVEL,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE PLPARENTID=? AND FILESTATE='1' AND (PLMETHODID='process.epc' OR PLMETHODID='process.flowchart' OR PLMETHODID='control.policy') ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) ASC", sqlParams);
ArrayList<RowMap> fileHandleRowMaps = new ArrayList<>();
Map<String, Object> reFileMap = new HashMap<>();
RowMap reFileRowMap = new RowMap(reFileMap);
if (null!=fileRowMaps && !fileRowMaps.isEmpty()) {
fileHandleRowMaps = new ArrayList<>();
for (RowMap fileRowMap : fileRowMaps) {
String FILEID = fileRowMap.getString("FILEID");
String SUPPORTFILE = fileRowMap.getString("SUPPORTFILE");
String PUBDEPT = fileRowMap.getString("PUBDEPT");
Integer PLLEVEL = fileRowMap.getInt("PLLEVEL");
if (null!=SUPPORTFILE && !SUPPORTFILE.equals("")) {
String[] reFileIDs = SUPPORTFILE.split(" ");
for (String reFileID : reFileIDs) {
PALRepositoryModel reFileModel = PALRepositoryCache.getCache().get(reFileID);
String PLMETHODID = reFileModel.getMethodId();
if (PLMETHODID.equals("data.form")) {
reFileMap = new HashMap<>();
reFileMap.put("FILEID", reFileID);
reFileMap.put("PLNAME", reFileModel.getName());
reFileMap.put("PLPARENTID", FILEID);
reFileMap.put("PLMETHODID", PLMETHODID);
reFileMap.put("PUBDEPT", PUBDEPT);
reFileMap.put("PLLEVEL", (PLLEVEL+1));
reFileMap.put("PLORDERINDEX", reFileModel.getOrderIndex());
reFileRowMap = new RowMap(reFileMap);
fileHandleRowMaps.add(reFileRowMap);
}
}
}
}
fileRowMaps.addAll(fileHandleRowMaps);
}
if (null!=fileType && !fileType.equals("")) {
fileHandleRowMaps = new ArrayList<>();
if (null!=fileRowMaps && !fileRowMaps.isEmpty()) {
for (RowMap fileRowMap : fileRowMaps) {
if (fileType.equals("processFile")) {
if (fileRowMap.getString("PLMETHODID").equals("process.epc") || fileRowMap.getString("PLMETHODID").equals("process.flowchart")) {
fileHandleRowMaps.add(fileRowMap);
}
}
if (fileType.equals("policyFile")) {
if (fileRowMap.getString("PLMETHODID").equals("control.policy") && (fileRowMap.getString("POLICYTYPE").equals("regulation") || null==fileRowMap.getString("POLICYTYPE") || fileRowMap.getString("POLICYTYPE").equals(""))) {
fileHandleRowMaps.add(fileRowMap);
}
}
// && fileRowMap.getString("POLICYTYPE").equals("regulation")
if (fileType.equals("guideFile")) {
if (fileRowMap.getString("PLMETHODID").equals("control.policy") && fileRowMap.getString("POLICYTYPE").equals("I/O_L4")) {
fileHandleRowMaps.add(fileRowMap);
}
}
if (fileType.equals("formFile")) {
if (fileRowMap.getString("PLMETHODID").equals("data.form")) {
fileHandleRowMaps.add(fileRowMap);
String PLPARENTID = fileRowMap.getString("PLPARENTID");
PALRepositoryModel reFileModel = PALRepositoryCache.getCache().get(PLPARENTID);
String PLMETHODID = reFileModel.getMethodId();
String PUBDEPT = fileRowMap.getString("PUBDEPT");
Integer PLLEVEL = fileRowMap.getInt("PLLEVEL");
if (!PLMETHODID.equals("process.framework")) {
reFileMap = new HashMap<>();
reFileMap.put("FILEID", reFileModel.getId());
reFileMap.put("PLNAME", reFileModel.getName());
reFileMap.put("PLPARENTID", reFileModel.getParentId());
reFileMap.put("PLMETHODID", PLMETHODID);
reFileMap.put("PUBDEPT", PUBDEPT);
reFileMap.put("PLLEVEL", (PLLEVEL-1));
reFileMap.put("PLORDERINDEX", reFileModel.getOrderIndex());
reFileRowMap = new RowMap(reFileMap);
fileHandleRowMaps.add(reFileRowMap);
}
}
}
if (fileType.equals("totalFile")) {
fileHandleRowMaps.add(fileRowMap);
}
}
}
fileHandleRowMaps = fileHandleRowMaps.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getString("FILEID")))),
ArrayList::new));
fileRowMaps = fileHandleRowMaps;
}
if(null!=fileRowMaps && !fileRowMaps.isEmpty()) {
for (RowMap fileRowMap : fileRowMaps) {
fileMap = new HashMap<String, Object>();
model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID"));
if (model != null) {
if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册
taskId=getLastPublishTaskIdByModelId(model.getId());
}
}
path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+fileRowMap.getString("FILEID")+"&"+"sid="+sid+"&"+"taskId="+taskId;
nodeType = "file";
fileMap.put("ID", fileRowMap.getString("FILEID"));
fileMap.put("PARENTID", fileRowMap.getString("PLPARENTID"));
fileMap.put("name", fileRowMap.getString("PLNAME"));
fileMap.put("PLMETHODID", fileRowMap.getString("PLMETHODID"));
fileMap.put("PUBDATETIME", fileRowMap.getString("PUBDATETIME"));
fileMap.put("path", path);
fileMap.put("ORDERINDEX", fileRowMap.getString("PLORDERINDEX"));
fileMap.put("TLEVEL", fileRowMap.getString("PLLEVEL"));
fileMap.put("nodeType", nodeType);
if (fileRowMap.getString("PLMETHODID").equals("process.epc") || fileRowMap.getString("PLMETHODID").equals("process.flowchart")) {
fileMap.put("fileType", "processFile");
} else if (fileRowMap.getString("PLMETHODID").equals("control.policy") && (fileRowMap.getString("POLICYTYPE").equals("regulation") || null==fileRowMap.getString("POLICYTYPE") || fileRowMap.getString("POLICYTYPE").equals(""))) {
// && fileRowMap.getString("POLICYTYPE").equals("regulation")
fileMap.put("fileType", "policyFile");
} else if (fileRowMap.getString("PLMETHODID").equals("control.policy") && fileRowMap.getString("POLICYTYPE").equals("I/O_L4")) {
fileMap.put("fileType", "guideFile");
} else if (fileRowMap.getString("PLMETHODID").equals("data.form")) {
fileMap.put("fileType", "formFile");
}
fileMaps.add(fileMap);
}
List<Map> fileTreeNodes = TreeUtil.buildTree(fileMaps,null,"frame",null,null);
ro.put("fileMaps",fileTreeNodes);
return ro.toString();
} else {
ro.ok("暂无文件");
fileMaps = new ArrayList<>();
ro.put("fileMaps",fileMaps);
return ro.toString();
}
} else {
ro.ok("无效架构");
fileMaps = new ArrayList<>();
ro.put("fileMaps",fileMaps);
return ro.toString();
}
} else {
ro.ok("未传入有效架构ID");
}
return ro.toString();
}
}

View File

@ -0,0 +1,28 @@
package com.awspaas.user.apps.yili.reportform.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author:Lizj
* @create: 2022-07-18 17:36
* @Description: 校验元素是否合法
*/
public class CheckUtil {
public static boolean isDate(String date) {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 使用严格的解析
sdf.setLenient(false);
try {
sdf.parse(date);
} catch (ParseException e) {
return false;
}
return true;
}
}

View File

@ -0,0 +1,118 @@
package com.awspaas.user.apps.yili.reportform.util;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.sdk.local.SDK;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author:Lizj
* @create: 2022-06-27 22:35
* @Description: 获取子节点工具类
*/
public class GetNodesUtil {
/**
* @methodName:
* @param:
* @return:
* @description:获取L1下子架构
* @auther: Lizj
* @date: 2022/6/22 22:30
*/
public static ArrayList getChildFrame(String frameID, String hasRoot, ArrayList<Map> frameList) {
Object[] sqlParams = new Object[]{};
sqlParams = new Object[]{frameID};
RowMap frameRowMap = DBSql.getMap("SELECT FRAMEID,FRAMENAME,FRAMELEVEL,FRAMEPARENTID,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMEID=?", sqlParams);
String FRAMELEVEL = frameRowMap.getString("FRAMELEVEL");
if (hasRoot.equals("Y")) {
frameList.add(frameRowMap);
} else {
if (!FRAMELEVEL.equals("1")) {
frameList.add(frameRowMap);
}
}
Integer FRAMENUM = DBSql.getInt("SELECT COUNT(*) AS FRAMENUM FROM BO_EU_PAL_FRAME WHERE FRAMEPARENTID=?", sqlParams);
if (FRAMENUM>0) {
List<RowMap> subFrameMaps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMELEVEL,FRAMEPARENTID,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMEPARENTID=?", sqlParams);
for (RowMap subFrameMap : subFrameMaps) {
frameID = subFrameMap.getString("FRAMEID");
getChildFrame(frameID,hasRoot,frameList);
}
}
return frameList;
}
/**
* @methodName:
* @param:
* @return:
* @description:获取所有子部门
* @auther: Lizj
* @date: 2022/6/27 22:41
*/
public static ArrayList getChildDept(String deptID,ArrayList<String> deptIDList) {
deptIDList.add(deptID);
Object[] sqlParams = new Object[]{};
sqlParams = new Object[]{deptID};
List<RowMap> subDeptMaps = DBSql.getMaps("SELECT ID FROM ORGDEPARTMENT WHERE PARENTDEPARTMENTID=?",sqlParams);
if (null!=subDeptMaps && !subDeptMaps.isEmpty()) {
for (RowMap subDeptMap : subDeptMaps) {
deptID = subDeptMap.getString("ID");
getChildDept(deptID,deptIDList);
}
}
return deptIDList;
}
/**
* @methodName:
* @param:
* @return:
* @description:获取父架构
* @auther: Lizj
* @date: 2022/8/4 17:38
*/
public static List<RowMap> getParentFrame(String fileID, List<RowMap> fileIDMaps) {
Object[] sqlParams = new Object[]{};
sqlParams = new Object[]{fileID};
RowMap parentFile = DBSql.getMap("SELECT FRAMEID,FRAMENAME,FRAMELEVEL,FRAMEPARENTID,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMEID=?", sqlParams);
if (null!=parentFile && !parentFile.isEmpty()) {
if (parentFile.getInt("FRAMELEVEL")<=3) {
fileIDMaps.add(parentFile);
if (parentFile.getInt("FRAMELEVEL")>1) {
fileID = parentFile.getString("FRAMEPARENTID");
getParentFrame(fileID, fileIDMaps);
}
}
}
return fileIDMaps;
}
/**
* @methodName:
* @param:
* @return:
* @description:获取父部门
* @auther: Lizj
* @date: 2022/8/4 17:39
*/
public static String getParentDept(String deptID, Integer toDeptLevel) {
Object[] sqlParams = new Object[]{};
sqlParams = new Object[]{deptID};
RowMap parentDept = DBSql.getMap("SELECT ID,PARENTDEPARTMENTID,LAYER FROM ORGDEPARTMENT WHERE ID=?", sqlParams);
if (null != parentDept && !parentDept.isEmpty()) {
if (parentDept.getInt("LAYER") > toDeptLevel) {
deptID = parentDept.getString("PARENTDEPARTMENTID");
getParentDept(deptID, toDeptLevel);
} else if(parentDept.getInt("LAYER") == toDeptLevel) {
return deptID;
}
}
return deptID;
}
}

View File

@ -0,0 +1,363 @@
package com.awspaas.user.apps.yili.reportform.util;
import com.actionsoft.apps.coe.pal.pal.method.model.PALMethodAttributeModel;
import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryPropertyCache;
import com.actionsoft.apps.coe.pal.pal.repository.designer.CoeDesignerShapeAPIManager;
import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.cache.DesignerShapeRelationCache;
import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.model.DesignerShapeRelationModel;
import com.actionsoft.apps.coe.pal.pal.repository.designer.util.ShapeUtil;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryPropertyModel;
import com.actionsoft.bpms.org.model.DepartmentModel;
import com.actionsoft.bpms.org.model.RoleModel;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.tools.ant.util.StringUtils;
import java.util.*;
public class RepositoryAttribute {
/**
* 根据模型ID查询所有文件扩展属性
*
* @param uuid
* @return
*/
public Map<String, JSONObject> queryRepositoryAttributeById(String uuid) {
Map<String, JSONObject> result = new HashMap<>();
PALRepositoryModel plModel = PALRepositoryCache.getCache().get(uuid);
// 获取所有文件属性
List<PALMethodAttributeModel> methodAttrModels = PALRepositoryAPIManager.getInstance().getValidAndUseAttributeModels(plModel.getWsId(), plModel.getMethodId());
if (methodAttrModels != null && methodAttrModels.size() > 0) {
Map<String, PALMethodAttributeModel> attributeModelMap = new HashMap<>();
Map<String, Integer> sortAttrMap = new HashMap<>();
if (methodAttrModels != null) {
int sort = 0;
for (PALMethodAttributeModel attr : methodAttrModels) {
attributeModelMap.put(attr.getKey(), attr);
sortAttrMap.put(attr.getKey(), ++sort);
}
}
List<PALRepositoryPropertyModel> propertys = PALRepositoryPropertyCache.getPropertyByPlId(plModel.getId());
// 排序
// propertys.sort((p1, p2) -> (sortAttrMap.containsKey(p1.getPropertyId()) ? sortAttrMap.get(p1.getPropertyId()) : 0) - (sortAttrMap.containsKey(p2.getPropertyId()) ? sortAttrMap.get(p2.getPropertyId()) : 0));
for (PALRepositoryPropertyModel property : propertys) {
String id = property.getPropertyId();
if (!attributeModelMap.containsKey(id) || !attributeModelMap.get(id).getUse()) {
continue;
}
PALMethodAttributeModel attributeModel = attributeModelMap.get(id);
// 记录结果集
JSONObject attrObj = new JSONObject();
attrObj.put("ref", attributeModel.getRef());// ref
attrObj.put("type", attributeModel.getType());// 类型 relation string ...
attrObj.put("attrId", attributeModel.getKey());// 属性key
attrObj.put("attrTitle", attributeModel.getNewTitle());// 属性标题
attrObj.put("text", "");// 属性内容单行文本
attrObj.put("value", new JSONArray());// 属性内容集relation或awsorg类型时存储对应的json数据
String inputValue = property.getPropertyValue();
if ("relation".equals(attributeModel.getType())) {
List<String> inputValueList = new ArrayList<>();
List<DesignerShapeRelationModel> list = DesignerShapeRelationCache.getListByAttrId(plModel.getId(), "", attributeModel.getKey());
if (list != null && list.size() > 0) {
// 判断是否有重复数据进行重复过滤
Set<String> tempStrs = new HashSet<>();
List<DesignerShapeRelationModel> tempList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
DesignerShapeRelationModel model = list.get(i);
String str = model.getFileId() + model.getShapeId() + model.getAttrId() + model.getRelationFileId() + model.getRelationShapeId();
if (!tempStrs.contains(str)) {
tempList.add(model);
tempStrs.add(str);
}
}
list = tempList;
for (int i = 0; i < list.size(); i++) {
DesignerShapeRelationModel model = list.get(i);
JSONObject refObj = JSONObject.parseObject(attributeModel.getRef());
String relationTyp = refObj.containsKey("type") ? refObj.getString("type") : "shape";
if ("file".equals(relationTyp)) {// 关联的模型文件
if (model.getRelationFileId().length() < 36) {
continue;
}
List<PALRepositoryModel> list2 = PALRepositoryCache.getByVersionId(plModel.getWsId(), model.getRelationFileId());
for (PALRepositoryModel model2 : list2) {
if (model2.isUse()) {
inputValueList.add(model2.getName());
JSONObject tmp = new JSONObject();
tmp.put("fileId", model2.getId());
tmp.put("name", model2.getName());
tmp.put("isFile", true);
attrObj.getJSONArray("value").add(tmp);
break;
}
}
} else {
inputValueList.add(model.getRelationShapeText());
JSONObject tmp = new JSONObject();
tmp.put("fileId", model.getRelationFileId());
tmp.put("shapeId", model.getRelationShapeId());
tmp.put("name", model.getRelationShapeText());
tmp.put("isFile", false);
attrObj.getJSONArray("value").add(tmp);
}
}
}
inputValue = StringUtils.join(inputValueList, ",");
}
// 关联bpm组织架构
if ("awsorg".equals(attributeModel.getType())) {
List<DesignerShapeRelationModel> list = DesignerShapeRelationCache.getListByAttrId(plModel.getId(), "", attributeModel.getKey());
List<String> deptValList = new ArrayList<>();
List<String> positionValList = new ArrayList<>();
List<String> roleValList = new ArrayList<>();
List<String> userValList = new ArrayList<>();
if (list != null && list.size() > 0) {
Set<String> filter = new HashSet<String>();// 去重记录
list.sort((m1, m2) -> {
return m1.getId().compareTo(m2.getId());
});
for (DesignerShapeRelationModel model : list) {
if ("00000000-0000-0000-0000-000000000000".equals(model.getRelationFileId()) && "00000000-0000-0000-0000-000000000000".equals(model.getRelationShapeId())) {
JSONObject object = JSONObject.parseObject(model.getRelationShapeText());
boolean flag = false;
// 查询最新名称
if ("department".equals(object.getString("type"))) {
DepartmentModel dept = SDK.getORGAPI().getDepartmentById(object.getString("id"));
if (dept != null && !filter.contains(dept.getId())) {
deptValList.add(dept.getName());
filter.add(dept.getId());
flag = true;
}
}
if ("position".equals(object.getString("type"))) {// 岗位先用角色代替
RoleModel role = SDK.getORGAPI().getRoleById(object.getString("id"));
if (role != null && !filter.contains(role.getId())) {
positionValList.add(role.getName());
filter.add(role.getId());
flag = true;
}
}
if ("user".equals(object.getString("type"))) {
UserModel user = SDK.getORGAPI().getUser(object.getString("id"));
if (user != null && !filter.contains(user.getUID())) {
userValList.add(user.getUserName());
filter.add(user.getUID());
flag = true;
}
}
if ("role".equals(object.getString("type"))) {
RoleModel role = SDK.getORGAPI().getRoleById(object.getString("id"));
if (role != null && !filter.contains(role.getId())) {
roleValList.add(role.getName());
filter.add(role.getId());
flag = true;
}
}
if (flag) {
attrObj.getJSONArray("value").add(object);
}
}
}
}
// 数据组合
deptValList.addAll(positionValList);
deptValList.addAll(roleValList);
deptValList.addAll(userValList);
inputValue = StringUtils.join(deptValList, ",");
}
inputValue = inputValue.replaceAll("'", "&apos;");
inputValue = inputValue.replaceAll("\"", "&quot;");
attrObj.put("text", inputValue);
result.put(attributeModel.getKey(), attrObj);
}
}
return result;
}
/**
* 根据模型和形状查询所有形状扩展属性
*
* @param uuid
* @param shapeId
* @param shapeObject 当前节点的定义json可以通过PALRepositoryQueryAPIManager.getInstance().getProcessDefinition获取string--转换JSONObject--获取elements--elements.getJSONObject(shapeId)得到
* @return
*/
private Map<String, JSONObject> queryRepositoryShapeAttributeById(String uuid, String shapeId, JSONObject shapeObject) {
Map<String, JSONObject> result = new HashMap<>();
PALRepositoryModel model = PALRepositoryCache.getCache().get(uuid);
String methodId = model.getMethodId();
String wsId = model.getWsId();
JSONObject dataAttributes = ShapeUtil.getCustom(shapeObject.getJSONArray("dataAttributes"));
JSONArray attributesJsonArray = dataAttributes.containsKey("attributesJsonArray") ? dataAttributes.getJSONArray("attributesJsonArray") : new JSONArray(); //扩展属性
// 查询属性数据集合
Map<String, JSONObject> attrDataMap = new HashMap<>();
for (Object obj : attributesJsonArray) {
if (obj == null) {
continue; //删除的节点不存在
}
JSONObject jsonObj = (JSONObject) obj;
if (!jsonObj.containsKey("groupPath") || UtilString.isEmpty(jsonObj.getString("groupPath"))) {
continue; //排除组
}
if (!jsonObj.containsKey("type") || UtilString.isEmpty(jsonObj.getString("type"))) {
continue; //排除无type的
}
attrDataMap.put(jsonObj.getString("key"), jsonObj);
}
// 获取形状的属性配置有效且使用中
List<PALMethodAttributeModel> methodAttrModels = CoeDesignerShapeAPIManager.getInstance().getValidAndUseAttributeModels(wsId, methodId, shapeObject.getString("name"), methodId);
for (PALMethodAttributeModel attributeModel : methodAttrModels) {
// 记录结果集
JSONObject attrObj = new JSONObject();
attrObj.put("ref", attributeModel.getRef());// ref
attrObj.put("type", attributeModel.getType());// 类型 relation string ...
attrObj.put("attrId", attributeModel.getKey());// 属性key
attrObj.put("attrTitle", attributeModel.getNewTitle());// 属性标题
attrObj.put("text", "");// 属性内容单行文本
attrObj.put("value", new JSONArray());// 属性内容集relation或awsorg类型时存储对应的json数据
String key = attributeModel.getKey();
String attrValue = "";
if (attrDataMap.containsKey(key)) {
JSONObject jsonObj = attrDataMap.get(key);
String type = attributeModel.getType();
if ("string".equals(type)) {
attrValue = jsonObj.containsKey("value") ? jsonObj.getString("value") : "";
} else if ("number".equals(type)) {
attrValue = jsonObj.containsKey("value") ? jsonObj.getString("value") : "";
} else if ("textarea".equals(type)) {
attrValue = jsonObj.containsKey("value") ? jsonObj.getString("value") : "";
} else if ("boolean".equals(type)) {
attrValue = jsonObj.containsKey("value") ? jsonObj.getString("value") : "";
} else if ("select".equals(type)) {
attrValue = jsonObj.containsKey("value") ? jsonObj.getString("value") : "";
} else if ("select_m".equals(type)) {
attrValue = jsonObj.containsKey("value") ? jsonObj.getString("value") : "";
String[] values = attrValue.split(",");
List<String> valueList = new ArrayList<>();
for (int i = 0; i < values.length; i++) {
if (!UtilString.isEmpty(values[i])) {
valueList.add(values[i]);
}
}
attrValue = StringUtils.join(valueList, ",");
} else if ("relation".equals(type)) {
List<String> inputValues = new ArrayList<>();
JSONObject refObj = JSONObject.parseObject(attributeModel.getRef());
String relationType = refObj.containsKey("type") ? refObj.getString("type") : "shape";
List<DesignerShapeRelationModel> list = DesignerShapeRelationCache.getListByAttrId(uuid, shapeId, key);
if (list != null && list.size() > 0) {
// 判断是否有重复数据进行重复过滤
Set<String> tempStrs = new HashSet<>();
List<DesignerShapeRelationModel> tempList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
DesignerShapeRelationModel relationModel = list.get(i);
String str = relationModel.getFileId() + relationModel.getShapeId() + relationModel.getAttrId() + relationModel.getRelationFileId() + relationModel.getRelationShapeId();
if (!tempStrs.contains(str)) {
tempList.add(relationModel);
tempStrs.add(str);
}
}
list = tempList;
for (int i = 0; i < list.size(); i++) {
DesignerShapeRelationModel relationModel = list.get(i);
if ("file".equals(relationType)) {// 文件属性
String versionId = UtilString.isEmpty(relationModel.getRelationShapeId()) ? relationModel.getRelationFileId() : relationModel.getRelationShapeId();
if (!UtilString.isEmpty(versionId)) {
List<PALRepositoryModel> list2 = PALRepositoryCache.getByVersionId(wsId, versionId);
for (PALRepositoryModel model2 : list2) {
if (model2.isUse()) {
inputValues.add(model2.getName());
JSONObject tmp = new JSONObject();
tmp.put("fileId", model2.getId());
tmp.put("name", model2.getName());
tmp.put("isFile", true);
attrObj.getJSONArray("value").add(tmp);
break;
}
}
}
} else {// 形状属性
inputValues.add(relationModel.getRelationShapeText());
JSONObject tmp = new JSONObject();
tmp.put("fileId", relationModel.getRelationFileId());
tmp.put("shapeId", relationModel.getRelationShapeId());
tmp.put("name", relationModel.getRelationShapeText());
tmp.put("isFile", false);
attrObj.getJSONArray("value").add(tmp);
}
}
}
attrValue = StringUtils.join(inputValues, ",");
} else if ("awsorg".equals(type)) {// 关联bpm组织架构
List<DesignerShapeRelationModel> list = DesignerShapeRelationCache.getListByAttrId(uuid, shapeId, key);
List<String> awsOrgResultList = new ArrayList<>();
List<String> deptValueList = new ArrayList<>();
List<String> positionValueList = new ArrayList<>();
List<String> userValueList = new ArrayList<>();
List<String> roleValueList = new ArrayList<>();
if (list != null && list.size() > 0) {
for (DesignerShapeRelationModel relationModel : list) {
JSONObject object = JSONObject.parseObject(relationModel.getRelationShapeText());
String orgType = object.getString("type");
String keyId = object.getString("id");
boolean flag = false;
if ("department".equals(orgType)) {// 部门
DepartmentModel deptModel = SDK.getORGAPI().getDepartmentById(keyId);
if (deptModel != null) {
deptValueList.add(deptModel.getName());
flag = true;
}
}
if ("position".equals(orgType)) {// 岗位
RoleModel roleModel = SDK.getORGAPI().getRoleById(keyId);
if (roleModel != null) {
positionValueList.add(roleModel.getName());
flag = true;
}
}
if ("user".equals(orgType)) {// 人员
UserModel userModel = SDK.getORGAPI().getUser(keyId);
if (userModel != null) {
userValueList.add(userModel.getUserName());
flag = true;
}
}
if ("role".equals(orgType)) {// 角色
RoleModel roleModel = SDK.getORGAPI().getRoleById(keyId);
if (roleModel != null) {
roleValueList.add(roleModel.getName());
flag = true;
}
}
if (flag) {
attrObj.getJSONArray("value").add(object);
}
}
}
awsOrgResultList.addAll(deptValueList);
awsOrgResultList.addAll(positionValueList);
awsOrgResultList.addAll(roleValueList);
awsOrgResultList.addAll(userValueList);
attrValue = StringUtils.join(awsOrgResultList, ",");
} else {
attrValue = jsonObj.containsKey("value") ? jsonObj.getString("value") : "";
}
}
attrValue = attrValue.replaceAll("'", "&apos;");
attrValue = attrValue.replaceAll("\"", "&quot;");
attrObj.put("text", attrValue);
result.put(attributeModel.getKey(), attrObj);
}
return result;
}
}

View File

@ -0,0 +1,42 @@
package com.awspaas.user.apps.yili.reportform.util;
import com.actionsoft.bpms.commons.database.RowMapper;
import com.actionsoft.bpms.util.DBSql;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author:Lizj
* @create: 2022-07-20 10:09
* @Description: 工具类
*/
public class TaskUtil {
/**
* @methodName:
* @param:
* @return:
* @description:获取taskId
* @auther: Lizj
* @date: 2022/8/5 16:18
*/
public static String getLastPublishTaskIdByModelId(String repositoryId) {
//String sql = "SELECT pl.TASKID FROM APP_ACT_COE_PAL_PUBLISH p, APP_ACT_COE_PAL_PUBLISH_N pl WHERE pl.pid = p.id AND pl.palrepositoryid = ? ORDER BY publishdate DESC";
String sql = "SELECT pl.TASKID FROM APP_ACT_COE_PAL_PUBLISH p, APP_ACT_COE_PAL_PUBLISH_LIST pl WHERE pl.pid = p.id AND pl.palrepositoryid = ? ORDER BY publishdate DESC";
//String sql = "SELECT * FROM (SELECT TASKID FROM BO_ACT_COE_PUBLISH_N WHERE PUBLISHFILEID= ? ORDER BY CREATEDATE DESC) WHERE ROWNUM = 1";
String taskId = DBSql.getObject(sql, new RowMapper<String>() {
@Override
public String mapRow(ResultSet rs, int arg1) throws SQLException {
return rs.getString(1);
}
}, new Object[] { repositoryId });
return taskId;
}
}

View File

@ -0,0 +1,97 @@
package com.awspaas.user.apps.yili.reportform.util;
import org.apache.commons.collections.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author:Lizj
* @create: 2022-06-24 17:28
* @Description: 树形工具类
*/
public class TreeUtil {
//建立树形结构
//rootSign 根节点标识
//tLevel 节点层级用于指定展示层数
//nodeType 节点类型用于多数据类型合并
public static List<Map> buildTree(List<Map> nodeMaps,String rootSign,String rootNodeType,String tLevel,String nodeType){
List<Map> treeNodes =new ArrayList<>();
for (Map treeNode : getRootNode(nodeMaps,rootSign,rootNodeType)) {
treeNode = buildChildTree(treeNode,nodeMaps,tLevel,nodeType);
treeNodes.add(treeNode);
}
// 子节点进行排序
List<Map> treeNodesSort = Optional.ofNullable(treeNodes)
.map(List::stream)
.orElseGet(Stream::empty)
.sorted(Comparator.comparing(treeNode->Integer.valueOf(treeNode.get("ORDERINDEX").toString())))
.collect(Collectors.toList());
return treeNodesSort;
}
//递归建立子树形结构
private static Map buildChildTree(Map pNode, List<Map> nodeMaps, String tLevel, String nodeType){
List<Map> childNodes =new ArrayList<>();
if (null == tLevel || tLevel.equals("")) {
for (Map nodeMap : nodeMaps) {
if (nodeMap.get("PARENTID").equals(pNode.get("ID"))) {
childNodes.add(buildChildTree(nodeMap,nodeMaps,tLevel,nodeType));
}
}
if(CollectionUtils.isNotEmpty(childNodes)){
List<Map> childNodesSort = Optional.ofNullable(childNodes)
.map(List::stream)
.orElseGet(Stream::empty)
.sorted(Comparator.comparing(childNodesOrigin->Integer.valueOf(childNodesOrigin.get("ORDERINDEX").toString())))
.collect(Collectors.toList());
pNode.put("children",childNodesSort);
}
} else {
for (Map nodeMap : nodeMaps) {
if (Integer.valueOf(tLevel)>=Integer.valueOf(String.valueOf(nodeMap.get("TLEVEL")))) {
if (nodeMap.get("PARENTID").equals(pNode.get("ID"))) {
childNodes.add(buildChildTree(nodeMap,nodeMaps,tLevel,nodeType));
}
}
if (Integer.valueOf(tLevel)<Integer.valueOf(String.valueOf(nodeMap.get("TLEVEL"))) && String.valueOf(nodeMap.get("nodeType")).equals(nodeType)) {
if (nodeMap.get("PARENTID").equals(pNode.get("ID"))) {
childNodes.add(buildChildTree(nodeMap,nodeMaps,tLevel,nodeType));
}
}
}
if(CollectionUtils.isNotEmpty(childNodes)){
List<Map> childNodesSort = Optional.ofNullable(childNodes)
.map(List::stream)
.orElseGet(Stream::empty)
.sorted(Comparator.comparing(childNodesOrigin->Integer.valueOf(childNodesOrigin.get("ORDERINDEX").toString())))
.collect(Collectors.toList());
pNode.put("children",childNodesSort);
}
}
return pNode;
}
//获取根节点
private static List<Map> getRootNode(List<Map> nodeMaps,String rootSign,String rootNodeType) {
List<Map> rootNodes =new ArrayList<>();
for (Map nodeMap : nodeMaps) {
if (null!=rootSign && !rootSign.equals("")) {
if (null!=rootNodeType && !rootNodeType.equals("")) {
if (nodeMap.get("PARENTID").equals(rootSign) && nodeMap.get("nodeType").equals(rootNodeType)) {
rootNodes.add(nodeMap);
}
} else {
if (nodeMap.get("PARENTID").equals(rootSign)) {
rootNodes.add(nodeMap);
}
}
} else {
if (nodeMap.get("nodeType").equals(rootNodeType)) {
rootNodes.add(nodeMap);
}
}
}
return rootNodes;
}
}