diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/constant/Constants.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/constant/Constants.java new file mode 100755 index 00000000..5bb22539 --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/constant/Constants.java @@ -0,0 +1,14 @@ +package com.awspaas.user.apps.nqms.portal.view.person.constant; + +import com.actionsoft.sdk.local.SDK; + +/** + * @author wym + * @date 2023-04-17 11:00 + * @description + */ +public class Constants { + public static final String APP_ID = "com.awspaas.user.apps.nqms.portal.view.person"; + + public static final String PROCESS_GROUP_ID = "obj_893ec85d8219468bb6df6a19fab4f7c9"; +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/constant/PalCategoryEnum.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/constant/PalCategoryEnum.java new file mode 100755 index 00000000..de046fe0 --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/constant/PalCategoryEnum.java @@ -0,0 +1,37 @@ +package com.awspaas.user.apps.nqms.portal.view.person.constant; + +/** + * 建模分类 + */ +public enum PalCategoryEnum { + //资产文件类型 + EPC("EPC", "process.epc"),//过程链图 + FLOWCHART("FLOWCHART", "process.flowchart"),//泳道图 + FORM("FORM", "data.form"),//表单图 + POLICY("POLICY", "control.policy"); + + public String key; + public String value; + + PalCategoryEnum(String key, String value) { + this.key = key; + this.value = value; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/controller/PersonController.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/controller/PersonController.java new file mode 100755 index 00000000..688d820e --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/controller/PersonController.java @@ -0,0 +1,115 @@ +package com.awspaas.user.apps.nqms.portal.view.person.controller; + +import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate; +import com.actionsoft.bpms.server.UserContext; +import com.actionsoft.bpms.server.bind.annotation.Controller; +import com.actionsoft.bpms.server.bind.annotation.Mapping; +import com.actionsoft.sdk.local.SDK; +import com.alibaba.fastjson.JSON; +import com.awspaas.user.apps.nqms.portal.view.person.service.PersonService; + +import java.util.HashMap; + +/** + * @author wym + * @date 2023-04-25 15:22 + * @description + */ +@Controller +public class PersonController { + /** + * 页面入口 + * + * @param ux + * @return + */ + @Mapping("com.awspaas.user.apps.nqms.portal.view.person_toPage") + public String toHomePage(UserContext ux) { + HashMap macroLibraries = new HashMap<>(); + macroLibraries.put("sid", ux.getSessionId()); + macroLibraries.put("uid", ux.getUID()); + macroLibraries.put("settingParam", JSON.toJSON(macroLibraries)); + return HtmlPageTemplate.merge("com.awspaas.user.apps.nqms.portal.view.person", "main.html", macroLibraries); + } + + /** + * 当前登陆人信息 + * + * @return + */ + @Mapping("com.awspaas.user.apps.nqms.portal.view.person_userInfo") + public String getUserInfo(UserContext ux) { + SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.person_userInfo]" + + " 查询人:" + ux.getUID()); + return PersonService.getInstance().getUserInfo(ux); + } + + /** + * 相关要素 + * + * @param ux + * @return + */ + @Mapping("com.awspaas.user.apps.nqms.portal.view.person_initMyFiles") + public String getMyFiles(UserContext ux) { + SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.person_initMyFiles]" + + " 查询人:" + ux.getUID()); + return PersonService.getInstance().getMyFilesData(ux); + } + + /** + * 获取流程中心数据 + * + * @param ux + * @param type + * @return + */ + @Mapping("com.awspaas.user.apps.nqms.portal.view.person_workbench") + public String getWorkbenchData(UserContext ux, String type, int page, int size) { + SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.person_workbench]" + + " 查询人:" + ux.getUID() + ",查询条件为 type:" + type + ",page:" + page + ",size:" + size); + return PersonService.getInstance().getWorkbench(ux, type, page, size); + } + + /** + * 获取待阅、已阅数据 + * + * @param ux + * @param type + * @return + */ + @Mapping("com.awspaas.user.apps.nqms.portal.view.person_getReadPage") + public String getReadPage(UserContext ux, String type, int page, int size) { + SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.person_getReadPage]" + + " 查询人:" + ux.getUID() + ",查询条件为 type:" + type); + return PersonService.getInstance().getReadPage(ux, type, page, size); + } + + /** + * 获取iframe信息 + * + * @param ux 用户上下文 + * @return iframe信息 + */ + @Mapping("com.awspaas.user.apps.nqms.portal.view.person_iframe_msg") + public String getIframeMsg(UserContext ux) { + SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.person_iframe_msg]" + + " 查询人:" + ux.getUID()); + return PersonService.getInstance().getIframeMsg(ux); + } + + /** + * 查询各类文件 + * + * @param ux + * @return + */ + @Mapping("com.awspaas.user.apps.nqms.portal.view.person_queryMyFilesByType") + + public String getMyFilesByType(UserContext ux, String type, String queryParams, int page, int size) { + SDK.getLogAPI().consoleInfo("接口:[com.awspaas.user.apps.nqms.portal.view.person_queryMyFilesByType]" + + " 查询人:" + ux.getUID() + ",查询条件为 type:" + type + ",page:" + page + ",size:" + size + "queryParams" + queryParams); + + return PersonService.getInstance().getMyFilesByType(ux, type, queryParams, page, size); + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/service/PersonService.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/service/PersonService.java new file mode 100644 index 00000000..0fb93b27 --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/service/PersonService.java @@ -0,0 +1,1051 @@ +package com.awspaas.user.apps.nqms.portal.view.person.service; + +import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryPropertyCache; +import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryPropertyModel; +import com.actionsoft.bpms.bo.engine.BO; +import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance; +import com.actionsoft.bpms.bpmn.engine.model.run.delegate.TaskInstance; +import com.actionsoft.bpms.commons.database.RowMap; +import com.actionsoft.bpms.commons.mvc.view.Page; +import com.actionsoft.bpms.commons.mvc.view.ResponseObject; +import com.actionsoft.bpms.org.cache.DepartmentCache; +import com.actionsoft.bpms.org.cache.UserCache; +import com.actionsoft.bpms.org.cache.UserMapCache; +import com.actionsoft.bpms.org.model.DepartmentModel; +import com.actionsoft.bpms.org.model.RoleModel; +import com.actionsoft.bpms.org.model.UserMapModel; +import com.actionsoft.bpms.org.model.UserModel; +import com.actionsoft.bpms.server.UserContext; +import com.actionsoft.bpms.util.DBSql; +import com.actionsoft.bpms.util.UtilString; +import com.actionsoft.sdk.local.SDK; +import com.actionsoft.sdk.local.api.AppAPI; +import com.actionsoft.sdk.local.api.ORGAPI; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.awspaas.user.apps.nqms.portal.view.person.constant.Constants; +import com.awspaas.user.apps.nqms.portal.view.person.constant.PalCategoryEnum; +import com.awspaas.user.apps.nqms.portal.view.person.vo.*; +import jodd.util.StringUtil; +import org.apache.commons.lang.StringUtils; + +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * Created with IntelliJ IDEA. + * + * @Author: yuandongqiang + * @Date: 2025/8/18 + * @Description: + */ +public class PersonService { + private static final String queryFileSql = "SELECT n.*, " + + "h.OPTIONTYPE, h.SEND_SCOP, h.SEND_SCOPE_ORG, h.SEND_SCOPE_POST, h.SEND_SCOPE_LEVEL, " + + "p.CREATEUSER AS PROCESSCREATEUSER " + + "FROM BO_ACT_COE_PUBLISH_N n " + + "LEFT JOIN BO_ACT_COE_PUBLISH h ON n.BINDID = h.BINDID " + + "LEFT JOIN WFC_PROCESS p ON p.ID = n.BINDID " + + "WHERE p.ISEND = '1' AND p.CONTROLSTATE = 'end' AND p.PROCESSGROUPID = '" + Constants.PROCESS_GROUP_ID + "'"; + + private PersonService() { + } + + private static class PersonInstance { + static PersonService instance = new PersonService(); + } + + public static PersonService getInstance() { + return PersonInstance.instance; + } + + /** + * 获取当前登陆人信息 + * + * @return + */ + public String getUserInfo(UserContext ux) { + UserModel user = ux.getUserModel(); + HashMap userInfo = new HashMap<>(); + userInfo.put("name", user.getUserName()); + userInfo.put("uid", user.getUID()); + userInfo.put("roleName", ux.getRoleModel().getName()); + userInfo.put("deptName", ux.getDepartmentModel().getName()); + userInfo.put("photo", SDK.getPortalAPI().getUserPhoto(ux, ux.getUID())); + userInfo.put("post", getPostListData(ux)); + + ResponseObject ro = ResponseObject.newOkResponse(); + ro.put("userInfo", userInfo); + return ro.toString(); + } + + /** + * 获取岗位信息 + * + * @param ux + * @return + */ + public List> getPostListData(UserContext ux) { + List> data = new ArrayList<>(); + + String uid = ux.getUID(); + ORGAPI orgapi = SDK.getORGAPI(); + List userMaps = orgapi.getUserMaps(uid); + for (UserMapModel userMap : userMaps) { + String roleId = userMap.getRoleId(); + RoleModel role = orgapi.getRoleById(roleId); + String roleNo = role.getNo(); + String name = role.getName(); + Map map = new HashMap<>(); + map.put("postId", roleNo); + map.put("postName", name); + data.add(map); + } + RoleModel roleModel = ux.getRoleModel(); + String name = roleModel.getName(); + String roleNo = roleModel.getNo(); + Map map1 = new HashMap<>(); + map1.put("postId", roleNo); + map1.put("postName", name); + + data.add(map1); + return data; + } + + /** + * 我的文件 数量 + * + * @param ux + * @return + */ + public String getMyFilesData(UserContext ux) { + int zzProcess = 0;//主责流程 + int xgProcess = 0;//相关流程 + List rowMaps = DBSql.getMaps(queryFileSql); + for (RowMap rowMap : rowMaps) { + String processcreateuser = rowMap.getString("PROCESSCREATEUSER"); + if (ux.getUID().equals(processcreateuser)) { + zzProcess++; + continue; + } + String optiontype = rowMap.getString("OPTIONTYPE"); + if (StringUtil.isBlank(optiontype) || !optiontype.contains("流程制度发布")) { + continue; + } + // 判读是否有权限 + if (userCanReadFile(ux, rowMap.getString("SEND_SCOP"), rowMap.getString("SEND_SCOPE_ORG"), rowMap.getString("SEND_SCOPE_POST"), rowMap.getString("SEND_SCOPE_LEVEL"))) { + xgProcess++; + } + } + UserModel userModel = UserCache.getModel(ux.getUID()); + String positionName = userModel.getPositionName(); + //审批活动 + int spActive = 0; + //参与活动 + int joinActive = 0; + List fileactivity6 = SDK.getBOAPI().query("BO_EU_PAL_FILENODE6").addQuery("POST like '%" + positionName + "%'", null).list(); + for (BO nodeRowMap : fileactivity6) { + String nodetype = nodeRowMap.getString("NODETYPE"); + switch (nodetype) { + case "method_approval_node": + case "method_service_node": + spActive++; + break; + case "method_approval_node3": + case "method_service_node4": + joinActive++; + break; + default: + // 可以选择是否处理未匹配的nodetype + break; + } + } + //我的角色 + int myRole = 0; + if (StringUtil.isNotBlank(positionName)) { + List roles = SDK.getBOAPI().query("BO_EU_PORTAL_INDEX_ROLE").addQuery("ROLE_NAME = ", positionName).list(); + for (BO role : roles) { + String roleAboutPost = role.getString("POST_NAME"); + if (StringUtil.isBlank(roleAboutPost)) { + continue; + } + String[] split = roleAboutPost.split(","); + for (String post : split) { + if (StringUtil.isNotBlank(post)) { + myRole++; + } + } + } + } + + //相关制度 + int xgSystem = 0; + //相关风险 + int xgRisk = 0; + //相关表单 + int xgForm = 0; + //相关绩效 + int xgPerformance = 0; + List xgPerformanceIds = new ArrayList<>(); + ResponseObject fileRo = getAllFile(ux); + if (fileRo.isOk()) { + List list = fileRo.getData(List.class); + List scopeBos = SDK.getBOAPI().query("BO_ACT_PUBLISH_PERM_SCOPE").list(); + List controlBos = SDK.getBOAPI().query("BO_EU_RISK_CONTROL").addQuery("MODELSTATUS = ", "已发布").list(); + List graphBos = SDK.getBOAPI().query("BO_EU_PORTAL_INDEX_PRO_GRAPH").list(); + Map> graphMap = new HashMap<>(); + for (BO bo : graphBos) { + String graphId = bo.getString("FILE_ID"); + if (!graphMap.containsKey(graphId)) { + ArrayList graph = new ArrayList<>(); + graph.add(bo); + graphMap.put(graphId, graph); + } else { + graphMap.get(graphId).add(bo); + } + } + Map> controlMap = new HashMap<>(); + for (BO bo : controlBos) { + String shapeid = bo.getString("SHAPEID"); + if (!controlMap.containsKey(shapeid)) { + ArrayList cons = new ArrayList<>(); + cons.add(bo); + controlMap.put(shapeid, cons); + } else { + controlMap.get(shapeid).add(bo); + } + } + Map scopeMap = new HashMap<>(); + for (BO bo : scopeBos) { + String fileuuid = bo.getString("FILEUUID"); + if (!scopeMap.containsKey(fileuuid)) { + scopeMap.put(fileuuid, bo); + } + } + for (Object object : list) { + JSONObject process = JSONObject.parseObject(JSON.toJSONString(object)); + String methodId = process.getString("methodId"); + String id = process.getString("id"); + if (!ux.getUID().equals("admin") && !scopeMap.containsKey(id)) { + continue; + } + BO bo = scopeMap.get(id); + if (!ux.getUID().equals("admin") && !userCanReadFile(ux, bo.getString("PERMTYPE"), bo.getString("ORGPERM"), bo.getString("POSTPERM"), bo.getString("LEVELPERM"))) { + continue; + } + if (PalCategoryEnum.POLICY.getValue().equals(methodId)) { + //制度 + xgSystem++; + //风险 + if (controlMap.containsKey(id)) { + xgRisk = xgRisk + controlMap.get(id).size(); + } + } else if (PalCategoryEnum.FORM.getValue().equals(methodId)) { + //表单 + xgForm++; + //风险 + if (controlMap.containsKey(id)) { + xgRisk = xgRisk + controlMap.get(id).size(); + } + } else if (PalCategoryEnum.FLOWCHART.getValue().equals(methodId) || PalCategoryEnum.EPC.getValue().equals(methodId)) { + //流程图中,查看绩效 + if (!graphMap.containsKey(id)) { + continue; + } + PALRepositoryPropertyModel propModel = PALRepositoryPropertyCache.getPropertyByPropertyId(id, "Process_performance_metrics"); + String propertyValue = propModel.getPropertyValue(); + if (StringUtils.isNotEmpty(propertyValue)) { + try { + JSONObject jsonObject = JSONObject.parseObject(propertyValue); + String relationShapeId = jsonObject.getString("relationShapeId"); + if (StringUtils.isNotEmpty(relationShapeId)) { + xgPerformanceIds.addAll(Arrays.asList(relationShapeId.split(","))); + } + } catch (Exception e) { + e.printStackTrace(); + System.out.println("发布部门非JSON格式,转化失败,显示原值。文件ID:" + id); + } + } + for (BO graph : graphMap.get(id)) { + id = graph.getString("FILE_ID"); + if (controlMap.containsKey(id)) { + xgRisk = xgRisk + controlMap.get(id).size(); + } + } + } + } + } + if (xgPerformanceIds.size() > 0) { + List kpiBos = SDK.getBOAPI().query("BO_EU_PORTAL_PERSON_KPI").list(); + if (kpiBos.size() > 0) { + for (BO bo : kpiBos) { + if (xgPerformanceIds.contains(bo.getString("KPI_IP"))) { + xgPerformance++; + } + } + } + } + MyFilesVO vo = new MyFilesVO(zzProcess, xgProcess, spActive, joinActive, myRole, xgSystem, xgRisk, xgForm, xgPerformance); + ResponseObject ro = ResponseObject.newOkResponse(); + ro.put("myFiles", vo); + return ro.toString(); + } + + /** + * 获取流程中心数据 + * + * @param ux + * @param type + * @param page + * @param size + * @return + */ + public String getWorkbench(UserContext ux, String type, int page, int size) { + page = page - 1; + List list = null; + try { + + if (StringUtils.isEmpty(type)) { + SDK.getLogAPI().consoleErr("获取流程中心数据时,【type】为空" + type); + } + if (type.equals("1")) {//待办 + list = SDK.getTaskQueryAPI().target(ux.getUID()).orderByBeginTime().userTaskOfWorking().listPage(page * size + 1, size); + } else if (type.equals("2")) {//已办 + list = SDK.getHistoryTaskQueryAPI().target(ux.getUID()).orderByBeginTime().desc().userTaskOfWorking().listPage(page * size + 1, size); + } else if (type.equals("3")) {//待阅 + list = SDK.getTaskQueryAPI().target(ux.getUID()).orderByBeginTime().userTaskOfNotification().listPage(page * size + 1, size); + } else if (type.equals("4")) {//已阅 + list = SDK.getHistoryTaskQueryAPI().target(ux.getUID()).orderByBeginTime().desc().userTaskOfNotification().listPage(page * size + 1, size); + } else if (type.equals("5")) {//发起跟踪 + list = SDK.getProcessQueryAPI().createBy(ux.getUID()).process().orderByCreateTime().desc().listPage(page * size + 1, size); + } else { + SDK.getLogAPI().consoleErr("获取流程中心数据时,【type】参数错误" + type); + } + + } catch (Exception e) { + e.printStackTrace(); + SDK.getLogAPI().consoleErr("获取流程中心数据时,出错"); + } + ResponseObject ro = ResponseObject.newOkResponse(); + + ro.put("taskLIst", instanceToVO(ux, list, type)); + return ro.toString(); + } + + /** + * 类型转换为vo对象 + * + * @param list + * @param type + * @return + */ + public List instanceToVO(UserContext ux, List list, String type) { + List data = new ArrayList<>(); + String sid = ux.getSessionId(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String trackUrl = ""; + for (Object obj : list) { + WorkBenchVO vo = new WorkBenchVO(); + if (!type.equals("5")) { + TaskInstance task = (TaskInstance) obj; + String url = "./w?sid=" + sid + "&cmd=CLIENT_BPM_FORM_MAIN_PAGE_OPEN&processInstId=" + task.getProcessInstId() + "&taskInstId=" + task.getId() + "&openState=" + task.getState(); + vo.setTitle(task.getTitle()); + vo.setProcessInstId(task.getProcessInstId()); + vo.setTaskInstId(task.getId()); + vo.setBeginTime(format.format(new Date(task.getBeginTime().getTime()))); + String userNames = SDK.getORGAPI().getUserNames(task.getOwner()); + vo.setOwnerName(userNames); + vo.setOpenState(task.getState()); + vo.setPriority(task.getPriority()); + vo.setUrl(url); + } else { + ProcessInstance process = (ProcessInstance) obj; + vo.setTitle(process.getTitle()); + vo.setProcessInstId(process.getId()); + process.getProcessDefId(); + vo.setBeginTime(format.format(new Date(process.getCreateTime().getTime()))); + } + + data.add(vo); + } + return data; + } + + /** + * 获取待阅 已阅数据(门户) + * + * @param ux + * @param type + * @return + */ + public String getReadPage(UserContext ux, String type, int page, int size) { + List allFileList = SDK.getBOAPI().query("BO_EU_PAL_DOC_VIEW").orderBy("FILECREATEDATE").desc().list(); + List readFileList = SDK.getBOAPI().query("BO_EU_PAL_RECORD").addQuery("READFILENAME =", ux.getUID()).list(); + Set readFileIds = new HashSet<>(); + for (BO bo : readFileList) { + String fileId = bo.getString("FILEID"); + readFileIds.add(fileId); + } + return getUnreadPageData(ux, allFileList, readFileIds, type, page, size); + } + + /** + * 获取待阅、已阅数据 + * + * @param uc + * @return + */ + public String getUnreadPageData(UserContext uc, List allFileList, Set readFileIds, String type, int page, int size) { + String name = StringUtil.isNotBlank(type) && "unread".equals(type) ? "待阅" : "已阅"; + System.err.println("加载" + name + "文件开始===>"); + Date startTime = new Date(); + String uid = uc.getUID(); + JSONArray jsonArray = new JSONArray(); + for (BO bo : allFileList) { + String fileid = bo.getString("FILEID"); + if (readFileIds.contains(fileid) && "unread".equals(type)) { + continue; + } else if (!readFileIds.contains(fileid) && "read".equals(type)) { + continue; + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("fileName", bo.getString("FILENAME")); + jsonObject.put("fileCreateDate", bo.getString("FILECREATEDATE")); + jsonObject.put("fileCreateName", bo.getString("FILECREATENAME")); + String createUser = bo.getCreateUser(); + try { + ProcessInstance processInstance = SDK.getProcessAPI().getInstanceById(bo.getString("RELATIONPROCESSINSTID")); + DepartmentModel departmentModel = null; + if (processInstance != null) { + departmentModel = DepartmentCache.getModel(processInstance.getCreateUserDeptId()); + } else { + UserContext userContext = UserContext.fromUID(createUser); + if (userContext != null) { + departmentModel = userContext.getDepartmentModel(); + } + } + if (departmentModel == null) { + jsonObject.put("fileCreateDeptId", ""); + } else { + jsonObject.put("fileCreateDeptId", departmentModel.getName()); + } + } catch (Exception e) { + e.printStackTrace(); + jsonObject.put("fileCreateDeptId", ""); + } + + jsonObject.put("id", bo.getString("FILEID")); + jsonObject.put("fileUrl", bo.getString("FILEURL")); + jsonObject.put("uid", uid); + if (userCanReadFile(uc, bo.getString("ISFULLCOMPANY"), bo.getString("READINGSCOPE_ORG"), bo.getString("READINGSCOPE_POST"), bo.getString("READINGSCOPE_LEVEL"))) { + jsonArray.add(jsonObject); + } + } + Date endTime = new Date(); + long timeDifference = endTime.getTime() - startTime.getTime(); + System.err.println("加载" + name + "文件用时===>" + timeDifference); + ResponseObject result = ResponseObject.newOkResponse(); + result.put("count", jsonArray.size()); + result.put("list",pageUtil(jsonArray, page, size)); + return result.toString(); + } + + /** + * 判断是否有权限读取这个文件 + * + * @param uc 用户上下文 + * @param isFullCompany 是否全集团 + * @param orgPerm 组织范围 + * @param postPerm 岗位范围 + * @param levelPerm 职级范围 + * @return 是否有权限 + */ + public boolean userCanReadFile(UserContext uc, String isFullCompany, String orgPerm, String postPerm, String levelPerm) { + boolean canread = false; + if ("1".equals(isFullCompany) || "admin".equals(uc.getUID())) { + // 三个都不为空 + canread = true; + } else if (UtilString.isNotEmpty(orgPerm) && UtilString.isNotEmpty(postPerm) + && UtilString.isNotEmpty(levelPerm)) { + if ((getOrgPerm(orgPerm, uc) && getLevelPerm(levelPerm, uc)) || getPostPerm(postPerm, uc)) { + canread = true; + + } + // 职级为空时 + } else if (UtilString.isNotEmpty(orgPerm) && UtilString.isNotEmpty(postPerm) + && UtilString.isEmpty(levelPerm)) { + if (getOrgPerm(orgPerm, uc) || getPostPerm(postPerm, uc)) { + canread = true; + } + // 岗位为空时 + } else if (UtilString.isNotEmpty(orgPerm) && UtilString.isNotEmpty(levelPerm) + && UtilString.isEmpty(postPerm)) { + if (getOrgPerm(orgPerm, uc) && getLevelPerm(levelPerm, uc)) { + canread = true; + } + // 组织为空时 + } else if (UtilString.isNotEmpty(postPerm) && UtilString.isNotEmpty(levelPerm) + && UtilString.isEmpty(orgPerm)) { + if (getPostPerm(postPerm, uc) || getLevelPerm(levelPerm, uc)) { + canread = true; + } + // 组织、岗位为空时 + } else if (UtilString.isNotEmpty(levelPerm) && UtilString.isEmpty(postPerm) + && UtilString.isEmpty(orgPerm)) { + if (getLevelPerm(levelPerm, uc)) { + canread = true; + } + // 组织、职级为空时 + } else if (UtilString.isNotEmpty(postPerm) && UtilString.isEmpty(levelPerm) + && UtilString.isEmpty(orgPerm)) { + if (getPostPerm(postPerm, uc)) { + canread = true; + } + // 岗位、职级为空时 + } else if (UtilString.isNotEmpty(orgPerm) && UtilString.isEmpty(levelPerm) + && UtilString.isEmpty(postPerm)) { + if (getOrgPerm(orgPerm, uc)) { + canread = true; + } + } + return canread; + } + + /** + * 获取组织权限 + * + * @param orgPerm + * @param uc + * @return + */ + private boolean getOrgPerm(String orgPerm, UserContext uc) { + if (UtilString.isNotEmpty(orgPerm)) { + // 兼职 + Set deptIdSet = new HashSet<>(); + String[] deptIds = orgPerm.split(","); + for (int i = 0; i < deptIds.length; i++) { + if (UtilString.isNotEmpty(deptIds[i])) { + String deptId = deptIds[i]; + deptIdSet.add(deptId); + queryChildDeptList(deptId, deptIdSet); + } + } + // 判断用户的所属部门 + String currUserDeptId = uc.getDepartmentModel().getId(); + if (deptIdSet.contains(currUserDeptId)) { + return true; + } + // 判断用户的兼职部门 + List userMapModels = UserMapCache.getMapListOfUser(uc.getUID()); + for (UserMapModel mapModel : userMapModels) { + if (deptIdSet.contains(mapModel.getDepartmentId())) { + return true; + } + } + } + + return false; + } + + // 岗位权限 + private boolean getPostPerm(String postPerm, UserContext uc) { + if (UtilString.isNotEmpty(postPerm)) { + String positionNo = uc.getUserModel().getPositionNo(); + String[] positionIds = postPerm.split(","); + Set positionIdSet = new HashSet<>(); + for (int i = 0; i < positionIds.length; i++) { + positionIdSet.add(positionIds[i]); + } + if (positionIdSet.contains(positionNo)) { + return true; + } + } + return false; + + } + + // 职级权限 + private boolean getLevelPerm(String levelPerm, UserContext uc) { + if (UtilString.isNotEmpty(levelPerm)) { + String userLevelPerm = uc.getUserModel().getExt2(); + String[] levelPermspArray = levelPerm.split(","); + Set levelPermspSet = new HashSet<>(); + for (int i = 0; i < levelPermspArray.length; i++) { + levelPermspSet.add(levelPermspArray[i]); + } + if (levelPermspSet.contains(userLevelPerm)) { + return true; + } + } + return false; + } + + /** + * 获取子部门 + * + * @param pid + * @param deptIdSet + */ + private void queryChildDeptList(String pid, Set deptIdSet) { + List list = SDK.getORGAPI().getSubDepartments(pid); + if (list != null && list.size() > 0) { + for (DepartmentModel child : list) { + deptIdSet.add(child.getId()); + queryChildDeptList(child.getId(), deptIdSet); + } + } + } + + /** + * 获取iframe信息 + * + * @param ux 用户上下文 + * @return iframe信息 + */ + public String getIframeMsg(UserContext ux) { + List bos = SDK.getBOAPI().query("BO_EU_PORTAL_PER_IFRAM").orderBy("IFRAME_ROW").orderBy("IFRAME_COLUMN").asc().list(); + Map> map = new HashMap<>(); + for (BO bo : bos) { + String iframeUrl = bo.getString("IFRAME_URL"); + if (StringUtil.isNotBlank(iframeUrl)) { + iframeUrl = SDK.getRuleAPI().executeAtScript(iframeUrl, ux); + bo.set("IFRAME_URL", iframeUrl); + } + String moreUrl = bo.getString("IFRAME_MORE_URL"); + if (StringUtil.isNotBlank(moreUrl)) { + moreUrl = SDK.getRuleAPI().executeAtScript(moreUrl, ux); + bo.set("IFRAME_MORE_URL", moreUrl); + } + Integer row = bo.get("IFRAME_ROW", Integer.class); + if (map.containsKey(row)) { + map.get(row).add(IframeMsgVO.boToVo(bo)); + } else { + List list = new ArrayList<>(); + list.add(IframeMsgVO.boToVo(bo)); + map.put(row, list); + } + } + ResponseObject result = ResponseObject.newOkResponse(); + result.setData(map.values()); + return result.toString(); + } + + /** + * 获取对应类型的文件内容 + * + * @param ux 用户上下文 + * @param type 类型 + * @param queryParams 过滤条件 + * @param page 索引 + * @param size 每页数量 + * @return + */ + public String getMyFilesByType(UserContext ux, String type, String queryParams, int page, int size) { + Map map = new HashMap<>(); + ResponseObject ro = ResponseObject.newOkResponse(); + List list = new ArrayList<>(); + if (StringUtils.isNotEmpty(queryParams)) { + map = JSONObject.parseObject(queryParams, Map.class); + } + List activeType = new ArrayList<>(); + if (type.equals("dutyProcess")) { + //主责流程 + list = getDutyProcess(ux); + } else if (type.equals("relatedProcess")) { + //关联流程 + list = getRelatedProcess(ux); + } else if (type.equals("approvalActivities")) { + //审批活动 + activeType.add("method_approval_node"); + activeType.add("method_service_node"); + list = getActivities(ux, activeType); + } else if (type.equals("participateActivities")) { + //参与活动 + activeType.add("method_approval_node3"); + activeType.add("method_service_node4"); + list = getActivities(ux, activeType); + } else if (type.equals("roles")) { + //我的角色 + list = getRoles(ux); + } else if (type.equals("regime")) { + //相关制度 + list = getRegime(ux); + } else if (type.equals("risk")) { + //相关风险 + list = getRisk(ux); + } else if (type.equals("form")) { + //相关表单 + list = getForm(ux); + } else if (type.equals("kpi")) { + //相关绩效 + list = getKpi(ux); + } + ro.put("count", list.size()); + ro.put("list", pageUtil(list, page, size)); + return ro.toString(); + } + + /** + * 获取主责流程数据 + * + * @param userContext + * @return + */ + public List getDutyProcess(UserContext userContext) { + List resultBos = new ArrayList<>(); + String sql = queryFileSql + " AND p.CREATEUSER ='" + userContext.getUID() + "'"; + List rowMaps = DBSql.getMaps(sql); + for (RowMap rowMap : rowMaps) { + resultBos.add(ProcessVO.boToDutyProcessVO(rowMap)); + } + return resultBos; + } + + /** + * 获取相关流程数据 + * + * @param userContext + * @return + */ + public List getRelatedProcess(UserContext userContext) { + List resultBos = new ArrayList<>(); + String sql = queryFileSql + " AND p.CREATEUSER !='" + userContext.getUID() + "'"; + + List rowMaps = DBSql.getMaps(sql); + for (RowMap rowMap : rowMaps) { + String optiontype = rowMap.getString("OPTIONTYPE"); + if (StringUtil.isBlank(optiontype) || !optiontype.contains("流程制度发布")) { + continue; + } + // 判读是否有权限 + if (userCanReadFile(userContext, rowMap.getString("SEND_SCOP"), rowMap.getString("SEND_SCOPE_ORG"), rowMap.getString("SEND_SCOPE_POST"), rowMap.getString("SEND_SCOPE_LEVEL"))) { + resultBos.add(ProcessVO.boToDutyProcessVO(rowMap)); + } + } + return resultBos; + } + + /** + * 获取活动明细 + * + * @param userContext + * @return + */ + public List getActivities(UserContext userContext, List activeType) { + String positionName = userContext.getUserModel().getPositionName(); + List resultBos = new ArrayList<>(); + List fileactivity6 = SDK.getBOAPI().query("BO_EU_PAL_FILENODE6").addQuery("POST like '%" + positionName + "%'", null).list(); + for (BO nodeRowMap : fileactivity6) { + String nodetype = nodeRowMap.getString("NODETYPE"); + if (activeType.contains(nodetype)) { + resultBos.add(ActivitiesVO.boToActivitiesVO(nodeRowMap)); + } + } + return resultBos; + } + + /** + * 获取角色明细 + * + * @param userContext + * @return + */ + public List getRoles(UserContext userContext) { + String positionName = userContext.getUserModel().getPositionName(); + List resultBos = new ArrayList<>(); + if (StringUtil.isNotBlank(positionName)) { + List roles = SDK.getBOAPI().query("BO_EU_PORTAL_INDEX_ROLE").addQuery("ROLE_NAME = ", positionName).list(); + for (BO role : roles) { + String roleAboutPost = role.getString("POST_NAME"); + if (StringUtil.isBlank(roleAboutPost)) { + continue; + } + String[] split = roleAboutPost.split(","); + for (String post : split) { + role.set("POST_NAME", post); + if (StringUtil.isNotBlank(post)) { + resultBos.add(RoleVO.boToRoleVO(role)); + } + } + } + } + return resultBos; + } + + /** + * 获取相关制度明细 + * + * @param ux + * @return + */ + private List getRegime(UserContext ux) { + List resultBos = new ArrayList<>(); + //相关制度 + ResponseObject fileRo = getAllFile(ux); + if (fileRo.isErr()) { + return resultBos; + } + List list = fileRo.getData(List.class); + List scopeBos = SDK.getBOAPI().query("BO_ACT_PUBLISH_PERM_SCOPE").list(); + Map scopeMap = new HashMap<>(); + for (BO bo : scopeBos) { + String fileuuid = bo.getString("FILEUUID"); + if (!scopeMap.containsKey(fileuuid)) { + scopeMap.put(fileuuid, bo); + } + } + for (Object object : list) { + JSONObject process = JSONObject.parseObject(JSON.toJSONString(object)); + String methodId = process.getString("methodId"); + String id = process.getString("id"); + if (!ux.getUID().equals("admin") && !scopeMap.containsKey(id)) { + continue; + } + BO bo = scopeMap.get(id); + if (!ux.getUID().equals("admin") && !userCanReadFile(ux, bo.getString("PERMTYPE"), bo.getString("ORGPERM"), bo.getString("POSTPERM"), bo.getString("LEVELPERM"))) { + continue; + } + if (PalCategoryEnum.POLICY.getValue().equals(methodId)) { + //制度 + resultBos.add(process); + } + } + return resultBos; + } + + /** + * 获取相关风险明细 + * + * @param ux + * @return + */ + private List getRisk(UserContext ux) { + List resultBos = new ArrayList<>(); + ResponseObject fileRo = getAllFile(ux); + if (fileRo.isErr()) { + return resultBos; + } + //相关风险 + List list = fileRo.getData(List.class); + List scopeBos = SDK.getBOAPI().query("BO_ACT_PUBLISH_PERM_SCOPE").list(); + List controlBos = SDK.getBOAPI().query("BO_EU_RISK_CONTROL").addQuery("MODELSTATUS = ", "已发布").list(); + List graphBos = SDK.getBOAPI().query("BO_EU_PORTAL_INDEX_PRO_GRAPH").list(); + Map> graphMap = new HashMap<>(); + for (BO bo : graphBos) { + String graphId = bo.getString("FILE_ID"); + if (!graphMap.containsKey(graphId)) { + ArrayList graph = new ArrayList<>(); + graph.add(bo); + graphMap.put(graphId, graph); + } else { + graphMap.get(graphId).add(bo); + } + } + Map> controlMap = new HashMap<>(); + for (BO bo : controlBos) { + String shapeid = bo.getString("SHAPEID"); + if (!controlMap.containsKey(shapeid)) { + ArrayList cons = new ArrayList<>(); + cons.add(bo); + controlMap.put(shapeid, cons); + } else { + controlMap.get(shapeid).add(bo); + } + } + Map scopeMap = new HashMap<>(); + for (BO bo : scopeBos) { + String fileuuid = bo.getString("FILEUUID"); + if (!scopeMap.containsKey(fileuuid)) { + scopeMap.put(fileuuid, bo); + } + } + for (Object object : list) { + JSONObject process = JSONObject.parseObject(JSON.toJSONString(object)); + String methodId = process.getString("methodId"); + String id = process.getString("id"); + if (!ux.getUID().equals("admin") && !scopeMap.containsKey(id)) { + continue; + } + BO bo = scopeMap.get(id); + if (!ux.getUID().equals("admin") && !userCanReadFile(ux, bo.getString("PERMTYPE"), bo.getString("ORGPERM"), bo.getString("POSTPERM"), bo.getString("LEVELPERM"))) { + continue; + } + if (PalCategoryEnum.POLICY.getValue().equals(methodId) || PalCategoryEnum.FORM.getValue().equals(methodId)) { + if (controlMap.containsKey(id)) { + resultBos.addAll(RiskVO.boToRiskVO(controlMap.get(id))); + } + } else if (PalCategoryEnum.FLOWCHART.getValue().equals(methodId) || PalCategoryEnum.EPC.getValue().equals(methodId)) { + if (!graphMap.containsKey(id)) { + continue; + } + for (BO graph : graphMap.get(id)) { + id = graph.getString("FILE_ID"); + if (controlMap.containsKey(id)) { + resultBos.addAll(RiskVO.boToRiskVO(controlMap.get(id))); + } + } + } + } + return resultBos; + } + + /** + * 获取相关表单明细 + * + * @param ux + * @return + */ + private List getForm(UserContext ux) { + List resultBos = new ArrayList<>(); + ResponseObject fileRo = getAllFile(ux); + if (fileRo.isErr()) { + return resultBos; + } + //相关表单 + List list = fileRo.getData(List.class); + List scopeBos = SDK.getBOAPI().query("BO_ACT_PUBLISH_PERM_SCOPE").list(); + Map scopeMap = new HashMap<>(); + for (BO bo : scopeBos) { + String fileuuid = bo.getString("FILEUUID"); + if (!scopeMap.containsKey(fileuuid)) { + scopeMap.put(fileuuid, bo); + } + } + for (Object object : list) { + JSONObject process = JSONObject.parseObject(JSON.toJSONString(object)); + String methodId = process.getString("methodId"); + String id = process.getString("id"); + if (!ux.getUID().equals("admin") && !scopeMap.containsKey(id)) { + continue; + } + BO bo = scopeMap.get(id); + if (!ux.getUID().equals("admin") && !userCanReadFile(ux, bo.getString("PERMTYPE"), bo.getString("ORGPERM"), bo.getString("POSTPERM"), bo.getString("LEVELPERM"))) { + continue; + } + if (PalCategoryEnum.FORM.getValue().equals(methodId)) { + //表单 + resultBos.add(process); + } + } + return resultBos; + } + + /** + * 获取相关绩效明细 + * + * @param ux + * @return + */ + private List getKpi(UserContext ux) { + List resultBos = new ArrayList<>(); + ResponseObject fileRo = getAllFile(ux); + if (fileRo.isErr()) { + return resultBos; + } + //相关绩效 + List xgPerformanceIds = new ArrayList<>(); + List list = fileRo.getData(List.class); + List scopeBos = SDK.getBOAPI().query("BO_ACT_PUBLISH_PERM_SCOPE").list(); + List graphBos = SDK.getBOAPI().query("BO_EU_PORTAL_INDEX_PRO_GRAPH").list(); + Map> graphMap = new HashMap<>(); + for (BO bo : graphBos) { + String graphId = bo.getString("FILE_ID"); + if (!graphMap.containsKey(graphId)) { + ArrayList graph = new ArrayList<>(); + graph.add(bo); + graphMap.put(graphId, graph); + } else { + graphMap.get(graphId).add(bo); + } + } + Map scopeMap = new HashMap<>(); + for (BO bo : scopeBos) { + String fileuuid = bo.getString("FILEUUID"); + if (!scopeMap.containsKey(fileuuid)) { + scopeMap.put(fileuuid, bo); + } + } + for (Object object : list) { + JSONObject process = JSONObject.parseObject(JSON.toJSONString(object)); + String methodId = process.getString("methodId"); + String id = process.getString("id"); + if (!ux.getUID().equals("admin") && !scopeMap.containsKey(id)) { + continue; + } + BO bo = scopeMap.get(id); + if (!ux.getUID().equals("admin") && !userCanReadFile(ux, bo.getString("PERMTYPE"), bo.getString("ORGPERM"), bo.getString("POSTPERM"), bo.getString("LEVELPERM"))) { + continue; + } + if (PalCategoryEnum.FLOWCHART.getValue().equals(methodId) || PalCategoryEnum.EPC.getValue().equals(methodId)) { + //流程图中,查看绩效 + if (!graphMap.containsKey(id)) { + continue; + } + PALRepositoryPropertyModel propModel = PALRepositoryPropertyCache.getPropertyByPropertyId(id, "Process_performance_metrics"); + String propertyValue = propModel.getPropertyValue(); + if (StringUtils.isNotEmpty(propertyValue)) { + try { + JSONObject jsonObject = JSONObject.parseObject(propertyValue); + String relationShapeId = jsonObject.getString("relationShapeId"); + if (StringUtils.isNotEmpty(relationShapeId)) { + xgPerformanceIds.addAll(Arrays.asList(relationShapeId.split(","))); + } + } catch (Exception e) { + e.printStackTrace(); + System.out.println("发布部门非JSON格式,转化失败,显示原值。文件ID:" + id); + } + } + } + } + if (xgPerformanceIds.size() <= 0) { + return resultBos; + } + List bos = SDK.getBOAPI().query("BO_EU_PORTAL_PERSON_KPI").list(); + if (bos.size() <= 0) { + return resultBos; + } + for (BO bo : bos) { + if (xgPerformanceIds.contains(bo.getString("KPI_IP"))) { + resultBos.add(bo.toJSONObject()); + } + } + return resultBos; + } + + /** + * 分页工具 + * + * @param list + * @param page + * @param size + * @return + */ + public List pageUtil(List list, int page, int size) { + List data = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + if (size * (page - 1) <= i && i < (size * page)) { + data.add(list.get(i)); + } + } + return data; + } + + /** + * 获取全部文件 + * + * @param ux + * @return + */ + public ResponseObject getAllFile(UserContext ux) { + String sourceAppId = Constants.APP_ID; + // aslp服务地址 + String aslp = "aslp://com.awspaas.user.apps.nqms.portal.indexpage/queryAllProcessFiles"; + // 参数定义列表 + Map params = new HashMap(); + params.put("sid", ux.getSessionId()); + AppAPI appAPI = SDK.getAppAPI(); + //获取流程制度分类下所有的文件数据 + return appAPI.callASLP(appAPI.getAppContext(sourceAppId), aslp, params); + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/ActivitiesVO.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/ActivitiesVO.java new file mode 100644 index 00000000..bb9e4f9b --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/ActivitiesVO.java @@ -0,0 +1,223 @@ +package com.awspaas.user.apps.nqms.portal.view.person.vo; + +import com.actionsoft.bpms.bo.engine.BO; + +/** + * Created with IntelliJ IDEA. + * + * @Author: yuandongqiang + * @Date: 2025/9/5 + * @Description: + */ +public class ActivitiesVO { + private String id; + /** + * 节点ID + */ + private String nodeId; + /** + * 节点名称 + */ + private String nodeName; + /** + * 节点标题 + */ + private String nodeTitle; + /** + * 节点类型 + */ + private String nodeType; + /** + * 文件ID + */ + private String plId; + /** + * 文件名称 + */ + private String plName; + /** + * 文件类型 + */ + private String nodeCategory; + /** + * 信息系统 + */ + private String itsysval; + /** + * 活动序号 + */ + private String activityNumber; + /** + * 活动描述 + */ + private String activityDesc; + /** + * 角色(角色包含岗位) + */ + private String role; + /** + * 角色名称(角色岗位文本) + */ + private String roleName; + /** + * 岗位 + */ + private String post; + /** + * 岗位名称 + */ + private String postName; + /** + * 最后修改时间 + */ + private String modifyDateTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getNodeName() { + return nodeName; + } + + public void setNodeName(String nodeName) { + this.nodeName = nodeName; + } + + public String getNodeTitle() { + return nodeTitle; + } + + public void setNodeTitle(String nodeTitle) { + this.nodeTitle = nodeTitle; + } + + public String getNodeType() { + return nodeType; + } + + public void setNodeType(String nodeType) { + this.nodeType = nodeType; + } + + public String getPlId() { + return plId; + } + + public void setPlId(String plId) { + this.plId = plId; + } + + public String getPlName() { + return plName; + } + + public void setPlName(String plName) { + this.plName = plName; + } + + public String getNodeCategory() { + return nodeCategory; + } + + public void setNodeCategory(String nodeCategory) { + this.nodeCategory = nodeCategory; + } + + public String getItsysval() { + return itsysval; + } + + public void setItsysval(String itsysval) { + this.itsysval = itsysval; + } + + public String getActivityNumber() { + return activityNumber; + } + + public void setActivityNumber(String activityNumber) { + this.activityNumber = activityNumber; + } + + public String getActivityDesc() { + return activityDesc; + } + + public void setActivityDesc(String activityDesc) { + this.activityDesc = activityDesc; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public String getPost() { + return post; + } + + public void setPost(String post) { + this.post = post; + } + + public String getPostName() { + return postName; + } + + public void setPostName(String postName) { + this.postName = postName; + } + + public String getModifyDateTime() { + return modifyDateTime; + } + + public void setModifyDateTime(String modifyDateTime) { + this.modifyDateTime = modifyDateTime; + } + + public static ActivitiesVO boToActivitiesVO(BO bo) { + ActivitiesVO vo = new ActivitiesVO(); + vo.setId(bo.getId()); + vo.setNodeId(bo.getString("NODEID")); + vo.setNodeName(bo.getString("NODENAME")); + vo.setNodeTitle(bo.getString("NODETITLE")); + vo.setNodeType(bo.getString("NODETYPE")); + vo.setPlId(bo.getString("PLID")); + vo.setPlName(bo.getString("PLNAME")); + vo.setNodeCategory(bo.getString("NODECATEGORY")); + vo.setItsysval(bo.getString("ITSYSVAL")); + vo.setActivityNumber(bo.getString("ACTIVITYNUMBER")); + vo.setActivityDesc(bo.getString("ACTIVITYDESC")); + vo.setRole(bo.getString("ROLE")); + vo.setRoleName(bo.getString("ROLENAME")); + vo.setPost(bo.getString("POST")); + vo.setPostName(bo.getString("POSTNAME")); + vo.setModifyDateTime(bo.getString("MODIFYDATETIME")); + return vo; + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/IframeMsgVO.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/IframeMsgVO.java new file mode 100644 index 00000000..e75c54eb --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/IframeMsgVO.java @@ -0,0 +1,162 @@ +package com.awspaas.user.apps.nqms.portal.view.person.vo; + +import com.actionsoft.bpms.bo.engine.BO; + +/** + * Created with IntelliJ IDEA. + * + * @Author: yuandongqiang + * @Date: 2025/8/29 + * @Description: + */ +public class IframeMsgVO { + /** + * id + */ + private String id; + /** + * iframe名称 + */ + private String iframName; + /** + * iframe地址 + */ + private String iframeUrl; + /** + * 所在行 + */ + private int row; + /** + * 列 + */ + private int column; + /** + * 宽度 + */ + private int width; + /** + * 更多按钮链接 + */ + private String moreUrl; + /** + * 按钮位置 + */ + private String buttonPosition; + /** + * 是否展示更多按钮 + */ + private boolean showMore; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIframName() { + return iframName; + } + + public void setIframName(String iframName) { + this.iframName = iframName; + } + + public String getIframeUrl() { + return iframeUrl; + } + + public void setIframeUrl(String iframeUrl) { + this.iframeUrl = iframeUrl; + } + + public int getRow() { + return row; + } + + public void setRow(int row) { + this.row = row; + } + + public int getColumn() { + return column; + } + + public void setColumn(int column) { + this.column = column; + } + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public String getMoreUrl() { + return moreUrl; + } + + public void setMoreUrl(String moreUrl) { + this.moreUrl = moreUrl; + } + + public String getButtonPosition() { + return buttonPosition; + } + + public void setButtonPosition(String buttonPosition) { + this.buttonPosition = buttonPosition; + } + + public boolean isShowMore() { + return showMore; + } + + public void setShowMore(boolean showMore) { + this.showMore = showMore; + } + + public static IframeMsgVO boToVo(BO bo) { + IframeMsgVO vo = new IframeMsgVO(); + vo.setId(bo.getId()); + vo.setIframName(bo.getString("IFRAME_NAME")); + vo.setIframeUrl(bo.getString("IFRAME_URL")); + vo.setRow(bo.get("IFRAME_ROW", Integer.class)); + vo.setColumn(bo.get("IFRAME_COLUMN", Integer.class)); + vo.setWidth(bo.get("IFRAME_WIDTH", Integer.class)); + vo.setMoreUrl(bo.getString("IFRAME_MORE_URL")); + vo.setShowMore(bo.get("SHOWMORE", Boolean.class)); + if (vo.isShowMore()) { + int column = vo.getColumn(); + int width = vo.getWidth(); + switch (column) { + case 1: + if (width == 8) { + vo.setButtonPosition("68.5%"); + } else if (width == 16) { + vo.setButtonPosition("35%"); + } else { + vo.setButtonPosition("2%"); + } + break; + case 2: + if (width == 8) { + vo.setButtonPosition("35%"); + } else { + vo.setButtonPosition("2%"); + } + break; + case 3: + vo.setButtonPosition("2%"); + break; + default: + vo.setButtonPosition("2%"); + break; + } + } + return vo; + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/MyFilesVO.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/MyFilesVO.java new file mode 100755 index 00000000..7864728c --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/MyFilesVO.java @@ -0,0 +1,129 @@ +package com.awspaas.user.apps.nqms.portal.view.person.vo; + +/** + * @author wym + * @date 2023-04-27 11:04 + * @description + */ +public class MyFilesVO { + /** + * 主责流程 + */ + private int dutyProcess; + /** + * 相关流程 + */ + private int relatedProcess; + /** + * 审批活动 + */ + private int approvalActivities; + /** + * 参与活动 + */ + private int participateActivities; + /** + * 我的角色 + */ + private int roles; + /** + * 相关制度 + */ + private int regime; + /** + * 相关风险 + */ + private int risk; + /** + * 相关表单 + */ + private int form; + /** + * 相关绩效 + */ + private int kpi; + + public MyFilesVO(int dutyProcess, int relatedProcess, int approvalActivities, int participateActivities, int roles, int regime, int risk, int form, int kpi) { + this.dutyProcess = dutyProcess; + this.relatedProcess = relatedProcess; + this.approvalActivities = approvalActivities; + this.participateActivities = participateActivities; + this.roles = roles; + this.regime = regime; + this.risk = risk; + this.form = form; + this.kpi = kpi; + } + + public int getDutyProcess() { + return dutyProcess; + } + + public void setDutyProcess(int dutyProcess) { + this.dutyProcess = dutyProcess; + } + + public int getRelatedProcess() { + return relatedProcess; + } + + public void setRelatedProcess(int relatedProcess) { + this.relatedProcess = relatedProcess; + } + + public int getApprovalActivities() { + return approvalActivities; + } + + public void setApprovalActivities(int approvalActivities) { + this.approvalActivities = approvalActivities; + } + + public int getParticipateActivities() { + return participateActivities; + } + + public void setParticipateActivities(int participateActivities) { + this.participateActivities = participateActivities; + } + + public int getRoles() { + return roles; + } + + public void setRoles(int roles) { + this.roles = roles; + } + + public int getRegime() { + return regime; + } + + public void setRegime(int regime) { + this.regime = regime; + } + + public int getRisk() { + return risk; + } + + public void setRisk(int risk) { + this.risk = risk; + } + + public int getForm() { + return form; + } + + public void setForm(int form) { + this.form = form; + } + + public int getKpi() { + return kpi; + } + + public void setKpi(int kpi) { + this.kpi = kpi; + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/ProcessVO.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/ProcessVO.java new file mode 100644 index 00000000..910b7675 --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/ProcessVO.java @@ -0,0 +1,68 @@ +package com.awspaas.user.apps.nqms.portal.view.person.vo; + +import com.actionsoft.bpms.bo.engine.BO; +import com.actionsoft.bpms.commons.database.RowMap; + +/** + * Created with IntelliJ IDEA. + * + * @Author: yuandongqiang + * @Date: 2025/9/5 + * @Description: + */ +public class ProcessVO { + private String id; + /** + * 文件名 + */ + private String fileName; + /** + * 流程发布编号 + */ + private String publishNumber; + /** + * 文件类型 + */ + private String fileType; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getPublishNumber() { + return publishNumber; + } + + public void setPublishNumber(String publishNumber) { + this.publishNumber = publishNumber; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public static ProcessVO boToDutyProcessVO(RowMap bo) { + ProcessVO vo = new ProcessVO(); + vo.setId(bo.getString("ID")); + vo.setFileName(bo.getString("PUBLISHFILENAME")); + vo.setPublishNumber(bo.getString("PUBLISH_NUMBER")); + vo.setFileType(bo.getString("FILETYPE")); + return vo; + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/RiskVO.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/RiskVO.java new file mode 100644 index 00000000..f2bf9aad --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/RiskVO.java @@ -0,0 +1,168 @@ +package com.awspaas.user.apps.nqms.portal.view.person.vo; + +import com.actionsoft.bpms.bo.engine.BO; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created with IntelliJ IDEA. + * + * @Author: yuandongqiang + * @Date: 2025/9/5 + * @Description: + */ +public class RiskVO { + private String id; + private String l1; + private String l2; + private String l3; + /** + * 文件名称 + */ + private String fileName; + /** + * 关键控制点 + */ + private String criticalControlPoint; + /** + * 控制描述 + */ + private String controlDesc; + /** + * 对应风险描述 + */ + private String mappingRiskDescription; + /** + * 角色/岗位 + */ + private String roleOrPost; + /** + * 模型状态 + */ + private String modelStatus; + /** + * 发布部门 + */ + private String issuingDepartment; + /** + * 形状块ID + */ + private String shapeId; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getL1() { + return l1; + } + + public void setL1(String l1) { + this.l1 = l1; + } + + public String getL2() { + return l2; + } + + public void setL2(String l2) { + this.l2 = l2; + } + + public String getL3() { + return l3; + } + + public void setL3(String l3) { + this.l3 = l3; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getCriticalControlPoint() { + return criticalControlPoint; + } + + public void setCriticalControlPoint(String criticalControlPoint) { + this.criticalControlPoint = criticalControlPoint; + } + + public String getControlDesc() { + return controlDesc; + } + + public void setControlDesc(String controlDesc) { + this.controlDesc = controlDesc; + } + + public String getMappingRiskDescription() { + return mappingRiskDescription; + } + + public void setMappingRiskDescription(String mappingRiskDescription) { + this.mappingRiskDescription = mappingRiskDescription; + } + + public String getRoleOrPost() { + return roleOrPost; + } + + public void setRoleOrPost(String roleOrPost) { + this.roleOrPost = roleOrPost; + } + + public String getModelStatus() { + return modelStatus; + } + + public void setModelStatus(String modelStatus) { + this.modelStatus = modelStatus; + } + + public String getIssuingDepartment() { + return issuingDepartment; + } + + public void setIssuingDepartment(String issuingDepartment) { + this.issuingDepartment = issuingDepartment; + } + + public String getShapeId() { + return shapeId; + } + + public void setShapeId(String shapeId) { + this.shapeId = shapeId; + } + public static List boToRiskVO(List bos){ + List vos = new ArrayList<>(); + for (BO bo : bos){ + RiskVO vo = new RiskVO(); + vo.setId(bo.getId()); + vo.setL1(bo.getString("L1_NAME")); + vo.setL2(bo.getString("L2_NAME")); + vo.setL3(bo.getString("L3_NAME")); + vo.setFileName(bo.getString("FILENAME")); + vo.setCriticalControlPoint(bo.getString("CRITICALCONTROLPOINT")); + vo.setControlDesc(bo.getString("CONTROLDESC")); + vo.setMappingRiskDescription(bo.getString("MAPPINGRISKDESCRIPTION")); + vo.setRoleOrPost(bo.getString("ROLEORPOST")); + vo.setModelStatus(bo.getString("MODELSTATUS")); + vo.setIssuingDepartment(bo.getString("PUBLISHDEPT")); + vo.setShapeId(bo.getString("SHAPEID")); + vos.add( vo); + } + return vos; + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/RoleVO.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/RoleVO.java new file mode 100755 index 00000000..13c948d7 --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/RoleVO.java @@ -0,0 +1,118 @@ +package com.awspaas.user.apps.nqms.portal.view.person.vo; + +import com.actionsoft.bpms.bo.engine.BO; + +/** + * Created with IntelliJ IDEA. + * + * @Author: yuandongqiang + * @Date: 2025/9/5 + * @Description: + */ +public class RoleVO { + private String id; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件ID + */ + private String fileId; + /** + * 岗位名称 + */ + private String postName; + /** + * 角色编码 + */ + private String roleNum; + /** + * 角色名称 + */ + private String roleName; + /** + * 角色ID + */ + private String roleId; + /** + * 岗位ID + */ + private String postId; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getPostName() { + return postName; + } + + public void setPostName(String postName) { + this.postName = postName; + } + + public String getRoleNum() { + return roleNum; + } + + public void setRoleNum(String roleNum) { + this.roleNum = roleNum; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public String getRoleId() { + return roleId; + } + + public void setRoleId(String roleId) { + this.roleId = roleId; + } + + public String getPostId() { + return postId; + } + + public void setPostId(String postId) { + this.postId = postId; + } + public static RoleVO boToRoleVO(BO bo) { + RoleVO vo = new RoleVO(); + vo.setId(bo.getId()); + vo.setFileName(bo.getString("FILE_NAME")); + vo.setFileId(bo.getString("FILE_ID")); + vo.setPostName(bo.getString("POST_NAME")); + vo.setRoleNum(bo.getString("ROLE_NUM")); + vo.setRoleName(bo.getString("ROLE_NAME")); + vo.setRoleId(bo.getString("ROLE_ID")); + vo.setPostId(bo.getString("POST_ID")); + return vo; + } +} diff --git a/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/WorkBenchVO.java b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/WorkBenchVO.java new file mode 100755 index 00000000..bc2f83f4 --- /dev/null +++ b/com.awspaas.user.apps.nqms.portal.view.person/src/com/awspaas/user/apps/nqms/portal/view/person/vo/WorkBenchVO.java @@ -0,0 +1,125 @@ +package com.awspaas.user.apps.nqms.portal.view.person.vo; + +/** + * @author ydq + * @date 2025-08-18 14:07 + * @description + */ +public class WorkBenchVO { + + private String isRead; + private String processRemindTimes;// + /** + * 标题 + */ + private String title; + /** + * 接收时间 + */ + private String beginTime; + /** + * 来自 + */ + private String ownerName; + /** + * 流程实例id + */ + private String processInstId; + /** + * 任务实例id + */ + private String taskInstId; + /** + * 打开类型 + */ + private int openState; + /** + * 优先级 0:低 1:无 2:中 3:高 + */ + private int priority; + /** + * 流程链接 + */ + private String url; + + public String getIsRead() { + return isRead; + } + + public void setIsRead(String isRead) { + this.isRead = isRead; + } + + public String getProcessRemindTimes() { + return processRemindTimes; + } + + public void setProcessRemindTimes(String processRemindTimes) { + this.processRemindTimes = processRemindTimes; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getBeginTime() { + return beginTime; + } + + public void setBeginTime(String beginTime) { + this.beginTime = beginTime; + } + + public String getOwnerName() { + return ownerName; + } + + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + } + + public String getProcessInstId() { + return processInstId; + } + + public void setProcessInstId(String processInstId) { + this.processInstId = processInstId; + } + + public String getTaskInstId() { + return taskInstId; + } + + public void setTaskInstId(String taskInstId) { + this.taskInstId = taskInstId; + } + + public int getOpenState() { + return openState; + } + + public void setOpenState(int openState) { + this.openState = openState; + } + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + +}