commit 6e774a9155c89e05c701d702fc94595ba7977f60 Author: CL <2502239547@qq.com> Date: Thu Feb 23 11:14:16 2023 +0800 first commit 20230223 diff --git a/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.class new file mode 100644 index 0000000..b3e09df Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.class new file mode 100644 index 0000000..1c717d5 Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.class new file mode 100644 index 0000000..1d22f4e Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.class new file mode 100644 index 0000000..2642cda Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.class b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.class new file mode 100644 index 0000000..0fa5dcc Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/应用-已办展示流程.zip b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/应用-已办展示流程.zip new file mode 100644 index 0000000..08f1450 Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/应用-已办展示流程.zip differ diff --git a/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/建模表单创建事宜.docx b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/建模表单创建事宜.docx new file mode 100644 index 0000000..96d3c08 --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/20230221-已办和我的请求过滤流程/已办和我的请求过滤流程/建模表单创建事宜.docx @@ -0,0 +1,4 @@ +表名要求 uf_bzslc +字段要求 gllcid + + diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.class new file mode 100644 index 0000000..b3e09df Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.java b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.java new file mode 100644 index 0000000..30be4cd --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneBaseInfoCmd.java @@ -0,0 +1,59 @@ +package com.customization.workflow; + +import com.api.workflow.bean.WfTreeNode; +import com.cloudstore.dev.api.util.Util_DataCache; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestList.DoneBaseInfoCmd; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author:CL + * @date:2023/2/20 11:43 + * @description 概述:已办流程 不显示指定流程 + */ + +@Slf4j +@CommandDynamicProxy(target = DoneBaseInfoCmd.class, desc = "已办事宜DoneBaseInfoCmd") +public class ProxyDoneBaseInfoCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> command) { + log.info("com.customization.workflow.ProxyDoneBaseInfoCmd 接口拦截已进入"); + DoneBaseInfoCmd cmd = (DoneBaseInfoCmd) command; +// 执行原有的逻辑 + Map result = nextExecute(cmd); +// 对结果集进行获取 吧需要的对应关系存入缓存 + List treedatas = (List) result.getOrDefault("treedata", new ArrayList<>()); +// 存树形关系 + List> treeContacts = new ArrayList<>(); + for (WfTreeNode treedata : treedatas) { + List cDomidList = new ArrayList<>(); +// 获取流程类型下的childs list + List childs = treedata.getChilds(); + for (WfTreeNode childDomid : childs) { + String cDomid = childDomid.getDomid(); + cDomidList.add(cDomid); + } +// 获取该流程类型的 pDomid + String pDomid = treedata.getDomid(); +// 放入map 存入treeContact + Map map = new HashMap<>(); + map.put("childs", cDomidList); + map.put("domid", pDomid); + treeContacts.add(map); + } +// 存入缓存 + Util_DataCache.setObjVal("treeContacts", treeContacts); + + log.info("com.customization.workflow.ProxyDoneBaseInfoCmd 缓存的内容"+treeContacts); + + + return result; + } +} diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.class new file mode 100644 index 0000000..1c717d5 Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.java b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.java new file mode 100644 index 0000000..466ea17 --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyDoneCountInfoCmd.java @@ -0,0 +1,94 @@ +package com.customization.workflow; + +import com.cloudstore.dev.api.util.Util_DataCache; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestList.DoneCountInfoCmd; +import lombok.extern.slf4j.Slf4j; +import weaver.conn.RecordSet; + +import java.util.*; + +/** + * @author:CL + * @date:2023/2/20 9:48 + * @description 概述:已办流程 不显示指定流程 + */ +@Slf4j +@CommandDynamicProxy(target = DoneCountInfoCmd.class, desc = "已办事宜DoneCountInfo") +public class ProxyDoneCountInfoCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> command) { + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 接口拦截已进入"); + DoneCountInfoCmd cmd = (DoneCountInfoCmd) command; +// 执行原有的逻辑 + Map result = nextExecute(cmd); + +// 查询需要去除的流程 + String sql = "select gllcid from uf_bzslc"; + RecordSet rs = new RecordSet(); + rs.executeQuery(sql); + List list = new ArrayList<>(); + while (rs.next()) { + String gllcid = rs.getString("gllcid"); + list.add(gllcid); + } + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 需要过滤的流程列表" + list); +// 读取缓存 + List> treeContacts = (List>) Util_DataCache.getObjVal("treeContacts"); +// 清理缓存 + Util_DataCache.clearVal("treeContacts"); + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 缓存的树形关系 " + treeContacts.toString()); + + Util_DataCache.clearVal(""); +// 对结果集去除指定流程 + Map treecount = (Map) result.getOrDefault("treecount", new HashMap<>()); + + Iterator> iterator = treecount.entrySet().iterator(); + +// 数量更新 + List> deleteWorkflowList = new ArrayList<>(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + if (entry.getKey().contains("wf_")) { + Map value = (Map) entry.getValue(); +// 遍历查询到的list 如果 该map的id存在于删除列表中 则remove + for (String gllcid : list) { + if (value.get("keyid").equals(gllcid)) { + deleteWorkflowList.add(value); + iterator.remove(); + break; + } + } + } + } + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 已经删除但需要调整数量的列表 "+deleteWorkflowList); + + for (Map deleteWorkflow : deleteWorkflowList) { + for (Map treeContact : treeContacts) { + List childs = (List) treeContact.get("childs"); + if (childs.contains(deleteWorkflow.get("domid"))) { + String type = (String) treeContact.get("domid"); + Map typeValue = (Map) treecount.get(type); +// 类型下原数据 + int pflowNew = Integer.parseInt((String) typeValue.get("flowNew")); + int pflowAll = Integer.parseInt((String) typeValue.get("flowAll")); +// 删除的流程的数据(需要减的数据) + int cflowNew = Integer.parseInt(deleteWorkflow.get("flowNew")); + int cflowAll = Integer.parseInt(deleteWorkflow.get("flowAll")); +// 减去 + int flownew = pflowNew - cflowNew; + int flowAll = pflowAll - cflowAll; + typeValue.put("flowNew", String.valueOf(flownew)); + typeValue.put("flowAll", String.valueOf(flowAll)); + treecount.put(type,typeValue); + } + } + + } + + + return result; + } +} diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.class new file mode 100644 index 0000000..1d22f4e Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.java b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.java new file mode 100644 index 0000000..2fe32d0 --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineBaseInfoCmd.java @@ -0,0 +1,57 @@ +package com.customization.workflow; + +import com.api.workflow.bean.WfTreeNode; +import com.cloudstore.dev.api.util.Util_DataCache; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestList.MineBaseInfoCmd; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author:CL + * @date:2023/2/21 10:51 + */ +@Slf4j +@CommandDynamicProxy(target = MineBaseInfoCmd.class, desc = "我的请求MineBaseInfoCmd") +public class ProxyMineBaseInfoCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> command) { + log.info("com.customization.workflow.ProxyDoneBaseInfoCmd 接口拦截已进入"); + MineBaseInfoCmd cmd = (MineBaseInfoCmd) command; +// 执行原有的逻辑 + Map result = nextExecute(cmd); +// 对结果集进行获取 吧需要的对应关系存入缓存 + List treedatas = (List) result.getOrDefault("treedata", new ArrayList<>()); +// 存树形关系 + List> treeContacts = new ArrayList<>(); + for (WfTreeNode treedata : treedatas) { + List cDomidList = new ArrayList<>(); +// 获取流程类型下的childs list + List childs = treedata.getChilds(); + for (WfTreeNode childDomid : childs) { + String cDomid = childDomid.getDomid(); + cDomidList.add(cDomid); + } +// 获取该流程类型的 pDomid + String pDomid = treedata.getDomid(); +// 放入map 存入treeContact + Map map = new HashMap<>(); + map.put("childs", cDomidList); + map.put("domid", pDomid); + treeContacts.add(map); + } +// 存入缓存 + Util_DataCache.setObjVal("treeContacts", treeContacts); + + log.info("com.customization.workflow.ProxyDoneBaseInfoCmd 缓存的内容"+ treeContacts); + + + return result; + } +} diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.class b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.class new file mode 100644 index 0000000..2642cda Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.java b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.java new file mode 100644 index 0000000..5f1152d --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/customization/workflow/ProxyMineCountInfoCmd.java @@ -0,0 +1,93 @@ +package com.customization.workflow; + +import com.cloudstore.dev.api.util.Util_DataCache; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestList.MineCountInfoCmd; +import lombok.extern.slf4j.Slf4j; +import weaver.conn.RecordSet; + +import java.util.*; + +/** + * @author:CL + * @date:2023/2/20 9:48 + * @description 概述:已办流程 不显示指定流程 + */ +@Slf4j +@CommandDynamicProxy(target = MineCountInfoCmd.class, desc = "我的请求MineCountInfoCmd") +public class ProxyMineCountInfoCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> command) { + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 接口拦截已进入"); + MineCountInfoCmd cmd = (MineCountInfoCmd) command; +// 执行原有的逻辑 + Map result = nextExecute(cmd); + +// 查询需要去除的流程 + String sql = "select gllcid from uf_bzslc"; + RecordSet rs = new RecordSet(); + rs.executeQuery(sql); + List list = new ArrayList<>(); + while (rs.next()) { + String gllcid = rs.getString("gllcid"); + list.add(gllcid); + } + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 需要过滤的流程列表" + list); +// 读取缓存 + List> treeContacts = (List>) Util_DataCache.getObjVal("treeContacts"); +// 清理缓存 + Util_DataCache.clearVal("treeContacts"); + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 缓存的树形关系 " + treeContacts.toString()); + + Util_DataCache.clearVal(""); +// 对结果集去除指定流程 + Map treecount = (Map) result.getOrDefault("treecount", new HashMap<>()); + + Iterator> iterator = treecount.entrySet().iterator(); + +// 数量更新 + List> deleteWorkflowList = new ArrayList<>(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + if (entry.getKey().contains("wf_")) { + Map value = (Map) entry.getValue(); +// 遍历查询到的list 如果 该map的id存在于删除列表中 则remove + for (String gllcid : list) { + if (value.get("keyid").equals(gllcid)) { + deleteWorkflowList.add(value); + iterator.remove(); + break; + } + } + } + } + log.info("com.customization.workflow.ProxyDoneCountInfoCmd 已经删除但需要调整数量的列表 "+deleteWorkflowList); + + for (Map deleteWorkflow : deleteWorkflowList) { + for (Map treeContact : treeContacts) { + List childs = (List) treeContact.get("childs"); + if (childs.contains(deleteWorkflow.get("domid"))) { + String type = (String) treeContact.get("domid"); + Map typeValue = (Map) treecount.get(type); +// 类型下原数据 + int pflowNew = Integer.parseInt((String) typeValue.get("flowNew")); + int pflowAll = Integer.parseInt((String) typeValue.get("flowAll")); +// 删除的流程的数据(需要减的数据) + int cflowNew = Integer.parseInt(deleteWorkflow.get("flowNew")); + int cflowAll = Integer.parseInt(deleteWorkflow.get("flowAll")); +// 减去 + int flownew = pflowNew - cflowNew; + int flowAll = pflowAll - cflowAll; + typeValue.put("flowNew", String.valueOf(flownew)); + typeValue.put("flowAll", String.valueOf(flowAll)); + treecount.put(type,typeValue); + } + } + + } + + return result; + } +} diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.class b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.class new file mode 100644 index 0000000..0fa5dcc Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.java b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.java new file mode 100644 index 0000000..287398a --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/代码备份/已办事宜我的请求过滤流程mine/ecology/classbean/com/engine/workflow/cmd/requestList/GetListResultCmd.java @@ -0,0 +1,945 @@ +package com.engine.workflow.cmd.requestList; + +import com.api.workflow.service.RequestAuthenticationService; +import com.cloudstore.dev.api.util.Util_TableMap; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.core.interceptor.CommandContext; +import com.engine.encrypt.biz.WfEncryptBiz; +import com.engine.hrm.biz.HrmClassifiedProtectionBiz; +import com.engine.workflow.biz.RequestQuickSearchBiz; +import com.engine.workflow.biz.WorkflowCenterBiz; +import com.engine.workflow.biz.freeNode.FreeNodeBiz; +import com.engine.workflow.biz.requestList.GenerateDataInfoBiz; +import com.engine.workflow.biz.requestList.RequestAttentionBiz; +import com.engine.workflow.biz.requestList.OfsRequestListBiz; +import com.engine.workflow.biz.requestList.RequestListBiz; +import com.engine.workflow.biz.workflowCore.RequestBaseBiz; +import com.engine.workflow.constant.PageUidConst; +import com.engine.workflow.constant.SecondAuthType; +import com.engine.workflow.entity.RequestListDataInfoEntity; +import com.engine.workflow.entity.core.RequestInfoEntity; +import com.engine.workflow.entity.requestList.ListInfoEntity; +import com.engine.workflow.service.RequestSecondAuthService; +import com.engine.workflow.service.impl.RequestSecondAuthServiceImpl; +import com.engine.workflow.util.OrderByListUtil; +import weaver.conn.RecordSet; +import weaver.fullsearch.util.SearchBrowserUtils; +import weaver.general.PageIdConst; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.systeminfo.SystemEnv; +import weaver.workflow.request.WFForwardManager; +import weaver.workflow.request.todo.OfsSettingObject; +import weaver.workflow.request.todo.RequestUtil; +import weaver.workflow.workflow.WorkflowConfigComInfo; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + +/** + * PC端-流程待办/已办/我的请求分页列表数据 + * @author liuzy 2018-08-10 + */ +public class GetListResultCmd extends AbstractCommonCommand>{ + + private HttpServletRequest request; + + /** + * 列表上一些可以个性化的信息, 供个性化使用(后续可继续完善) + */ + private ListInfoEntity listInfoEntity; + + public GetListResultCmd(HttpServletRequest request, User user){ + this.request = request; + this.user = user; + this.listInfoEntity = new ListInfoEntity(); + this.params = ParamUtil.request2Map(request); + } + + public GetListResultCmd(){ + + } + + public Map execute(CommandContext commandContext) { + Map result = new HashMap(); + try { + RequestListDataInfoEntity bean = new GenerateDataInfoBiz().generateEntity(request, user); + result = this.getResult(bean); + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + private Map getResult(RequestListDataInfoEntity bean) throws Exception { + Map apidatas = new HashMap(); + RecordSet RecordSet = new RecordSet(); + RequestUtil requestutil = new RequestUtil(); + OfsSettingObject ofso = requestutil.getOfsSetting(); + boolean isopenos = ofso.getIsuse() == 1 && new OfsRequestListBiz().supportOfs4OtherCall(user);// 是否开启异构系统待办 + boolean showdone = "1".equals(ofso.getShowdone());//异构系统是否显示已办数据 + int userid = user.getUID(); + // 处理查看人员卡片 start + int resourceid = Util.getIntValue(Util.null2String(params.get("resourceid")), -1); + boolean isNeedHideBtn = resourceid != -1 && resourceid != userid; // 查看别人卡片需要隐藏checkbox,操作按钮等 + + WorkflowConfigComInfo wfconfig = new WorkflowConfigComInfo(); + int usequicksearch = Util.getIntValue(wfconfig.getValue("use_quicksearch_wflist"));//流程入口,是否使用微搜 + String usequicksearchUser = Util.null2String(wfconfig.getValue("use_quicksearch_user"));//流程入口,使用微搜人员id + String scope = Util.null2String(params.get("viewScope")); + if(!"true".equals(Util.null2String(params.get("doNotUseQuickSearch"))) && ((usequicksearch == 1 && "mine".equals(scope)) || (usequicksearch == 2 && (("," + usequicksearchUser + ",").contains("," + user.getUID() + ",") || "mine".equals(scope)))) && this.supportQuickSerach(isopenos,scope)){//满足微搜条件调用微搜,等于1只支持我的请求走微搜,等于2则待办已办也支持 + params.put("forWfreqlist",usequicksearch == 2 && ("," + usequicksearchUser + ",").contains("," + user.getUID() + ",") ? -1 : 0); + return new RequestQuickSearchBiz().getRequestList4WfList(params, user,false); + } + //流程名称反射方法(兼容E8) + String workflownamereflectmethod = "weaver.workflow.workflow.WorkflowComInfo.getWorkflowname"; + if(isopenos) + workflownamereflectmethod = "weaver.general.WorkFlowTransMethod.getWorkflowname"; + String requestnamereflectclass = "com.api.workflow.util.WorkFlowSPATransMethod"; + Map reqparams = bean.getReqparams(); + boolean showBatchSubmit = (!isNeedHideBtn && bean.isShowBatchSubmit()); + boolean isMergeShow = bean.isMergeShow(); + String CurrentUser = bean.getCurrentUser(); + String userIDAll = bean.getUserIDAll(); + String orderby = bean.getOrderclause(); + String orderbyos = bean.getOrderclause_os(); +// ---------------------------------------------------- + RecordSet rs=new RecordSet(); + rs.executeQuery("select gllcid from uf_bzslc"); + List list = new ArrayList<>(); + while (rs.next()) { + String gllcid = rs.getString("gllcid"); + list.add(gllcid); + } + String addsqlwhere = "and t1.workflowid not in ("+list.stream().map(String::valueOf).collect(Collectors.joining(","))+")"; + +// --------------------------------------------------- + String sqlwhere = bean.getWhereclause(); + if(list.size()!=0&&(scope.equals("done")||scope.equals("mine"))){ + sqlwhere+=addsqlwhere; + } + + String sqlwhereos = bean.getWhereclause_os(); + String sqlwhereosDone = bean.getWhereclause_osDone();//集成分表--统一已办表 + + int usertype = "2".equals(user.getLogintype()) ? 1 : 0; + int sysId = Util.getIntValue(reqparams.get("sysId"), 0); + boolean isDoing = "doing".equals(scope); + reqparams.put("isMergeShow",isMergeShow && !userIDAll.equals(String.valueOf(user.getUID()))?"1":"0");//设置开启并且有次账号 + boolean isQueryByNewTable = RequestListBiz.isQueryByNewTable(user,reqparams); + apidatas.put("isQueryByNewTable",isQueryByNewTable); + + // 处理已办排序 start + String operateDateTimeFieldSql0 = ""; + String operateDateTimeFieldSql = ""; + String operateDateTimeFieldSqlOs = ""; + String tableOrderStr = isopenos ? orderbyos : orderby; + if (tableOrderStr.toLowerCase().indexOf("operatedate") != -1) { + operateDateTimeFieldSql0 = ",operatedate"; + operateDateTimeFieldSql = ", (case WHEN t2.operatedate IS NULL THEN t2.receivedate ELSE t2.operatedate END) operatedate "; + operateDateTimeFieldSqlOs = ", (case WHEN operatedate IS NULL THEN receivedate ELSE operatedate END) operatedate "; + } + + if (tableOrderStr.toLowerCase().indexOf("operatetime") != -1) { + operateDateTimeFieldSql0 += ",operatetime"; + operateDateTimeFieldSql += ", (case WHEN t2.operatetime IS NULL THEN t2.receivetime ELSE t2.operatetime END) operatetime "; + operateDateTimeFieldSqlOs += ", (case WHEN operatetime IS NULL THEN receivetime ELSE operatetime END) operatetime "; + } + // 处理已办排序 end + // 最外层查询字段 + String backfields0 = " requestid,requestmark,createdate, createtime,creater, creatertype, workflowid, requestname, requestnamenew, " + + "status,requestlevel,currentnodeid,viewtype,userid,receivedate,receivetime,isremark,nodeid,agentorbyagentid,agenttype,isprocessed " + + operateDateTimeFieldSql0 + ",systype,workflowtype,isbereject,takisremark,requestnamehtmlnew"; + // 原始查询字段 + String backfields = " t1.requestid,t1.requestmark,t1.createdate, t1.createtime,t1.creater, t1.creatertype, t1.workflowid, t1.requestname, t1.requestnamenew," + + " t1.status,t1.requestlevel,t1.currentnodeid,t2.viewtype,t2.userid,t2.receivedate,t2.receivetime,t2.isremark,t2.nodeid,t2.agentorbyagentid,t2.agenttype,t2.isprocessed " + + operateDateTimeFieldSql + " ,t1.seclevel,'0' as systype,t2.workflowtype,t2.isbereject,t2.takisremark,t1.requestnamehtmlnew"; + // 异构系统查询字段 + String backfieldsOs = " requestid,'' as requestmark,createdate, createtime,creatorid as creater, 0 as creatertype, workflowid, requestname, requestname as requestnamenew, " + + "'' as status,requestlevel,-1 as currentnodeid,viewtype,userid,receivedate,receivetime,isremark,0 as nodeid, -1 as agentorbyagentid,'0' as agenttype,'0' as isprocessed " + + operateDateTimeFieldSqlOs + " ,'"+new HrmClassifiedProtectionBiz().getDefaultResourceSecLevel()+"' as secLevel,'1' as systype, sysid as workflowtype,'' as isbereject,0 as takisremark,'' as requestnamehtmlnew"; + //反馈黄点提示字段 + backfields0 += ",viewDate,viewTime,lastFeedBackDate,lastFeedBackTime,needwfback,lastFeedBackOperator"; + backfields += ",t2.viewDate,t2.viewTime,t1.lastFeedBackDate,t1.lastFeedBackTime,t2.needwfback,t1.lastFeedBackOperator"; + backfieldsOs += ",'' as viewDate,'' as viewTime,'' as lastFeedBackDate,'' as lastFeedBackTime,'' as needwfback,0 as lastFeedBackOperator"; + //反馈黄点提示字段 + String fromSql = " from workflow_requestbase t1,workflow_currentoperator t2,workflow_base t3 "; + if("done".equals(scope)){ + backfields0 += ",operatedateNew,operatetimeNew"; + backfields += ",t2.operatedate as operatedateNew,t2.operatetime as operatetimeNew"; + backfieldsOs += ",operatedate as operatedateNew,operatetime as operatetimeNew"; + } + + String para2 = "column:requestid+column:workflowid+column:viewtype+0+" + user.getLanguage() + + "+column:nodeid+column:isremark+" + user.getUID() + + "+column:agentorbyagentid+column:agenttype+column:isprocessed+column:userid+0+column:creater+scope_"+scope+"_scope"; + String para4 = user.getLanguage() + "+" + user.getUID() + "+column:userid"; + + para2 = "S+column:viewDate+column:viewTime+column:lastFeedBackDate+column:lastFeedBackTime+column:needwfback+column:lastFeedBackOperator+column:userid+S+" + para2; + String reqNameParams = "S+column:viewDate+column:viewTime+column:lastFeedBackDate+column:lastFeedBackTime+column:needwfback+column:lastFeedBackOperator+column:userid+S"//反馈参数不动 + + "+column:requestid+column:workflowid+column:viewtype+" + user.getLanguage() + + "+column:nodeid+column:isremark+" + user.getUID() + + "+column:agentorbyagentid+column:agenttype+column:isprocessed+column:userid+column:creater+scope_"+scope+"_scope+column:isbereject+column:takisremark+column:requestnamehtmlnew";//流程标题解析新方法新参数 + String reqNameTransMethod = "com.api.workflow.util.WorkFlowSPATransMethod.commonReqNameTransMethod_AttentionTag"; + + //处理紧急程度自定义排序问题 + String requestleve_str = "requestlevelorder";//统一使用这个紧急程度顺序排序,以前是紧急程度排序 + OrderByListUtil obu = new OrderByListUtil(this.user); + String myorderby = "",colname="",isordertype=""; + if(isDoing) { + myorderby = obu.getMyOrderByStr(this.user.getUID(), PageUidConst.WF_LIST_DOING); + if("".equals(myorderby)) {//如果为空 + myorderby += " receivedate desc, receivetime desc"; + } + } + if("wfcenter_todo".equals(params.get("source"))){//流程中心more页面不走默认排序设置 + myorderby = Util.null2String(WorkflowCenterBiz.getWfCenterSetting(userid+"",usertype+"","doing","").get("ordercolDoing")); + } + + if(isQueryByNewTable){//走新表时,使用提前缓存的已办排序时间代替实时case when排序 + backfields0 += ",optorderdate,optordertime"; + backfields += ",t2.optorderdate,optordertime"; + backfieldsOs += ",operatedate as optorderdate,operatetime as optordertime"; + orderby = orderbyos.replaceAll("operatedate","optorderdate").replaceAll("operatetime","optordertime"); + orderbyos = orderbyos.replaceAll("operatedate","optorderdate").replaceAll("operatetime","optordertime"); + myorderby = orderbyos.replaceAll("operatedate","optorderdate").replaceAll("operatetime","optordertime"); + } + + String pageUid = ""; + String urlType = ""; + if (scope.equals("doing")) { + urlType = "1"; + pageUid = PageUidConst.WF_LIST_DOING; + } else if (scope.equals("done")) { + urlType = "2"; + pageUid = PageUidConst.WF_LIST_DONE; + } else if (scope.equals("complete")) { + urlType = "3"; + } else if (scope.equals("mine")) { + urlType = "4"; + pageUid = PageUidConst.WF_LIST_MINE; + } else { + urlType = "0"; + } + String pageId = PageIdConst.getWFPageId(urlType); + String pageSize = PageIdConst.getPageSize(pageId, user.getUID()); + String operateString = ""; + String tableString = ""; + String temptableString = ""; + String temptablerowString = ""; + if (isopenos) { + para2 = "column:requestid+column:workflowid+column:viewtype+0+" + user.getLanguage() + + "+column:nodeid+column:isremark+" + user.getUID() + + "+column:agentorbyagentid+column:agenttype+column:isprocessed+column:userid+0+column:creater+column:systype+column:workflowtype+scope_"+scope+"_scope"; + para2 = "S+column:viewDate+column:viewTime+column:lastFeedBackDate+column:lastFeedBackTime+column:needwfback+column:lastFeedBackOperator+column:userid+S+" + para2; + if("done".equals(scope)){//异构系统不显示已办可以直接不查已办表 + if(showdone){ + fromSql = " from (select " + backfields0 + " from (select " + backfields + " " + fromSql + "" + sqlwhere + + " union (select distinct " + backfieldsOs + " from ofs_done_data " + sqlwhereosDone + ") ) t1 ) t1 "; + }else{ + fromSql = " from (select " + backfields0 + " from (select " + backfields + " " + fromSql + "" + sqlwhere + " ) t1 ) t1 "; + } + }else if("mine".equals(scope) && showdone){//异构系统不显示已办时,我的请求sql和待办sql一致 + fromSql = " from (select " + backfields0 + " from (select " + backfields + " " + fromSql + "" + sqlwhere + + " union (select distinct " + backfieldsOs + " from ofs_todo_data " + sqlwhereos + ") union (select distinct " + backfieldsOs + " from ofs_done_data" + sqlwhereosDone + ") ) t1 ) t1 "; + }else{ + fromSql = " from (select " + backfields0 + " from (select " + backfields + " " + fromSql + "" + sqlwhere + + " union (select distinct " + backfieldsOs + " from ofs_todo_data " + sqlwhereos + ") ) t1 ) t1 "; + } + + //处理紧急程度自定义排序问题 + backfields0 = obu.getOrderByFrom(this.user.getLanguage()) + backfields0; + if(isDoing) {//需要特殊处理 待办 + orderbyos = myorderby; + } + temptableString = " "; + String showname = ofso.getShowsysname(); + if (!showname.equals("0")) { + temptablerowString = ""; + } + } else { + backfields = obu.getOrderByFrom(this.user.getLanguage()) + backfields; + if(orderby.toLowerCase().indexOf("operatedate") != -1 || orderby.toLowerCase().indexOf("operatetime") != -1){ + //已办含case when情况排序特殊处理 + if(isDoing) {//需要特殊处理 待办 + orderby = myorderby; + } + fromSql = " from (select " + backfields + " " + fromSql + "" + sqlwhere + ") t1 "; + orderby = orderby.replace("t2.", "t1."); + temptableString = " "; + }else{ + // if(myorderby.trim().length()>0) {//需要特殊处理 + if(isDoing) {//需要特殊处理 待办 + orderby = myorderby; + } + temptableString = " "; + } + } + + //System.err.println("select "+backfields+fromSql+sqlwhere+" order by "+orderby); + //================sql串拼装结束,拼接分页组件tablestring========= + + boolean hasrequestname = true; + boolean hascreater = false; + boolean hascreatedate = false; + boolean hasworkflowname = false; + boolean hasrequestlevel = false; + boolean hasreceivetime = false; + boolean hasstatus = false; + boolean hasreceivedpersons = true; + boolean hascurrentnode = false; + boolean hasrequestmark = false; + if (scope.equals("doing")) { + hascreater = true; + hascreatedate = true; + } else if (scope.equals("done") || scope.equals("complete")) { + hasworkflowname = true; + hascreater = true; + hasreceivetime = true; + hascurrentnode = true; + } else if (scope.equals("mine")) { + hasworkflowname = true; + hascreatedate = true; + hascurrentnode = true; + } else { + hasworkflowname = true; + hascreater = true; + hascreatedate = true; + hascurrentnode = true; + } + + if (!userIDAll.equals(String.valueOf(user.getUID()))) { + //请求名称列串统一 + String requestNameColumnStr = ""; + String currentUserpara = "column:userid"; + String currentUserpara2 = "column:userid+column:nodeid+column:workflowid+column:agentorbyagentid+column:agenttype+"+user.getUID(); + String popedomOtherpara = "S+column:viewDate+column:viewTime+column:lastFeedBackDate+column:lastFeedBackTime+column:needwfback+column:lastFeedBackOperator+column:userid+S+" + "column:viewtype+column:isremark+column:isprocessed+column:nodeid+column:workflowid+"+ scope+"+column:userid"; + String popedomUserpara = userid + "_" + usertype; + String popedomLogpara = "column:nodeid"; + String checkBoxParam = "column:requestid+column:userid+column:workflowid+"+usertype; + if(!isNeedHideBtn){ + operateString = ""; + operateString += " "; + + + //标记为已读 + operateString += " "; + //转发 + if (!user.getLogintype().equals("2")) { + operateString += " "; + } + //督办 + operateString += ""; + //短信催办 + operateString += ""; + //邮件催办 + operateString += ""; + //打印 + operateString += " "; + //表单日志 + operateString += " "; + //关注 + operateString += " "; + operateString += ""; + } + if (showBatchSubmit && isDoing) { + if (isMergeShow) { + tableString = " "; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + tableString += requestNameColumnStr; + } else { + tableString = "
"; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + ""; + tableString += requestNameColumnStr; + } + tableString += temptablerowString; + tableString += ""; + tableString += ""; + + tableString += " "; + tableString += ""; + tableString += ""; + tableString += ""; + + tableString += ""; + tableString += ""; + tableString += ""; + tableString += ""; + } else if ("mine".equals(scope)) { + if (isMergeShow) { + sqlwhere += " and t1.creater = t2.userid"; + tableString = "
"; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + tableString += requestNameColumnStr; + } else { + tableString = "
"; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + tableString += requestNameColumnStr; + } + tableString += temptablerowString; + tableString += " "; + + tableString += " "; + tableString += ""; + tableString += " "; + tableString += " "; + + tableString += " "; + tableString += " "; + tableString += ""; + tableString += ""; + tableString += ""; + } else { + if (isMergeShow) { + tableString = "
"; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + tableString += requestNameColumnStr; + } else { + tableString = "
"; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + tableString += requestNameColumnStr; + } + tableString += temptablerowString; + tableString += " "; + + tableString += " "; + tableString += ""; + tableString += " "; + + if("done".equals(scope)){ + tableString += ""; + }else{ + tableString += ""; + } + tableString += " "; + + tableString += " "; + tableString += " "; + tableString += ""; + tableString += ""; + } + } else { + //请求名称列串统一 + String requestNameColumnStr = ""; + if(isQueryByNewTable){ + requestNameColumnStr = ""; + }else{ + requestNameColumnStr = ""; + } + String currentUserpara = "column:userid"; + String currentUserpara2 = "column:userid+column:nodeid+column:workflowid+column:agentorbyagentid+column:agenttype+"+user.getUID(); + String popedomOtherpara = "S+column:viewDate+column:viewTime+column:lastFeedBackDate+column:lastFeedBackTime+column:needwfback+column:lastFeedBackOperator+column:userid+S+" + "column:viewtype+column:isremark+column:isprocessed+column:nodeid+column:workflowid+" + scope +"+column:userid"; + String popedomUserpara = userid + "_" + usertype; + String popedomLogpara = "column:nodeid"; + String checkBoxParam = "column:requestid+column:userid+column:workflowid+"+usertype; + if(!isNeedHideBtn){ + operateString = ""; + operateString += " "; + + //标记为已读 + operateString += " "; + //转发 + if (!user.getLogintype().equals("2")) { + operateString += " "; + } + //督办 + operateString += ""; + //短信催办 + operateString += ""; + //邮件催办 + operateString += ""; + //打印 + operateString += " "; + //表单日志 + operateString += " "; + //关注 + operateString += " "; + operateString += ""; + } + + if (showBatchSubmit && isDoing) { + tableString = "
"; + + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + + tableString += requestNameColumnStr; + tableString += temptablerowString; + tableString += ""; + tableString += ""; + + tableString += " "; + tableString += ""; + tableString += ""; + tableString += ""; + + tableString += ""; + tableString += ""; + tableString += ""; + tableString += ""; + } else if ("mine".equals(scope)) { + tableString = "
"; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + + tableString += temptablerowString; + tableString += requestNameColumnStr; + tableString += " "; + + tableString += " "; + tableString += ""; + tableString += " "; + + tableString += " "; + tableString += " "; + + tableString += " "; + tableString += " "; + tableString += ""; + tableString += ""; + } else { + tableString = "
"; + tableString += temptableString; + tableString += operateString + (isNeedHideBtn ? "" : getCheckBoxString(scope, checkBoxParam)) + " "; + tableString += temptablerowString; + tableString += requestNameColumnStr; + tableString += " "; + + tableString += " "; + tableString += " "; + tableString += " "; + + if("done".equals(scope)){ + tableString += ""; + }else{ + tableString += ""; + } + tableString += " "; + + tableString += " "; + tableString += " "; + tableString += ""; + tableString += ""; + } + } + if(!"".equals(tableString)){ + tableString += ""; + tableString += "" + "
"; + } + + String sessionkey = pageUid+"_"+Util.getEncrypt(Util.getRandom()); + Util_TableMap.setVal(sessionkey, tableString); + + //批量提交是否需要签字意见 + int multisubmitnotinputsign = 0; + if(showBatchSubmit && isDoing){ + RecordSet.executeQuery("select multisubmitnotinputsign from workflow_RequestUserDefault where userId=?", userid); + if(RecordSet.next()) + multisubmitnotinputsign = Util.getIntValue(Util.null2String(RecordSet.getString("multisubmitnotinputsign")), 0); + } + + Map sharearg = new HashMap(); + sharearg.put("multisubmitnotinputsign", multisubmitnotinputsign+""); + if(showBatchSubmit && isDoing && sysId != 5 && sysId != 8) + sharearg.put("hasBatchSubmitBtn", "true"); + sharearg.put("hasBatchReadBtn", (!isNeedHideBtn && isDoing && CurrentUser.equals(userid+""))+""); //自己待办才显示全部只读按钮 + + boolean showBatchAttentionBtn = (!isNeedHideBtn && new RequestAttentionBiz().showBatchAttentionBtn(scope)); + sharearg.put("showBatchAttentionBtn", showBatchAttentionBtn+""); + sharearg.put("showBatchForwardBtn", isNeedHideBtn ? "false" : "true"); + sharearg.put("showBtn", isNeedHideBtn ? "false" : "true"); + apidatas.put("sessionkey", sessionkey); + apidatas.put("sharearg", sharearg); + return apidatas; + } + + /** + * 获取checkbox的xml节点 + * @param scope + * @param params + * @return + */ + private String getCheckBoxString(String scope,String params){ + StringBuffer result = new StringBuffer(); + + if("done".equals(scope) || "mine".equals(scope) || "doing".equals(scope)){ + result.append(""); + + if("doing".equals(scope)){ + //批量提交 + //获取trancemethod信息 + String multSubmitParam = this.listInfoEntity.getListOperateInfoEntity().getMultSubmitParam(); + String multSubmitMethod = this.listInfoEntity.getListOperateInfoEntity().getMultSubmitMethod(); + + result.append(""); + } + + //批量关注 + result.append(""); + + //批量督办 + result.append(""); + + //批量转发 + result.append(""); + + result.append(""); + } + + return result.toString(); + } + + + /** + * 是否有督办权限 + * @param inStr("column:requestid+column:userid+column:workflowid) + * @return + */ + public String getBatchSupervisorCheckbox(String inStr){ + + String[] tempStr = Util.TokenizerString2(inStr, "+"); + String requestid = Util.null2String(tempStr[0]); + String userid = Util.null2String(tempStr[1]);//当前登录用户的userid + + boolean hasSupervisorRight = RequestListBiz.hasSupervisorRight(userid, requestid); + + return hasSupervisorRight ? "true" : "false"; + } + + /** + * 是否有转发权限 + * @param inStr + * @return + */ + public String getBatchForwardCheckbox(String inStr){ + String[] tempStr = Util.TokenizerString2(inStr, "+"); + String requestid = Util.null2String(tempStr[0]); + String userid = Util.null2String(tempStr[1]);//当前登录用户的userid + String workflowid = Util.null2String(tempStr[2]); + String usertype = Util.null2String(tempStr[3]); + RecordSet rs = new RecordSet(); + rs.executeQuery("select prohibitBatchForward from workflow_base where id = ?",Util.getIntValue(workflowid)); + if(rs.next()) { + if("1".equals(rs.getString("prohibitBatchForward"))) return "false"; + } + + int currentNodeType = 0; + rs.executeQuery("select currentnodetype from workflow_requestbase where requestid = ?",requestid); + if(rs.next()) { + currentNodeType = rs.getInt("currentnodetype"); + } + + RequestAuthenticationService authenticationService = new RequestAuthenticationService(); + User user = new User(); + user.setUid(Util.getIntValue(userid)); + user.setLogintype("0".equals(usertype) ? "1" : "2" ); + authenticationService.setUser(user); + if(!authenticationService.getRequestUserRight(null, Util.getIntValue(requestid))) return "false"; + Map authInfo = authenticationService.getAuthInfo(); + int currentOperateId = Util.getIntValue(Util.null2String(authInfo.get("wfcurrrid"))); + int nodeId = Util.getIntValue(Util.null2String(authInfo.get("nodeid"))); + int isremark = Util.getIntValue(Util.null2String(authInfo.get("isremarkForRM"))); + int takisremark = Util.getIntValue(Util.null2String(authInfo.get("takisremark"))); + int preisremark = Util.getIntValue(Util.null2String(authInfo.get("preisremark"))); + int agenttype = Util.getIntValue(Util.null2String(authInfo.get("agentType"))); + int nodetype = Util.getIntValue(Util.null2String(authInfo.get("nodetype"))); + + int isFromWFRemark = -1; + if (currentNodeType == 3) { + isFromWFRemark = 2; + if(isremark == 8 || isremark == 9) { + isFromWFRemark = 0; + } + } else { + if (isremark == 1 || isremark == 0 || isremark == 7 || isremark == 8 || isremark == 9 || isremark == 11) { + //未回复意见征询人 + if(isremark == 0 && takisremark == -2) { + isFromWFRemark = 1; + } else { + isFromWFRemark = 0; + } + } else if (isremark == 2) { + isFromWFRemark = 1; + } + } + + int extendnodeid = nodeId; + if(FreeNodeBiz.isFreeNode(extendnodeid)) { + extendnodeid = FreeNodeBiz.getExtendNodeId(nodeId); + } + + int wfid = Util.getIntValue(workflowid); + + //判断节点是否开启限制接收人范围 + rs.executeQuery("select isopen from workflow_FwLimitSet where fwtype='1' and nodeid= ? and wfid= ?",nodeId,wfid); + if(rs.next()) { + if("1".equals(rs.getString("isopen"))) { + return "false"; + } + } + + WFForwardManager wfForwardManager = new WFForwardManager(); + wfForwardManager.init(); + wfForwardManager.setWorkflowid(wfid); + wfForwardManager.setNodeid(extendnodeid); + wfForwardManager.setIsremark(Util.null2String(isremark)); + wfForwardManager.setTakIsremark(takisremark+""); + wfForwardManager.setRequestid(Util.getIntValue(requestid)); + wfForwardManager.setBeForwardid(currentOperateId); + wfForwardManager.getWFNodeInfo(preisremark); + String IsPendingForward = wfForwardManager.getIsPendingForward(); + String IsTakingOpinions = wfForwardManager.getIsTakingOpinions(); + String IsHandleForward = wfForwardManager.getIsHandleForward(); + String IsBeForward = wfForwardManager.getIsBeForward(); + String IsSubmitedOpinion = wfForwardManager.getIsSubmitedOpinion(); + String IsSubmitForward = wfForwardManager.getIsSubmitForward(); + String IsAlreadyForward = wfForwardManager.getIsAlreadyForward(); + String IsWaitForwardOpinion = wfForwardManager.getIsWaitForwardOpinion(); + String IsBeForwardSubmit = wfForwardManager.getIsBeForwardSubmit(); + String IsBeForwardModify = wfForwardManager.getIsBeForwardModify(); + String IsBeForwardPending = wfForwardManager.getIsBeForwardPending(); + String IsBeForwardTodo = wfForwardManager.getIsBeForwardTodo(); + String IsBeForwardSubmitAlready = wfForwardManager.getIsBeForwardSubmitAlready(); + String IsBeForwardAlready = wfForwardManager.getIsBeForwardAlready(); + String IsBeForwardSubmitNotaries = wfForwardManager.getIsBeForwardSubmitNotaries(); + //转发记录 + if(preisremark == 1 && takisremark != 2) { + isFromWFRemark = Util.getIntValue(wfForwardManager.getIsFromWFRemark()); + } + boolean canForwd = false; + switch (isFromWFRemark) { + case 0: //待办 + if (isremark == 0 || isremark == 7 || isremark == 8 || isremark == 9 || isremark == 11) { + canForwd = "1".equals(IsPendingForward); + } else if(isremark == 1) { + if(takisremark == 2) { + canForwd = "1".equals(IsPendingForward); + } else { + canForwd = "1".equals(IsBeForwardTodo); + } + } + if(preisremark == 1 && takisremark != 2) { + canForwd = "1".equals(IsBeForwardTodo); + } + break; + case 1: //已办 + if(preisremark == 0 || preisremark == 7 || preisremark == 8 || preisremark == 9 || preisremark == 11 || (preisremark == 2 && agenttype == 1)) { + canForwd = "1".equals(IsAlreadyForward); + } else if (preisremark == 1) { + if(takisremark == 2) { + canForwd = "1".equals(IsAlreadyForward); + } else { + canForwd = "1".equals(IsBeForwardAlready); + } + } + break; + case 2: //归档 + if(preisremark == 0 || preisremark == 7 || preisremark == 8 || preisremark == 9 || preisremark == 4 || (preisremark == 2 && agenttype == 1)) { + canForwd = "1".equals(IsSubmitForward); + } else if (preisremark == 1) { + canForwd = "1".equals(IsBeForward); + } + break; + } + + RequestSecondAuthService service = ServiceUtil.getService(RequestSecondAuthServiceImpl.class, user); + Map params = new HashMap(); + + params.put("workflowid", wfid); + params.put("nodeid", extendnodeid + ""); + + Map result = service.getSecondAuthConfig4Checkbox(params); + String isEnableAuth = Util.null2String(result.get("isEnableAuth")); + String isEnableProtect = Util.null2String(result.get("isEnableProtect")); + int protectType = Util.getIntValue(Util.null2String(result.get("protectType"))); //数据保护的方式 + int secondAuthType = Util.getIntValue(Util.null2String(result.get("secondAuthType"))); //二次认证的方式 + int qysSignWay = Util.getIntValue(Util.null2String(result.get("qysSignWay"))); //2 契约锁服务 或者 1 契约锁单体 + + if (("1".equals(isEnableAuth) && secondAuthType == SecondAuthType.RealIDAuth.getId()) || "1".equals(isEnableProtect)) { + canForwd = false; + } + + return canForwd ? "true" : "false"; + } + + //列表是否满足走微搜条件判断 + private boolean supportQuickSerach(boolean isopenos,String scope){ + int viewcondition = Util.getIntValue(Util.null2String(params.get("viewcondition")), 0); + List supportViewconList = Arrays.asList(0,10,16); + if(!isopenos && "".equals(Util.null2String(params.get("resourceid"))) && "".equals(Util.null2String(params.get("tabkeys"))) && supportViewconList.contains(viewcondition)){//满足微搜条件调用微搜 + RecordSet rs = new RecordSet(); + rs.executeQuery("select * from HrmUserSetting where resourceId=?", user.getUID());//主次账号统一显示不走微搜,因为微搜暂时无法传给transmethod对应的userid + String belongtoshow = ""; + if(rs.next()){ + belongtoshow = Util.null2String(rs.getString("belongtoshow")); + } + String Belongtoids = user.getBelongtoids(); + String doingStatus = Util.null2String(params.get("doingStatus")); + String unophrmid = Util.null2String(params.get("unophrmid")); + String creatertype = Util.null2String(params.get("creatertype")); + String recievedateselect = Util.null2String(params.get("recievedateselect")); + String operatedateselect = Util.null2String(params.get("operatedateselect")); + if((!"1".equals(belongtoshow) || ("1".equals(belongtoshow) && "".equals(Belongtoids))) && ("0".equals(doingStatus) || "".equals(doingStatus)) && "".equals(unophrmid) && ("".equals(creatertype) || "0".equals(creatertype))){ + return (SearchBrowserUtils.quickSearchValidate("WFSEARCH",user.getLanguage() + "") && SearchBrowserUtils.isSupportWfRemarkStatus() && + (SearchBrowserUtils.isSupportWfReqList() || "mine".equals(scope)) && ("".equals(operatedateselect) || "0".equals(operatedateselect)) && ("".equals(recievedateselect) || "0".equals(recievedateselect))); + } + } + return false; + } + + /** + * 是否有批量关注权限 + * @param inStr + * @return + */ + public String getBatchAttentionCheckbox(String inStr){ + return "true"; + } + + public HttpServletRequest getRequest() { + return request; + } + + public void setRequest(HttpServletRequest request) { + this.request = request; + } + + public ListInfoEntity getListInfoEntity() { + return listInfoEntity; + } + + public void setListInfoEntity(ListInfoEntity listInfoEntity) { + this.listInfoEntity = listInfoEntity; + } +} diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/源码/GetListResultCmd.class b/已办事宜及我的请求中不展示某一个流程/代码备份/源码/GetListResultCmd.class new file mode 100644 index 0000000..2612d6f Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/代码备份/源码/GetListResultCmd.class differ diff --git a/已办事宜及我的请求中不展示某一个流程/代码备份/源码/RequestListAction.java b/已办事宜及我的请求中不展示某一个流程/代码备份/源码/RequestListAction.java new file mode 100644 index 0000000..d2b637c --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/代码备份/源码/RequestListAction.java @@ -0,0 +1,160 @@ +package com.engine.workflow.web; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; + +import weaver.filter.WeaverRequest; +import weaver.hrm.User; + +import com.alibaba.fastjson.JSONObject; +import com.engine.common.util.ServiceUtil; +import com.engine.workflow.service.RequestListService; +import com.engine.workflow.service.impl.RequestListServiceImpl; +import com.engine.workflow.util.CommonUtil; + +/** + * 列表Action + * @author liuzy 2018/5/9 + */ +public class RequestListAction { + + private RequestListService getService(HttpServletRequest request, HttpServletResponse response) { + User user = CommonUtil.getUserByRequest(request, response); + return (RequestListService) ServiceUtil.getService(RequestListServiceImpl.class, user); + } + + @POST + @Path("/doingBaseInfo") + @Produces(MediaType.TEXT_PLAIN) + public String doingBaseInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).doingBaseInfo(request)); + } + + @POST + @Path("/doingCountInfo") + @Produces(MediaType.TEXT_PLAIN) + public String doingCountInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).doingCountInfo(request)); + } + + @POST + @Path("/doneBaseInfo") + @Produces(MediaType.TEXT_PLAIN) + public String doneBaseInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).doneBaseInfo(request)); + } + + @POST + @Path("/doneCountInfo") + @Produces(MediaType.TEXT_PLAIN) + public String doneCountInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).doneCountInfo(request)); + } + + @POST + @Path("/mineBaseInfo") + @Produces(MediaType.TEXT_PLAIN) + public String mineBaseInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).mineBaseInfo(request)); + } + + @POST + @Path("/mineCountInfo") + @Produces(MediaType.TEXT_PLAIN) + public String mineCountInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).mineCountInfo(request)); + } + + @POST + @Path("/splitPageKey") + @Produces(MediaType.TEXT_PLAIN) + public String splitPageKey(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WeaverRequest weaverRequest = new WeaverRequest(request); + return JSONObject.toJSONString(getService(request, response).splitPageKey(weaverRequest)); + } + + /** 获取全部待办未读数 **/ + @POST + @Path("/getDoingCount") + @Produces(MediaType.TEXT_PLAIN) + public String getDoingCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).getDoingNewCount(request)); + } + + /** 批量置为主读 **/ + @POST + @Path("/doReadIt") + @Produces(MediaType.TEXT_PLAIN) + public String doReadIt(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).doReadIt(request)); + } + + /** + * 保存默认排序列设置 + * @param request + * @param response + * @return + */ + @POST + @Path("/doSaveData") + @Produces(MediaType.TEXT_PLAIN) + public String doSaveData(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).doSaveData(request)); + } + + @POST + @Path("/getDefaultList") + @Produces(MediaType.TEXT_PLAIN) + public String getDefaultList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).getDefaultList(request)); + } + + @POST + @Path("/getUnoperators") + @Produces(MediaType.TEXT_PLAIN) + public String getUnoperatorList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).getUnoperators(request)); + } + + @POST + @Path("/getWfListParams") + @Produces(MediaType.TEXT_PLAIN) + public String getWfListParams(@Context HttpServletRequest request, @Context HttpServletResponse response){ + //WeaverRequest weaverRequest = new WeaverRequest(request); + return JSONObject.toJSONString(getService(request, response).getWfListParams(request)); + } + + /** + * 获取指定用户不在待办中的requestid + * @param request + * @param response + * @return + */ + @POST + @Path("/getHendledReqIds") + @Produces(MediaType.TEXT_PLAIN) + public String getHendledReqIds(@Context HttpServletRequest request, @Context HttpServletResponse response){ + return JSONObject.toJSONString(getService(request, response).getHendledReqIds(request)); + } + + @POST + @Path("/continnuationProcessInfo") + @Produces(MediaType.TEXT_PLAIN) + public String continnuationProcessInfo(@Context HttpServletRequest request, @Context HttpServletResponse response){ + //WeaverRequest weaverRequest = new WeaverRequest(request); + return JSONObject.toJSONString(getService(request, response).continnuationProcessInfo(request)); + } + + @POST + @Path("/judgeReloadList") + @Produces(MediaType.TEXT_PLAIN) + public String judgeReloadList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + //WeaverRequest weaverRequest = new WeaverRequest(request); + return JSONObject.toJSONString(getService(request, response).judgeReloadList(request)); + } +} diff --git a/已办事宜及我的请求中不展示某一个流程/已办事宜及我的请求中不展示某一个流程相关事项需求(2).docx b/已办事宜及我的请求中不展示某一个流程/已办事宜及我的请求中不展示某一个流程相关事项需求(2).docx new file mode 100644 index 0000000..dee6856 --- /dev/null +++ b/已办事宜及我的请求中不展示某一个流程/已办事宜及我的请求中不展示某一个流程相关事项需求(2).docx @@ -0,0 +1,6 @@ +需求说明: + "流程"功能模块中,"已办事项"、"我的请求"列表中,默认显示的是所有类型流程的相关清单,需求为在"已办事项"、"我的请求"列表中不显示某个流程的已办事项和我的请求事项,并且流程类型树中的流程类别统计数也进行相应的更新。 + 例如:留言为日常工作类型中的一个流程,需要在"已办事项"及"我的请求"中不显示留言流程的相关事项,日常工作类型的统计数不包含留言生成的数量。 + + + diff --git a/已办事宜及我的请求中不展示某一个流程/应用-已办展示流程.zip b/已办事宜及我的请求中不展示某一个流程/应用-已办展示流程.zip new file mode 100644 index 0000000..08f1450 Binary files /dev/null and b/已办事宜及我的请求中不展示某一个流程/应用-已办展示流程.zip differ