From 9a2f1ce7e320d5e5bbd40c2e850ea0dbd1600ddc Mon Sep 17 00:00:00 2001 From: lihongyu <504404568@qq.com> Date: Wed, 9 Nov 2022 15:22:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9C=8B=E6=9D=BF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yili/reportform/aslp/AttrSynAslp.java | 588 ++++++ .../controller/AttrSynController.java | 23 + .../controller/DataViewController.java | 76 + .../controller/FileManagementController.java | 119 ++ .../controller/ProcessPubController.java | 220 ++ .../controller/ToPageController.java | 70 + .../SyncControlPolicyTypeToPalRepository.java | 74 + .../apps/yili/reportform/job/SyncData.java | 676 ++++++ .../yili/reportform/job/SyncGroupCount.java | 392 ++++ .../reportform/job/UpdateKMSFileName.java | 41 + .../apps/yili/reportform/plugin/Plugins.java | 26 + .../reportform/service/AttrSynService.java | 529 +++++ .../reportform/service/DataViewService.java | 1395 +++++++++++++ .../reportform/service/DataViewService2.java | 1380 ++++++++++++ .../service/FileManagementService.java | 1113 ++++++++++ .../reportform/service/ProcessPubService.java | 1859 +++++++++++++++++ .../reportform/service/ToPageService.java | 288 +++ .../apps/yili/reportform/util/CheckUtil.java | 28 + .../yili/reportform/util/GetNodesUtil.java | 118 ++ .../reportform/util/RepositoryAttribute.java | 363 ++++ .../apps/yili/reportform/util/TaskUtil.java | 42 + .../apps/yili/reportform/util/TreeUtil.java | 97 + 22 files changed, 9517 insertions(+) create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/aslp/AttrSynAslp.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/AttrSynController.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/DataViewController.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/FileManagementController.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ProcessPubController.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ToPageController.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncControlPolicyTypeToPalRepository.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncData.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncGroupCount.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/UpdateKMSFileName.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/plugin/Plugins.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/AttrSynService.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService2.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/FileManagementService.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ProcessPubService.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ToPageService.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/CheckUtil.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/GetNodesUtil.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/RepositoryAttribute.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TaskUtil.java create mode 100644 com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TreeUtil.java diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/aslp/AttrSynAslp.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/aslp/AttrSynAslp.java new file mode 100644 index 00000000..f2e1cbd7 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/aslp/AttrSynAslp.java @@ -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:'文件id;json数组[id1,id2,id3]'"} + ) + public ResponseObject call(Map 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 palOrgList = new ArrayList<>(); + Set palOrgIds = new HashSet<>(); + PALRepositoryCache.getAllChildrenModelsByPid(wsId, org, palOrgList, palOrgIds); + SDK.getLogAPI().consoleInfo("org下文件数量:" + palOrgList.size()); + List palRoleFileList = palOrgList.stream().filter(x -> x.getMethodId().equals("org.role")).collect(Collectors.toList()); + SDK.getLogAPI().consoleInfo("角色文件数量:" + palRoleFileList.size());*/ + + //初始化架构、文件、节点 old/new list + ArrayList> oldFrameDataMaps = new ArrayList<>(); + ArrayList> newFrameDataMaps = new ArrayList<>(); + ArrayList> oldFileDataMaps = new ArrayList<>(); + ArrayList> newFileDataMaps = new ArrayList<>(); + ArrayList> oldNodeDataMaps = new ArrayList<>(); + ArrayList> newNodeDataMaps = new ArrayList<>(); + HashMap dataMap = new HashMap<>(); + Object[] sqlParams = new Object[]{}; + //获取底表数据 + List frameIdList = DBSql.getList("SELECT FRAMEID FROM BO_EU_PAL_FRAME", String.class); + SDK.getLogAPI().consoleInfo("架构底表长度:" + frameIdList.size()); + List fileIdList = DBSql.getList("SELECT FILEID FROM BO_EU_PAL_FILE1", String.class); + SDK.getLogAPI().consoleInfo("文件底表长度:" + fileIdList.size()); + List 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 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> nodeElements = new ArrayList<>(); + List 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 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 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 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 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> roleShapes = new ArrayList<>(); + try { + roleShapes = CoeDesignerUtil.getShapeMessageJson4(RELATIONFILEID); + } catch (Exception e) { + SDK.getLogAPI().consoleInfo("获取关联角色文件属性" + "文件ID:" + RELATIONFILEID + "异常"); + } + if (null != roleShapes && !roleShapes.isEmpty()) { + for (Map 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; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/AttrSynController.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/AttrSynController.java new file mode 100644 index 00000000..be0682a1 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/AttrSynController.java @@ -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); + } + +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/DataViewController.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/DataViewController.java new file mode 100644 index 00000000..51d620d4 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/DataViewController.java @@ -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; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/FileManagementController.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/FileManagementController.java new file mode 100644 index 00000000..4eeb8b87 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/FileManagementController.java @@ -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; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ProcessPubController.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ProcessPubController.java new file mode 100644 index 00000000..c82d9281 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ProcessPubController.java @@ -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; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ToPageController.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ToPageController.java new file mode 100644 index 00000000..76565380 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/controller/ToPageController.java @@ -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; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncControlPolicyTypeToPalRepository.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncControlPolicyTypeToPalRepository.java new file mode 100644 index 00000000..a385bd1f --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncControlPolicyTypeToPalRepository.java @@ -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 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+"秒"); + + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncData.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncData.java new file mode 100644 index 00000000..dfc93d20 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncData.java @@ -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 palProcessList = new ArrayList<>(); + Set palProcessIds = new HashSet<>(); + List palOrgList = new ArrayList<>(); + Set palOrgIds = new HashSet<>(); + List palDataList = new ArrayList<>(); + Set palDataIds = new HashSet<>(); + List palItsystemList = new ArrayList<>(); + Set palItsystemIds = new HashSet<>(); + List palControlList = new ArrayList<>(); + Set 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 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 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> oldFrameDataMaps = new ArrayList<>(); + ArrayList> newFrameDataMaps = new ArrayList<>(); + ArrayList> delFrameDataMaps = new ArrayList<>(); + ArrayList fromFrameDataIDMaps = new ArrayList<>(); + ArrayList> oldFileDataMaps = new ArrayList<>(); + ArrayList> newFileDataMaps = new ArrayList<>(); + ArrayList> delFileDataMaps = new ArrayList<>(); + ArrayList fromFileDataIDMaps = new ArrayList<>(); + ArrayList> oldNodeDataMaps = new ArrayList<>(); + ArrayList> newNodeDataMaps = new ArrayList<>(); + ArrayList> delNodeDataMaps = new ArrayList<>(); + ArrayList fromNodeDataIDMaps = new ArrayList<>(); + HashMap dataMap = new HashMap<>(); + Object[] sqlParams = new Object[]{}; + //获取底表数据 + List frameIdList = DBSql.getList("SELECT FRAMEID FROM BO_EU_PAL_FRAME", String.class); + SDK.getLogAPI().consoleInfo("架构底表长度:" + frameIdList.size()); + List fileIdList = DBSql.getList("SELECT FILEID FROM BO_EU_PAL_FILE1", String.class); + SDK.getLogAPI().consoleInfo("文件底表长度:" + fileIdList.size()); + List 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> 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 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 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 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 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 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 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> roleShapes = new ArrayList<>(); + try { + roleShapes = CoeDesignerUtil.getShapeMessageJson4(RELATIONFILEID); + } catch (Exception e) { + + //SDK.getLogAPI().consoleInfo("获取关联角色文件属性"+"文件ID:"+RELATIONFILEID+"异常"); + } + if (null != roleShapes && !roleShapes.isEmpty()) { + for (Map 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)); + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncGroupCount.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncGroupCount.java new file mode 100644 index 00000000..3b44476e --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/SyncGroupCount.java @@ -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> oldDataMaps = new ArrayList<>(); + ArrayList> newDataMaps = new ArrayList<>(); + HashMap 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 frameMaps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMELEVEL,FRAMEPARENTID,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME"); + List 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 nodeMaps = DBSql.getMaps("SELECT NODEID,NODETYPE,PLID,ITSYSVAL FROM BO_EU_PAL_FILENODE5"); + + //更新/新增文件数量 + ArrayList 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 frameList = new ArrayList<>(); + String hasRoot = ""; + List 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 PoCFileMaps = new ArrayList<>(); + ArrayList KPIFileMaps = new ArrayList<>(); + ArrayList 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 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 frameHeadRowMaps = DBSql.getMaps("SELECT FRAMEID FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL"); + List deptHeadRowMaps = DBSql.getMaps("SELECT DEPTID FROM BO_EU_DEPT_ABBREVIATION"); + ArrayList deptIDList = new ArrayList<>(); + ArrayList fieldList = new ArrayList<>(); + if (null!=frameHeadRowMaps && !frameHeadRowMaps.isEmpty()) { + for (RowMap frameHeadRowMap : frameHeadRowMaps) { + replyCount = 0; + String FRAMEID = frameHeadRowMap.getString("FRAMEID"); + fieldList = new ArrayList(); + 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(); + 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)); + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/UpdateKMSFileName.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/UpdateKMSFileName.java new file mode 100644 index 00000000..51100daf --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/job/UpdateKMSFileName.java @@ -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 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+"秒"); + + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/plugin/Plugins.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/plugin/Plugins.java new file mode 100644 index 00000000..993c3fb3 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/plugin/Plugins.java @@ -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 register(AppContext context) { + List list = new ArrayList(); + // 注册ASLP + list.add(new ASLPPluginProfile("AttrSynAslp", AttrSynAslp.class.getName(), "增量同步数据", (HttpASLP)null)); + return list; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/AttrSynService.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/AttrSynService.java new file mode 100644 index 00000000..1c2062b5 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/AttrSynService.java @@ -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 palOrgList = new ArrayList<>(); + Set 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> oldFrameDataMaps = new ArrayList<>(); + ArrayList> newFrameDataMaps = new ArrayList<>(); + ArrayList> oldFileDataMaps = new ArrayList<>(); + ArrayList> newFileDataMaps = new ArrayList<>(); + ArrayList> oldNodeDataMaps = new ArrayList<>(); + ArrayList> newNodeDataMaps = new ArrayList<>(); + HashMap dataMap = new HashMap<>(); + Object[] sqlParams = new Object[]{}; + //获取底表数据 + List frameIdList = DBSql.getList("SELECT FRAMEID FROM BO_EU_PAL_FRAME", String.class); + Set frameSet = frameIdList.stream().collect(Collectors.toSet()); + List fileIdList = DBSql.getList("SELECT FILEID FROM BO_EU_PAL_FILE1", String.class); + Set fileSet = fileIdList.stream().collect(Collectors.toSet()); + List nodeIdList = DBSql.getList("SELECT NODEID FROM BO_EU_PAL_FILENODE5", String.class); + Set 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 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 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 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> nodeElements = CoeDesignerUtil.getShapeMessageJson4(fileIdString); + if (null != nodeElements && !nodeElements.isEmpty()) { + for (Map 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> nodeElements = CoeDesignerUtil.getShapeMessageJson4(fileIdString); + if (null != nodeElements && !nodeElements.isEmpty()) { + for (Map 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> roleShapes = CoeDesignerUtil.getShapeMessageJson4(model.getId()); + if (null!=roleShapes && !roleShapes.isEmpty()) { + for (Map 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(); + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService.java new file mode 100644 index 00000000..398c5a03 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService.java @@ -0,0 +1,1395 @@ +package com.awspaas.user.apps.yili.reportform.service; + +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; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.TreeSet; +import java.util.stream.Collectors; + +import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache; +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.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.model.PALRepositoryModel; +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.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil; +import com.awspaas.user.apps.yili.reportform.util.RepositoryAttribute; +import com.awspaas.user.apps.yili.reportform.util.TreeUtil; + +/** + * @author:Lizj + * @create: 2022-07-11 14:04 + * @Description: 个人/部门视图 + */ +@SuppressWarnings("all") +public class DataViewService extends ActionWeb { + + UserContext _uc; + + public DataViewService(UserContext uc) { + super(uc); + _uc = uc; + } + + /** + * @methodName: + * @param: + * @return: + * @description:个人视图筛选条件 + * @auther: Lizj + * @date: 2022/7/11 14:11 + */ + public String queryTermsPerson(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + // 基本信息 + // 当前登录信息 + ArrayList currentLoginMaps = new ArrayList<>(); + LinkedHashMap currentLoginMap = new LinkedHashMap<>(); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title", "账号"); + currentLoginMap.put("text", uc.getUserModel().getUID()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title", "姓名"); + currentLoginMap.put("text", uc.getUserModel().getUserName()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title", "部门"); + currentLoginMap.put("text", uc.getDepartmentModel().getName()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title", "岗位"); + currentLoginMap.put("text", uc.getUserModel().getPositionName()); + currentLoginMaps.add(currentLoginMap); + ro.put("personInfos", currentLoginMaps); + return ro.toString(); + } + + public String queryTermsPosition(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + // 岗位查询 + Object[] sqlParams = new Object[] {}; + String departmentById = uc.getDepartmentModel().getId(); + sqlParams = new Object[] { departmentById }; + List positionRowMapsOrg = DBSql.getMaps( + "SELECT ID, POSITION_NO, POSITION_NAME, DEPARTMENTID, ORDERINDEX FROM ORGUSER WHERE POSITION_NO IS NOT NULL AND DEPARTMENTID=?", + sqlParams); + List positionRowMaps = positionRowMapsOrg.stream() + .collect(collectingAndThen( + toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getString("POSITION_NO")))), + ArrayList::new)); + List deptMaps = DBSql.getMaps( + "SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + " WHERE ID=?", + sqlParams); + // demo3 + // 3e74f14d-852f-4f6f-a809-08a56697f103 + // 本地 + // d7087d5b-ab29-4514-a7e7-79379f6842a2 + // 正式 + // 8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + if (null != deptMaps && !deptMaps.isEmpty()) { + for (RowMap deptMap : deptMaps) { + if (null != positionRowMaps && !positionRowMaps.isEmpty()) { + for (RowMap positionRowMap : positionRowMaps) { + // String userID = positionRowMap.getString("ID"); + String ID = positionRowMap.getString("POSITION_NO"); + String PARENTID = positionRowMap.getString("DEPARTMENTID"); + String name = positionRowMap.getString("POSITION_NAME"); + String ORDERINDEX = positionRowMap.getString("ORDERINDEX"); + String TLEVEL = String.valueOf(Integer.valueOf(deptMap.getString("LAYER")) + 1); + HashMap deptNode = new HashMap<>(); + nodeType = "position"; + // deptNode.put("userID",userID); + deptNode.put("ID", ID); + deptNode.put("PARENTID", PARENTID); + deptNode.put("name", name); + deptNode.put("ORDERINDEX", ORDERINDEX); + deptNode.put("TLEVEL", TLEVEL); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + } + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID", deptMap.getString("ID")); + deptNode.put("PARENTID", deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name", deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX", deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL", deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + } + nodeType = "position"; + List deptTreeNodes = TreeUtil.buildTree(deptNodes, null, "dept", null, nodeType); + ro.put("positionTree", deptTreeNodes); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:个人视图 + * @auther: Lizj + * @date: 2022/7/11 14:14 + */ + public String personalView(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String positionKeys = null; + String positionVals = null; + ArrayList positionIDs = new ArrayList<>(); + Integer i = -1; + while (true) { + i++; + positionKeys = "position" + "[" + i + "]"; + positionVals = params.get(positionKeys); + if (null != positionVals && !positionVals.equals("")) { + positionIDs.add(positionVals); + } else { + break; + } + } + String uid = params.get("uid"); + String sid = _uc.getSessionId(); + // 定义用户/岗位流程list,用户/岗位流程map + ArrayList UoPProcessMaps = new ArrayList<>(); + HashMap UoPProcessMap = new HashMap<>(); + ArrayList nodeMaps = new ArrayList<>(); + ArrayList nodeAMaps = new ArrayList<>(); + ArrayList nodeBMaps = new ArrayList<>(); + HashMap nodeMap = new HashMap<>(); + Map nodeTempMap = new HashMap<>(); + ArrayList reRegulationMaps = new ArrayList<>(); + ArrayList reFormMaps = new ArrayList<>(); + ArrayList reIO_L4Maps = new ArrayList<>(); + ArrayList reYSMaps = new ArrayList<>(); + ArrayList tempMaps = new ArrayList<>(); + LinkedList linksMaps = new LinkedList<>(); + HashMap linksMap = new HashMap<>(); + String path = ""; + PALRepositoryModel model = null; + String taskId = ""; + String fileType = ""; + Integer totalNum = 0; + Integer aNum = 0; + Integer bNum = 0; + Object[] sqlParams = new Object[] {}; + List fileRowMaps = DBSql.getMaps( + "SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,RELEVANTFILE,SUPPORTFILE,PROCESSKPI FROM BO_EU_PAL_FILE1 WHERE PLMETHODID='process.epc' AND FILESTATE='1' ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) ASC"); + // AND FILESTATE='1' ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) + // ASC + if (null != positionIDs && !positionIDs.isEmpty()) { + UoPProcessMaps = new ArrayList(); + nodeMaps = new ArrayList(); + linksMaps = new LinkedList(); + UoPProcessMap = new HashMap(); + String rootuuId = SDK.getRuleAPI().executeAtScript("@uuid()"); + UoPProcessMap.put("id", rootuuId); + UoPProcessMap.put("text", "岗位流程"); + UoPProcessMap.put("fileType", "UoPProcess"); + UoPProcessMaps.add(UoPProcessMap); + List nodeRowMaps = DBSql.getMaps( + "SELECT NODEID,NODENAME,NODETYPE,PLID,PLNAME,ACTIVITYNUMBER,ACTIVITYDESC,ROLE,ROLENAME,POST,POSTNAME FROM BO_EU_PAL_FILENODE5"); + ArrayList positionNameList = new ArrayList<>(); + for (String positionID : positionIDs) { + sqlParams = new Object[] { positionID }; + RowMap POSITIONMap = DBSql.getMap("SELECT POSITION_NAME FROM ORGUSER WHERE POSITION_NO=?", sqlParams); + String POSITION_NAME = null; + if (null != POSITIONMap && !POSITIONMap.isEmpty()) { + POSITION_NAME = POSITIONMap.getString("POSITION_NAME"); + positionNameList.add(POSITION_NAME); + } + } + if (null != fileRowMaps && !fileRowMaps.isEmpty()) { + for (RowMap fileRowMap : fileRowMaps) { + String FILEID = fileRowMap.getString("FILEID"); + if (null != nodeRowMaps && !nodeRowMaps.isEmpty()) { + for (RowMap nodeRowMap : nodeRowMaps) { + String PLID = nodeRowMap.getString("PLID"); + if (FILEID.equals(PLID)) { + for (String positionName : positionNameList) { + // if (nodeRowMap.getString("ROLE").equals(positionID) || + // nodeRowMap.getString("POST").equals(positionID)) { + if (nodeRowMap.getString("POST").contains(positionName)) { + nodeMap = new HashMap(); + model = PALRepositoryCache.getCache().get(nodeRowMap.getString("PLID")); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + "&" + + "uuid=" + nodeRowMap.getString("PLID") + "&" + "sid=" + sid + "&" + + "taskId=" + taskId; + nodeMap.put("NODENAME", nodeRowMap.getString("NODENAME")); + nodeMap.put("PLNAME", nodeRowMap.getString("PLNAME")); + nodeMap.put("NODETYPE", nodeRowMap.getString("NODETYPE")); + nodeMap.put("path", path); + nodeMap.put("ACTIVITYNUMBER", nodeRowMap.getString("ACTIVITYNUMBER")); + nodeMap.put("ACTIVITYDESC", nodeRowMap.getString("ACTIVITYDESC")); + nodeMap.put("ROLENAME", nodeRowMap.getString("ROLE")); + nodeMap.put("POSTNAME", nodeRowMap.getString("POST")); + nodeMaps.add(nodeMap); + + UoPProcessMap = new HashMap(); + fileType = "process"; + model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID")); + if (null != model) { + 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; + UoPProcessMap.put("id", fileRowMap.getString("FILEID")); + UoPProcessMap.put("text", fileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("RELEVANTFILE", fileRowMap.getString("RELEVANTFILE")); + UoPProcessMap.put("SUPPORTFILE", fileRowMap.getString("SUPPORTFILE")); + UoPProcessMap.put("PROCESSKPI", fileRowMap.getString("PROCESSKPI")); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", rootuuId); + UoPProcessMaps.add(UoPProcessMap); + } + } + } + } + } + } + } + UoPProcessMaps = UoPProcessMaps.stream() + .collect(collectingAndThen( + toCollection(() -> new TreeSet<>(Comparator.comparing(o -> String.valueOf(o.get("id"))))), + ArrayList::new)); + tempMaps = new ArrayList(); + for (Map uoPProcessMap : UoPProcessMaps) { + reRegulationMaps = new ArrayList<>(); + reFormMaps = new ArrayList<>(); + reIO_L4Maps = new ArrayList<>(); + reYSMaps = new ArrayList<>(); + String FILEID = String.valueOf(uoPProcessMap.get("id")); + fileType = String.valueOf(uoPProcessMap.get("fileType")); + if (fileType.equals("process")) { + String RELEVANTFILE = String.valueOf(uoPProcessMap.get("RELEVANTFILE")); + String SUPPORTFILE = String.valueOf(uoPProcessMap.get("SUPPORTFILE")); + String PROCESSKPI = String.valueOf(uoPProcessMap.get("PROCESSKPI")); + if (null != RELEVANTFILE && !RELEVANTFILE.equals("")) { + String[] reFileIDs = RELEVANTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[] { reFileID }; + RowMap refileRowMap = DBSql.getMap( + "SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", + sqlParams); + if (null != refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && (refileRowMap.getString("POLICYTYPE").equals("regulation") + || null == refileRowMap.getString("POLICYTYPE") + || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + 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=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null != SUPPORTFILE && !SUPPORTFILE.equals("")) { + String[] reFileIDs = SUPPORTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[] { reFileID }; + RowMap refileRowMap = DBSql.getMap( + "SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", + sqlParams); + if (null != refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && (refileRowMap.getString("POLICYTYPE").equals("regulation") + || null == refileRowMap.getString("POLICYTYPE") + || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null != PROCESSKPI && !PROCESSKPI.equals("")) { + String[] PROCESSKPIIDS = PROCESSKPI.split(" "); + for (String PROCESSKPIID : PROCESSKPIIDS) { + sqlParams = new Object[] { PROCESSKPIID }; + RowMap refileRowMap = DBSql.getMap( + "SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", + sqlParams); + if (null != refileRowMap && !refileRowMap.isEmpty()) { + UoPProcessMap = new HashMap(); + fileType = "processKPIFile"; + model = PALRepositoryCache.getCache().get(PROCESSKPIID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + "&" + + "uuid=" + PROCESSKPIID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reProcessKPI"); + reYSMaps.add(UoPProcessMap); + } + } + } + if (null != reRegulationMaps && !reRegulationMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reRegulation"); + UoPProcessMap.put("text", "相关制度"); + UoPProcessMap.put("fileType", "reRegulation"); + UoPProcessMap.put("PARENTID", FILEID); + reRegulationMaps.add(UoPProcessMap); + } + if (null != reFormMaps && !reFormMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reForm"); + UoPProcessMap.put("text", "相关表单"); + UoPProcessMap.put("fileType", "reForm"); + UoPProcessMap.put("PARENTID", FILEID); + reFormMaps.add(UoPProcessMap); + } + if (null != reIO_L4Maps && !reIO_L4Maps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reI/O_L4"); + UoPProcessMap.put("text", "相关操作指导"); + UoPProcessMap.put("fileType", "reI/O_L4"); + UoPProcessMap.put("PARENTID", FILEID); + reIO_L4Maps.add(UoPProcessMap); + } + if (null != reYSMaps && !reYSMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reYS"); + UoPProcessMap.put("text", "相关要素"); + UoPProcessMap.put("fileType", "reYS"); + UoPProcessMap.put("PARENTID", FILEID); + reYSMaps.add(UoPProcessMap); + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reProcessKPI"); + UoPProcessMap.put("text", "绩效"); + UoPProcessMap.put("fileType", "reProcessKPI"); + UoPProcessMap.put("PARENTID", FILEID + "reYS"); + reYSMaps.add(UoPProcessMap); + } + tempMaps.addAll(reRegulationMaps); + tempMaps.addAll(reFormMaps); + tempMaps.addAll(reIO_L4Maps); + tempMaps.addAll(reYSMaps); + } + } + UoPProcessMaps.addAll(tempMaps); + if (UoPProcessMaps.size() > 1) { + for (Map uoPProcessMap : UoPProcessMaps) { + if (String.valueOf(uoPProcessMap.get("fileType")).equals("UoPProcess")) { + ro.put("rootId", String.valueOf(uoPProcessMap.get("id"))); + } + } + ro.put("nodes", UoPProcessMaps); + for (Map uoPProcessMap : UoPProcessMaps) { + String id = String.valueOf(uoPProcessMap.get("id")); + for (Map pProcessMap : UoPProcessMaps) { + String PARENTID = String.valueOf(pProcessMap.get("PARENTID")); + if (id.equals(PARENTID)) { + String childID = String.valueOf(pProcessMap.get("id")); + linksMap = new LinkedHashMap(); + linksMap.put("from", id); + linksMap.put("to", childID); + linksMaps.add(linksMap); + } + } + } + ro.put("links", linksMaps); + } else { + ro.put("rootId", ""); + UoPProcessMaps = new ArrayList(); + ro.put("nodes", UoPProcessMaps); + linksMaps = new LinkedList(); + ro.put("links", linksMaps); + ro.info("您所查询的岗位暂无需执行的流程"); + + } + nodeAMaps = new ArrayList<>(); + nodeBMaps = new ArrayList<>(); + if (null != nodeMaps && !nodeMaps.isEmpty()) { + for (Map nodeReturnMap : nodeMaps) { + nodeTempMap = new HashMap(); + String NODETYPE = String.valueOf(nodeReturnMap.get("NODETYPE")); + if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node")) { + nodeTempMap = nodeReturnMap; + nodeAMaps.add(nodeTempMap); + } else if (NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) { + nodeTempMap = nodeReturnMap; + nodeBMaps.add(nodeTempMap); + } + } + } + totalNum = nodeMaps.size(); + aNum = nodeAMaps.size(); + bNum = nodeBMaps.size(); + ro.put("totalNodeNum", totalNum); + ro.put("totalNode", nodeMaps); + ro.put("typeANum", aNum); + ro.put("typeA", nodeAMaps); + ro.put("typeBNum", bNum); + ro.put("typeB", nodeBMaps); + } else { + UoPProcessMaps = new ArrayList(); + nodeMaps = new ArrayList(); + linksMaps = new LinkedList(); + UoPProcessMap = new HashMap(); + String rootuuId = SDK.getRuleAPI().executeAtScript("@uuid()"); + UoPProcessMap.put("id", rootuuId); + UoPProcessMap.put("text", "我的流程"); + UoPProcessMap.put("fileType", "UoPProcess"); + UoPProcessMaps.add(UoPProcessMap); + List nodeRowMaps = DBSql.getMaps( + "SELECT NODEID,NODENAME,NODETYPE,PLID,PLNAME,ACTIVITYNUMBER,ACTIVITYDESC,ROLE,ROLENAME,POST,POSTNAME FROM BO_EU_PAL_FILENODE5"); + String positionID = UserContext.fromUID(uid).getUserModel().getPositionNo(); + String POSITION_NAME = null; + if (null != positionID && !positionID.equals("")) { + sqlParams = new Object[] { positionID }; + RowMap POSITIONMap = DBSql.getMap("SELECT POSITION_NAME FROM ORGUSER WHERE POSITION_NO=?", sqlParams); + if (null != POSITIONMap && !POSITIONMap.isEmpty()) { + POSITION_NAME = POSITIONMap.getString("POSITION_NAME"); + if (null != fileRowMaps && !fileRowMaps.isEmpty()) { + for (RowMap fileRowMap : fileRowMaps) { + String FILEID = fileRowMap.getString("FILEID"); + for (RowMap nodeRowMap : nodeRowMaps) { + String PLID = nodeRowMap.getString("PLID"); + if (FILEID.equals(PLID)) { + if (nodeRowMap.getString("POST").contains(POSITION_NAME)) { + // if (nodeRowMap.getString("ROLE").equals(positionID) || + // nodeRowMap.getString("POST").equals(positionID)) { + nodeMap = new HashMap(); + model = PALRepositoryCache.getCache().get(nodeRowMap.getString("PLID")); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + "&" + + "uuid=" + nodeRowMap.getString("PLID") + "&" + "sid=" + sid + "&" + + "taskId=" + taskId; + nodeMap.put("NODENAME", nodeRowMap.getString("NODENAME")); + nodeMap.put("PLNAME", nodeRowMap.getString("PLNAME")); + nodeMap.put("NODETYPE", nodeRowMap.getString("NODETYPE")); + nodeMap.put("path", path); + nodeMap.put("ACTIVITYNUMBER", nodeRowMap.getString("ACTIVITYNUMBER")); + nodeMap.put("ACTIVITYDESC", nodeRowMap.getString("ACTIVITYDESC")); + nodeMap.put("ROLENAME", nodeRowMap.getString("ROLE")); + nodeMap.put("POSTNAME", nodeRowMap.getString("POST")); + nodeMaps.add(nodeMap); + + UoPProcessMap = new HashMap(); + fileType = "process"; + model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID")); + if (null != model) { + 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; + UoPProcessMap.put("id", fileRowMap.getString("FILEID")); + UoPProcessMap.put("text", fileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("RELEVANTFILE", fileRowMap.getString("RELEVANTFILE")); + UoPProcessMap.put("SUPPORTFILE", fileRowMap.getString("SUPPORTFILE")); + UoPProcessMap.put("PROCESSKPI", fileRowMap.getString("PROCESSKPI")); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", rootuuId); + UoPProcessMaps.add(UoPProcessMap); + } + } + } + } + } + } + } else { + ro.info("当前用户未设置岗位"); + } + UoPProcessMaps = UoPProcessMaps.stream() + .collect(collectingAndThen( + toCollection(() -> new TreeSet<>(Comparator.comparing(o -> String.valueOf(o.get("id"))))), + ArrayList::new)); + tempMaps = new ArrayList(); + for (Map uoPProcessMap : UoPProcessMaps) { + reRegulationMaps = new ArrayList<>(); + reFormMaps = new ArrayList<>(); + reIO_L4Maps = new ArrayList<>(); + reYSMaps = new ArrayList<>(); + String FILEID = String.valueOf(uoPProcessMap.get("id")); + fileType = String.valueOf(uoPProcessMap.get("fileType")); + if (fileType.equals("process")) { + String RELEVANTFILE = String.valueOf(uoPProcessMap.get("RELEVANTFILE")); + String SUPPORTFILE = String.valueOf(uoPProcessMap.get("SUPPORTFILE")); + String PROCESSKPI = String.valueOf(uoPProcessMap.get("PROCESSKPI")); + if (null != RELEVANTFILE && !RELEVANTFILE.equals("")) { + String[] reFileIDs = RELEVANTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[] { reFileID }; + RowMap refileRowMap = DBSql.getMap( + "SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", + sqlParams); + if (null != refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && (refileRowMap.getString("POLICYTYPE").equals("regulation") + || null == refileRowMap.getString("POLICYTYPE") + || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null != SUPPORTFILE && !SUPPORTFILE.equals("")) { + String[] reFileIDs = SUPPORTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[] { reFileID }; + RowMap refileRowMap = DBSql.getMap( + "SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", + sqlParams); + if (null != refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && (refileRowMap.getString("POLICYTYPE").equals("regulation") + || null == refileRowMap.getString("POLICYTYPE") + || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") + && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + + "&" + "uuid=" + reFileID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null != PROCESSKPI && !PROCESSKPI.equals("")) { + String[] PROCESSKPIIDS = PROCESSKPI.split(" "); + for (String PROCESSKPIID : PROCESSKPIIDS) { + sqlParams = new Object[] { PROCESSKPIID }; + RowMap refileRowMap = DBSql.getMap( + "SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", + sqlParams); + if (null != refileRowMap && !refileRowMap.isEmpty()) { + UoPProcessMap = new HashMap(); + fileType = "processKPIFile"; + model = PALRepositoryCache.getCache().get(PROCESSKPIID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId = getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w" + "?" + "cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open" + "&" + + "uuid=" + PROCESSKPIID + "&" + "sid=" + sid + "&" + "taskId=" + taskId; + UoPProcessMap.put("id", FILEID + refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID + "reProcessKPI"); + reYSMaps.add(UoPProcessMap); + } + } + } + if (null != reRegulationMaps && !reRegulationMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reRegulation"); + UoPProcessMap.put("text", "相关制度"); + UoPProcessMap.put("fileType", "reRegulation"); + UoPProcessMap.put("PARENTID", FILEID); + reRegulationMaps.add(UoPProcessMap); + } + if (null != reFormMaps && !reFormMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reForm"); + UoPProcessMap.put("text", "相关表单"); + UoPProcessMap.put("fileType", "reForm"); + UoPProcessMap.put("PARENTID", FILEID); + reFormMaps.add(UoPProcessMap); + } + if (null != reIO_L4Maps && !reIO_L4Maps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reI/O_L4"); + UoPProcessMap.put("text", "相关操作指导"); + UoPProcessMap.put("fileType", "reI/O_L4"); + UoPProcessMap.put("PARENTID", FILEID); + reIO_L4Maps.add(UoPProcessMap); + } + if (null != reYSMaps && !reYSMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reYS"); + UoPProcessMap.put("text", "相关要素"); + UoPProcessMap.put("fileType", "reYS"); + UoPProcessMap.put("PARENTID", FILEID); + reYSMaps.add(UoPProcessMap); + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID + "reProcessKPI"); + UoPProcessMap.put("text", "绩效"); + UoPProcessMap.put("fileType", "reProcessKPI"); + UoPProcessMap.put("PARENTID", FILEID + "reYS"); + reYSMaps.add(UoPProcessMap); + } + tempMaps.addAll(reRegulationMaps); + tempMaps.addAll(reFormMaps); + tempMaps.addAll(reIO_L4Maps); + tempMaps.addAll(reYSMaps); + } + } + + + + //所有数据 + UoPProcessMaps.addAll(tempMaps); + + + + + if (UoPProcessMaps.size() > 1) { + for (Map uoPProcessMap : UoPProcessMaps) { + if (String.valueOf(uoPProcessMap.get("fileType")).equals("UoPProcess")) { + ro.put("rootId", String.valueOf(uoPProcessMap.get("id"))); + } + } + ro.put("nodes", UoPProcessMaps); + for (Map uoPProcessMap : UoPProcessMaps) { + String id = String.valueOf(uoPProcessMap.get("id")); + for (Map pProcessMap : UoPProcessMaps) { + String PARENTID = String.valueOf(pProcessMap.get("PARENTID")); + if (id.equals(PARENTID)) { + String childID = String.valueOf(pProcessMap.get("id")); + linksMap = new LinkedHashMap(); + linksMap.put("from", id); + linksMap.put("to", childID); + linksMaps.add(linksMap); + } + } + } + ro.put("links", linksMaps); + } else { + ro.put("rootId", ""); + UoPProcessMaps = new ArrayList(); + ro.put("nodes", UoPProcessMaps); + linksMaps = new LinkedList(); + ro.put("links", linksMaps); + ro.info("您所在的岗位暂无需执行的流程"); + } + nodeAMaps = new ArrayList<>(); + nodeBMaps = new ArrayList<>(); + if (null != nodeMaps && !nodeMaps.isEmpty()) { + for (Map nodeReturnMap : nodeMaps) { + nodeTempMap = new HashMap(); + String NODETYPE = String.valueOf(nodeReturnMap.get("NODETYPE")); + if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node")) { + nodeTempMap.putAll(nodeReturnMap); + nodeAMaps.add(nodeTempMap); + } else if (NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) { + nodeTempMap.putAll(nodeReturnMap); + nodeBMaps.add(nodeTempMap); + } + } + } + totalNum = nodeMaps.size(); + aNum = nodeAMaps.size(); + bNum = nodeBMaps.size(); + ro.put("totalNodeNum", totalNum); + ro.put("totalNode", nodeMaps); + ro.put("typeANum", aNum); + ro.put("typeA", nodeAMaps); + ro.put("typeBNum", bNum); + ro.put("typeB", nodeBMaps); + } + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:部门视图筛选条件:部门 + * @auther: Lizj + * @date: 2022/7/11 14:14 + */ + public String queryTermsDept(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + + // 当前登录信息 + ArrayList currentLoginMaps = new ArrayList<>(); + LinkedHashMap currentLoginMap = new LinkedHashMap<>(); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title", "账号"); + currentLoginMap.put("text", uc.getUserModel().getUID()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title", "姓名"); + currentLoginMap.put("text", uc.getUserModel().getUserName()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title", "部门"); + currentLoginMap.put("text", uc.getDepartmentModel().getPathNameOfCache()); + currentLoginMaps.add(currentLoginMap); + ro.put("personInfos", currentLoginMaps); + + // 部门查询 + List deptMaps = DBSql + .getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE COMPANYID='8911e732-b42a-4556-853f-ad32761bcbee' AND CLOSED='0' AND DEPARTMENTNAME NOT IN ('澳优','系统管理','项目开发人员部门','奶酪事业部','离退人员部门','集团领导')"); + // demo3 + // 3e74f14d-852f-4f6f-a809-08a56697f103 + // 本地 + // d7087d5b-ab29-4514-a7e7-79379f6842a2 + // 正式 + // 8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + for (RowMap deptMap : deptMaps) { + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID", deptMap.getString("ID")); + deptNode.put("PARENTID", deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name", deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX", deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL", deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + List deptTreeNodes = TreeUtil.buildTree(deptNodes, "0", "dept", "3", null); + ro.put("deptTree", deptTreeNodes); + // 文件类型查询 + HashMap fileType = new HashMap<>(); + ArrayList fileTypes = new ArrayList<>(); + fileType = new HashMap(); + fileType.put("termsKey", "totalFile"); + fileType.put("termsVal", "全部"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey", "processFile"); + fileType.put("termsVal", "流程"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey", "policyFile"); + fileType.put("termsVal", "制度"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey", "guideFile"); + fileType.put("termsVal", "操作指导"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey", "formFile"); + fileType.put("termsVal", "表单/模板"); + fileTypes.add(fileType); + ro.put("fileTypes", fileTypes); + + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:部门视图 + * @auther: Lizj + * @date: 2022/7/11 14:14 + */ + + public String deptView(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + try { + List fileRowMaps = null; + String sid = _uc.getSessionId(); + String deptString = params.get("dept"); + String fileType = params.get("fileType"); + ArrayList deptIDList = new ArrayList<>(); + String sql = "SELECT ID AS FILEID,PLNAME,PLPARENTID,PLMETHODID,PLLEVEL,PLORDERINDEX,EXT3 as POLICYTYPE FROM APP_ACT_COE_PAL_REPOSITORY WHERE ISPUBLISH = 1 AND ISUSE =1 AND ISSTOP =0 AND (PLMETHODID='process.epc' OR PLMETHODID='control.policy' OR PLMETHODID='process.flowchart')"; + ArrayList fileHandleRowMaps = new ArrayList<>(); + Map reFileMap = new HashMap<>(); + RowMap reFileRowMap = new RowMap(reFileMap); + long startTime = System.currentTimeMillis(); + List fileListMap = DBSql.getMaps(sql); + + String dempId = ""; + if (null == deptString || "".equals(deptString)) { + String ucDeptID = _uc.getUserModel().getDepartmentId(); + String pathIdOfCache = _uc.getDepartmentModel().getPathIdOfCache(); + + // 正式环境 伊利集团总部id 5c8e2d14-25a8-4baf-aa3a-344064007ef3 + if (pathIdOfCache.contains("5c8e2d14-25a8-4baf-aa3a-344064007ef3")) { + ucDeptID = GetNodesUtil.getParentDept(ucDeptID, 2); + } + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(ucDeptID, deptIDList); + if (deptIDList != null) { + deptString = deptIDList.toString(); + } + } + for (RowMap rowMap : fileListMap) { + String id = rowMap.getString("FILEID"); + PALRepositoryModel model = PALRepositoryCache.getCache().get(id); + Integer PLLEVEL = model.getLevel(); + String methodId = model.getMethodId(); + Map queryRepositoryAttributeById = new RepositoryAttribute() + .queryRepositoryAttributeById(model.getId()); + if (null != queryRepositoryAttributeById && !queryRepositoryAttributeById.isEmpty()) { + // 发布部门 + JSONObject Issuing_department = queryRepositoryAttributeById.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)); + dempId = PUBDEPTJO.getString("id"); + if (deptString.contains(dempId)) { + // 默认添加所在部门的所有文件 + fileHandleRowMaps.add(rowMap); + if ("process.epc".equals(methodId) || "process.flowchart".equals(methodId)) { + // 支持文件 + getArrt("support_files", model, dempId, PLLEVEL, reFileRowMap, + fileHandleRowMaps); + // 相关文件 + getArrt("R_relevant_flies", model, dempId, PLLEVEL, reFileRowMap, + fileHandleRowMaps); + } else if ("control.policy".equals(methodId)) { + // 支持文件 + getArrt("support_files", model, dempId, PLLEVEL, reFileRowMap, + fileHandleRowMaps); + // 相关文件 + getArrt("related_files", model, dempId, PLLEVEL, reFileRowMap, + fileHandleRowMaps); + } + } + + } + } + } + + } + } + + fileRowMaps = fileHandleRowMaps; + long endTime = System.currentTimeMillis(); + // System.err.println("------测试1---------" + fileHandleRowMaps); + // System.err.println("------测试2---------" + fileRowMaps); + // System.out.println("代码段执行时间:" + (endTime - startTime) + "ms"); + if (null != fileRowMaps && fileRowMaps.size() > 0) { + 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")) { + fileHandleRowMaps.add(fileRowMap); + } + } + // && fileRowMap.getString("POLICYTYPE").equals("regulation") + if (fileType.equals("guideFile")) { + if (fileRowMap.getString("PLMETHODID").equals("control.policy")) { + 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); + if (null != reFileModel) { + 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", dempId); + reFileMap.put("PLLEVEL", (PLLEVEL - 1)); + reFileMap.put("PLORDERINDEX", reFileModel.getOrderIndex()); + reFileRowMap = new RowMap(reFileMap); + fileHandleRowMaps.add(reFileRowMap); + } + } + } + } + + if (fileType.equals("totalFile")) { + fileHandleRowMaps.add(fileRowMap); + } + + } + } + } else { + //System.err.println("====执行2====" + fileHandleRowMaps); + // getind(dempId, fileType, fileRowMaps, fileHandleRowMaps, reFileMap, + // reFileRowMap); + } + fileRowMaps = fileHandleRowMaps; + // 遍历选择的结果 + List fileMaps = new ArrayList<>(); + List frameRowMaps = new ArrayList<>(); + HashMap fileMap = new HashMap<>(); + HashMap frameMap = new HashMap<>(); + String nodeType = null; + LinkedHashMap filesCount = new LinkedHashMap<>(); + Integer processFileNum = 0; + Integer policyFileNum = 0; + Integer guideFileNum = 0; + Integer formFileNum = 0; + String path = ""; + PALRepositoryModel model = null; + String taskId = ""; + if (null != fileRowMaps && !fileRowMaps.isEmpty()) { + List frameIDs = new ArrayList<>(); + for (RowMap fileRowMap : fileRowMaps) { + String PLPARENTID = fileRowMap.getString("PLPARENTID"); + PALRepositoryModel reFileModel = PALRepositoryCache.getCache().get(PLPARENTID); + if (null != reFileModel) { + String PLMETHODID = reFileModel.getMethodId(); + if (PLMETHODID.equals("process.framework")) { + frameIDs.add(PLPARENTID); + } else { + String rePPLPARENTID = reFileModel.getParentId(); + frameIDs.add(rePPLPARENTID); + } + } + } + frameIDs = frameIDs.stream().distinct().collect(Collectors.toList()); + for (String frameID : frameIDs) { + frameRowMaps = GetNodesUtil.getParentFrame(frameID, frameRowMaps); + } + frameRowMaps = frameRowMaps.stream() + .collect(collectingAndThen( + toCollection( + () -> new TreeSet<>(Comparator.comparing(o -> o.getString("FRAMEID")))), + ArrayList::new)); + for (RowMap frameRowMap : frameRowMaps) { + frameMap = new HashMap(); + nodeType = "frame"; + frameMap.put("ID", frameRowMap.getString("FRAMEID")); + frameMap.put("PARENTID", frameRowMap.getString("FRAMEPARENTID")); + frameMap.put("name", frameRowMap.getString("FRAMENAME")); + frameMap.put("ORDERINDEX", frameRowMap.getString("FRAMEORDERINDEX")); + frameMap.put("TLEVEL", frameRowMap.getString("FRAMELEVEL")); + frameMap.put("nodeType", nodeType); + fileMaps.add(frameMap); + } + /// System.err.println("=====fileRowMaps1=====>" + fileRowMaps); + + for (RowMap fileRowMap : fileRowMaps) { + fileMap = new HashMap(); + if (fileRowMap.getString("PLMETHODID").equals("process.epc") + || fileRowMap.getString("PLMETHODID").equals("process.flowchart")) { + fileMap.put("fileType", "processFile"); + processFileNum += 1; + } 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"); + policyFileNum += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("control.policy") + && fileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + fileMap.put("fileType", "guideFile"); + guideFileNum += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("data.form")) { + fileMap.put("fileType", "formFile"); + formFileNum += 1; + } + model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID")); + if (null != model) { + 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); + fileMaps.add(fileMap); + } + // System.err.println("=====fileMaps=====>" + fileMaps); + // System.err.println("=====返回参数4======>" + ro.toString()); + List fileTreeNodes = TreeUtil.buildTree(fileMaps, "process", "frame", null, null); + filesCount = new LinkedHashMap<>(); + filesCount.put("processFileNum", processFileNum); + filesCount.put("policyFileNum", policyFileNum); + filesCount.put("guideFileNum", guideFileNum); + filesCount.put("formFileNum", formFileNum); + ro.put("fileMaps", fileTreeNodes); + ro.put("filesCount", filesCount); + return ro.toString(); + } else { + filesCount = new LinkedHashMap<>(); + filesCount.put("processFileNum", processFileNum); + filesCount.put("policyFileNum", policyFileNum); + filesCount.put("guideFileNum", guideFileNum); + filesCount.put("formFileNum", formFileNum); + ro.ok("暂无文件"); + ro.put("fileMaps", fileMaps); + ro.put("filesCount", filesCount); + return ro.toString(); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + // System.err.println("====执行完毕====>"); + } + return ro.toString(); + + } + //查询所有文件 + public void getind(String dempId,String fileType,List fileRowMaps,ArrayList fileHandleRowMaps,Map reFileMap,RowMap reFileRowMap) { + 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")) { + try { + BaseModel defineModel = CoeDesignerAPIManager.getInstance() + .getDefinition(fileRowMap.getString("FILEID"), 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); + if ("regulation".equals(shape1.getString("name"))) { + fileRowMap.put("POLICYTYPE", "regulation"); + fileHandleRowMaps.add(fileRowMap); + } + } + + } + } catch (Exception e) { + // TODO: handle exception + } + + } + } + // && fileRowMap.getString("POLICYTYPE").equals("regulation") + if (fileType.equals("guideFile")) { + if (fileRowMap.getString("PLMETHODID").equals("control.policy")) { + try { + BaseModel defineModel = CoeDesignerAPIManager.getInstance() + .getDefinition(fileRowMap.getString("FILEID"), 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); + if ("I/O_L4".equals(shape1.getString("name"))) { + fileRowMap.put("POLICYTYPE", "I/O_L4"); + fileHandleRowMaps.add(fileRowMap); + } + } + + } + } catch (Exception e) { + // TODO: handle exception + } + + } + } + 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); + if (null != reFileModel) { + 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", dempId); + reFileMap.put("PLLEVEL", (PLLEVEL - 1)); + reFileMap.put("PLORDERINDEX", reFileModel.getOrderIndex()); + reFileRowMap = new RowMap(reFileMap); + fileHandleRowMaps.add(reFileRowMap); + } + } + } + } + /* + * if (fileType.equals("totalFile")) { fileHandleRowMaps.add(fileRowMap); } + */ + } + } + } + + public void getArrt(String name,PALRepositoryModel model,String dempId,Integer PLLEVEL,RowMap reFileRowMap,ArrayList fileHandleRowMaps) { + // 支持相关文件 + List support_filesList = DesignerShapeRelationCache + .getListByAttrId(model.getId(), "",name); + for (DesignerShapeRelationModel support : support_filesList) { + String supportFileId = support.getRelationFileId();// 支持或相关文件的ID + PALRepositoryModel reFileModel = PALRepositoryCache.getCache().get(supportFileId); + if (reFileModel != null) { + String PLMETHODID = reFileModel.getMethodId(); + if (PLMETHODID.equals("data.form")) { + HashMap reFileMap = new HashMap<>(); + reFileMap.put("FILEID", supportFileId); + reFileMap.put("PLNAME", reFileModel.getName()); + reFileMap.put("PLPARENTID", model.getId()); + reFileMap.put("PLMETHODID", PLMETHODID); + reFileMap.put("PUBDEPT", dempId); + reFileMap.put("PLLEVEL", (PLLEVEL + 1)); + reFileMap.put("PLORDERINDEX", reFileModel.getOrderIndex()); + reFileRowMap = new RowMap(reFileMap); + fileHandleRowMaps.add(reFileRowMap); + } + } + } + } + +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService2.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService2.java new file mode 100644 index 00000000..e8b8a9c7 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/DataViewService2.java @@ -0,0 +1,1380 @@ +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.mvc.view.ActionWeb; +import com.actionsoft.bpms.commons.mvc.view.ResponseObject; +import com.actionsoft.bpms.org.model.DepartmentModel; +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.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.awspaas.user.apps.yili.reportform.util.GetNodesUtil; +import com.awspaas.user.apps.yili.reportform.util.RepositoryAttribute; +import com.awspaas.user.apps.yili.reportform.util.TreeUtil; + +import java.sql.Connection; +import java.util.*; +import java.util.stream.Collectors; + +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-11 14:04 + * @Description: 个人/部门视图 + */ +public class DataViewService2 extends ActionWeb { + + UserContext _uc; + + public DataViewService2(UserContext uc) { + super(uc); + _uc = uc; + } + + /** + * @methodName: + * @param: + * @return: + * @description:个人视图筛选条件 + * @auther: Lizj + * @date: 2022/7/11 14:11 + */ + public String queryTermsPerson(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //基本信息 + //当前登录信息 + ArrayList currentLoginMaps = new ArrayList<>(); + LinkedHashMap currentLoginMap = new LinkedHashMap<>(); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title","账号"); + currentLoginMap.put("text",uc.getUserModel().getUID()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title","姓名"); + currentLoginMap.put("text",uc.getUserModel().getUserName()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title","部门"); + currentLoginMap.put("text",uc.getDepartmentModel().getName()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title","岗位"); + currentLoginMap.put("text",uc.getUserModel().getPositionName()); + currentLoginMaps.add(currentLoginMap); + ro.put("personInfos", currentLoginMaps); + return ro.toString(); + } + public String queryTermsPosition(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //岗位查询 + Object[] sqlParams = new Object[]{}; + String departmentById = uc.getDepartmentModel().getId(); + sqlParams = new Object[]{departmentById}; + List positionRowMapsOrg = DBSql.getMaps( "SELECT ID, POSITION_NO, POSITION_NAME, DEPARTMENTID, ORDERINDEX FROM ORGUSER WHERE POSITION_NO IS NOT NULL AND DEPARTMENTID=?",sqlParams); + List positionRowMaps = positionRowMapsOrg.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getString("POSITION_NO")))), + ArrayList::new)); + List deptMaps = DBSql.getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE ID=?", sqlParams); + //demo3 + //3e74f14d-852f-4f6f-a809-08a56697f103 + //本地 + //d7087d5b-ab29-4514-a7e7-79379f6842a2 + //正式 + //8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + if (null!=deptMaps && !deptMaps.isEmpty()) { + for (RowMap deptMap : deptMaps) { + if (null!=positionRowMaps && !positionRowMaps.isEmpty()) { + for (RowMap positionRowMap : positionRowMaps) { + //String userID = positionRowMap.getString("ID"); + String ID = positionRowMap.getString("POSITION_NO"); + String PARENTID = positionRowMap.getString("DEPARTMENTID"); + String name = positionRowMap.getString("POSITION_NAME"); + String ORDERINDEX = positionRowMap.getString("ORDERINDEX"); + String TLEVEL = String.valueOf(Integer.valueOf(deptMap.getString("LAYER"))+1); + HashMap deptNode = new HashMap<>(); + nodeType = "position"; + //deptNode.put("userID",userID); + deptNode.put("ID",ID); + deptNode.put("PARENTID",PARENTID); + deptNode.put("name",name); + deptNode.put("ORDERINDEX",ORDERINDEX); + deptNode.put("TLEVEL",TLEVEL); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + } + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID",deptMap.getString("ID")); + deptNode.put("PARENTID",deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name",deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX",deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL",deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + } + nodeType = "position"; + List deptTreeNodes = TreeUtil.buildTree(deptNodes,null,"dept",null,nodeType); + ro.put("positionTree", deptTreeNodes); + return ro.toString(); + } + /** + * @methodName: + * @param: + * @return: + * @description:个人视图 + * @auther: Lizj + * @date: 2022/7/11 14:14 + */ + public String personalView(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String positionKeys = null; + String positionVals = null; + ArrayList positionIDs = new ArrayList<>(); + Integer i = -1; + while(true) { + i++; + positionKeys = "position"+"["+i+"]"; + positionVals = params.get(positionKeys); + if (null!=positionVals && !positionVals.equals("")) { + positionIDs.add(positionVals); + } else { + break; + } + } + String uid = params.get("uid"); + String sid = _uc.getSessionId(); + //定义用户/岗位流程list,用户/岗位流程map + ArrayList UoPProcessMaps = new ArrayList<>(); + HashMap UoPProcessMap = new HashMap<>(); + ArrayList nodeMaps = new ArrayList<>(); + ArrayList nodeAMaps = new ArrayList<>(); + ArrayList nodeBMaps = new ArrayList<>(); + HashMap nodeMap = new HashMap<>(); + Map nodeTempMap = new HashMap<>(); + ArrayList reRegulationMaps = new ArrayList<>(); + ArrayList reFormMaps = new ArrayList<>(); + ArrayList reIO_L4Maps = new ArrayList<>(); + ArrayList reYSMaps = new ArrayList<>(); + ArrayList tempMaps = new ArrayList<>(); + LinkedList linksMaps = new LinkedList<>(); + HashMap linksMap = new HashMap<>(); + String path = ""; + PALRepositoryModel model = null; + String taskId=""; + String fileType = ""; + Integer totalNum = 0; + Integer aNum = 0; + Integer bNum = 0; + Object[] sqlParams = new Object[]{}; + List fileRowMaps = DBSql.getMaps("SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,RELEVANTFILE,SUPPORTFILE,PROCESSKPI FROM BO_EU_PAL_FILE1 WHERE PLMETHODID='process.epc' AND FILESTATE='1' ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) ASC"); + //AND FILESTATE='1' ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) ASC + if (null!=positionIDs && !positionIDs.isEmpty()) { + UoPProcessMaps = new ArrayList(); + nodeMaps = new ArrayList(); + linksMaps = new LinkedList(); + UoPProcessMap = new HashMap(); + String rootuuId = SDK.getRuleAPI().executeAtScript("@uuid()"); + UoPProcessMap.put("id", rootuuId); + UoPProcessMap.put("text","岗位流程"); + UoPProcessMap.put("fileType", "UoPProcess"); + UoPProcessMaps.add(UoPProcessMap); + List nodeRowMaps = DBSql.getMaps("SELECT NODEID,NODENAME,NODETYPE,PLID,PLNAME,ACTIVITYNUMBER,ACTIVITYDESC,ROLE,ROLENAME,POST,POSTNAME FROM BO_EU_PAL_FILENODE5"); + ArrayList positionNameList = new ArrayList<>(); + for (String positionID : positionIDs) { + sqlParams = new Object[]{positionID}; + RowMap POSITIONMap = DBSql.getMap("SELECT POSITION_NAME FROM ORGUSER WHERE POSITION_NO=?", sqlParams); + String POSITION_NAME = null; + if (null!=POSITIONMap && !POSITIONMap.isEmpty()) { + POSITION_NAME = POSITIONMap.getString("POSITION_NAME"); + positionNameList.add(POSITION_NAME); + } + } + if (null!=fileRowMaps && !fileRowMaps.isEmpty()) { + for (RowMap fileRowMap : fileRowMaps) { + String FILEID = fileRowMap.getString("FILEID"); + if (null!=nodeRowMaps && !nodeRowMaps.isEmpty()) { + for (RowMap nodeRowMap : nodeRowMaps) { + String PLID = nodeRowMap.getString("PLID"); + if (FILEID.equals(PLID)) { + for (String positionName : positionNameList) { + // if (nodeRowMap.getString("ROLE").equals(positionID) || nodeRowMap.getString("POST").equals(positionID)) { + if (nodeRowMap.getString("POST").contains(positionName)) { + nodeMap = new HashMap(); + model = PALRepositoryCache.getCache().get(nodeRowMap.getString("PLID")); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+nodeRowMap.getString("PLID")+"&"+"sid="+sid+"&"+"taskId="+taskId; + nodeMap.put("NODENAME", nodeRowMap.getString("NODENAME")); + nodeMap.put("PLNAME", nodeRowMap.getString("PLNAME")); + nodeMap.put("NODETYPE", nodeRowMap.getString("NODETYPE")); + nodeMap.put("path", path); + nodeMap.put("ACTIVITYNUMBER", nodeRowMap.getString("ACTIVITYNUMBER")); + nodeMap.put("ACTIVITYDESC", nodeRowMap.getString("ACTIVITYDESC")); + nodeMap.put("ROLENAME", nodeRowMap.getString("ROLE")); + nodeMap.put("POSTNAME", nodeRowMap.getString("POST")); + nodeMaps.add(nodeMap); + + UoPProcessMap = new HashMap(); + fileType = "process"; + model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID")); + if (null != model) { + 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; + UoPProcessMap.put("id", fileRowMap.getString("FILEID")); + UoPProcessMap.put("text", fileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("RELEVANTFILE", fileRowMap.getString("RELEVANTFILE")); + UoPProcessMap.put("SUPPORTFILE", fileRowMap.getString("SUPPORTFILE")); + UoPProcessMap.put("PROCESSKPI", fileRowMap.getString("PROCESSKPI")); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", rootuuId); + UoPProcessMaps.add(UoPProcessMap); + } + } + } + } + } + } + } + UoPProcessMaps = UoPProcessMaps.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(o -> String.valueOf(o.get("id"))))), + ArrayList::new)); + tempMaps = new ArrayList(); + for (Map uoPProcessMap : UoPProcessMaps) { + reRegulationMaps = new ArrayList<>(); + reFormMaps = new ArrayList<>(); + reIO_L4Maps = new ArrayList<>(); + reYSMaps = new ArrayList<>(); + String FILEID = String.valueOf(uoPProcessMap.get("id")); + fileType = String.valueOf(uoPProcessMap.get("fileType")); + if (fileType.equals("process")) { + String RELEVANTFILE = String.valueOf(uoPProcessMap.get("RELEVANTFILE")); + String SUPPORTFILE = String.valueOf(uoPProcessMap.get("SUPPORTFILE")); + String PROCESSKPI = String.valueOf(uoPProcessMap.get("PROCESSKPI")); + if (null!=RELEVANTFILE && !RELEVANTFILE.equals("")) { + String[] reFileIDs = RELEVANTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[]{reFileID}; + RowMap refileRowMap = DBSql.getMap("SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", sqlParams); + if (null!=refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") && (refileRowMap.getString("POLICYTYPE").equals("regulation") || null==refileRowMap.getString("POLICYTYPE") || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + 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="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null!=SUPPORTFILE && !SUPPORTFILE.equals("")) { + String[] reFileIDs = SUPPORTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[]{reFileID}; + RowMap refileRowMap = DBSql.getMap("SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", sqlParams); + if (null!=refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") && (refileRowMap.getString("POLICYTYPE").equals("regulation") || null==refileRowMap.getString("POLICYTYPE") || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null!=PROCESSKPI && !PROCESSKPI.equals("")) { + String[] PROCESSKPIIDS = PROCESSKPI.split(" "); + for (String PROCESSKPIID : PROCESSKPIIDS) { + sqlParams = new Object[]{PROCESSKPIID}; + RowMap refileRowMap = DBSql.getMap("SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", sqlParams); + if (null!=refileRowMap && !refileRowMap.isEmpty()) { + UoPProcessMap = new HashMap(); + fileType = "processKPIFile"; + model = PALRepositoryCache.getCache().get(PROCESSKPIID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+PROCESSKPIID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reProcessKPI"); + reYSMaps.add(UoPProcessMap); + } + } + } + if (null != reRegulationMaps && !reRegulationMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reRegulation"); + UoPProcessMap.put("text", "相关制度"); + UoPProcessMap.put("fileType", "reRegulation"); + UoPProcessMap.put("PARENTID", FILEID); + reRegulationMaps.add(UoPProcessMap); + } + if (null != reFormMaps && !reFormMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reForm"); + UoPProcessMap.put("text", "相关表单"); + UoPProcessMap.put("fileType", "reForm"); + UoPProcessMap.put("PARENTID", FILEID); + reFormMaps.add(UoPProcessMap); + } + if (null != reIO_L4Maps && !reIO_L4Maps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reI/O_L4"); + UoPProcessMap.put("text", "相关操作指导"); + UoPProcessMap.put("fileType", "reI/O_L4"); + UoPProcessMap.put("PARENTID", FILEID); + reIO_L4Maps.add(UoPProcessMap); + } + if (null != reYSMaps && !reYSMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reYS"); + UoPProcessMap.put("text", "相关要素"); + UoPProcessMap.put("fileType", "reYS"); + UoPProcessMap.put("PARENTID", FILEID); + reYSMaps.add(UoPProcessMap); + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reProcessKPI"); + UoPProcessMap.put("text", "绩效"); + UoPProcessMap.put("fileType", "reProcessKPI"); + UoPProcessMap.put("PARENTID", FILEID+"reYS"); + reYSMaps.add(UoPProcessMap); + } + tempMaps.addAll(reRegulationMaps); + tempMaps.addAll(reFormMaps); + tempMaps.addAll(reIO_L4Maps); + tempMaps.addAll(reYSMaps); + } + } + UoPProcessMaps.addAll(tempMaps); + if (UoPProcessMaps.size()>1) { + for (Map uoPProcessMap : UoPProcessMaps) { + if (String.valueOf(uoPProcessMap.get("fileType")).equals("UoPProcess")) { + ro.put("rootId", String.valueOf(uoPProcessMap.get("id"))); + } + } + ro.put("nodes", UoPProcessMaps); + for (Map uoPProcessMap : UoPProcessMaps) { + String id = String.valueOf(uoPProcessMap.get("id")); + for (Map pProcessMap : UoPProcessMaps) { + String PARENTID = String.valueOf(pProcessMap.get("PARENTID")); + if (id.equals(PARENTID)) { + String childID = String.valueOf(pProcessMap.get("id")); + linksMap = new LinkedHashMap(); + linksMap.put("from", id); + linksMap.put("to", childID); + linksMaps.add(linksMap); + } + } + } + ro.put("links",linksMaps); + } else { + ro.put("rootId", ""); + UoPProcessMaps = new ArrayList(); + ro.put("nodes", UoPProcessMaps); + linksMaps = new LinkedList(); + ro.put("links",linksMaps); + ro.info("您所查询的岗位暂无需执行的流程"); + + } + nodeAMaps = new ArrayList<>(); + nodeBMaps = new ArrayList<>(); + if (null != nodeMaps && !nodeMaps.isEmpty()) { + for (Map nodeReturnMap : nodeMaps) { + nodeTempMap = new HashMap(); + String NODETYPE = String.valueOf(nodeReturnMap.get("NODETYPE")); + if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node")) { + nodeTempMap = nodeReturnMap; + nodeAMaps.add(nodeTempMap); + } else if(NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) { + nodeTempMap = nodeReturnMap; + nodeBMaps.add(nodeTempMap); + } + } + } + totalNum = nodeMaps.size(); + aNum = nodeAMaps.size(); + bNum = nodeBMaps.size(); + ro.put("totalNodeNum", totalNum); + ro.put("totalNode", nodeMaps); + ro.put("typeANum", aNum); + ro.put("typeA", nodeAMaps); + ro.put("typeBNum", bNum); + ro.put("typeB", nodeBMaps); + } else { + UoPProcessMaps = new ArrayList(); + nodeMaps = new ArrayList(); + linksMaps = new LinkedList(); + UoPProcessMap = new HashMap(); + String rootuuId = SDK.getRuleAPI().executeAtScript("@uuid()"); + UoPProcessMap.put("id", rootuuId); + UoPProcessMap.put("text", "我的流程"); + UoPProcessMap.put("fileType", "UoPProcess"); + UoPProcessMaps.add(UoPProcessMap); + List nodeRowMaps = DBSql.getMaps("SELECT NODEID,NODENAME,NODETYPE,PLID,PLNAME,ACTIVITYNUMBER,ACTIVITYDESC,ROLE,ROLENAME,POST,POSTNAME FROM BO_EU_PAL_FILENODE5"); + String positionID = UserContext.fromUID(uid).getUserModel().getPositionNo(); + String POSITION_NAME = null; + if (null!=positionID && !positionID.equals("")) { + sqlParams = new Object[]{positionID}; + RowMap POSITIONMap = DBSql.getMap("SELECT POSITION_NAME FROM ORGUSER WHERE POSITION_NO=?", sqlParams); + if (null!=POSITIONMap && !POSITIONMap.isEmpty()) { + POSITION_NAME = POSITIONMap.getString("POSITION_NAME"); + if (null!=fileRowMaps && !fileRowMaps.isEmpty()) { + for (RowMap fileRowMap : fileRowMaps) { + String FILEID = fileRowMap.getString("FILEID"); + for (RowMap nodeRowMap : nodeRowMaps) { + String PLID = nodeRowMap.getString("PLID"); + if (FILEID.equals(PLID)) { + if (nodeRowMap.getString("POST").contains(POSITION_NAME)) { + // if (nodeRowMap.getString("ROLE").equals(positionID) || nodeRowMap.getString("POST").equals(positionID)) { + nodeMap = new HashMap(); + model = PALRepositoryCache.getCache().get(nodeRowMap.getString("PLID")); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+nodeRowMap.getString("PLID")+"&"+"sid="+sid+"&"+"taskId="+taskId; + nodeMap.put("NODENAME", nodeRowMap.getString("NODENAME")); + nodeMap.put("PLNAME", nodeRowMap.getString("PLNAME")); + nodeMap.put("NODETYPE", nodeRowMap.getString("NODETYPE")); + nodeMap.put("path", path); + nodeMap.put("ACTIVITYNUMBER", nodeRowMap.getString("ACTIVITYNUMBER")); + nodeMap.put("ACTIVITYDESC", nodeRowMap.getString("ACTIVITYDESC")); + nodeMap.put("ROLENAME", nodeRowMap.getString("ROLE")); + nodeMap.put("POSTNAME", nodeRowMap.getString("POST")); + nodeMaps.add(nodeMap); + + UoPProcessMap = new HashMap(); + fileType = "process"; + model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID")); + if (null != model) { + 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; + UoPProcessMap.put("id", fileRowMap.getString("FILEID")); + UoPProcessMap.put("text", fileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("RELEVANTFILE", fileRowMap.getString("RELEVANTFILE")); + UoPProcessMap.put("SUPPORTFILE", fileRowMap.getString("SUPPORTFILE")); + UoPProcessMap.put("PROCESSKPI", fileRowMap.getString("PROCESSKPI")); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", rootuuId); + UoPProcessMaps.add(UoPProcessMap); + } + } + } + } + } + } + } else { + ro.info("当前用户未设置岗位"); + } + UoPProcessMaps = UoPProcessMaps.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(o -> String.valueOf(o.get("id"))))), + ArrayList::new)); + tempMaps = new ArrayList(); + for (Map uoPProcessMap : UoPProcessMaps) { + reRegulationMaps = new ArrayList<>(); + reFormMaps = new ArrayList<>(); + reIO_L4Maps = new ArrayList<>(); + reYSMaps = new ArrayList<>(); + String FILEID = String.valueOf(uoPProcessMap.get("id")); + fileType = String.valueOf(uoPProcessMap.get("fileType")); + if (fileType.equals("process")) { + String RELEVANTFILE = String.valueOf(uoPProcessMap.get("RELEVANTFILE")); + String SUPPORTFILE = String.valueOf(uoPProcessMap.get("SUPPORTFILE")); + String PROCESSKPI = String.valueOf(uoPProcessMap.get("PROCESSKPI")); + if (null!=RELEVANTFILE && !RELEVANTFILE.equals("")) { + String[] reFileIDs = RELEVANTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[]{reFileID}; + RowMap refileRowMap = DBSql.getMap("SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", sqlParams); + if (null!=refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") && (refileRowMap.getString("POLICYTYPE").equals("regulation") || null==refileRowMap.getString("POLICYTYPE") || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null!=SUPPORTFILE && !SUPPORTFILE.equals("")) { + String[] reFileIDs = SUPPORTFILE.split(" "); + for (String reFileID : reFileIDs) { + sqlParams = new Object[]{reFileID}; + RowMap refileRowMap = DBSql.getMap("SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", sqlParams); + if (null!=refileRowMap && !refileRowMap.isEmpty()) { + if (refileRowMap.getString("PLMETHODID").equals("control.policy") && (refileRowMap.getString("POLICYTYPE").equals("regulation") || null==refileRowMap.getString("POLICYTYPE") || refileRowMap.getString("POLICYTYPE").equals(""))) { + // && refileRowMap.getString("POLICYTYPE").equals("regulation") + UoPProcessMap = new HashMap(); + fileType = "reRegulationFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reRegulation"); + reRegulationMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("data.form")) { + UoPProcessMap = new HashMap(); + fileType = "reFormFile"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reForm"); + reFormMaps.add(UoPProcessMap); + } else if (refileRowMap.getString("PLMETHODID").equals("control.policy") && refileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + UoPProcessMap = new HashMap(); + fileType = "reI/O_L4File"; + model = PALRepositoryCache.getCache().get(reFileID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+reFileID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reI/O_L4"); + reIO_L4Maps.add(UoPProcessMap); + } + } + } + } + if (null!=PROCESSKPI && !PROCESSKPI.equals("")) { + String[] PROCESSKPIIDS = PROCESSKPI.split(" "); + for (String PROCESSKPIID : PROCESSKPIIDS) { + sqlParams = new Object[]{PROCESSKPIID}; + RowMap refileRowMap = DBSql.getMap("SELECT FILEID,PLNAME,PLMETHODID,PLLEVEL,PLORDERINDEX,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILEID=?", sqlParams); + if (null!=refileRowMap && !refileRowMap.isEmpty()) { + UoPProcessMap = new HashMap(); + fileType = "processKPIFile"; + model = PALRepositoryCache.getCache().get(PROCESSKPIID); + if (null != model) { + if (model.isPublish() || model.isStop()) {// 停用或已发布状态查询最新流程手册 + taskId=getLastPublishTaskIdByModelId(model.getId()); + } + } + path = "./w"+"?"+"cmd=com.actionsoft.apps.coe.pal.publisher_publish_file_open"+"&"+"uuid="+PROCESSKPIID+"&"+"sid="+sid+"&"+"taskId="+taskId; + UoPProcessMap.put("id", FILEID+refileRowMap.getString("FILEID")); + UoPProcessMap.put("text", refileRowMap.getString("PLNAME")); + UoPProcessMap.put("path", path); + UoPProcessMap.put("fileType", fileType); + UoPProcessMap.put("PARENTID", FILEID+"reProcessKPI"); + reYSMaps.add(UoPProcessMap); + } + } + } + if (null != reRegulationMaps && !reRegulationMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reRegulation"); + UoPProcessMap.put("text", "相关制度"); + UoPProcessMap.put("fileType", "reRegulation"); + UoPProcessMap.put("PARENTID", FILEID); + reRegulationMaps.add(UoPProcessMap); + } + if (null != reFormMaps && !reFormMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reForm"); + UoPProcessMap.put("text", "相关表单"); + UoPProcessMap.put("fileType", "reForm"); + UoPProcessMap.put("PARENTID", FILEID); + reFormMaps.add(UoPProcessMap); + } + if (null != reIO_L4Maps && !reIO_L4Maps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reI/O_L4"); + UoPProcessMap.put("text", "相关操作指导"); + UoPProcessMap.put("fileType", "reI/O_L4"); + UoPProcessMap.put("PARENTID", FILEID); + reIO_L4Maps.add(UoPProcessMap); + } + if (null != reYSMaps && !reYSMaps.isEmpty()) { + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reYS"); + UoPProcessMap.put("text", "相关要素"); + UoPProcessMap.put("fileType", "reYS"); + UoPProcessMap.put("PARENTID", FILEID); + reYSMaps.add(UoPProcessMap); + UoPProcessMap = new HashMap(); + UoPProcessMap.put("id", FILEID+"reProcessKPI"); + UoPProcessMap.put("text", "绩效"); + UoPProcessMap.put("fileType", "reProcessKPI"); + UoPProcessMap.put("PARENTID", FILEID+"reYS"); + reYSMaps.add(UoPProcessMap); + } + tempMaps.addAll(reRegulationMaps); + tempMaps.addAll(reFormMaps); + tempMaps.addAll(reIO_L4Maps); + tempMaps.addAll(reYSMaps); + } + } + UoPProcessMaps.addAll(tempMaps); + if (UoPProcessMaps.size()>1) { + for (Map uoPProcessMap : UoPProcessMaps) { + if (String.valueOf(uoPProcessMap.get("fileType")).equals("UoPProcess")) { + ro.put("rootId", String.valueOf(uoPProcessMap.get("id"))); + } + } + ro.put("nodes", UoPProcessMaps); + for (Map uoPProcessMap : UoPProcessMaps) { + String id = String.valueOf(uoPProcessMap.get("id")); + for (Map pProcessMap : UoPProcessMaps) { + String PARENTID = String.valueOf(pProcessMap.get("PARENTID")); + if (id.equals(PARENTID)) { + String childID = String.valueOf(pProcessMap.get("id")); + linksMap = new LinkedHashMap(); + linksMap.put("from", id); + linksMap.put("to", childID); + linksMaps.add(linksMap); + } + } + } + ro.put("links", linksMaps); + } else { + ro.put("rootId", ""); + UoPProcessMaps = new ArrayList(); + ro.put("nodes", UoPProcessMaps); + linksMaps = new LinkedList(); + ro.put("links",linksMaps); + ro.info("您所在的岗位暂无需执行的流程"); + } + nodeAMaps = new ArrayList<>(); + nodeBMaps = new ArrayList<>(); + if (null != nodeMaps && !nodeMaps.isEmpty()) { + for (Map nodeReturnMap : nodeMaps) { + nodeTempMap = new HashMap(); + String NODETYPE = String.valueOf(nodeReturnMap.get("NODETYPE")); + if (NODETYPE.equals("method_approval_node") || NODETYPE.equals("method_service_node")) { + nodeTempMap.putAll(nodeReturnMap); + nodeAMaps.add(nodeTempMap); + } else if(NODETYPE.equals("method_approval_node3") || NODETYPE.equals("method_service_node4")) { + nodeTempMap.putAll(nodeReturnMap); + nodeBMaps.add(nodeTempMap); + } + } + } + totalNum = nodeMaps.size(); + aNum = nodeAMaps.size(); + bNum = nodeBMaps.size(); + ro.put("totalNodeNum", totalNum); + ro.put("totalNode", nodeMaps); + ro.put("typeANum", aNum); + ro.put("typeA", nodeAMaps); + ro.put("typeBNum", bNum); + ro.put("typeB", nodeBMaps); + } + return ro.toString(); + } + /** + * @methodName: + * @param: + * @return: + * @description:部门视图筛选条件:部门 + * @auther: Lizj + * @date: 2022/7/11 14:14 + */ + public String queryTermsDept(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + + //当前登录信息 + ArrayList currentLoginMaps = new ArrayList<>(); + LinkedHashMap currentLoginMap = new LinkedHashMap<>(); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title","账号"); + currentLoginMap.put("text",uc.getUserModel().getUID()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title","姓名"); + currentLoginMap.put("text",uc.getUserModel().getUserName()); + currentLoginMaps.add(currentLoginMap); + currentLoginMap = new LinkedHashMap<>(); + currentLoginMap.put("title","部门"); + currentLoginMap.put("text",uc.getDepartmentModel().getPathNameOfCache()); + currentLoginMaps.add(currentLoginMap); + ro.put("personInfos", currentLoginMaps); + + //部门查询 + List deptMaps = DBSql.getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE COMPANYID='8911e732-b42a-4556-853f-ad32761bcbee' AND CLOSED='0' AND DEPARTMENTNAME NOT IN ('澳优','系统管理','项目开发人员部门','奶酪事业部','离退人员部门')"); + //demo3 + //3e74f14d-852f-4f6f-a809-08a56697f103 + //本地 + //d7087d5b-ab29-4514-a7e7-79379f6842a2 + //正式 + //8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + for (RowMap deptMap : deptMaps) { + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID",deptMap.getString("ID")); + deptNode.put("PARENTID",deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name",deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX",deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL",deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + List deptTreeNodes = TreeUtil.buildTree(deptNodes,"0","dept","3",null); + ro.put("deptTree", deptTreeNodes); + //文件类型查询 + HashMap fileType = new HashMap<>(); + ArrayList fileTypes = new ArrayList<>(); + fileType = new HashMap(); + fileType.put("termsKey","totalFile"); + fileType.put("termsVal","全部"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","processFile"); + fileType.put("termsVal","流程"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","policyFile"); + fileType.put("termsVal","制度"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","guideFile"); + fileType.put("termsVal","操作指导"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","formFile"); + fileType.put("termsVal","表单/模板"); + fileTypes.add(fileType); + ro.put("fileTypes",fileTypes); + + return ro.toString(); + } + /** + * @methodName: + * @param: + * @return: + * @description:部门视图 + * @auther: Lizj + * @date: 2022/7/11 14:14 + */ + public String deptView(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + try { + String sid = _uc.getSessionId(); + String deptString = params.get("dept"); + String fileType = params.get("fileType"); + System.err.println("查询参数deptString===========》"+deptString); + System.err.println("查询参数fileType===========》"+fileType); + ArrayList deptIDList = new ArrayList<>(); + // AND FILESTATE='1' ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) ASC + List fileRowMaps = DBSql.getMaps("SELECT BF.FILEID,BF.PLNAME,BF.PLPARENTID,BF.PLMETHODID,BF.PUBDEPT,BF.PLLEVEL,BF.PLORDERINDEX,BF.SUPPORTFILE,BF.POLICYTYPE,BF.L1ID,PF.FRAMEID,PF.FRAMETYPE FROM BO_EU_PAL_FILE1 BF LEFT JOIN BO_EU_PAL_FRAME PF ON BF.L1ID=PF.FRAMEID" + + " WHERE (BF.PLMETHODID='process.epc' OR BF.PLMETHODID='process.flowchart' OR BF.PLMETHODID='control.policy') AND " + + " BF.L1ID IS NOT NULL AND FILESTATE='1' AND PLNAME in ('关于各单位会计人员参加年度继续教育及相关费用报销事宜的通知','事业部预算追加与调整流程(集团部分)') ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) ASC"); + + String sql = "SELECT ID as FILEID,PLNAME,PLPARENTID,PLMETHODID,PLLEVEL, from APP_ACT_COE_PAL_REPOSITORY where ISPUBLISH = 1 WHERE (.PLMETHODID='process.epc' OR PLMETHODID='process.flowchart' OR PLMETHODID='control.policy') AND PLNAME in ('关于各单位会计人员参加年度继续教育及相关费用报销事宜的通知'"; + + List maps = DBSql.getMaps(sql); + for (RowMap rowMap : maps) { + String id = rowMap.getString("ID"); + PALRepositoryModel model = PALRepositoryCache.getCache().get(id); + Map queryRepositoryAttributeById = new RepositoryAttribute().queryRepositoryAttributeById(model.getId()); + if (null!=queryRepositoryAttributeById && !queryRepositoryAttributeById.isEmpty()) { + //发布部门 + JSONObject Issuing_department = queryRepositoryAttributeById.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)); + String string = PUBDEPTJO.getString("id"); + if(deptString.contains(string)); + + } + } + } + + + } + } + + + //POLICYTYPE 制度文件类型 制度 /操作指导 + //SUPPORTFILE 支持文件 + //PLORDERINDEX 文件显示层级 + //L1ID 一级架构id + + //FRAMEID 架构ID + //FRAMETYPE 架构类型 + /* + * List fileRowMaps = DBSql. + * getMaps("SELECT BF.FILEID,BF.PLNAME,BF.PLPARENTID,BF.PLMETHODID,BF.PUBDEPT,BF.PLLEVEL,BF.PLORDERINDEX,BF.SUPPORTFILE,BF.POLICYTYPE,BF.L1ID,PF.FRAMEID,PF.FRAMETYPE FROM BO_EU_PAL_FILE1 BF LEFT JOIN BO_EU_PAL_FRAME PF ON BF.L1ID=PF.FRAMEID" + * + + * " WHERE (BF.PLMETHODID='process.epc' OR BF.PLMETHODID='process.flowchart' OR BF.PLMETHODID='control.policy') AND " + * + + * " BF.L1ID IS NOT NULL AND FILESTATE='1' AND PLNAME in ('关于各单位会计人员参加年度继续教育及相关费用报销事宜的通知','事业部预算追加与调整流程(集团部分)') ORDER BY TO_NUMBER(PLLEVEL) ASC, TO_NUMBER(PLORDERINDEX) ASC" + * ); + */ + ArrayList fileHandleRowMaps = new ArrayList<>(); + Map 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); if (null!=reFileModel) { 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!=deptString && !deptString.equals("")) { + //根据当前选择的部门查询 + + + //根据部门Id查询 + System.err.println("======条件1===="+deptString); + fileHandleRowMaps = new ArrayList<>(); + JSONArray deptIDs = JSONArray.parseArray(deptString); + /*String t = deptString.replaceAll("\\\"",""); + String replaceAll = t.replace("[", "").replace("]","");*/ + if (null!=fileRowMaps && !fileRowMaps.isEmpty()) { + for (RowMap fileRowMap : fileRowMaps) { + String PUBDEPT = fileRowMap.getString("PUBDEPT"); + for (Object deptID : deptIDs) { + if (String.valueOf(deptID).equals(PUBDEPT)) { + fileHandleRowMaps.add(fileRowMap); + } + } + } + } + fileRowMaps = 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); + if (null!=reFileModel) { + 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; + } + + + //遍历选择的结果 + List fileMaps = new ArrayList<>(); + List frameRowMaps = new ArrayList<>(); + HashMap fileMap = new HashMap<>(); + HashMap frameMap = new HashMap<>(); + String nodeType = null; + LinkedHashMap filesCount = new LinkedHashMap<>(); + Integer processFileNum = 0; + Integer policyFileNum = 0; + Integer guideFileNum = 0; + Integer formFileNum = 0; + String path = ""; + PALRepositoryModel model = null; + String taskId=""; + if (null!=fileRowMaps && !fileRowMaps.isEmpty()) { + List frameIDs = new ArrayList<>(); + for (RowMap fileRowMap : fileRowMaps) { + String PLPARENTID = fileRowMap.getString("PLPARENTID"); + PALRepositoryModel reFileModel = PALRepositoryCache.getCache().get(PLPARENTID); + if (null!=reFileModel) { + String PLMETHODID = reFileModel.getMethodId(); + if (PLMETHODID.equals("process.framework")) { + frameIDs.add(PLPARENTID); + } else { + String rePPLPARENTID = reFileModel.getParentId(); + frameIDs.add(rePPLPARENTID); + } + } + } + frameIDs = frameIDs.stream().distinct().collect(Collectors.toList()); + for (String frameID : frameIDs) { + frameRowMaps = GetNodesUtil.getParentFrame(frameID, frameRowMaps); + } + frameRowMaps = frameRowMaps.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getString("FRAMEID")))), + ArrayList::new)); + for (RowMap frameRowMap : frameRowMaps) { + frameMap = new HashMap(); + nodeType = "frame"; + frameMap.put("ID", frameRowMap.getString("FRAMEID")); + frameMap.put("PARENTID", frameRowMap.getString("FRAMEPARENTID")); + frameMap.put("name", frameRowMap.getString("FRAMENAME")); + frameMap.put("ORDERINDEX", frameRowMap.getString("FRAMEORDERINDEX")); + frameMap.put("TLEVEL", frameRowMap.getString("FRAMELEVEL")); + frameMap.put("nodeType", nodeType); + fileMaps.add(frameMap); + } + for (RowMap fileRowMap : fileRowMaps) { + fileMap = new HashMap(); + if (fileRowMap.getString("PLMETHODID").equals("process.epc") || fileRowMap.getString("PLMETHODID").equals("process.flowchart")) { + fileMap.put("fileType", "processFile"); + processFileNum += 1; + } 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"); + policyFileNum += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("control.policy") && fileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + fileMap.put("fileType", "guideFile"); + guideFileNum += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("data.form")) { + fileMap.put("fileType", "formFile"); + formFileNum += 1; + } + model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID")); + if (null != model) { + 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); + fileMaps.add(fileMap); + } + List fileTreeNodes = TreeUtil.buildTree(fileMaps,"process","frame",null,null); + filesCount = new LinkedHashMap<>(); + filesCount.put("processFileNum", processFileNum); + filesCount.put("policyFileNum", policyFileNum); + filesCount.put("guideFileNum", guideFileNum); + filesCount.put("formFileNum", formFileNum); + ro.put("fileMaps", fileTreeNodes); + ro.put("filesCount", filesCount); + System.err.println("=====返回参数4======>"+ro.toString()); + return ro.toString(); + } else { + filesCount = new LinkedHashMap<>(); + filesCount.put("processFileNum", processFileNum); + filesCount.put("policyFileNum", policyFileNum); + filesCount.put("guideFileNum", guideFileNum); + filesCount.put("formFileNum", formFileNum); + ro.ok("暂无文件"); + ro.put("fileMaps", fileMaps); + ro.put("filesCount", filesCount); + System.err.println("=====返回参数3======>"+ro.toString()); + return ro.toString(); + } + + + } else { + + //根据当前登录用户部门查询 + fileHandleRowMaps = new ArrayList<>(); + String ucDeptID = _uc.getUserModel().getDepartmentId(); + String pathIdOfCache = _uc.getDepartmentModel().getPathIdOfCache(); + //正式环境 伊利集团总部id 5c8e2d14-25a8-4baf-aa3a-344064007ef3 + if (pathIdOfCache.contains("5c8e2d14-25a8-4baf-aa3a-344064007ef3")) { + ucDeptID = GetNodesUtil.getParentDept(ucDeptID,2); + } + + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(ucDeptID, deptIDList); + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + fileHandleRowMaps.add(fileRowMap); + } + } + } + fileRowMaps = 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); + if (null!=reFileModel) { + 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; + } + + List fileMaps = new ArrayList<>(); + List frameRowMaps = new ArrayList<>(); + HashMap fileMap = new HashMap<>(); + HashMap frameMap = new HashMap<>(); + String nodeType = null; + LinkedHashMap filesCount = new LinkedHashMap<>(); + Integer processFileNum = 0; + Integer policyFileNum = 0; + Integer guideFileNum = 0; + Integer formFileNum = 0; + String path = ""; + PALRepositoryModel model = null; + String taskId=""; + if (null!=fileRowMaps && !fileRowMaps.isEmpty()) { + List frameIDs = new ArrayList<>(); + for (RowMap fileRowMap : fileRowMaps) { + String PLPARENTID = fileRowMap.getString("PLPARENTID"); + PALRepositoryModel reFileModel = PALRepositoryCache.getCache().get(PLPARENTID); + if (null!=reFileModel) { + String PLMETHODID = reFileModel.getMethodId(); + if (PLMETHODID.equals("process.framework")) { + frameIDs.add(PLPARENTID); + } else { + String rePPLPARENTID = reFileModel.getParentId(); + frameIDs.add(rePPLPARENTID); + } + } + } + frameIDs = frameIDs.stream().distinct().collect(Collectors.toList()); + for (String frameID : frameIDs) { + frameRowMaps = GetNodesUtil.getParentFrame(frameID, frameRowMaps); + } + frameRowMaps = frameRowMaps.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getString("FRAMEID")))), + ArrayList::new)); + for (RowMap frameRowMap : frameRowMaps) { + frameMap = new HashMap(); + nodeType = "frame"; + frameMap.put("ID", frameRowMap.getString("FRAMEID")); + frameMap.put("PARENTID", frameRowMap.getString("FRAMEPARENTID")); + frameMap.put("name", frameRowMap.getString("FRAMENAME")); + frameMap.put("ORDERINDEX", frameRowMap.getString("FRAMEORDERINDEX")); + frameMap.put("TLEVEL", frameRowMap.getString("FRAMELEVEL")); + frameMap.put("nodeType", nodeType); + fileMaps.add(frameMap); + } + for (RowMap fileRowMap : fileRowMaps) { + fileMap = new HashMap(); + if (fileRowMap.getString("PLMETHODID").equals("process.epc") || fileRowMap.getString("PLMETHODID").equals("process.flowchart")) { + fileMap.put("fileType", "processFile"); + processFileNum += 1; + } 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"); + policyFileNum += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("control.policy") && fileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + fileMap.put("fileType", "guideFile"); + guideFileNum += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("data.form")) { + fileMap.put("fileType", "formFile"); + formFileNum += 1; + } + model = PALRepositoryCache.getCache().get(fileRowMap.getString("FILEID")); + if (null != model) { + 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); + fileMaps.add(fileMap); + + } + List fileTreeNodes = TreeUtil.buildTree(fileMaps,"process","frame",null,null); + filesCount = new LinkedHashMap<>(); + filesCount.put("processFileNum", processFileNum); + filesCount.put("policyFileNum", policyFileNum); + filesCount.put("guideFileNum", guideFileNum); + filesCount.put("formFileNum", formFileNum); + ro.put("fileMaps", fileTreeNodes); + ro.put("filesCount", filesCount); + System.err.println("====返回参数1====>"+ro.toString()); + return ro.toString(); + } else { + filesCount = new LinkedHashMap<>(); + filesCount.put("processFileNum", processFileNum); + filesCount.put("policyFileNum", policyFileNum); + filesCount.put("guideFileNum", guideFileNum); + filesCount.put("formFileNum", formFileNum); + ro.ok("暂无文件"); + ro.put("fileMaps", fileMaps); + ro.put("filesCount", filesCount); + System.err.println("====返回参数2====>"+ro.toString()); + return ro.toString(); + } + } + + } catch (Exception e) { + // TODO: handle exception + }finally { + System.err.println("====返回参数====>"+ro.toString()); + } + return ro.toString(); + + } + } + + + diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/FileManagementService.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/FileManagementService.java new file mode 100644 index 00000000..f6f18fe4 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/FileManagementService.java @@ -0,0 +1,1113 @@ +package com.awspaas.user.apps.yili.reportform.service; + +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.awspaas.user.apps.yili.reportform.util.GetNodesUtil; +import com.awspaas.user.apps.yili.reportform.util.TreeUtil; + +import java.sql.Connection; +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.Period; +import java.time.format.DateTimeFormatter; +import java.util.*; + +/** + * @author:Lizj + * @create: 2022-06-27 09:41 + * @Description: 文件管理看板 + */ +public class FileManagementService extends ActionWeb { + + UserContext _uc; + + public FileManagementService(UserContext uc) { + super(uc); + _uc = uc; + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程制度类文件总数 + * @auther: Lizj + * @date: 2022/6/27 9:48 + */ + public String fileTotal(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + Integer fileTotal = 0; + Integer processFile = 0; + Integer policyFile = 0; + Integer guideFile = 0; + Integer formFile = 0; + HashMap fileSortMap = new HashMap<>(); + //List fileRowMaps = DBSql.getMaps( "SELECT FILEID,PLMETHODID,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'"); + List fileRowMaps = DBSql.getMaps( "SELECT FILEID,PLMETHODID,POLICYTYPE FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'"); + if (null!=fileRowMaps && !fileRowMaps.isEmpty()) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PLMETHODID").equals("process.epc") || fileRowMap.getString("PLMETHODID").equals("process.flowchart")) { + fileTotal += 1; + processFile += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("control.policy") && (fileRowMap.getString("POLICYTYPE").equals("regulation") || null==fileRowMap.getString("POLICYTYPE") || fileRowMap.getString("POLICYTYPE").equals(""))) { + fileTotal += 1; + policyFile += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("control.policy") && fileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + fileTotal += 1; + guideFile += 1; + } else if (fileRowMap.getString("PLMETHODID").equals("data.form")) { + fileTotal += 1; + formFile += 1; + } + } + } + ro.put("fileTotal",fileTotal); + fileSortMap.put("processFile",processFile); + fileSortMap.put("policyFile",policyFile); + fileSortMap.put("guideFile",guideFile); + fileSortMap.put("formFile",formFile); + ro.put("fileSort",fileSortMap); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:制度管理看板筛选条件 文件类型、发布单位、所属领域 + * @auther: Lizj + * @date: 2022/6/27 16:07 + */ + public String queryTerms5(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + /*“文件类型”筛选框:流程(包括过程链图和泳道图),制度(包括制度模型中的制度),操作指导(包括制度模型中的操作指导),表单/模板(包括表单模型)*/ + //文件类型 + HashMap fileType = new HashMap<>(); + ArrayList fileTypes = new ArrayList<>(); + fileType.put("termsKey","processFile"); + fileType.put("termsVal","流程"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","policyFile"); + fileType.put("termsVal","制度"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","guideFile"); + fileType.put("termsVal","操作指导"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","formFile"); + fileType.put("termsVal","表单/模板"); + fileTypes.add(fileType); + ro.put("fileTypes",fileTypes); + //发布单位 + List deptMaps = DBSql.getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE COMPANYID='8911e732-b42a-4556-853f-ad32761bcbee' AND CLOSED='0'"); + //demo3 + //3e74f14d-852f-4f6f-a809-08a56697f103 + //本地 + //d7087d5b-ab29-4514-a7e7-79379f6842a2 + //正式 + //8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + for (RowMap deptMap : deptMaps) { + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID",deptMap.getString("ID")); + deptNode.put("PARENTID",deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name",deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX",deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL",deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + List deptTreeNodes = TreeUtil.buildTree(deptNodes,"0","dept","3",null); + //所属领域 + ArrayList frameList = new ArrayList<>(); + ArrayList fieldMaps = new ArrayList<>(); + List L1Maps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL "); + String hasRoot = "Y"; + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String L1ID = l1Map.getString("FRAMEID"); + frameList = new ArrayList<>(); + frameList = GetNodesUtil.getChildFrame(L1ID, hasRoot, frameList); + fieldMaps.addAll(frameList); + } + } + ArrayList fieldNodes = new ArrayList<>(); + for (Map fieldMap : fieldMaps) { + HashMap fieldNode = new HashMap<>(); + fieldNode.put("ID", String.valueOf(fieldMap.get("FRAMEID"))); + fieldNode.put("PARENTID", String.valueOf(fieldMap.get("FRAMEPARENTID"))); + fieldNode.put("name", String.valueOf(fieldMap.get("FRAMENAME"))); + fieldNode.put("ORDERINDEX", Integer.valueOf(String.valueOf(fieldMap.get("FRAMEORDERINDEX")))); + fieldNode.put("TLEVEL", Integer.valueOf(String.valueOf(fieldMap.get("FRAMELEVEL")))); + fieldNodes.add(fieldNode); + } + List fieldTreeNodes = TreeUtil.buildTree(fieldNodes, "process", null, null, null); + ro.put("deptTreeNodes",deptTreeNodes); + ro.put("fieldTreeNodes",fieldTreeNodes); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:制度管理看板 + * @auther: Lizj + * @date: 2022/6/27 16:52 + */ + public String fileStatistics(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String fileType = params.get("fileType"); + String unit = params.get("unit"); + String field = params.get("field"); + ArrayList deptIDList = new ArrayList<>(); + ArrayList fieldList = new ArrayList<>(); + List fileRowMaps = DBSql.getMaps("SELECT FILEID,PUBDEPT,PLMETHODID,POLICYTYPE,FILESTATE,VIEWCOUNT FROM BO_EU_PAL_FILE1 WHERE PLMETHODID='process.epc' OR PLMETHODID='process.flowchart' OR PLMETHODID='control.policy' OR PLMETHODID='data.form'"); + ArrayList fileHandleMaps = new ArrayList<>(); + if (null!=fileType && !fileType.equals("")) { + fileHandleMaps = new ArrayList<>(); + if (fileType.equals("processFile")) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PLMETHODID").equals("process.epc") || fileRowMap.getString("PLMETHODID").equals("process.flowchart")) { + fileHandleMaps.add(fileRowMap); + } + } + } + if (fileType.equals("policyFile")) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PLMETHODID").equals("control.policy") && (fileRowMap.getString("POLICYTYPE").equals("regulation") || null==fileRowMap.getString("POLICYTYPE") || fileRowMap.getString("POLICYTYPE").equals(""))) { + fileHandleMaps.add(fileRowMap); + } + } + } + if (fileType.equals("guideFile")) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PLMETHODID").equals("control.policy") && fileRowMap.getString("POLICYTYPE").equals("I/O_L4")) { + fileHandleMaps.add(fileRowMap); + } + } + } + if (fileType.equals("formFile")) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PLMETHODID").equals("data.form")) { + fileHandleMaps.add(fileRowMap); + } + } + } + fileRowMaps = fileHandleMaps; + } + if (null!=unit && !unit.equals("")) { + fileHandleMaps = new ArrayList<>(); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(unit, deptIDList); + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + fileHandleMaps.add(fileRowMap); + } + } + } + fileRowMaps = fileHandleMaps; + } + if (null!=field && !field.equals("")) { + fileHandleMaps = new ArrayList<>(); + fieldList = new ArrayList(); + fieldList = GetNodesUtil.getChildFrame(field,"", fieldList); + for (Map fieldMap : fieldList) { + String fieldID = String.valueOf(fieldMap.get("FRAMEID")); + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PLPARENTID").equals(fieldID)) { + fileHandleMaps.add(fileRowMap); + } + } + } + fileRowMaps = fileHandleMaps; + } + //文件状态:已发布、审批中、已失效 查阅总数 + Integer publishedCount = 0; + Integer inApprovalCount = 0; + Integer expiredCount = 0; + Integer consultCount = 0; + if (null!=fileRowMaps && fileRowMaps.isEmpty()==false) { + for (RowMap fileRowMap : fileRowMaps) { + String fileState = fileRowMap.getString("FILESTATE"); + Integer VIEWCOUNT = fileRowMap.getInt("VIEWCOUNT"); + if (fileState.equals("1")) { + publishedCount += 1; + } + if (fileState.equals("2")) { + inApprovalCount += 1; + } + if (fileState.equals("3")) { + expiredCount += 1; + } + consultCount += VIEWCOUNT; + } + ro.put("publishedCount",publishedCount); + ro.put("inApprovalCount",inApprovalCount); + ro.put("expiredCount",expiredCount); + ro.put("consultCount",consultCount); + } else { + ro.ok("暂无文件"); + publishedCount = 0; + inApprovalCount = 0; + expiredCount = 0; + consultCount = 0; + ro.put("publishedCount",publishedCount); + ro.put("inApprovalCount",inApprovalCount); + ro.put("expiredCount",expiredCount); + ro.put("consultCount",consultCount); + } + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:部门文件数量 + * @auther: Lizj + * @date: 2022/6/28 22:43 + */ + public String deptFileCount(UserContext uc, RequestParams params) { + /*文件数量=当日生效文档总数*/ + ResponseObject ro = ResponseObject.newOkResponse(); + HashMap deptFileCountMap = new HashMap<>(); + ArrayList deptIDList = new ArrayList<>(); + ArrayList BDFileCountMaps = new ArrayList<>(); + ArrayList FDFileCountMaps = new ArrayList<>(); + Integer fileCount = 0; + //事业部和职能部门ID,名称 list + List fileRowMaps = DBSql.getMaps("SELECT FILEID,PUBDEPT FROM BO_EU_PAL_FILE1 WHERE FILEUSESTATE='1'"); + List BDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'"); + List FDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'"); + if (null!=BDInfoMaps && !BDInfoMaps.isEmpty()) { + for (RowMap bdInfoMap : BDInfoMaps) { + deptFileCountMap = new HashMap(); + fileCount = 0; + String bdDeptID = bdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + fileCount += 1; + } + } + } + } + deptFileCountMap.put("deptID",bdDeptID); + deptFileCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + deptFileCountMap.put("fileCount",fileCount); + BDFileCountMaps.add(deptFileCountMap); + } + } + if (null!=FDInfoMaps && !FDInfoMaps.isEmpty()) { + for (RowMap fdInfoMap : FDInfoMaps) { + deptFileCountMap = new HashMap(); + fileCount = 0; + String fdDeptID = fdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + fileCount += 1; + } + } + } + } + deptFileCountMap.put("deptID",fdDeptID); + deptFileCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + deptFileCountMap.put("fileCount",fileCount); + FDFileCountMaps.add(deptFileCountMap); + } + } + ro.put("BDFileCount",BDFileCountMaps); + ro.put("FDFileCount",FDFileCountMaps); + return ro.toString(); + } + /** + * @methodName: + * @param: + * @return: + * @description:部门文件年度更新率 + * @auther: Lizj + * @date: 2022/6/28 22:49 + */ + public String deptFileYearRenewRate(UserContext uc, RequestParams params) { + /*年度更新率=(某单位年度新增文件+年度修订文件)/某单位当前文件总数*/ + ResponseObject ro = ResponseObject.newOkResponse(); + HashMap renewRateMap = new HashMap<>(); + ArrayList BDRenewRateMaps = new ArrayList<>(); + ArrayList FDRenewRateMaps = new ArrayList<>(); + ArrayList deptIDList = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Integer deptFileNum = 0; + Integer newFileNum = 0; + String renewRate = null; + //获取当前年 + LocalDateTime nowDate = LocalDateTime.now(); + int nowYear = nowDate.getYear(); + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + //事业部和职能部门ID,名称 list + List fileRowMaps = DBSql.getMaps("SELECT FILEID,FILEVERSION,PUBDEPT,PUBDATETIME FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'"); + List BDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'"); + List FDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'"); + if (null!=BDInfoMaps && !BDInfoMaps.isEmpty()) { + for (RowMap bdInfoMap : BDInfoMaps) { + renewRateMap = new HashMap(); + deptFileNum = 0; + newFileNum = 0; + renewRate = null; + String bdDeptID = bdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + deptFileNum += 1; + Timestamp PUBDATETIME = fileRowMap.getTimestamp("PUBDATETIME"); + String FILEVERSION = fileRowMap.getString("FILEVERSION"); + String pubdatetimeString= sdf.format(PUBDATETIME); + LocalDate pubDate = LocalDate.parse(pubdatetimeString, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + if (pubDate.getYear()==nowYear) { + newFileNum += 1; + } + } + } + } + } + if (deptFileNum!=0) { + renewRate = numberformat.format((float) newFileNum / (float) deptFileNum * 100); + } else { + renewRate = "0"; + } + renewRateMap.put("deptID",bdDeptID); + renewRateMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + renewRateMap.put("renewRate",renewRate); + BDRenewRateMaps.add(renewRateMap); + } + } + if (null!=FDInfoMaps && !FDInfoMaps.isEmpty()) { + for (RowMap fdInfoMap : FDInfoMaps) { + renewRateMap = new HashMap(); + deptFileNum = 0; + newFileNum = 0; + renewRate = null; + String fdDeptID = fdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + deptFileNum += 1; + Timestamp PUBDATETIME = fileRowMap.getTimestamp("PUBDATETIME"); + String FILEVERSION = fileRowMap.getString("FILEVERSION"); + String pubdatetimeString= sdf.format(PUBDATETIME); + LocalDate pubDate = LocalDate.parse(pubdatetimeString, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + if (pubDate.getYear()==nowYear) { + newFileNum += 1; + } + } + } + } + } + if (deptFileNum!=0) { + renewRate = numberformat.format((float) newFileNum / (float) deptFileNum * 100); + } else { + renewRate = "0"; + } + renewRateMap.put("deptID",fdDeptID); + renewRateMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + renewRateMap.put("renewRate",renewRate); + FDRenewRateMaps.add(renewRateMap); + } + } + ro.put("BDRenewRate",BDRenewRateMaps); + ro.put("FDRenewRate",FDRenewRateMaps); + return ro.toString(); + } + /** + * @methodName: + * @param: + * @return: + * @description:部门文件年度更新情况 + * @auther: Lizj + * @date: 2022/6/28 22:53 + */ + public String deptFileYearRenewSituation(UserContext uc, RequestParams params) { + /* 1)新增数=某单位年度新增文件 + 2)修订数=某单位年度修订文件 + 3)废止数=某单位年度废止文件 */ + ResponseObject ro = ResponseObject.newOkResponse(); + HashMap renewCountMap = new HashMap<>(); + ArrayList BDRenewCountMaps = new ArrayList<>(); + ArrayList FDRenewCountMaps = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Integer createCount = 0; + Integer updateCount = 0; + Integer abolishCount = 0; + ArrayList deptIDList = new ArrayList<>(); + //获取当前年 + LocalDateTime nowDate = LocalDateTime.now(); + int nowYear = nowDate.getYear(); + //事业部和职能部门ID,名称 list + List fileRowMaps = DBSql.getMaps("SELECT FILEID,FILEVERSION,PUBDEPT,PUBDATETIME,FILESTATE FROM BO_EU_PAL_FILE1"); + List BDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'"); + List FDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'"); + if (null!=BDInfoMaps && !BDInfoMaps.isEmpty()) { + for (RowMap bdInfoMap : BDInfoMaps) { + renewCountMap = new HashMap(); + createCount = 0; + updateCount = 0; + abolishCount = 0; + String bdDeptID = bdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + Timestamp PUBDATETIME = fileRowMap.getTimestamp("PUBDATETIME"); + String pubdatetimeString= sdf.format(PUBDATETIME); + LocalDate pubDate = LocalDate.parse(pubdatetimeString, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String FILESTATE = fileRowMap.getString("FILESTATE"); + String FILEVERSION = fileRowMap.getString("FILEVERSION"); + if (pubDate.getYear()==nowYear) { + if (FILESTATE.equals("1") && FILEVERSION.equals("1.0")) { + createCount += 1; + } + if (FILESTATE.equals("1") && !FILEVERSION.equals("1.0")) { + updateCount += 1; + } + if (FILESTATE.equals("3")) { + abolishCount += 1; + } + } + } + } + } + } + renewCountMap.put("deptID",bdDeptID); + renewCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + renewCountMap.put("createCount",createCount); + renewCountMap.put("updateCount",updateCount); + renewCountMap.put("abolishCount",abolishCount); + BDRenewCountMaps.add(renewCountMap); + } + } + if (null!=FDInfoMaps && !FDInfoMaps.isEmpty()) { + for (RowMap fdInfoMap : FDInfoMaps) { + renewCountMap = new HashMap(); + createCount = 0; + updateCount = 0; + abolishCount = 0; + String fdDeptID = fdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + Timestamp PUBDATETIME = fileRowMap.getTimestamp("PUBDATETIME"); + String pubdatetimeString= sdf.format(PUBDATETIME); + LocalDate pubDate = LocalDate.parse(pubdatetimeString, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String FILESTATE = fileRowMap.getString("FILESTATE"); + String FILEVERSION = fileRowMap.getString("FILEVERSION"); + if (pubDate.getYear()==nowYear) { + if (FILESTATE.equals("1") && FILEVERSION.equals("1.0")) { + createCount += 1; + } + if (FILESTATE.equals("1") && !FILEVERSION.equals("1.0")) { + updateCount += 1; + } + if (FILESTATE.equals("3")) { + abolishCount += 1; + } + } + } + } + } + } + renewCountMap.put("deptID",fdDeptID); + renewCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + renewCountMap.put("createCount",createCount); + renewCountMap.put("updateCount",updateCount); + renewCountMap.put("abolishCount",abolishCount); + FDRenewCountMaps.add(renewCountMap); + } + } + ro.put("BDRenewCount",BDRenewCountMaps); + ro.put("FDRenewCount",FDRenewCountMaps); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:文件发布时间分布筛选条件:发布单位、所属领域 + * @auther: Lizj + * @date: 2022/6/28 22:54 + */ + public String queryTerms6(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //发布单位 + List deptMaps = DBSql.getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE COMPANYID='8911e732-b42a-4556-853f-ad32761bcbee' AND CLOSED='0'"); + //demo3 + //3e74f14d-852f-4f6f-a809-08a56697f103 + //本地 + //d7087d5b-ab29-4514-a7e7-79379f6842a2 + //正式 + //8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + for (RowMap deptMap : deptMaps) { + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID",deptMap.getString("ID")); + deptNode.put("PARENTID",deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name",deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX",deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL",deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + List deptTreeNodes = TreeUtil.buildTree(deptNodes,"0","dept","3",null); + //所属领域 + ArrayList frameList = new ArrayList<>(); + ArrayList fieldMaps = new ArrayList<>(); + List L1Maps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL "); + String hasRoot = "Y"; + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String L1ID = l1Map.getString("FRAMEID"); + frameList = new ArrayList<>(); + frameList = GetNodesUtil.getChildFrame(L1ID, hasRoot, frameList); + fieldMaps.addAll(frameList); + } + } + ArrayList fieldNodes = new ArrayList<>(); + for (Map fieldMap : fieldMaps) { + HashMap fieldNode = new HashMap<>(); + fieldNode.put("ID", String.valueOf(fieldMap.get("FRAMEID"))); + fieldNode.put("PARENTID", String.valueOf(fieldMap.get("FRAMEPARENTID"))); + fieldNode.put("name", String.valueOf(fieldMap.get("FRAMENAME"))); + fieldNode.put("ORDERINDEX", Integer.valueOf(String.valueOf(fieldMap.get("FRAMEORDERINDEX")))); + fieldNode.put("TLEVEL", Integer.valueOf(String.valueOf(fieldMap.get("FRAMELEVEL")))); + fieldNodes.add(fieldNode); + } + List fieldTreeNodes = TreeUtil.buildTree(fieldNodes, "process", null, null, null); + ro.put("deptTreeNodes",deptTreeNodes); + ro.put("fieldTreeNodes",fieldTreeNodes); + return ro.toString(); + } + /** + * @methodName: + * @param: + * @return: + * @description:文件发布时间分布 + * @auther: Lizj + * @date: 2022/6/28 22:57 + */ + public String filePubTimeDistribution(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String unit = params.get("unit"); + String field = params.get("field"); + ArrayList deptIDList = new ArrayList<>(); + ArrayList fieldList = new ArrayList<>(); + List fileMaps = DBSql.getMaps("SELECT FILEID,PLMETHODID,POLICYTYPE,PUBDATETIME,PUBDEPT,PLPARENTID FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1' AND PUBDATETIME IS NOT NULL"); + ArrayList fileHandleMaps = new ArrayList<>(); + + if (null!=unit && !unit.equals("")) { + fileHandleMaps = new ArrayList<>(); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(unit, deptIDList); + for (String deptID : deptIDList) { + for (RowMap fileMap : fileMaps) { + if (fileMap.getString("PUBDEPT").contains(deptID)) { + fileHandleMaps.add(fileMap); + } + } + } + fileMaps = fileHandleMaps; + } + if (null!=field && !field.equals("")) { + fileHandleMaps = new ArrayList<>(); + fieldList = new ArrayList(); + fieldList = GetNodesUtil.getChildFrame(field,"", fieldList); + for (Map fieldMap : fieldList) { + String fieldID = String.valueOf(fieldMap.get("FRAMEID")); + for (RowMap fileMap : fileMaps) { + if (fileMap.getString("PLPARENTID").equals(fieldID)) { + fileHandleMaps.add(fileMap); + } + } + } + fileMaps = fileHandleMaps; + } + LocalDate nowDate = LocalDate.now(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + //6个月内fileMaps + ArrayList month6InFileMaps = new ArrayList<>(); + //6个月~1年fileMaps + ArrayList year1InFileMaps = new ArrayList<>(); + //1年~2年fileMaps + ArrayList year2InFileMaps = new ArrayList<>(); + //2年~3年fileMaps + ArrayList year3InFileMaps = new ArrayList<>(); + //3年以上+fileMaps + ArrayList year3OutFileMaps = new ArrayList<>(); + + ArrayList fileCountMaps = new ArrayList<>(); + if (null!=fileMaps && fileMaps.isEmpty()==false) { + for (RowMap fileMap : fileMaps) { + LocalDate PUBDATETIME = LocalDate.parse(fileMap.getString("PUBDATETIME"), DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Period betweenDate = Period.between(PUBDATETIME, nowDate); + if (betweenDate.getMonths()<6) { + month6InFileMaps.add(fileMap); + } + if (betweenDate.getMonths()>=6 && betweenDate.getYears()<1) { + year1InFileMaps.add(fileMap); + } + if(betweenDate.getYears()>=1 && betweenDate.getYears()<2) { + year2InFileMaps.add(fileMap); + } + if(betweenDate.getYears()>=2 && betweenDate.getYears()<3) { + year3InFileMaps.add(fileMap); + } + if(betweenDate.getYears()>=3) { + year3OutFileMaps.add(fileMap); + } + } + } else { + ro.ok("暂无文件"); + } + + Integer processFileCount = 0; + Integer policyFileCount = 0; + Integer guideFileCount = 0; + Integer formFileCount = 0; + Map fileCountMap = new LinkedHashMap<>(); + if (null!=month6InFileMaps && !month6InFileMaps.isEmpty()) { + for (RowMap month6InFileMap : month6InFileMaps) { + if (month6InFileMap.getString("PLMETHODID").equals("process.epc") || month6InFileMap.getString("PLMETHODID").equals("process.flowchart")) { + processFileCount += 1; + } else if (month6InFileMap.getString("PLMETHODID").equals("control.policy") && (month6InFileMap.getString("POLICYTYPE").equals("regulation") || null==month6InFileMap.getString("POLICYTYPE") || month6InFileMap.getString("POLICYTYPE").equals(""))) { + policyFileCount += 1; + } else if (month6InFileMap.getString("PLMETHODID").equals("control.policy") && month6InFileMap.getString("POLICYTYPE").equals("I/O_L4")) { + guideFileCount += 1; + } else if (month6InFileMap.getString("PLMETHODID").equals("data.form")) { + formFileCount += 1; + } + } + } + fileCountMap.put("timeSlot","【6个月内】"); + fileCountMap.put("processFileCount",processFileCount); + fileCountMap.put("policyFileCount",policyFileCount); + fileCountMap.put("guideFileCount",guideFileCount); + fileCountMap.put("formFileCount",formFileCount); + fileCountMaps.add(fileCountMap); + + processFileCount = 0; + policyFileCount = 0; + guideFileCount = 0; + formFileCount = 0; + if (null!=year1InFileMaps && !year1InFileMaps.isEmpty()) { + for (RowMap year1InFileMap : year1InFileMaps) { + if (year1InFileMap.getString("PLMETHODID").equals("process.epc") || year1InFileMap.getString("PLMETHODID").equals("process.flowchart")) { + processFileCount += 1; + } else if (year1InFileMap.getString("PLMETHODID").equals("control.policy") && (year1InFileMap.getString("POLICYTYPE").equals("regulation") || null==year1InFileMap.getString("POLICYTYPE") || year1InFileMap.getString("POLICYTYPE").equals(""))) { + policyFileCount += 1; + } else if (year1InFileMap.getString("PLMETHODID").equals("control.policy") && year1InFileMap.getString("POLICYTYPE").equals("I/O_L4")) { + guideFileCount += 1; + } else if (year1InFileMap.getString("PLMETHODID").equals("data.form")) { + formFileCount += 1; + } + } + } + fileCountMap = new LinkedHashMap(); + fileCountMap.put("timeSlot","【6个月~1年】"); + fileCountMap.put("processFileCount",processFileCount); + fileCountMap.put("policyFileCount",policyFileCount); + fileCountMap.put("guideFileCount",guideFileCount); + fileCountMap.put("formFileCount",formFileCount); + fileCountMaps.add(fileCountMap); + + processFileCount = 0; + policyFileCount = 0; + guideFileCount = 0; + formFileCount = 0; + if (null!=year2InFileMaps && !year2InFileMaps.isEmpty()) { + for (RowMap year2InFileMap : year2InFileMaps) { + if (year2InFileMap.getString("PLMETHODID").equals("process.epc") || year2InFileMap.getString("PLMETHODID").equals("process.flowchart")) { + processFileCount += 1; + } else if (year2InFileMap.getString("PLMETHODID").equals("control.policy") && (year2InFileMap.getString("POLICYTYPE").equals("regulation") || null==year2InFileMap.getString("POLICYTYPE") || year2InFileMap.getString("POLICYTYPE").equals(""))) { + policyFileCount += 1; + } else if (year2InFileMap.getString("PLMETHODID").equals("control.policy") && year2InFileMap.getString("POLICYTYPE").equals("I/O_L4")) { + guideFileCount += 1; + } else if (year2InFileMap.getString("PLMETHODID").equals("data.form")) { + formFileCount += 1; + } + } + } + fileCountMap = new LinkedHashMap(); + fileCountMap.put("timeSlot","【1年~2年】"); + fileCountMap.put("processFileCount",processFileCount); + fileCountMap.put("policyFileCount",policyFileCount); + fileCountMap.put("guideFileCount",guideFileCount); + fileCountMap.put("formFileCount",formFileCount); + fileCountMaps.add(fileCountMap); + + processFileCount = 0; + policyFileCount = 0; + guideFileCount = 0; + formFileCount = 0; + if (null!=year3InFileMaps && !year3InFileMaps.isEmpty()) { + for (RowMap year3InFileMap : year3InFileMaps) { + if (year3InFileMap.getString("PLMETHODID").equals("process.epc") || year3InFileMap.getString("PLMETHODID").equals("process.flowchart")) { + processFileCount += 1; + } else if (year3InFileMap.getString("PLMETHODID").equals("control.policy") && (year3InFileMap.getString("POLICYTYPE").equals("regulation") || null==year3InFileMap.getString("POLICYTYPE") || year3InFileMap.getString("POLICYTYPE").equals(""))) { + policyFileCount += 1; + } else if (year3InFileMap.getString("PLMETHODID").equals("control.policy") && year3InFileMap.getString("POLICYTYPE").equals("I/O_L4")) { + guideFileCount += 1; + } else if (year3InFileMap.getString("PLMETHODID").equals("data.form")) { + formFileCount += 1; + } + } + } + fileCountMap = new LinkedHashMap(); + fileCountMap.put("timeSlot","【2年~3年】"); + fileCountMap.put("processFileCount",processFileCount); + fileCountMap.put("policyFileCount",policyFileCount); + fileCountMap.put("guideFileCount",guideFileCount); + fileCountMap.put("formFileCount",formFileCount); + fileCountMaps.add(fileCountMap); + + processFileCount = 0; + policyFileCount = 0; + guideFileCount = 0; + formFileCount = 0; + if (null!=year3OutFileMaps && !year3OutFileMaps.isEmpty()) { + for (RowMap year3OutFileMap : year3OutFileMaps) { + if (year3OutFileMap.getString("PLMETHODID").equals("process.epc") || year3OutFileMap.getString("PLMETHODID").equals("process.flowchart")) { + processFileCount += 1; + } else if (year3OutFileMap.getString("PLMETHODID").equals("control.policy") && (year3OutFileMap.getString("POLICYTYPE").equals("regulation") || null==year3OutFileMap.getString("POLICYTYPE") || year3OutFileMap.getString("POLICYTYPE").equals(""))) { + policyFileCount += 1; + } else if (year3OutFileMap.getString("PLMETHODID").equals("control.policy") && year3OutFileMap.getString("POLICYTYPE").equals("I/O_L4")) { + guideFileCount += 1; + } else if (year3OutFileMap.getString("PLMETHODID").equals("data.form")) { + formFileCount += 1; + } + } + } + fileCountMap = new LinkedHashMap(); + fileCountMap.put("timeSlot","【3年以上】"); + fileCountMap.put("processFileCount",processFileCount); + fileCountMap.put("policyFileCount",policyFileCount); + fileCountMap.put("guideFileCount",guideFileCount); + fileCountMap.put("formFileCount",formFileCount); + fileCountMaps.add(fileCountMap); + + ro.put("fileCount",fileCountMaps); + + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:引用情况分析筛选条件:发布单位、所属领域、文件类型 + * @auther: Lizj + * @date: 2022/6/28 23:00 + */ + public String queryTerms7(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //发布单位 + List deptMaps = DBSql.getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE COMPANYID='8911e732-b42a-4556-853f-ad32761bcbee' AND CLOSED='0'"); + //demo3 + //3e74f14d-852f-4f6f-a809-08a56697f103 + //本地 + //d7087d5b-ab29-4514-a7e7-79379f6842a2 + //正式 + //8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + for (RowMap deptMap : deptMaps) { + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID",deptMap.getString("ID")); + deptNode.put("PARENTID",deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name",deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX",deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL",deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + List deptTreeNodes = TreeUtil.buildTree(deptNodes,"0","dept","3",null); + //所属领域 + ArrayList frameList = new ArrayList<>(); + ArrayList fieldMaps = new ArrayList<>(); + List L1Maps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL "); + String hasRoot = "Y"; + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String L1ID = l1Map.getString("FRAMEID"); + frameList = new ArrayList<>(); + frameList = GetNodesUtil.getChildFrame(L1ID, hasRoot, frameList); + fieldMaps.addAll(frameList); + } + } + ArrayList fieldNodes = new ArrayList<>(); + for (Map fieldMap : fieldMaps) { + HashMap fieldNode = new HashMap<>(); + fieldNode.put("ID", String.valueOf(fieldMap.get("FRAMEID"))); + fieldNode.put("PARENTID", String.valueOf(fieldMap.get("FRAMEPARENTID"))); + fieldNode.put("name", String.valueOf(fieldMap.get("FRAMENAME"))); + fieldNode.put("ORDERINDEX", Integer.valueOf(String.valueOf(fieldMap.get("FRAMEORDERINDEX")))); + fieldNode.put("TLEVEL", Integer.valueOf(String.valueOf(fieldMap.get("FRAMELEVEL")))); + fieldNodes.add(fieldNode); + } + List fieldTreeNodes = TreeUtil.buildTree(fieldNodes, "process", null, null, null); + ro.put("deptTreeNodes",deptTreeNodes); + ro.put("fieldTreeNodes",fieldTreeNodes); + //文件类型 + HashMap fileType = new HashMap<>(); + ArrayList fileTypes = new ArrayList<>(); + fileType.put("termsKey","processFile"); + fileType.put("termsVal","流程"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","policyFile"); + fileType.put("termsVal","制度"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","guideFile"); + fileType.put("termsVal","操作指导"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","formFile"); + fileType.put("termsVal","表单/模板"); + fileTypes.add(fileType); + ro.put("fileTypes",fileTypes); + + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:引用情况分析 + * @auther: Lizj + * @date: 2022/6/28 23:03 + */ + public String citationAnalysis(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String unit = params.get("unit"); + String field = params.get("field"); + String fileType = params.get("fileType"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + ArrayList deptIDList = new ArrayList<>(); + ArrayList fieldList = new ArrayList<>(); + List fileRowMaps = DBSql.getMaps("SELECT FILEID,PLMETHODID,POLICYTYPE,PLPARENTID,PUBDEPT,MODIFYDATETIME,RELEVANTFILE,SUPPORTFILE FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1'"); + List fileRowMaps1 = fileRowMaps; + ArrayList fileHandleMaps = new ArrayList<>(); + if (null!=fileType && !fileType.equals("")) { + fileHandleMaps = new ArrayList<>(); + if (fileType.equals("processFile")) { + for (RowMap fileRowMap1 : fileRowMaps1) { + if (fileRowMap1.getString("PLMETHODID").equals("process.epc") || fileRowMap1.getString("PLMETHODID").equals("process.flowchart")) { + fileHandleMaps.add(fileRowMap1); + } + } + } + if (fileType.equals("policyFile")) { + for (RowMap fileRowMap1 : fileRowMaps1) { + if (fileRowMap1.getString("PLMETHODID").equals("control.policy") && (fileRowMap1.getString("POLICYTYPE").equals("regulation") || null==fileRowMap1.getString("POLICYTYPE") || fileRowMap1.getString("POLICYTYPE").equals(""))) { + fileHandleMaps.add(fileRowMap1); + } + } + } + if (fileType.equals("guideFile")) { + for (RowMap fileRowMap1 : fileRowMaps1) { + if (fileRowMap1.getString("PLMETHODID").equals("control.policy") && fileRowMap1.getString("POLICYTYPE").equals("I/O_L4")) { + fileHandleMaps.add(fileRowMap1); + } + } + } + if (fileType.equals("formFile")) { + for (RowMap fileRowMap1 : fileRowMaps1) { + if (fileRowMap1.getString("PLMETHODID").equals("data.form")) { + fileHandleMaps.add(fileRowMap1); + } + } + } + fileRowMaps1 = fileHandleMaps; + } + if (null!=unit && !unit.equals("")) { + fileHandleMaps = new ArrayList<>(); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(unit, deptIDList); + for (String deptID : deptIDList) { + for (RowMap fileRowMap1 : fileRowMaps1) { + if (fileRowMap1.getString("PUBDEPT").contains(deptID)) { + fileHandleMaps.add(fileRowMap1); + } + } + } + fileRowMaps1 = fileHandleMaps; + } + if (null!=field && !field.equals("")) { + fileHandleMaps = new ArrayList<>(); + fieldList = new ArrayList(); + fieldList = GetNodesUtil.getChildFrame(field,"", fieldList); + for (Map fieldMap : fieldList) { + String fieldID = String.valueOf(fieldMap.get("FRAMEID")); + for (RowMap fileRowMap1 : fileRowMaps1) { + if (fileRowMap1.getString("PLPARENTID").equals(fieldID)) { + fileHandleMaps.add(fileRowMap1); + } + } + } + fileRowMaps1 = fileHandleMaps; + } + + /*1)文件引用率=某范围中文件出现在其他文件的“相关文件”“支持文件”字段的次数总和/所有文件总数 + 2)平均被引用次数=某范围中文件出现在其他文件的“相关文件”“支持文件”字段的次数总和/对应范围的文件总数 + 3)本月新增引用次数=本月某范围中文件出现在其他文件的“相关文件”“支持文件”字段的次数总和 减去 上月某范围中文件出现在其他文件的“相关文件”“支持文件”字段的次数总和*/ + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + Integer appearNum = 0; + Integer fileTotalNum = fileRowMaps.size(); + Integer fileRageNum = fileRowMaps1.size(); + Integer lastNum = 0; + Integer nowNum = 0; + LinkedHashMap quoteDetail = new LinkedHashMap<>(); + String quoteRate = "0"; + String quoteAvg = "0"; + Integer quoteAdded = 0; + String quoteAddedString = "0"; + //本月、上月 + LocalDate nowDate = LocalDate.now(); + int nowMonth = nowDate.getMonthValue(); + int lastMonth = nowDate.minusMonths(1).getMonthValue(); + if ((null==fileType || fileType.equals("")) && (null==unit || unit.equals("")) && (null==field || field.equals(""))) { + appearNum = DBSql.getInt("SELECT COUNTOFGROUP AS appearNum FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='appearNum' AND GROUPIDEXT1='total'", "appearNum"); + lastNum = DBSql.getInt("SELECT COUNTOFGROUP AS lastNum FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='lastNum' AND GROUPIDEXT1='total'", "lastNum"); + nowNum = DBSql.getInt("SELECT COUNTOFGROUP AS nowNum FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='nowNum' AND GROUPIDEXT1='total'", "nowNum"); + if (fileTotalNum!=0) { + quoteRate = numberformat.format((float) appearNum / (float) fileTotalNum * 100); + } else { + quoteRate = "0"; + } + if (fileRageNum!=0) { + quoteAvg = numberformat.format((float) appearNum / (float) fileRageNum); + } else { + quoteAvg ="0"; + } + quoteAdded = nowNum - lastNum; + + if (quoteAdded>=100) { + quoteAddedString = numberformat.format((float) quoteAdded / 10); + } else if (quoteAdded>=1000) { + quoteAddedString = numberformat.format((float) quoteAdded / 100); + } else if (quoteAdded>=10000) { + quoteAddedString = numberformat.format((float) quoteAdded / 1000); + } + quoteDetail = new LinkedHashMap<>(); + quoteDetail.put("quoteAvg",quoteAvg); + quoteDetail.put("quoteAdded",quoteAddedString); + ro.put("quoteRate", quoteRate); + ro.put("quoteDetail", quoteDetail); + return ro.toString(); + } + if (null!=fileRowMaps1 && fileRowMaps1.isEmpty()==false) { + for (RowMap fileRowMap1 : fileRowMaps1) { + String FILEID = fileRowMap1.getString("FILEID"); + for (RowMap fileRowMap : fileRowMaps) { + String RELEVANTFILE = fileRowMap.getString("RELEVANTFILE"); + String SUPPORTFILE = fileRowMap.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 = fileRowMap.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; + } + } + } + } + } + quoteRate = numberformat.format((float) appearNum / (float) fileTotalNum * 100); + quoteAvg = numberformat.format((float) appearNum / (float) fileRageNum); + quoteAdded = nowNum - lastNum; + quoteDetail = new LinkedHashMap<>(); + quoteDetail.put("quoteAvg",quoteAvg); + quoteDetail.put("quoteAdded",quoteAdded); + ro.put("quoteRate", quoteRate); + ro.put("quoteDetail", quoteDetail); + return ro.toString(); + } else { + ro.ok("暂无文件"); + quoteDetail = new LinkedHashMap<>(); + quoteDetail.put("quoteAvg","0"); + quoteDetail.put("quoteAdded",0); + ro.put("quoteRate", "0"); + ro.put("quoteDetail", quoteDetail); + return ro.toString(); + } + } + +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ProcessPubService.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ProcessPubService.java new file mode 100644 index 00000000..6b0e14b8 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ProcessPubService.java @@ -0,0 +1,1859 @@ +package com.awspaas.user.apps.yili.reportform.service; + +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.org.model.UserModel; +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.awspaas.user.apps.yili.reportform.util.GetNodesUtil; +import com.awspaas.user.apps.yili.reportform.util.TreeUtil; +import org.json.JSONException; +import org.json.JSONObject; + +import java.sql.Connection; +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.*; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.toCollection; + + +/** + * @author:Lizj + * @create: 2022-06-14 10:32 + * @Description: 流程发布平台-流程管理看板 + */ +public class ProcessPubService extends ActionWeb { + + + UserContext _uc; + + public ProcessPubService(UserContext uc) { + super(uc); + _uc = uc; + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程制度覆盖率总量 + * @auther: Lizj + * @date: 2022/6/15 11:20 + */ + public String processTotalCount(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //流程、制度总数、覆盖率 + Integer bpmn2TotalNum = DBSql.getInt("SELECT COUNTOFGROUP AS bpmn2TotalNum FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='bpmn2TotalNum'", "bpmn2TotalNum"); + Integer policyTotalNum = DBSql.getInt("SELECT COUNTOFGROUP AS policyTotalNum FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='policyTotalNum'", "policyTotalNum"); + String coverageTotal = DBSql.getString("SELECT COUNTOFGROUP AS coverageTotal FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='coveragePoCTotal'", "coverageTotal"); + ro.put("bpmn2TotalNum", bpmn2TotalNum); + ro.put("policyTotalNum", policyTotalNum); + ro.put("coverage", coverageTotal); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:表格部分下拉查询条件 + * @auther: Lizj + * @date: 2022/6/15 22:20 + */ + public String queryTerms1(UserContext uc, RequestParams params) { + /*文件/要素类型:流程制度、绩效、系统*/ + ResponseObject ro = ResponseObject.newOkResponse(); + HashMap termsMap = new HashMap<>(); + ArrayList termsMaps = new ArrayList<>(); + termsMap.put("termsKey", "process"); + termsMap.put("termsVal", "流程制度"); + termsMaps.add(termsMap); + termsMap = new HashMap(); + termsMap.put("termsKey", "achievements"); + termsMap.put("termsVal", "绩效"); + termsMaps.add(termsMap); + termsMap = new HashMap(); + termsMap.put("termsKey", "systemnode"); + termsMap.put("termsVal", "系统"); + termsMaps.add(termsMap); + ro.put("terms1", termsMaps); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程管理看板表格数据 + * @auther: Lizj + * @date: 2022/6/15 11:16 + */ + public String processList(UserContext uc, RequestParams params) { +/* 流程制度覆盖率=单L1下有流程或制度的L2和L3架构个数/单L1下L2和L3架构总数 + + 末级流程绩效覆盖率=单L1下末级流程中已经设计流程绩效指标的个数/单L1末级流程总数 + + 信息系统节点覆盖率=单L1下末级流程活动节点中系统类型节点数/单L1活动节点总数*/ + ResponseObject ro = ResponseObject.newOkResponse(); + //定义返回数据 + HashMap originalMap = new HashMap<>(); + ArrayList originalMaps = new ArrayList<>(); + ArrayList returnDataMaps = new ArrayList<>(); + String terms = params.get("terms"); + List 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 (terms == null || terms.equals("")) { + //默认展示 + String[] headtop = {"", "", "流程(个)", "制度(个)", "覆盖率(%)"}; + List l2ol3BPMN2NUMSUMMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='l2ol3BPMN2NUMSUM'"); + List l2ol3POLICYNUMSUMMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='l2ol3POLICYNUMSUM'"); + List coveragePoCMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='coveragePoC'"); + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String FRAMEID = l1Map.getString("FRAMEID"); + String FRAMENAME = l1Map.getString("FRAMENAME"); + String FRAMETYPE = l1Map.getString("FRAMETYPE"); + Integer FRAMEORDERINDEX = l1Map.getInt("FRAMEORDERINDEX"); + Integer l2ol3BPMN2NUMSUM = 0; + Integer l2ol3POLICYNUMSUM = 0; + String coveragePoC = null; + if (null != l2ol3BPMN2NUMSUMMaps && !l2ol3BPMN2NUMSUMMaps.isEmpty()) { + for (RowMap l2ol3BPMN2NUMSUMMap : l2ol3BPMN2NUMSUMMaps) { + if (FRAMEID.equals(l2ol3BPMN2NUMSUMMap.getString("GROUPIDEXT1"))) { + l2ol3BPMN2NUMSUM = l2ol3BPMN2NUMSUMMap.getInt("COUNTOFGROUP"); + } + } + } + if (null != l2ol3POLICYNUMSUMMaps && !l2ol3POLICYNUMSUMMaps.isEmpty()) { + for (RowMap l2ol3POLICYNUMSUMMap : l2ol3POLICYNUMSUMMaps) { + if (FRAMEID.equals(l2ol3POLICYNUMSUMMap.getString("GROUPIDEXT1"))) { + l2ol3POLICYNUMSUM = l2ol3POLICYNUMSUMMap.getInt("COUNTOFGROUP"); + } + } + } + if (null != coveragePoCMaps && !coveragePoCMaps.isEmpty()) { + for (RowMap coveragePoCMap : coveragePoCMaps) { + if (FRAMEID.equals(coveragePoCMap.getString("GROUPIDEXT1"))) { + coveragePoC = coveragePoCMap.getString("COUNTOFGROUP"); + } + } + } + originalMap = new HashMap<>(); + originalMap.put("PLNAME", FRAMENAME); + originalMap.put("l2ol3BPMN2NUM", l2ol3BPMN2NUMSUM); + originalMap.put("l2ol3POLICYNUM", l2ol3POLICYNUMSUM); + originalMap.put("coverage", coveragePoC); + originalMap.put("groupID", FRAMETYPE); + originalMaps.add(originalMap); + } + } + Map> dataGroup = originalMaps.stream(). + collect(Collectors.groupingBy(original -> "group" + original.get("groupID").toString(), TreeMap::new, Collectors.toList())); + for (String groupID : dataGroup.keySet()) { + List dataMapstoGroupID = dataGroup.get(groupID); + HashMap column1Map = new HashMap<>(); + HashMap column2Map = new HashMap<>(); + HashMap column3Map = new HashMap<>(); + HashMap column4Map = new HashMap<>(); + ArrayList column1Maps = new ArrayList<>(); + ArrayList column2Maps = new ArrayList<>(); + ArrayList column3Maps = new ArrayList<>(); + ArrayList column4Maps = new ArrayList<>(); + HashMap returnDataMap = new HashMap<>(); + for (Map dataMap : dataMapstoGroupID) { + column1Map = new HashMap(); + column1Map.put("name", dataMap.get("PLNAME")); + column1Maps.add(column1Map); + column2Map = new HashMap(); + column2Map.put("name", dataMap.get("l2ol3BPMN2NUM")); + column2Maps.add(column2Map); + column3Map = new HashMap(); + column3Map.put("name", dataMap.get("l2ol3POLICYNUM")); + column3Maps.add(column3Map); + column4Map = new HashMap(); + column4Map.put("name", dataMap.get("coverage")); + column4Maps.add(column4Map); + if (dataMap.get("groupID").equals("1")) { + returnDataMap.put("leftname", "战略类流程"); + } else if (dataMap.get("groupID").equals("2")) { + returnDataMap.put("leftname", "运营类流程"); + } else if (dataMap.get("groupID").equals("3")) { + returnDataMap.put("leftname", "支持类流程"); + } + } + returnDataMap.put("secondcont", column1Maps); + returnDataMap.put("l2ol3BPMN2NUM", column2Maps); + returnDataMap.put("l2ol3POLICYNUM", column3Maps); + returnDataMap.put("coverage", column4Maps); + returnDataMaps.add(returnDataMap); + } + ro.put("headtop", headtop); + ro.put("content", returnDataMaps); + } else if (terms.equals("process")) { + //流程制度 + String[] headtop = {"", "", "流程(个)", "制度(个)", "覆盖率(%)"}; + List l2ol3BPMN2NUMSUMMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='l2ol3BPMN2NUMSUM'"); + List l2ol3POLICYNUMSUMMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='l2ol3POLICYNUMSUM'"); + List coveragePoCMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='coveragePoC'"); + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String FRAMEID = l1Map.getString("FRAMEID"); + String FRAMENAME = l1Map.getString("FRAMENAME"); + String FRAMETYPE = l1Map.getString("FRAMETYPE"); + Integer FRAMEORDERINDEX = l1Map.getInt("FRAMEORDERINDEX"); + Integer l2ol3BPMN2NUMSUM = 0; + Integer l2ol3POLICYNUMSUM = 0; + String coveragePoC = null; + if (null != l2ol3BPMN2NUMSUMMaps && !l2ol3BPMN2NUMSUMMaps.isEmpty()) { + for (RowMap l2ol3BPMN2NUMSUMMap : l2ol3BPMN2NUMSUMMaps) { + if (FRAMEID.equals(l2ol3BPMN2NUMSUMMap.getString("GROUPIDEXT1"))) { + l2ol3BPMN2NUMSUM = l2ol3BPMN2NUMSUMMap.getInt("COUNTOFGROUP"); + } + } + } + if (null != l2ol3POLICYNUMSUMMaps && !l2ol3POLICYNUMSUMMaps.isEmpty()) { + for (RowMap l2ol3POLICYNUMSUMMap : l2ol3POLICYNUMSUMMaps) { + if (FRAMEID.equals(l2ol3POLICYNUMSUMMap.getString("GROUPIDEXT1"))) { + l2ol3POLICYNUMSUM = l2ol3POLICYNUMSUMMap.getInt("COUNTOFGROUP"); + } + } + } + if (null != coveragePoCMaps && !coveragePoCMaps.isEmpty()) { + for (RowMap coveragePoCMap : coveragePoCMaps) { + if (FRAMEID.equals(coveragePoCMap.getString("GROUPIDEXT1"))) { + coveragePoC = coveragePoCMap.getString("COUNTOFGROUP"); + } + } + } + originalMap = new HashMap<>(); + originalMap.put("PLNAME", FRAMENAME); + originalMap.put("l2ol3BPMN2NUM", l2ol3BPMN2NUMSUM); + originalMap.put("l2ol3POLICYNUM", l2ol3POLICYNUMSUM); + originalMap.put("coverage", coveragePoC); + originalMap.put("groupID", FRAMETYPE); + originalMaps.add(originalMap); + } + } + Map> dataGroup = originalMaps.stream(). + collect(Collectors.groupingBy(original -> "group" + original.get("groupID").toString(), TreeMap::new, Collectors.toList())); + for (String groupID : dataGroup.keySet()) { + List dataMapstoGroupID = dataGroup.get(groupID); + HashMap column1Map = new HashMap<>(); + HashMap column2Map = new HashMap<>(); + HashMap column3Map = new HashMap<>(); + HashMap column4Map = new HashMap<>(); + ArrayList column1Maps = new ArrayList<>(); + ArrayList column2Maps = new ArrayList<>(); + ArrayList column3Maps = new ArrayList<>(); + ArrayList column4Maps = new ArrayList<>(); + HashMap returnDataMap = new HashMap<>(); + for (Map dataMap : dataMapstoGroupID) { + column1Map = new HashMap(); + column1Map.put("name", dataMap.get("PLNAME")); + column1Maps.add(column1Map); + column2Map = new HashMap(); + column2Map.put("name", dataMap.get("l2ol3BPMN2NUM")); + column2Maps.add(column2Map); + column3Map = new HashMap(); + column3Map.put("name", dataMap.get("l2ol3POLICYNUM")); + column3Maps.add(column3Map); + column4Map = new HashMap(); + column4Map.put("name", dataMap.get("coverage")); + column4Maps.add(column4Map); + if (dataMap.get("groupID").equals("1")) { + returnDataMap.put("leftname", "战略类流程"); + } else if (dataMap.get("groupID").equals("2")) { + returnDataMap.put("leftname", "运营类流程"); + } else if (dataMap.get("groupID").equals("3")) { + returnDataMap.put("leftname", "支持类流程"); + } + } + returnDataMap.put("secondcont", column1Maps); + returnDataMap.put("l2ol3BPMN2NUM", column2Maps); + returnDataMap.put("l2ol3POLICYNUM", column3Maps); + returnDataMap.put("coverage", column4Maps); + returnDataMaps.add(returnDataMap); + } + ro.put("headtop", headtop); + ro.put("content", returnDataMaps); + }else if (terms.equals("achievements")) { + //末级流程绩效 + String[] headtop = {"","","末级流程绩效(个)","覆盖率(%)"}; + List ACVNUMMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='ACVNUM'"); + List coverageAVCMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='coverageAVC'"); + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String FRAMEID = l1Map.getString("FRAMEID"); + String FRAMENAME = l1Map.getString("FRAMENAME"); + String FRAMETYPE = l1Map.getString("FRAMETYPE"); + Integer FRAMEORDERINDEX = l1Map.getInt("FRAMEORDERINDEX"); + Integer ACVNUM = 0; + String coverageAVC = null; + if (null != ACVNUMMaps && !ACVNUMMaps.isEmpty()) { + for (RowMap ACVNUMMap : ACVNUMMaps) { + if (FRAMEID.equals(ACVNUMMap.getString("GROUPIDEXT1"))) { + ACVNUM = ACVNUMMap.getInt("COUNTOFGROUP"); + } + } + } + if (null != coverageAVCMaps && !coverageAVCMaps.isEmpty()) { + for (RowMap coverageAVCMap : coverageAVCMaps) { + if (FRAMEID.equals(coverageAVCMap.getString("GROUPIDEXT1"))) { + coverageAVC = coverageAVCMap.getString("COUNTOFGROUP"); + } + } + } + originalMap = new HashMap<>(); + originalMap.put("PLNAME", FRAMENAME); + originalMap.put("ACVNUM", ACVNUM); + originalMap.put("coverage", coverageAVC); + originalMap.put("groupID", FRAMETYPE); + originalMaps.add(originalMap); + } + } + Map> dataGroup = originalMaps.stream(). + collect(Collectors.groupingBy(original->"group"+original.get("groupID").toString(),TreeMap::new, Collectors.toList())); + for (String groupID : dataGroup.keySet()) { + List dataMapstoGroupID = dataGroup.get(groupID); + HashMap column1Map = new HashMap<>(); + HashMap column2Map = new HashMap<>(); + HashMap column3Map = new HashMap<>(); + ArrayList column1Maps = new ArrayList<>(); + ArrayList column2Maps = new ArrayList<>(); + ArrayList column3Maps = new ArrayList<>(); + HashMap returnDataMap = new HashMap<>(); + for (Map dataMap : dataMapstoGroupID) { + column1Map = new HashMap(); + column1Map.put("name",dataMap.get("PLNAME")); + column1Maps.add(column1Map); + column2Map = new HashMap(); + column2Map.put("name",dataMap.get("ACVNUM")); + column2Maps.add(column2Map); + column3Map = new HashMap(); + column3Map.put("name",dataMap.get("coverage")); + column3Maps.add(column3Map); + if (dataMap.get("groupID").equals("1")) { + returnDataMap.put("leftname","战略类流程"); + } else if (dataMap.get("groupID").equals("2")) { + returnDataMap.put("leftname","运营类流程"); + } else if (dataMap.get("groupID").equals("3")) { + returnDataMap.put("leftname","支持类流程"); + } + } + returnDataMap.put("secondcont",column1Maps); + returnDataMap.put("ACVNUM",column2Maps); + returnDataMap.put("coverage",column3Maps); + returnDataMaps.add(returnDataMap); + } + ro.put("headtop",headtop); + ro.put("content",returnDataMaps); + } else if(terms.equals("systemnode")) { + //信息系统节点 + String[] headtop = {"","","信息系统节点(个)","覆盖率(%)"}; + List SYSNUMMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='SYSNUM'"); + List coverageSYSMaps = DBSql.getMaps("SELECT GROUPIDEXT1,COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT WHERE GROUPIDMAIN='coverageSYS'"); + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String FRAMEID = l1Map.getString("FRAMEID"); + String FRAMENAME = l1Map.getString("FRAMENAME"); + String FRAMETYPE = l1Map.getString("FRAMETYPE"); + Integer FRAMEORDERINDEX = l1Map.getInt("FRAMEORDERINDEX"); + Integer SYSNUM = 0; + String coverageSYS = null; + if (null != SYSNUMMaps && !SYSNUMMaps.isEmpty()) { + for (RowMap SYSNUMMap : SYSNUMMaps) { + if (FRAMEID.equals(SYSNUMMap.getString("GROUPIDEXT1"))) { + SYSNUM = SYSNUMMap.getInt("COUNTOFGROUP"); + } + } + } + if (null != coverageSYSMaps && !coverageSYSMaps.isEmpty()) { + for (RowMap coverageSYSMap : coverageSYSMaps) { + if (FRAMEID.equals(coverageSYSMap.getString("GROUPIDEXT1"))) { + coverageSYS = coverageSYSMap.getString("COUNTOFGROUP"); + } + } + } + originalMap = new HashMap<>(); + originalMap.put("PLNAME", FRAMENAME); + originalMap.put("SYSNUM", SYSNUM); + originalMap.put("coverage", coverageSYS); + originalMap.put("groupID", FRAMETYPE); + originalMaps.add(originalMap); + } + } + Map> dataGroup = originalMaps.stream(). + collect(Collectors.groupingBy(original->"group"+original.get("groupID").toString(),TreeMap::new, Collectors.toList())); + for (String groupID : dataGroup.keySet()) { + List dataMapstoGroupID = dataGroup.get(groupID); + HashMap column1Map = new HashMap<>(); + HashMap column2Map = new HashMap<>(); + HashMap column3Map = new HashMap<>(); + ArrayList column1Maps = new ArrayList<>(); + ArrayList column2Maps = new ArrayList<>(); + ArrayList column3Maps = new ArrayList<>(); + HashMap returnDataMap = new HashMap<>(); + for (Map dataMap : dataMapstoGroupID) { + column1Map = new HashMap(); + column1Map.put("name",dataMap.get("PLNAME")); + column1Maps.add(column1Map); + column2Map = new HashMap(); + column2Map.put("name",dataMap.get("SYSNUM")); + column2Maps.add(column2Map); + column3Map = new HashMap(); + column3Map.put("name",dataMap.get("coverage")); + column3Maps.add(column3Map); + if (dataMap.get("groupID").equals("1")) { + returnDataMap.put("leftname","战略类流程"); + } else if (dataMap.get("groupID").equals("2")) { + returnDataMap.put("leftname","运营类流程"); + } else if (dataMap.get("groupID").equals("3")) { + returnDataMap.put("leftname","支持类流程"); + } + } + returnDataMap.put("secondcont",column1Maps); + returnDataMap.put("SYSNUM",column2Maps); + returnDataMap.put("coverage",column3Maps); + returnDataMaps.add(returnDataMap); + } + ro.put("headtop",headtop); + ro.put("content",returnDataMaps); + } + return ro.toString(); +} + + + /** + * @methodName: + * @param: + * @return: + * @description:流程连接度分析筛选条件:所属单位、所属领域 + * @auther: Lizj + * @date: 2022/6/17 22:39 + */ + public String queryTerms2(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //所属单位 + List deptMaps = DBSql.getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE COMPANYID='8911e732-b42a-4556-853f-ad32761bcbee' AND CLOSED='0'"); + //demo3 + //3e74f14d-852f-4f6f-a809-08a56697f103 + //本地 + //d7087d5b-ab29-4514-a7e7-79379f6842a2 + //正式 + //8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + for (RowMap deptMap : deptMaps) { + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID",deptMap.getString("ID")); + deptNode.put("PARENTID",deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name",deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX",deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL",deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + List deptTreeNodes = TreeUtil.buildTree(deptNodes,"0","dept","3",null); + //所属领域 + ArrayList frameList = new ArrayList<>(); + ArrayList fieldMaps = new ArrayList<>(); + List L1Maps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL "); + String hasRoot = "Y"; + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String L1ID = l1Map.getString("FRAMEID"); + frameList = new ArrayList<>(); + frameList = GetNodesUtil.getChildFrame(L1ID, hasRoot, frameList); + fieldMaps.addAll(frameList); + } + } + ArrayList fieldNodes = new ArrayList<>(); + for (Map fieldMap : fieldMaps) { + HashMap fieldNode = new HashMap<>(); + fieldNode.put("ID", String.valueOf(fieldMap.get("FRAMEID"))); + fieldNode.put("PARENTID", String.valueOf(fieldMap.get("FRAMEPARENTID"))); + fieldNode.put("name", String.valueOf(fieldMap.get("FRAMENAME"))); + fieldNode.put("ORDERINDEX", Integer.valueOf(String.valueOf(fieldMap.get("FRAMEORDERINDEX")))); + fieldNode.put("TLEVEL", Integer.valueOf(String.valueOf(fieldMap.get("FRAMELEVEL")))); + fieldNodes.add(fieldNode); + } + List fieldTreeNodes = TreeUtil.buildTree(fieldNodes, "process", null, null, null); + ro.put("deptTreeNodes", deptTreeNodes); + ro.put("fieldTreeNodes", fieldTreeNodes); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程连接度分析 + * @auther: Lizj + * @date: 2022/6/16 16:58 + */ + public String processCONND(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String unit = params.get("unit"); + String field = params.get("field"); + //获取文件list + ArrayList deptIDList = new ArrayList<>(); + ArrayList fieldList = new ArrayList<>(); + List fileRowMaps = DBSql.getMaps("SELECT FILEID,PUBDEPT,LEADPROCESS,REARPROCESS FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1' AND PLMETHODID='process.epc'"); + ArrayList fileHandleMaps = new ArrayList<>(); + + if (null!=unit && !unit.equals("")) { + fileHandleMaps = new ArrayList<>(); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(unit, deptIDList); + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + fileHandleMaps.add(fileRowMap); + } + } + } + fileRowMaps = fileHandleMaps; + } + if (null!=field && !field.equals("")) { + fileHandleMaps = new ArrayList<>(); + fieldList = new ArrayList(); + fieldList = GetNodesUtil.getChildFrame(field,"", fieldList); + for (Map fieldMap : fieldList) { + String fieldID = String.valueOf(fieldMap.get("FRAMEID")); + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PLPARENTID").equals(fieldID)) { + fileHandleMaps.add(fileRowMap); + } + } + } + fileRowMaps = fileHandleMaps; + } + + //查询流程前后置前后置情况 + Integer fileTotalNum = 0; + Integer prepostNum = 0; + Integer preNum = 0; + Integer postNum = 0; + Integer noprepostNum = 0; + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + + if (null != fileRowMaps && !fileRowMaps.isEmpty()) { + for (RowMap fileRowMap : fileRowMaps) { + fileTotalNum += 1; + String LEADPROCESS = fileRowMap.getString("LEADPROCESS"); + String REARPROCESS = fileRowMap.getString("REARPROCESS"); + if (LEADPROCESS.equals("1") && REARPROCESS.equals("1")) { + prepostNum += 1; + } + if (LEADPROCESS.equals("1") && REARPROCESS.equals("0")) { + preNum += 1; + } + if (LEADPROCESS.equals("0") && REARPROCESS.equals("1")) { + postNum += 1; + } + if (LEADPROCESS.equals("0") && REARPROCESS.equals("0")) { + noprepostNum += 1; + } + } + } + //前置后置、单前置、单后置、无前置后置数量占比 + String prepostRatio = null; + String preRatio = null; + String postRatio = null; + String noprepostRatio = null; + if (fileTotalNum!=0) { + prepostRatio = numberformat.format((float) prepostNum / (float) fileTotalNum * 100); + preRatio = numberformat.format((float) preNum / (float) fileTotalNum * 100); + postRatio = numberformat.format((float) postNum / (float) fileTotalNum * 100); + noprepostRatio = numberformat.format((float) noprepostNum / (float) fileTotalNum * 100); + } else { + prepostRatio = "0"; + preRatio = "0"; + postRatio = "0"; + noprepostRatio = "0"; + } + + ro.put("prepostRatio", prepostRatio); + ro.put("preRatio", preRatio); + ro.put("postRatio", postRatio); + ro.put("noprepostRatio", noprepostRatio); + + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:事业部、职能部门流程连接度有前后置和无前后置占比 + * @auther: Lizj + * @date: 2022/6/20 10:56 + */ + public String processCONNDDetail(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + ArrayList deptIDList = new ArrayList<>(); + ArrayList bdPrepostRatioMaps = new ArrayList<>(); + ArrayList bdNoprepostRatioMaps = new ArrayList<>(); + ArrayList fdPrepostRatioMaps = new ArrayList<>(); + ArrayList fdNoprepostRatioMaps = new ArrayList<>(); + HashMap ratioMap = new HashMap<>(); + //事业部和职能部门ID,名称 list + List fileRowMaps = DBSql.getMaps("SELECT FILEID,PUBDEPT,LEADPROCESS,REARPROCESS FROM BO_EU_PAL_FILE1 WHERE FILESTATE='1' AND PLMETHODID='process.epc'"); + List BDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'"); + List FDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'"); + + //文件总数量,有前后置流程数量、无前后置流程数量 + Integer fileTotalNum = 0; + Integer prepostNum = 0; + Integer noprepostNum = 0; + //有前后置占比、无前后置占比 + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + String prepostRatio = null; + String noprepostRatio = null; + + if (null!=BDInfoMaps && !BDInfoMaps.isEmpty()) { + for (RowMap bdInfoMap : BDInfoMaps) { + fileTotalNum = 0; + prepostNum = 0; + noprepostNum = 0; + String bdDeptID = bdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + fileTotalNum += 1; + String LEADPROCESS = fileRowMap.getString("LEADPROCESS"); + String REARPROCESS = fileRowMap.getString("REARPROCESS"); + if (LEADPROCESS.equals("1") && REARPROCESS.equals("1")) { + prepostNum += 1; + } + if (LEADPROCESS.equals("0") && REARPROCESS.equals("0")) { + noprepostNum += 1; + } + } + } + } + } + if (fileTotalNum!=0) { + prepostRatio = numberformat.format((float) prepostNum / (float) fileTotalNum * 100); + noprepostRatio = numberformat.format((float) noprepostNum / (float) fileTotalNum * 100); + } else { + prepostRatio = "0"; + noprepostRatio = "0"; + } + ratioMap = new HashMap<>(); + ratioMap.put("deptID",bdDeptID); + ratioMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + ratioMap.put("ratio",prepostRatio); + bdPrepostRatioMaps.add(ratioMap); + ratioMap = new HashMap<>(); + ratioMap.put("deptID",bdDeptID); + ratioMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + ratioMap.put("ratio",noprepostRatio); + bdNoprepostRatioMaps.add(ratioMap); + } + } + if (null!=FDInfoMaps && !FDInfoMaps.isEmpty()) { + for (RowMap fdInfoMap : FDInfoMaps) { + fileTotalNum = 0; + prepostNum = 0; + noprepostNum = 0; + String fdDeptID = fdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap fileRowMap : fileRowMaps) { + if (fileRowMap.getString("PUBDEPT").contains(deptID)) { + fileTotalNum += 1; + String LEADPROCESS = fileRowMap.getString("LEADPROCESS"); + String REARPROCESS = fileRowMap.getString("REARPROCESS"); + if (LEADPROCESS.equals("1") && REARPROCESS.equals("1")) { + prepostNum += 1; + } + if (LEADPROCESS.equals("0") && REARPROCESS.equals("0")) { + noprepostNum += 1; + } + } + } + } + } + if (fileTotalNum!=0) { + prepostRatio = numberformat.format((float) prepostNum / (float) fileTotalNum * 100); + noprepostRatio = numberformat.format((float) noprepostNum / (float) fileTotalNum * 100); + } else { + prepostRatio = "0"; + noprepostRatio = "0"; + } + ratioMap = new HashMap<>(); + ratioMap.put("deptID",fdDeptID); + ratioMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + ratioMap.put("ratio",prepostRatio); + fdPrepostRatioMaps.add(ratioMap); + ratioMap = new HashMap<>(); + ratioMap.put("deptID",fdDeptID); + ratioMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + ratioMap.put("ratio",noprepostRatio); + fdNoprepostRatioMaps.add(ratioMap); + } + } + + ro.put("BDY", bdPrepostRatioMaps); + ro.put("BDN", bdNoprepostRatioMaps); + ro.put("FDY", fdPrepostRatioMaps); + ro.put("FDN", fdNoprepostRatioMaps); + + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程评论 + * @auther: Lizj + * @date: 2022/6/20 16:39 + */ + public String processComment(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + ArrayList commentMapsOfField = new ArrayList<>(); + ArrayList commentMapsOfDept = new ArrayList<>(); + HashMap commentMap = new HashMap<>(); + List fieldMaps = DBSql.getMaps("SELECT GROUPIDEXT2,FRAMENAME,COUNTOFGROUP FROM (SELECT FG.GROUPIDEXT2,PF.FRAMENAME,FG.COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT FG LEFT JOIN BO_EU_PAL_FRAME PF ON FG.GROUPIDEXT2=PF.FRAMEID WHERE GROUPIDMAIN='reply' AND GROUPIDEXT1='frame' ORDER BY TO_NUMBER(FG.COUNTOFGROUP) DESC) TEMP WHERE ROWNUM<=5"); + List deptMaps = DBSql.getMaps("SELECT FG.GROUPIDEXT2,DA.ABBREVIATION,FG.COUNTOFGROUP FROM BO_EU_PAL_FILE_GROUPCOUNT FG LEFT JOIN BO_EU_DEPT_ABBREVIATION DA ON FG.GROUPIDEXT2=DA.DEPTID WHERE GROUPIDMAIN='reply' AND GROUPIDEXT1='dept' ORDER BY TO_NUMBER(FG.COUNTOFGROUP) DESC"); + if (null!=fieldMaps && !fieldMaps.isEmpty()) { + for (RowMap fieldMap : fieldMaps) { + String fieldID = fieldMap.getString("GROUPIDEXT2"); + String fieldName = fieldMap.getString("FRAMENAME"); + Integer commentCount = fieldMap.getInt("COUNTOFGROUP"); + commentMap = new HashMap(); + commentMap.put("fieldID", fieldID); + commentMap.put("fieldName", fieldName); + commentMap.put("commentCount", commentCount); + commentMapsOfField.add(commentMap); + } + } + if (null!=deptMaps && !deptMaps.isEmpty()) { + for (RowMap deptMap : deptMaps) { + String deptID = deptMap.getString("GROUPIDEXT2"); + String deptName = deptMap.getString("ABBREVIATION"); + Integer commentCount = deptMap.getInt("COUNTOFGROUP"); + commentMap = new HashMap(); + commentMap.put("deptID", deptID); + commentMap.put("deptName", deptName); + commentMap.put("commentCount", commentCount); + commentMapsOfDept.add(commentMap); + } + } +/* Collections.sort(commentMapsOfField, (map1, map2) -> { + Integer value1 = (Integer) map1.get("commentCount"); + Integer value2 = (Integer) map2.get("commentCount"); + return value2.compareTo(value1); + }); + Collections.sort(commentMapsOfDept, (map1, map2) -> { + Integer value1 = (Integer) map1.get("commentCount"); + Integer value2 = (Integer) map2.get("commentCount"); + return value2.compareTo(value1); + });*/ + + ro.put("commentOfField", commentMapsOfField); + ro.put("commentOfDept", commentMapsOfDept); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程成熟度筛选条件 所属领域、评估周期 + * @auther: Lizj + * @date: 2022/6/20 22:23 + */ + public String queryTerms3(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + ArrayList paramFieldMaps = new ArrayList<>(); + ArrayList paramCycleMaps = new ArrayList<>(); + HashMap paramFieldMap = new HashMap<>(); + HashMap paramCycleMap = new HashMap<>(); + List fieldMaps = DBSql.getMaps("SELECT DISTINCT MF.FIELDTARGET AS FIELDTARGETKEY,BF.FRAMENAME AS FIELDTARGETVAL,BF.FRAMEORDERINDEX FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " ORDER BY TO_NUMBER(BF.FRAMEORDERINDEX) ASC"); + for (RowMap fieldMap : fieldMaps) { + paramFieldMap = new HashMap(); + String FIELDTARGETKEY = fieldMap.getString("FIELDTARGETKEY"); + String FIELDTARGETVAL = fieldMap.getString("FIELDTARGETVAL"); + if (FIELDTARGETKEY.equals("MATURITYTOTAL")) { + paramFieldMap.put("termsKey", FIELDTARGETKEY); + paramFieldMap.put("termsVal", "公司级"); + } else if (FIELDTARGETKEY.equals("NL")) { + paramFieldMap.put("termsKey", FIELDTARGETKEY); + paramFieldMap.put("termsVal", "奶酪"); + } else if (FIELDTARGETKEY.equals("LY")) { + paramFieldMap.put("termsKey", FIELDTARGETKEY); + paramFieldMap.put("termsVal", "冷饮"); + } else if (FIELDTARGETKEY.equals("SN")) { + paramFieldMap.put("termsKey", FIELDTARGETKEY); + paramFieldMap.put("termsVal", "酸奶"); + } else if (FIELDTARGETKEY.equals("NF")) { + paramFieldMap.put("termsKey", FIELDTARGETKEY); + paramFieldMap.put("termsVal", "奶粉"); + } else if (FIELDTARGETKEY.equals("GY")) { + paramFieldMap.put("termsKey", FIELDTARGETKEY); + paramFieldMap.put("termsVal", "国际业务"); + } else { + paramFieldMap.put("termsKey", FIELDTARGETKEY); + paramFieldMap.put("termsVal", FIELDTARGETVAL); + } + paramFieldMaps.add(paramFieldMap); + } + List cycleMaps = DBSql.getMaps("SELECT DISTINCT ASSESSCYCLE FROM BO_EU_MATURITY_FIELD"); + for (RowMap cycleMap : cycleMaps) { + paramCycleMap = new HashMap(); + paramCycleMap.put("termsKey", cycleMap.get("ASSESSCYCLE")); + paramCycleMap.put("termsVal", cycleMap.get("ASSESSCYCLE")); + paramCycleMaps.add(paramCycleMap); + } + ro.put("paramFieldMaps", paramFieldMaps); + ro.put("paramCycleMaps", paramCycleMaps); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程成熟度雷达图和评分明细 + * @auther: Lizj + * @date: 2022/6/21 23:04 + */ + public String processMaturity(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String field = params.get("field"); + String cycle = params.get("cycle"); + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + ArrayList MDDataMaps = new ArrayList<>(); + HashMap MFDataMap = new HashMap<>(); + HashMap MDDataMap = new HashMap<>(); + if ((field == null || field.equals("")) && (cycle == null || cycle.equals(""))) { + RowMap defaultMFMap = DBSql.getMap("SELECT MF.BINDID,MF.FIELDTARGET AS FIELDTARGETKEY,BF.FRAMENAME AS FIELDTARGETVAL,MF.MRLEVELSCORE,MF.ASSESSSCORE,MF.ASSESSDATE,MF.ASSESSMEMBER FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FIELDTARGET='MATURITYTOTAL'"); + if (null != defaultMFMap && defaultMFMap.isEmpty() == false) { + String BINDID = defaultMFMap.getString("BINDID"); + List defaultMDMaps = DBSql.getMaps("SELECT MT.TARGETKEY,MT.TARGETVAL,MD.REFERENCEELE,MD.TARGETSCORE,MD.SCOREEVI FROM BO_EU_MATURITY_DETAIL MD" + + " LEFT JOIN BO_EU_MATURITY_TARGET MT ON MD.TARGETVAL=MT.TARGETKEY" + + " WHERE MD.BINDID='" + BINDID + "'" + + " ORDER BY TARGETKEY ASC"); + if (null != defaultMDMaps && defaultMDMaps.isEmpty() == false) { + String FIELDTARGETKEY = defaultMFMap.getString("FIELDTARGETKEY"); + String FIELDTARGETVAL = defaultMFMap.getString("FIELDTARGETVAL"); + String MRLEVELSCORE = defaultMFMap.getString("MRLEVELSCORE"); + String ASSESSSCOREORIGIN = defaultMFMap.getString("ASSESSSCORE"); + String ASSESSDATE = defaultMFMap.getString("ASSESSDATE"); + StringBuilder ASSESSMEMBER = new StringBuilder(); + String AMUidOrigin = defaultMFMap.getString("ASSESSMEMBER"); + if (null != AMUidOrigin && !AMUidOrigin.equals("")) { + String[] AMUids = AMUidOrigin.split(","); + ArrayList AMNames = new ArrayList<>(); + for (String amUid : AMUids) { + UserModel AMUser = SDK.getORGAPI().getUser(amUid); + if (null != AMUser) { + String AMName = AMUser.getUserName(); + AMNames.add(AMName); + } + } + for (String amName : AMNames) { + ASSESSMEMBER.append("," + amName); + } + } + String ASSESSSCORE = ""; + if (null != ASSESSSCOREORIGIN && !ASSESSSCOREORIGIN.equals("")) { + ASSESSSCORE = numberformat.format(Float.parseFloat(ASSESSSCOREORIGIN)); + } + MFDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + MFDataMap.put("FIELDTARGETVAL", FIELDTARGETVAL); + MFDataMap.put("MRLEVELSCORE", MRLEVELSCORE); + MFDataMap.put("ASSESSSCORE", ASSESSSCORE); + MFDataMap.put("ASSESSDATE", ASSESSDATE); + MFDataMap.put("ASSESSMEMBER", ASSESSMEMBER); + for (RowMap defaultMDMap : defaultMDMaps) { + String TARGETKEY = defaultMDMap.getString("TARGETKEY"); + String TARGETVAL = defaultMDMap.getString("TARGETVAL"); + String REFERENCEELEORIGIN = defaultMDMap.getString("REFERENCEELE"); + String TARGETSCOREORIGIN = defaultMDMap.getString("TARGETSCORE"); + String SCOREEVIORIGIN = defaultMDMap.getString("SCOREEVI"); + String REFERENCEELE = ""; + String TARGETSCORE = ""; + String SCOREEVI = ""; + if (null != REFERENCEELEORIGIN && !REFERENCEELEORIGIN.equals("")) { + REFERENCEELE = REFERENCEELEORIGIN.replaceAll("__eol__", "\n"); + } + if (null != TARGETSCOREORIGIN && !TARGETSCOREORIGIN.equals("")) { + TARGETSCORE = TARGETSCOREORIGIN.replaceAll("__eol__", ""); + TARGETSCORE = numberformat.format(Float.parseFloat(TARGETSCORE)); + } + if (null != SCOREEVIORIGIN && !SCOREEVIORIGIN.equals("")) { + SCOREEVI = SCOREEVIORIGIN.replaceAll("__eol__", "\n"); + } + MDDataMap = new HashMap(); + MDDataMap.put("TARGETKEY", TARGETKEY); + MDDataMap.put("TARGETVAL", TARGETVAL); + MDDataMap.put("REFERENCEELE", REFERENCEELE); + MDDataMap.put("TARGETSCORE", TARGETSCORE); + MDDataMap.put("SCOREEVI", SCOREEVI); + MDDataMaps.add(MDDataMap); + } + ro.put("MFDataMap", MFDataMap); + ro.put("MDDataMaps", MDDataMaps); + } else { + ro.info("暂无评分明细"); + } + } else { + ro.info("暂无评估记录"); + } + } else if ((field != null && !field.equals("")) && (cycle == null || cycle.equals(""))) { + ro.err("请指定【评估周期】"); + } else if ((field == null || field.equals("")) && (cycle != null && !cycle.equals(""))) { + ro.err("请指定【所属领域】"); + } else { + RowMap MFMap = DBSql.getMap("SELECT MF.BINDID,MF.FIELDTARGET AS FIELDTARGETKEY,BF.FRAMENAME AS FIELDTARGETVAL,MF.MRLEVELSCORE,MF.ASSESSSCORE,MF.ASSESSDATE,MF.ASSESSMEMBER FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FIELDTARGET='" + field + "' AND MF.ASSESSCYCLE='" + cycle + "'"); + if (null != MFMap && MFMap.isEmpty() == false) { + String BINDID = MFMap.getString("BINDID"); + List MDMaps = DBSql.getMaps("SELECT MT.TARGETKEY,MT.TARGETVAL,MD.REFERENCEELE,MD.TARGETSCORE,MD.SCOREEVI FROM BO_EU_MATURITY_DETAIL MD" + + " LEFT JOIN BO_EU_MATURITY_TARGET MT ON MD.TARGETVAL=MT.TARGETKEY" + + " WHERE MD.BINDID='" + BINDID + "'" + + " ORDER BY TARGETKEY ASC"); + if (null != MDMaps && MDMaps.isEmpty() == false) { + String FIELDTARGETKEY = MFMap.getString("FIELDTARGETKEY"); + String FIELDTARGETVAL = MFMap.getString("FIELDTARGETVAL"); + String MRLEVELSCORE = MFMap.getString("MRLEVELSCORE"); + String ASSESSSCOREORIGIN = MFMap.getString("ASSESSSCORE"); + String ASSESSDATE = MFMap.getString("ASSESSDATE"); + StringBuilder ASSESSMEMBER = new StringBuilder(); + String AMUidOrigin = MFMap.getString("ASSESSMEMBER"); + if (null != AMUidOrigin && !AMUidOrigin.equals("")) { + String[] AMUids = AMUidOrigin.split(","); + ArrayList AMNames = new ArrayList<>(); + for (String amUid : AMUids) { + UserModel AMUser = SDK.getORGAPI().getUser(amUid); + if (null != AMUser) { + String AMName = AMUser.getUserName(); + AMNames.add(AMName); + } + } + for (String amName : AMNames) { + ASSESSMEMBER.append("," + amName); + } + } + String ASSESSSCORE = ""; + if (null != ASSESSSCOREORIGIN && !ASSESSSCOREORIGIN.equals("")) { + ASSESSSCORE = numberformat.format(Float.parseFloat(ASSESSSCOREORIGIN)); + } + MFDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + MFDataMap.put("FIELDTARGETVAL", FIELDTARGETVAL); + MFDataMap.put("MRLEVELSCORE", MRLEVELSCORE); + MFDataMap.put("ASSESSSCORE", ASSESSSCORE); + MFDataMap.put("ASSESSDATE", ASSESSDATE); + MFDataMap.put("ASSESSMEMBER", ASSESSMEMBER); + for (RowMap MDMap : MDMaps) { + String TARGETKEY = MDMap.getString("TARGETKEY"); + String TARGETVAL = MDMap.getString("TARGETVAL"); + String REFERENCEELEORIGIN = MDMap.getString("REFERENCEELE"); + String TARGETSCOREORIGIN = MDMap.getString("TARGETSCORE"); + String SCOREEVIORIGIN = MDMap.getString("SCOREEVI"); + String REFERENCEELE = ""; + String TARGETSCORE = ""; + String SCOREEVI = ""; + if (null != REFERENCEELEORIGIN && !REFERENCEELEORIGIN.equals("")) { + REFERENCEELE = REFERENCEELEORIGIN.replaceAll("__eol__", "\n"); + } + if (null != TARGETSCOREORIGIN && !TARGETSCOREORIGIN.equals("")) { + TARGETSCORE = TARGETSCOREORIGIN.replaceAll("__eol__", ""); + TARGETSCORE = numberformat.format(Float.parseFloat(TARGETSCORE)); + } + if (null != SCOREEVIORIGIN && !SCOREEVIORIGIN.equals("")) { + SCOREEVI = SCOREEVIORIGIN.replaceAll("__eol__", "\n"); + } + MDDataMap = new HashMap(); + MDDataMap.put("TARGETKEY", TARGETKEY); + MDDataMap.put("TARGETVAL", TARGETVAL); + MDDataMap.put("REFERENCEELE", REFERENCEELE); + MDDataMap.put("TARGETSCORE", TARGETSCORE); + MDDataMap.put("SCOREEVI", SCOREEVI); + MDDataMaps.add(MDDataMap); + } + ro.put("MFDataMap", MFDataMap); + ro.put("MDDataMaps", MDDataMaps); + } else { + ro.info("暂无评分明细"); + } + } else { + ro.info("暂无评估记录"); + } + } + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:成熟度目标达成率 + * @auther: Lizj + * @date: 2022/6/23 20:14 + */ + /* public String maturityReachRate(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(0); + HashMap BDRateMap = new HashMap<>(); + HashMap rateMap = new HashMap<>(); + ArrayList BDRateMaps = new ArrayList<>(); + ArrayList rateMaps = new ArrayList<>(); + HashMap totalRateMap = new HashMap<>(); + ArrayList totalRateMaps = new ArrayList<>(); + //Integer nowYear = 2021; + Integer nowYear = LocalDate.now().getYear(); + List BDFrameMaps = DBSql.getMaps("SELECT MF.FIELDTARGET AS FIELDTARGETKEY,BF.FRAMENAME AS FIELDTARGETVAL,MF.FINISHRATIO FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FINISHRATIO IS NOT NULL AND MF.ASSESSCYCLE='"+nowYear+"'" + + " AND BF.FRAMENAME IS NULL AND MF.FIELDTARGET!='GY'"); + Integer BDREACHCOUNT = DBSql.getInt("SELECT COUNT(*) AS BDREACHCOUNT FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FINISHRATIO IS NOT NULL AND MF.ASSESSCYCLE='"+nowYear+"'" + + " AND BF.FRAMENAME IS NULL AND MF.FIELDTARGET!='GY'" + + " AND TO_NUMBER(REPLACE(MF.FINISHRATIO,'%'))/100 >= 1","BDREACHCOUNT"); + Integer BDFRAMECOUNT = DBSql.getInt("SELECT COUNT(*) AS BDFRAMECOUNT FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FINISHRATIO IS NOT NULL AND MF.ASSESSCYCLE='"+nowYear+"'" + + " AND BF.FRAMENAME IS NULL AND MF.FIELDTARGET!='GY'", "BDFRAMECOUNT"); + List frameMaps = DBSql.getMaps("SELECT MF.FIELDTARGET AS FIELDTARGETKEY,BF.FRAMENAME AS FIELDTARGETVAL,MF.FINISHRATIO FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FINISHRATIO IS NOT NULL AND MF.ASSESSCYCLE='"+nowYear+"'" + + " AND (BF.FRAMENAME IS NOT NULL OR MF.FIELDTARGET='GY')" + + " ORDER BY TO_NUMBER(BF.FRAMEORDERINDEX) ASC,MF.UPDATEDATE ASC"); + Integer REACHCOUNT = DBSql.getInt("SELECT COUNT(*) AS REACHCOUNT" + + " FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FINISHRATIO IS NOT NULL AND MF.ASSESSCYCLE='"+nowYear+"'" + + " AND (BF.FRAMENAME IS NOT NULL OR MF.FIELDTARGET='GY')" + + " AND TO_NUMBER(REPLACE(MF.FINISHRATIO,'%'))/100 >= 1","REACHCOUNT"); + Integer FRAMECOUNT = DBSql.getInt("SELECT COUNT(*) AS FRAMECOUNT FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.FINISHRATIO IS NOT NULL AND MF.ASSESSCYCLE='"+nowYear+"'" + + " AND (BF.FRAMENAME IS NOT NULL OR MF.FIELDTARGET='GY')", "FRAMECOUNT"); + if(null!=BDFrameMaps && !BDFrameMaps.isEmpty()) { + for (RowMap bdFrameMap : BDFrameMaps) { + BDRateMap = new HashMap(); + String FIELDTARGETKEY = bdFrameMap.getString("FIELDTARGETKEY"); + String FIELDTARGETVAL = bdFrameMap.getString("FIELDTARGETVAL"); + String FINISHRATIO = bdFrameMap.getString("FINISHRATIO"); + FINISHRATIO = numberformat.format(Float.parseFloat(FINISHRATIO) * 100); + if (FIELDTARGETKEY.equals("NL")) { + BDRateMap.put("FIELDTARGETKEY",FIELDTARGETKEY); + BDRateMap.put("FIELDTARGETVAL","奶酪"); + BDRateMap.put("FINISHRATIO",FINISHRATIO); + } + if (FIELDTARGETKEY.equals("LY")) { + BDRateMap.put("FIELDTARGETKEY",FIELDTARGETKEY); + BDRateMap.put("FIELDTARGETVAL","冷饮"); + BDRateMap.put("FINISHRATIO",FINISHRATIO); + } + if (FIELDTARGETKEY.equals("SN")) { + BDRateMap.put("FIELDTARGETKEY",FIELDTARGETKEY); + BDRateMap.put("FIELDTARGETVAL","酸奶"); + BDRateMap.put("FINISHRATIO",FINISHRATIO); + } + if (FIELDTARGETKEY.equals("NF")) { + BDRateMap.put("FIELDTARGETKEY",FIELDTARGETKEY); + BDRateMap.put("FIELDTARGETVAL","奶粉"); + BDRateMap.put("FINISHRATIO",FINISHRATIO); + } + BDRateMaps.add(BDRateMap); + } + } + if (null!=frameMaps && !frameMaps.isEmpty()) { + for (RowMap frameMap : frameMaps) { + rateMap = new HashMap(); + String FIELDTARGETKEY = frameMap.getString("FIELDTARGETKEY"); + String FIELDTARGETVAL = frameMap.getString("FIELDTARGETVAL"); + String FINISHRATIO = frameMap.getString("FINISHRATIO"); + FINISHRATIO = numberformat.format(Float.parseFloat(FINISHRATIO) * 100); + if (FIELDTARGETKEY.equals("GY")) { + rateMap.put("FIELDTARGETKEY",FIELDTARGETKEY); + rateMap.put("FIELDTARGETVAL","国际业务"); + rateMap.put("FINISHRATIO",FINISHRATIO); + } else { + rateMap.put("FIELDTARGETKEY",FIELDTARGETKEY); + rateMap.put("FIELDTARGETVAL",FIELDTARGETVAL); + rateMap.put("FINISHRATIO",FINISHRATIO); + } + rateMaps.add(rateMap); + } + } + String BDTotalRate = numberformat.format((float) BDREACHCOUNT / (float) BDFRAMECOUNT * 100); + String otherTotalRate = numberformat.format((float) REACHCOUNT / (float) FRAMECOUNT * 100); + totalRateMap = new HashMap(); + totalRateMap.put("totalRate",BDTotalRate); + totalRateMap.put("rateMaps",BDRateMaps); + totalRateMaps.add(totalRateMap); + totalRateMap = new HashMap(); + totalRateMap.put("totalRate",otherTotalRate); + totalRateMap.put("rateMaps",rateMaps); + totalRateMaps.add(totalRateMap); + ro.put("totalRateMaps",totalRateMaps); + return ro.toString(); + }*/ + + /** + * @methodName: + * @param: + * @return: + * @description:领域成熟度情况查询条件:评估维度 + * @auther: Lizj + * @date: 2022/6/23 20:18 + */ + public String queryTerms4(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + ArrayList paramELDSMaps = new ArrayList<>(); + HashMap paramELDSMap = new HashMap<>(); + List ELDSMaps = DBSql.getMaps("SELECT TARGETKEY,TARGETVAL FROM BO_EU_MATURITY_TARGET"); + paramELDSMap = new HashMap(); + paramELDSMap.put("termsKey", "total"); + paramELDSMap.put("termsVal", "全部"); + paramELDSMaps.add(paramELDSMap); + for (RowMap ELDSMap : ELDSMaps) { + paramELDSMap = new HashMap(); + paramELDSMap.put("termsKey", ELDSMap.getString("TARGETKEY")); + paramELDSMap.put("termsVal", ELDSMap.getString("TARGETVAL")); + paramELDSMaps.add(paramELDSMap); + } + ro.put("paramELDSMaps", paramELDSMaps); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:领域成熟度情况 + * @auther: Lizj + * @date: 2022/6/23 20:21 + */ + public String maturityField(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(1); + HashMap fieldDataMap = new HashMap<>(); + ArrayList fieldDataMaps = new ArrayList<>(); + //测试用固定年份,之后用下边@公式 + Integer nowYear = 2021; + //Integer nowYear = LocalDate.now().getYear(); + String ELDSKey = params.get("ELDSKey"); + if (null == ELDSKey || ELDSKey.equals("") || ELDSKey.equals("total")) { + List defaultMaturityMaps = DBSql.getMaps("SELECT MF.BINDID,MF.FIELDTARGET AS FIELDTARGETKEY,BF.FRAMENAME AS FIELDTARGETVAL,MF.ASSESSSCORE,MF.AIMVALUE,BF.FRAMEORDERINDEX FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " WHERE MF.ASSESSCYCLE='" + nowYear + "'" + + " ORDER BY TO_NUMBER(BF.FRAMEORDERINDEX) ASC,MF.UPDATEDATE ASC"); + if (null != defaultMaturityMaps && defaultMaturityMaps.isEmpty() == false) { + for (RowMap defaultMaturityMap : defaultMaturityMaps) { + fieldDataMap = new HashMap(); + String FIELDTARGETKEY = defaultMaturityMap.getString("FIELDTARGETKEY"); + String FIELDTARGETVAL = defaultMaturityMap.getString("FIELDTARGETVAL"); + String ASSESSSCORE = defaultMaturityMap.getString("ASSESSSCORE"); + if (null != ASSESSSCORE && !ASSESSSCORE.equals("")) { + ASSESSSCORE = numberformat.format(Float.parseFloat(ASSESSSCORE)); + } + String AIMVALUE = defaultMaturityMap.getString("AIMVALUE"); + if (null != AIMVALUE && !AIMVALUE.equals("")) { + AIMVALUE = numberformat.format(Float.parseFloat(AIMVALUE)); + } + if (FIELDTARGETKEY.equals("MATURITYTOTAL")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "公司级"); + fieldDataMap.put("ASSESSSCORE", ASSESSSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("GY")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "国际业务"); + fieldDataMap.put("ASSESSSCORE", ASSESSSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("SN")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "酸奶"); + fieldDataMap.put("ASSESSSCORE", ASSESSSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("NL")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "奶酪"); + fieldDataMap.put("ASSESSSCORE", ASSESSSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("LY")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "冷饮"); + fieldDataMap.put("ASSESSSCORE", ASSESSSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("NF")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "奶粉"); + fieldDataMap.put("ASSESSSCORE", ASSESSSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", FIELDTARGETVAL); + fieldDataMap.put("ASSESSSCORE", ASSESSSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } + fieldDataMaps.add(fieldDataMap); + } +/* Map map1 = fieldDataMaps.get(0); + Map map2 = fieldDataMaps.get(3); + fieldDataMaps.set(0,map2); + fieldDataMaps.set(3,map1);*/ + ro.put("fieldDataMaps", fieldDataMaps); + } else { + ro.info("暂无评估记录"); + } + } else { + List targetMaturityMaps = DBSql.getMaps("SELECT MF.BINDID,MF.FIELDTARGET AS FIELDTARGETKEY,BF.FRAMENAME AS FIELDTARGETVAL,MF.ASSESSSCORE,MF.AIMVALUE,MT.TARGETKEY,MT.TARGETVAL,MD.TARGETSCORE,BF.FRAMEORDERINDEX FROM BO_EU_MATURITY_FIELD MF" + + " LEFT JOIN BO_EU_PAL_FRAME BF ON MF.FIELDTARGET=BF.FRAMEID" + + " INNER JOIN BO_EU_MATURITY_DETAIL MD ON MF.BINDID=MD.BINDID" + + " LEFT JOIN BO_EU_MATURITY_TARGET MT ON MD.TARGETVAL=MT.TARGETKEY" + + " WHERE MF.ASSESSCYCLE='" + nowYear + "'" + + " AND MD.TARGETVAL='" + ELDSKey + "'" + + " ORDER BY TO_NUMBER(BF.FRAMEORDERINDEX) ASC,MF.UPDATEDATE ASC"); + if (null != targetMaturityMaps && targetMaturityMaps.isEmpty() == false) { + for (RowMap targetMaturityMap : targetMaturityMaps) { + fieldDataMap = new HashMap(); + String FIELDTARGETKEY = targetMaturityMap.getString("FIELDTARGETKEY"); + String FIELDTARGETVAL = targetMaturityMap.getString("FIELDTARGETVAL"); + String TARGETSCORE = targetMaturityMap.getString("TARGETSCORE"); + if (null != TARGETSCORE && !TARGETSCORE.equals("")) { + TARGETSCORE = TARGETSCORE.replaceAll("__eol__", ""); + TARGETSCORE = numberformat.format(Float.parseFloat(TARGETSCORE)); + } + String AIMVALUE = targetMaturityMap.getString("AIMVALUE"); + if (null != AIMVALUE && !AIMVALUE.equals("")) { + AIMVALUE = numberformat.format(Float.parseFloat(AIMVALUE)); + } + if (FIELDTARGETKEY.equals("MATURITYTOTAL")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "公司级"); + fieldDataMap.put("TARGETSCORE", TARGETSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("GY")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "国际业务"); + fieldDataMap.put("TARGETSCORE", TARGETSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("SN")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "酸奶"); + fieldDataMap.put("TARGETSCORE", TARGETSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("NL")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "奶酪"); + fieldDataMap.put("TARGETSCORE", TARGETSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("LY")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "冷饮"); + fieldDataMap.put("TARGETSCORE", TARGETSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else if (FIELDTARGETKEY.equals("NF")) { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", "奶粉"); + fieldDataMap.put("TARGETSCORE", TARGETSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } else { + fieldDataMap.put("FIELDTARGETKEY", FIELDTARGETKEY); + fieldDataMap.put("FIELDTARGETVAL", FIELDTARGETVAL); + fieldDataMap.put("TARGETSCORE", TARGETSCORE); + fieldDataMap.put("AIMVALUE", AIMVALUE); + } + fieldDataMaps.add(fieldDataMap); + } +/* Map map1 = fieldDataMaps.get(0); + Map map2 = fieldDataMaps.get(1); + fieldDataMaps.set(0,map2); + fieldDataMaps.set(1,map1);*/ + ro.put("fieldDataMaps", fieldDataMaps); + } else { + ro.info("暂无评估记录"); + } + } + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程系统分布图 + * @auther: Lizj + * @date: 2022/6/24 15:33 + */ + public String sysDistribution(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + HashMap sysDistributionmap = new HashMap<>(); + ArrayList sysDistributionmaps = new ArrayList<>(); + List systemMaps = DBSql.getMaps("SELECT ITSYSVAL,COUNT(*)SYSNUM FROM BO_EU_PAL_FILENODE5 WHERE ITSYSVAL IS NOT NULL GROUP BY ITSYSVAL"); + for (RowMap systemMap : systemMaps) { + sysDistributionmap = new HashMap(); + sysDistributionmap.put("systemName", systemMap.getString("ITSYSVAL")); + sysDistributionmap.put("systemCount", systemMap.getInt("SYSNUM")); + sysDistributionmaps.add(sysDistributionmap); + } + ro.put("sysDistribution", sysDistributionmaps); + return ro.toString(); + } + + + /** + * @methodName: + * @param: + * @return: + * @description:流程节点分析筛选条件:所属单位、所属领域 + * @auther: Lizj + * @date: 2022/7/15 15:56 + */ + public String nodeAnalysisTerms(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //所属单位 + List deptMaps = DBSql.getMaps("SELECT ID,PARENTDEPARTMENTID,DEPARTMENTNAME,LAYER,ORDERINDEX FROM ORGDEPARTMENT" + + " WHERE COMPANYID='8911e732-b42a-4556-853f-ad32761bcbee' AND CLOSED='0'"); + //demo3 + //3e74f14d-852f-4f6f-a809-08a56697f103 + //本地 + //d7087d5b-ab29-4514-a7e7-79379f6842a2 + //正式 + //8911e732-b42a-4556-853f-ad32761bcbee + String nodeType = null; + ArrayList deptNodes = new ArrayList<>(); + for (RowMap deptMap : deptMaps) { + HashMap deptNode = new HashMap<>(); + nodeType = "dept"; + deptNode.put("ID",deptMap.getString("ID")); + deptNode.put("PARENTID",deptMap.getString("PARENTDEPARTMENTID")); + deptNode.put("name",deptMap.getString("DEPARTMENTNAME")); + deptNode.put("ORDERINDEX",deptMap.getString("ORDERINDEX")); + deptNode.put("TLEVEL",deptMap.getString("LAYER")); + deptNode.put("nodeType", nodeType); + deptNodes.add(deptNode); + } + List deptTreeNodes = TreeUtil.buildTree(deptNodes,"0","dept","3",null); + //所属领域 + ArrayList frameList = new ArrayList<>(); + ArrayList fieldMaps = new ArrayList<>(); + List L1Maps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL "); + String hasRoot = "Y"; + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String L1ID = l1Map.getString("FRAMEID"); + frameList = new ArrayList<>(); + frameList = GetNodesUtil.getChildFrame(L1ID, hasRoot, frameList); + fieldMaps.addAll(frameList); + } + } + ArrayList fieldNodes = new ArrayList<>(); + for (Map fieldMap : fieldMaps) { + HashMap fieldNode = new HashMap<>(); + fieldNode.put("ID", String.valueOf(fieldMap.get("FRAMEID"))); + fieldNode.put("PARENTID", String.valueOf(fieldMap.get("FRAMEPARENTID"))); + fieldNode.put("name", String.valueOf(fieldMap.get("FRAMENAME"))); + fieldNode.put("ORDERINDEX", Integer.valueOf(String.valueOf(fieldMap.get("FRAMEORDERINDEX")))); + fieldNode.put("TLEVEL", Integer.valueOf(String.valueOf(fieldMap.get("FRAMELEVEL")))); + fieldNodes.add(fieldNode); + } + List fieldTreeNodes = TreeUtil.buildTree(fieldNodes, "process", null, null, null); + ro.put("deptTreeNodes", deptTreeNodes); + ro.put("fieldTreeNodes", fieldTreeNodes); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:流程节点分析 + * @auther: Lizj + * @date: 2022/7/15 15:57 + */ + public String nodeAnalysis(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String unit = params.get("unit"); + String field = params.get("field"); + ArrayList deptIDList = new ArrayList<>(); + ArrayList fieldList = new ArrayList<>(); + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + List nodeRowMaps = DBSql.getMaps("SELECT BN.NODEID,BN.NODETYPE,BF.FILEID,BF.PLPARENTID,BF.PUBDEPT FROM BO_EU_PAL_FILENODE5 BN LEFT JOIN BO_EU_PAL_FILE1 BF ON BN.PLID=BF.FILEID WHERE BF.FILESTATE='1' AND BF.PLMETHODID='process.epc'"); + ArrayList nodeHandleMaps = new ArrayList<>(); + if (null!=unit && !unit.equals("")) { + nodeHandleMaps = new ArrayList<>(); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(unit, deptIDList); + for (String deptID : deptIDList) { + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PUBDEPT").contains(deptID)) { + nodeHandleMaps.add(nodeRowMap); + } + } + } + nodeRowMaps = nodeHandleMaps; + } + if (null!=field && !field.equals("")) { + nodeHandleMaps = new ArrayList<>(); + fieldList = new ArrayList(); + fieldList = GetNodesUtil.getChildFrame(field,"", fieldList); + for (Map fieldMap : fieldList) { + String fieldID = String.valueOf(fieldMap.get("FRAMEID")); + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PLPARENTID").equals(fieldID)) { + nodeHandleMaps.add(nodeRowMap); + } + } + } + nodeRowMaps = nodeHandleMaps; + } + Integer nodeTotalNum = 0; + Integer approvalNodeNum = 0; + Integer operationNodeNum = 0; + Integer onlineNodeNum = 0; + Integer itsysNodeNum = 0; + String approvalRrationate = "0"; + String operationRate = "0"; + String onlineRate = "0"; + String itsysRate = "0"; + if (null!=nodeRowMaps && !nodeRowMaps.isEmpty()) { + nodeTotalNum = nodeRowMaps.size(); + approvalNodeNum = 0; + operationNodeNum = 0; + onlineNodeNum = 0; + itsysNodeNum = 0; + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node") || nodeRowMap.getString("NODETYPE").equals("method_service_node")) { + approvalNodeNum += 1; + } + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node3") || nodeRowMap.getString("NODETYPE").equals("method_service_node4")) { + operationNodeNum += 1; + } + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node")) { + onlineNodeNum += 1; + } + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node3")) { + itsysNodeNum += 1; + } + } + + approvalRrationate = numberformat.format((float) approvalNodeNum / (float) nodeTotalNum * 100); + operationRate = numberformat.format((float) operationNodeNum / (float) nodeTotalNum * 100); + onlineRate = numberformat.format((float) onlineNodeNum / (float) approvalNodeNum * 100); + itsysRate = numberformat.format((float) itsysNodeNum / (float) operationNodeNum * 100); + + ro.put("nodeTotalNum",nodeTotalNum); + ro.put("approvalNodeNum",approvalNodeNum); + ro.put("approvalRrationate",approvalRrationate); + ro.put("onlineRate",onlineRate); + ro.put("operationNodeNum",operationNodeNum); + ro.put("operationRate",operationRate); + ro.put("itsysRate",itsysRate); + } else { + nodeTotalNum = 0; + approvalNodeNum = 0; + operationNodeNum = 0; + onlineNodeNum = 0; + itsysNodeNum = 0; + approvalRrationate = "0"; + operationRate = "0"; + onlineRate = "0"; + itsysRate = "0"; + ro.ok("暂无节点"); + ro.put("nodeTotalNum",nodeTotalNum); + ro.put("approvalNodeNum",approvalNodeNum); + ro.put("approvalRrationate",approvalRrationate); + ro.put("onlineRate",onlineRate); + ro.put("operationNodeNum",operationNodeNum); + ro.put("operationRate",operationRate); + ro.put("itsysRate",itsysRate); + } + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:事业部/职能部门节点信息筛选条件:所属领域 + * @auther: Lizj + * @date: 2022/8/5 0:21 + */ + public String deptNodeAttrTerms(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + //所属领域 + ArrayList frameList = new ArrayList<>(); + ArrayList fieldMaps = new ArrayList<>(); + List L1Maps = DBSql.getMaps("SELECT FRAMEID,FRAMENAME,FRAMETYPE,FRAMEORDERINDEX FROM BO_EU_PAL_FRAME WHERE FRAMELEVEL=1 AND FRAMETYPE IS NOT NULL "); + String hasRoot = "Y"; + if (null != L1Maps && !L1Maps.isEmpty()) { + for (RowMap l1Map : L1Maps) { + String L1ID = l1Map.getString("FRAMEID"); + frameList = new ArrayList<>(); + frameList = GetNodesUtil.getChildFrame(L1ID, hasRoot, frameList); + fieldMaps.addAll(frameList); + } + } + ArrayList fieldNodes = new ArrayList<>(); + for (Map fieldMap : fieldMaps) { + HashMap fieldNode = new HashMap<>(); + fieldNode.put("ID", String.valueOf(fieldMap.get("FRAMEID"))); + fieldNode.put("PARENTID", String.valueOf(fieldMap.get("FRAMEPARENTID"))); + fieldNode.put("name", String.valueOf(fieldMap.get("FRAMENAME"))); + fieldNode.put("ORDERINDEX", Integer.valueOf(String.valueOf(fieldMap.get("FRAMEORDERINDEX")))); + fieldNode.put("TLEVEL", Integer.valueOf(String.valueOf(fieldMap.get("FRAMELEVEL")))); + fieldNodes.add(fieldNode); + } + List fieldTreeNodes = TreeUtil.buildTree(fieldNodes, "process", null, null, null); + ro.put("fieldTreeNodes", fieldTreeNodes); + return ro.toString(); + } + + /** + * @methodName: + * @param: + * @return: + * @description:事业部/职能部门审批节点信息 + * @auther: Lizj + * @date: 2022/8/5 0:27 + */ + public String deptNodeAttrApproval(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String field = params.get("field"); + ArrayList fieldList = new ArrayList<>(); + ArrayList deptIDList = new ArrayList<>(); + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + HashMap deptNodeCountMap = new HashMap<>(); + ArrayList BDApprovalNodeCountMaps = new ArrayList<>(); + ArrayList FDApprovalNodeCountMaps = new ArrayList<>(); + ArrayList BDApprovalNodeRateMaps = new ArrayList<>(); + ArrayList FDApprovalNodeRateMaps = new ArrayList<>(); + ArrayList BDApprovalOLNodeRateMaps = new ArrayList<>(); + ArrayList FDApprovalOLNodeRateMaps = new ArrayList<>(); + //事业部和职能部门ID,名称 list + List nodeRowMaps = DBSql.getMaps("SELECT BN.NODEID,BN.NODETYPE,BF.FILEID,BF.PLPARENTID,BF.PUBDEPT FROM BO_EU_PAL_FILENODE5 BN LEFT JOIN BO_EU_PAL_FILE1 BF ON BN.PLID=BF.FILEID WHERE BF.FILESTATE='1' AND BF.PLMETHODID='process.epc'"); + ArrayList nodeHandleMaps = new ArrayList<>(); + List BDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'"); + List FDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'"); + //审批节点数量、节点总数量、线上审批节点数量 + Integer nodeTotalNum = 0; + Integer approvalNodeNum = 0; + Integer approvalOLNodeNum = 0; + String approvalRate = "0"; + String approvalOLRate = "0"; + + if (null!=field && !field.equals("")) { + nodeHandleMaps = new ArrayList<>(); + fieldList = new ArrayList(); + fieldList = GetNodesUtil.getChildFrame(field,"", fieldList); + for (Map fieldMap : fieldList) { + String fieldID = String.valueOf(fieldMap.get("FRAMEID")); + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PLPARENTID").equals(fieldID)) { + nodeHandleMaps.add(nodeRowMap); + } + } + } + nodeRowMaps = nodeHandleMaps; + } + + if (null!=BDInfoMaps && !BDInfoMaps.isEmpty()) { + for (RowMap bdInfoMap : BDInfoMaps) { + nodeTotalNum = 0; + approvalNodeNum = 0; + approvalOLNodeNum = 0; + String bdDeptID = bdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PUBDEPT").contains(deptID)) { + nodeTotalNum += 1; + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node") || nodeRowMap.getString("NODETYPE").equals("method_service_node")) { + approvalNodeNum += 1; + } + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node")) { + approvalOLNodeNum += 1; + } + } + } + } + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",bdDeptID); + deptNodeCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("approvalNodeNum",approvalNodeNum); + BDApprovalNodeCountMaps.add(deptNodeCountMap); + if (nodeTotalNum!=0) { + approvalRate = numberformat.format((float) approvalNodeNum / (float) nodeTotalNum * 100); + } else { + approvalRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",bdDeptID); + deptNodeCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("approvalRate",approvalRate); + BDApprovalNodeRateMaps.add(deptNodeCountMap); + if (approvalNodeNum!=0) { + approvalOLRate = numberformat.format((float) approvalOLNodeNum / (float) approvalNodeNum * 100); + } else { + approvalOLRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",bdDeptID); + deptNodeCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("approvalOLRate",approvalOLRate); + BDApprovalOLNodeRateMaps.add(deptNodeCountMap); + } + } + if (null!=FDInfoMaps && !FDInfoMaps.isEmpty()) { + for (RowMap fdInfoMap : FDInfoMaps) { + nodeTotalNum = 0; + approvalNodeNum = 0; + approvalOLNodeNum = 0; + String fdDeptID = fdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PUBDEPT").contains(deptID)) { + nodeTotalNum += 1; + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node") || nodeRowMap.getString("NODETYPE").equals("method_service_node")) { + approvalNodeNum += 1; + } + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node")) { + approvalOLNodeNum += 1; + } + } + } + } + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",fdDeptID); + deptNodeCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("approvalNodeNum",approvalNodeNum); + FDApprovalNodeCountMaps.add(deptNodeCountMap); + if (nodeTotalNum!=0) { + approvalRate = numberformat.format((float) approvalNodeNum / (float) nodeTotalNum * 100); + } else { + approvalRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",fdDeptID); + deptNodeCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("approvalRate",approvalRate); + FDApprovalNodeRateMaps.add(deptNodeCountMap); + if (approvalNodeNum!=0) { + approvalOLRate = numberformat.format((float) approvalOLNodeNum / (float) approvalNodeNum * 100); + } else { + approvalOLRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",fdDeptID); + deptNodeCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("approvalOLRate",approvalOLRate); + FDApprovalOLNodeRateMaps.add(deptNodeCountMap); + } + } + + ro.put("BDApprovalNodeCountMaps",BDApprovalNodeCountMaps); + ro.put("FDApprovalNodeCountMaps",FDApprovalNodeCountMaps); + ro.put("BDApprovalNodeRateMaps",BDApprovalNodeRateMaps); + ro.put("FDApprovalNodeRateMaps",FDApprovalNodeRateMaps); + ro.put("BDApprovalOLNodeRateMaps",BDApprovalOLNodeRateMaps); + ro.put("FDApprovalOLNodeRateMaps",FDApprovalOLNodeRateMaps); + + return ro.toString(); + } + /** + * @methodName: + * @param: + * @return: + * @description:事业部/职能部门操作节点信息 + * @auther: Lizj + * @date: 2022/8/5 0:27 + */ + public String deptNodeAttrOperation(UserContext uc, RequestParams params) { + ResponseObject ro = ResponseObject.newOkResponse(); + String field = params.get("field"); + ArrayList fieldList = new ArrayList<>(); + ArrayList deptIDList = new ArrayList<>(); + NumberFormat numberformat = NumberFormat.getInstance(); + numberformat.setMaximumFractionDigits(2); + HashMap deptNodeCountMap = new HashMap<>(); + ArrayList BDOperationNodeCountMaps = new ArrayList<>(); + ArrayList FDOperationNodeCountMaps = new ArrayList<>(); + ArrayList BDOperationNodeRateMaps = new ArrayList<>(); + ArrayList FDOperationNodeRateMaps = new ArrayList<>(); + ArrayList BDOperationOLNodeRateMaps = new ArrayList<>(); + ArrayList FDOperationOLNodeRateMaps = new ArrayList<>(); + //事业部和职能部门ID,名称 list + List nodeRowMaps = DBSql.getMaps("SELECT BN.NODEID,BN.NODETYPE,BF.FILEID,BF.PLPARENTID,BF.PUBDEPT FROM BO_EU_PAL_FILENODE5 BN LEFT JOIN BO_EU_PAL_FILE1 BF ON BN.PLID=BF.FILEID WHERE BF.FILESTATE='1' AND BF.PLMETHODID='process.epc'"); + ArrayList nodeHandleMaps = new ArrayList<>(); + List BDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='BD'"); + List FDInfoMaps = DBSql.getMaps("SELECT DEPTID,DEPTNAME,ABBREVIATION,DEPTTYPE FROM BO_EU_DEPT_ABBREVIATION WHERE DEPTTYPE='FD'"); + //审批节点数量、节点总数量、线上审批节点数量 + Integer nodeTotalNum = 0; + Integer operationNodeNum = 0; + Integer operationOLNodeNum = 0; + String operationNodeRate = "0"; + String operationOLNodeRate = "0"; + + if (null!=field && !field.equals("")) { + nodeHandleMaps = new ArrayList<>(); + fieldList = new ArrayList(); + fieldList = GetNodesUtil.getChildFrame(field,"", fieldList); + for (Map fieldMap : fieldList) { + String fieldID = String.valueOf(fieldMap.get("FRAMEID")); + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PLPARENTID").equals(fieldID)) { + nodeHandleMaps.add(nodeRowMap); + } + } + } + nodeRowMaps = nodeHandleMaps; + } + + if (null!=BDInfoMaps && !BDInfoMaps.isEmpty()) { + for (RowMap bdInfoMap : BDInfoMaps) { + nodeTotalNum = 0; + operationNodeNum = 0; + operationOLNodeNum = 0; + String bdDeptID = bdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(bdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PUBDEPT").contains(deptID)) { + nodeTotalNum += 1; + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node3") || nodeRowMap.getString("NODETYPE").equals("method_service_node4")) { + operationNodeNum += 1; + } + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node3")) { + operationOLNodeNum += 1; + } + } + } + } + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",bdDeptID); + deptNodeCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("operationNodeNum",operationNodeNum); + BDOperationNodeCountMaps.add(deptNodeCountMap); + if (nodeTotalNum!=0) { + operationNodeRate = numberformat.format((float) operationNodeNum / (float) nodeTotalNum * 100); + } else { + operationNodeRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",bdDeptID); + deptNodeCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("operationNodeRate",operationNodeRate); + BDOperationNodeRateMaps.add(deptNodeCountMap); + if (operationNodeNum!=0) { + operationOLNodeRate = numberformat.format((float) operationOLNodeNum / (float) operationNodeNum * 100); + } else { + operationOLNodeRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",bdDeptID); + deptNodeCountMap.put("deptName",bdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("operationOLNodeRate",operationOLNodeRate); + BDOperationOLNodeRateMaps.add(deptNodeCountMap); + } + } + if (null!=FDInfoMaps && !FDInfoMaps.isEmpty()) { + for (RowMap fdInfoMap : FDInfoMaps) { + nodeTotalNum = 0; + operationNodeNum = 0; + operationOLNodeNum = 0; + String fdDeptID = fdInfoMap.getString("DEPTID"); + deptIDList = new ArrayList(); + deptIDList = GetNodesUtil.getChildDept(fdDeptID, deptIDList); + if (null!=deptIDList && !deptIDList.isEmpty()) { + for (String deptID : deptIDList) { + for (RowMap nodeRowMap : nodeRowMaps) { + if (nodeRowMap.getString("PUBDEPT").contains(deptID)) { + nodeTotalNum += 1; + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node3") || nodeRowMap.getString("NODETYPE").equals("method_service_node4")) { + operationNodeNum += 1; + } + if (nodeRowMap.getString("NODETYPE").equals("method_approval_node3")) { + operationOLNodeNum += 1; + } + } + } + } + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",fdDeptID); + deptNodeCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("operationNodeNum",operationNodeNum); + FDOperationNodeCountMaps.add(deptNodeCountMap); + if (nodeTotalNum!=0) { + operationNodeRate = numberformat.format((float) operationNodeNum / (float) nodeTotalNum * 100); + } else { + operationNodeRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",fdDeptID); + deptNodeCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("operationNodeRate",operationNodeRate); + FDOperationNodeRateMaps.add(deptNodeCountMap); + if (operationNodeNum!=0) { + operationOLNodeRate = numberformat.format((float) operationOLNodeNum / (float) operationNodeNum * 100); + } else { + operationOLNodeRate = "0"; + } + deptNodeCountMap = new HashMap<>(); + deptNodeCountMap.put("deptID",fdDeptID); + deptNodeCountMap.put("deptName",fdInfoMap.getString("ABBREVIATION")); + deptNodeCountMap.put("operationOLNodeRate",operationOLNodeRate); + FDOperationOLNodeRateMaps.add(deptNodeCountMap); + } + } + + ro.put("BDOperationNodeCountMaps",BDOperationNodeCountMaps); + ro.put("FDOperationNodeCountMaps",FDOperationNodeCountMaps); + ro.put("BDOperationNodeRateMaps",BDOperationNodeRateMaps); + ro.put("FDOperationNodeRateMaps",FDOperationNodeRateMaps); + ro.put("BDOperationOLNodeRateMaps",BDOperationOLNodeRateMaps); + ro.put("FDOperationOLNodeRateMaps",FDOperationOLNodeRateMaps); + + return ro.toString(); + } + +} \ No newline at end of file diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ToPageService.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ToPageService.java new file mode 100644 index 00000000..1a7bae23 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/service/ToPageService.java @@ -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 macroLibraries = new HashMap(); + 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 macroLibraries = new HashMap(); + 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 macroLibraries = new HashMap(); + 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 macroLibraries = new HashMap(); + 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 macroLibraries = new HashMap(); + 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 macroLibraries = new HashMap(); + 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 macroLibraries = new HashMap(); + 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 fileType = new HashMap<>(); + ArrayList fileTypes = new ArrayList<>(); + fileType.put("termsKey","processFile"); + fileType.put("termsVal","流程"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","policyFile"); + fileType.put("termsVal","制度"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","guideFile"); + fileType.put("termsVal","操作指导"); + fileTypes.add(fileType); + fileType = new HashMap(); + fileType.put("termsKey","formFile"); + fileType.put("termsVal","表单/模板"); + fileTypes.add(fileType); + fileType = new HashMap(); + 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 fileMap = new HashMap<>(); + ArrayList 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(); + 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 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 fileHandleRowMaps = new ArrayList<>(); + Map 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(); + 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 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(); + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/CheckUtil.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/CheckUtil.java new file mode 100644 index 00000000..9aa35679 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/CheckUtil.java @@ -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; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/GetNodesUtil.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/GetNodesUtil.java new file mode 100644 index 00000000..60db997a --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/GetNodesUtil.java @@ -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 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 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 deptIDList) { + deptIDList.add(deptID); + Object[] sqlParams = new Object[]{}; + sqlParams = new Object[]{deptID}; + List 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 getParentFrame(String fileID, List 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; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/RepositoryAttribute.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/RepositoryAttribute.java new file mode 100644 index 00000000..b2804b50 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/RepositoryAttribute.java @@ -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 queryRepositoryAttributeById(String uuid) { + Map result = new HashMap<>(); + PALRepositoryModel plModel = PALRepositoryCache.getCache().get(uuid); + // 获取所有文件属性 + List methodAttrModels = PALRepositoryAPIManager.getInstance().getValidAndUseAttributeModels(plModel.getWsId(), plModel.getMethodId()); + if (methodAttrModels != null && methodAttrModels.size() > 0) { + Map attributeModelMap = new HashMap<>(); + Map sortAttrMap = new HashMap<>(); + if (methodAttrModels != null) { + int sort = 0; + for (PALMethodAttributeModel attr : methodAttrModels) { + attributeModelMap.put(attr.getKey(), attr); + sortAttrMap.put(attr.getKey(), ++sort); + } + } + List 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 inputValueList = new ArrayList<>(); + List list = DesignerShapeRelationCache.getListByAttrId(plModel.getId(), "", attributeModel.getKey()); + if (list != null && list.size() > 0) { + // 判断是否有重复数据,进行重复过滤 + Set tempStrs = new HashSet<>(); + List 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 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 list = DesignerShapeRelationCache.getListByAttrId(plModel.getId(), "", attributeModel.getKey()); + List deptValList = new ArrayList<>(); + List positionValList = new ArrayList<>(); + List roleValList = new ArrayList<>(); + List userValList = new ArrayList<>(); + if (list != null && list.size() > 0) { + Set filter = new HashSet();// 去重记录 + 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("'", "'"); + inputValue = inputValue.replaceAll("\"", """); + 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 queryRepositoryShapeAttributeById(String uuid, String shapeId, JSONObject shapeObject) { + Map 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 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 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 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 inputValues = new ArrayList<>(); + JSONObject refObj = JSONObject.parseObject(attributeModel.getRef()); + String relationType = refObj.containsKey("type") ? refObj.getString("type") : "shape"; + List list = DesignerShapeRelationCache.getListByAttrId(uuid, shapeId, key); + if (list != null && list.size() > 0) { + // 判断是否有重复数据,进行重复过滤 + Set tempStrs = new HashSet<>(); + List 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 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 list = DesignerShapeRelationCache.getListByAttrId(uuid, shapeId, key); + List awsOrgResultList = new ArrayList<>(); + List deptValueList = new ArrayList<>(); + List positionValueList = new ArrayList<>(); + List userValueList = new ArrayList<>(); + List 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("'", "'"); + attrValue = attrValue.replaceAll("\"", """); + attrObj.put("text", attrValue); + result.put(attributeModel.getKey(), attrObj); + } + return result; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TaskUtil.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TaskUtil.java new file mode 100644 index 00000000..13d615b0 --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TaskUtil.java @@ -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() { + @Override + public String mapRow(ResultSet rs, int arg1) throws SQLException { + return rs.getString(1); + } + }, new Object[] { repositoryId }); + return taskId; + } +} diff --git a/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TreeUtil.java b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TreeUtil.java new file mode 100644 index 00000000..91ad505d --- /dev/null +++ b/com.awspaas.user.apps.yili.reportform/src/com/awspaas/user/apps/yili/reportform/util/TreeUtil.java @@ -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 buildTree(List nodeMaps,String rootSign,String rootNodeType,String tLevel,String nodeType){ + List treeNodes =new ArrayList<>(); + for (Map treeNode : getRootNode(nodeMaps,rootSign,rootNodeType)) { + treeNode = buildChildTree(treeNode,nodeMaps,tLevel,nodeType); + treeNodes.add(treeNode); + } + // 子节点进行排序 + List 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 nodeMaps, String tLevel, String nodeType){ + List 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 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) 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 getRootNode(List nodeMaps,String rootSign,String rootNodeType) { + List 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; + } +}