<%@ page import="org.apache.poi.xwpf.usermodel.XWPFDocument" %> <%@ page import="cn.afterturn.easypoi.word.WordExportUtil" %> <%@ page import="java.nio.charset.StandardCharsets" %> <%@ page import="java.io.*" %> <%@ page import="weaver.hrm.User" %> <%@ page import="com.engine.workflow.cmd.requestForm.StatusDataCmd" %> <%@ page import="com.engine.core.interceptor.CommandContext" %> <%@ page import="com.api.workflow.service.RequestAuthenticationService" %> <%@ page import="java.util.*" %> <%@ page import="weaver.conn.RecordSet" %> <%@ page import="weaver.general.Util" %> <%@ page import="com.alibaba.fastjson.JSON" %> <%@ page import="weaver.workflow.monitor.Monitor" %> <%@ page import="weaver.workflow.workflow.WorkflowConfigComInfo" %> <%@ page import="weaver.hrm.resource.ResourceComInfo" %> <%@ page import="weaver.crm.Maint.CustomerInfoComInfo" %> <%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz" %> <%@ page import="weaver.general.TimeUtil" %> <%@ page import="com.api.workflow.util.ServiceUtil" %> <%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeBiz" %> <%@ page import="com.alibaba.fastjson.JSONObject" %> <%@ page import="java.nio.charset.Charset" %> <%@ page import="weaver.rtx.ChangeCharset" %> <% response.setCharacterEncoding("utf-8"); HashMap params = new HashMap<>(); params.put("requestid", "727734"); params.put("desremark", "all"); params.put("pageSize", "50"); params.put("isfirst", "true"); params.put("request", request); Map data = execute(params, new User(23)); Map datas = (Map) data.get("datas"); List> entries = new ArrayList<>(datas.entrySet()); entries.sort(new Comparator>() { @Override public int compare(Map.Entry o1, Map.Entry o2) { Integer key1 = Util.getIntValue((Util.null2String(o1.getKey())).replace("key", "")); Integer key2 = Util.getIntValue((Util.null2String(o2.getKey())).replace("key", "")); return key1 - key2; } }); // 自然顺序 ArrayList> results = new ArrayList<>(); // out.print(JSONObject.toJSONString(entries)); for (Map.Entry entry : entries) { Map value = (Map)entry.getValue(); List> list = (List)value.get("list"); for (Map item : list) { String operator = (String)item.get("operator"); String operatorid = (String)item.get("operatorid"); String operatortype = (String)item.get("operatortype"); String operatedate = (String)item.get("operatedate"); String nodename = (String)value.get("nodename"); HashMap itemMap = new HashMap<>(); itemMap.put("operator",operator); itemMap.put("operatorid",operatorid); itemMap.put("operatortype",operatortype); itemMap.put("operatedate",operatedate); itemMap.put("nodename",nodename); results.add(itemMap); } } String encoding = System.getProperty("file.encoding"); out.print(encoding); try { Map dataMap = new HashMap<>(); dataMap.put("users", results); // 将用户列表添加到数据映射中 // dataMap.put("name", results); // 将用户列表添加到数据映射中 // 加载模板并填充数据 String templatePath = "/opt/weaver/filesys/template.docx"; // 模板文件路径 String templatePath2 = "/opt/weaver/filesys/xinxi2.docx"; // 模板文件路径 File file = new File(templatePath); File file2 = new File(templatePath2); // out.print(file.exists()); // out.print(file2.exists()); System.out.println(dataMap); XWPFDocument doc = WordExportUtil.exportWord07(templatePath, dataMap); // 导出Word文档 String lastname = new User(6473).getLastname(); String outputPath = "/opt/weaver/filesys/"+lastname+".docx"; // 输出文件路径 // byte[] gbks = outputPath.getBytes("gbk"); System.out.print(outputPath); String outputPath1 = new String( outputPath.getBytes("UTF-8"),"ISO-8859-1"); String outputPath2 = new String( outputPath1.getBytes("ISO-8859-1"),"UTF-8"); // ChangeCharset changeCharset = new ChangeCharset(); // String outputPath1 = changeCharset.toUTF_8(outputPath); System.out.print(outputPath1); System.out.print(outputPath2); outputPath = new String(outputPath.getBytes("ISO8859_1"), "UTF-8"); File file11 = new File(outputPath1); File file22 = new File(outputPath2); // if(!file1.exists()){ file11.createNewFile(); file22.createNewFile(); // } FileOutputStream fos = new FileOutputStream(outputPath) ; doc.write(fos); fos.close(); } catch (Exception e) { System.out.println("errorerrorerror"); System.out.println(e.getMessage()); out.print(e.getMessage()+"123"); e.printStackTrace(); } %> <%! private void test1(ArrayList> results) { try { Map dataMap = new HashMap<>(); dataMap.put("users", results); // 将用户列表添加到数据映射中 // 加载模板并填充数据 String templatePath = "/opt/weaver/filesys/xinxi.docx"; // 模板文件路径 String templatePath2 = "/opt/weaver/filesys/xinxi2.docx"; // 模板文件路径 File file = new File(templatePath); File file2 = new File(templatePath2); // out.print(file.exists()); // out.print(file2.exists()); System.out.println(dataMap); XWPFDocument doc = WordExportUtil.exportWord07(templatePath, dataMap); // 导出Word文档 String lastname = new User(22).getLastname(); String outputPath = "/opt/weaver/filesys/"+lastname+".docx"; // 输出文件路径 // byte[] gbks = outputPath.getBytes("gbk"); String outputPath1 = new String( outputPath.getBytes("UTF-8")); // outputPath = new String(outputPath.getBytes("ISO8859_1"), "UTF-8"); File file1 = new File(outputPath1); if(!file1.exists()){ file1.createNewFile(); } // FileOutputStream fos = new FileOutputStream(outputPath) ; // doc.write(fos); // fos.close(); } catch (Exception e) { System.out.println("errorerrorerror"); System.out.println(e.getMessage()); // out.print(e.getMessage()+"123"); e.printStackTrace(); } } public Map execute(Map params, User user) { Map result = new HashMap(); RequestAuthenticationService authService = new RequestAuthenticationService(); authService.setUser(user); long date1 = new Date().getTime(); try { RecordSet rs = new RecordSet(); RecordSet rs1 = new RecordSet(); int pageSize = Util.getIntValue(Util.null2String(params.get("pageSize")), 30); int desrequestid = Util.getIntValue(Util.null2String(params.get("desrequestid")), 0); String isfirst = Util.null2String(params.get("isfirst")); String isurger = Util.null2String(params.get("isurger")); String desremark = Util.null2String(params.get("desremark")); int desremarkIndex = desremark.indexOf("_"); boolean isAdSearch = false;//是否有过滤条件 if (desremarkIndex > -1) { isAdSearch = true; desremark = desremark.substring(0, desremarkIndex); } String parameter = Util.null2String(params.get("parameter")); int selectedNode = Util.getIntValue(Util.null2String(params.get("selectedNode")), -1);//选中的节点 String selectedOperator = Util.null2String(params.get("selectedOperator"));//选中的操作者 int requestid = Util.getIntValue(Util.null2String(params.get("requestid")), 0); int workflowid = -1; rs.executeQuery("select workflowid from workflow_requestbase where requestid=" + requestid); if (rs.next()) workflowid = Util.getIntValue(rs.getString("workflowid")); // 将json字符串转换成jsonObject int currentMaxId = 0; int currentMinId = 0; int currentId = 0; int currentId2 = 0; int lastNodeId = 0; String viewlogids = ""; int index = 0; try { if (!"true".equals(isfirst)) { Map parameterMap = JSON.parseObject(parameter, Map.class);//Weibo类在下边定义 currentMaxId = Util.getIntValue(parameterMap.get("currentMaxId"), 0); currentMinId = Util.getIntValue(parameterMap.get("currentMinId"), 0); String currentId12 = Util.null2String(parameterMap.get("currentId")); if (currentId12.contains("_")) { String[] currentId12Arr = currentId12.split("_"); currentId = Util.getIntValue(currentId12Arr[0]); currentId2 = Util.getIntValue(currentId12Arr[1]); } else { currentId = Util.getIntValue(currentId12); } viewlogids = Util.null2String(parameterMap.get("viewlogids")); index = Util.getIntValue(parameterMap.get("nodeindex"), 0); lastNodeId = Util.getIntValue(parameterMap.get("lastNodeId"), 0); } } catch (Exception e) { e.printStackTrace(); } Map putpara = new HashMap(); Monitor monitor = new Monitor(); // String joinStr = ("oracle".equalsIgnoreCase(rs.getDBType()) || "mysql".equalsIgnoreCase(rs.getDBType())) ? " left join " : " left hash join "; String joinStr = " left join "; // if (isurger.equals("true") || monitor.hasMonitor(requestid+"", user.getUID() + "")) { // StringBuffer sqlsb = new StringBuffer(); // sqlsb.append(" select a.id,a.nodeid, "); // sqlsb.append(" b.nodename, "); // sqlsb.append(" a.userid, "); // sqlsb.append(" a.isremark, "); // sqlsb.append(" a.lastisremark, "); // sqlsb.append(" a.usertype, "); // sqlsb.append(" a.agentorbyagentid, "); // sqlsb.append(" a.agenttype, "); // sqlsb.append(" a.receivedate, "); // sqlsb.append(" a.receivetime, "); // sqlsb.append(" a.operatedate, "); // sqlsb.append(" a.operatetime, "); // sqlsb.append(" a.viewtype, "); // sqlsb.append(" a.nodetype "); // sqlsb.append(" ,a.operator "); // sqlsb.append(" from (SELECT distinct top ").append(pageSize); // sqlsb.append(" o.id, " ); // sqlsb.append(" o.requestid, " ); // sqlsb.append(" o.userid, "); // sqlsb.append(" o.workflowid, "); // sqlsb.append(" o.workflowtype, "); // sqlsb.append(" o.isremark, "); // sqlsb.append(" o.lastisremark, "); // sqlsb.append(" o.usertype, "); // sqlsb.append(" o.nodeid, "); // sqlsb.append(" o.agentorbyagentid, "); // sqlsb.append(" o.agenttype, "); // sqlsb.append(" o.receivedate, "); // sqlsb.append(" o.receivetime, "); // sqlsb.append(" o.viewtype, "); // sqlsb.append(" o.iscomplete, "); // sqlsb.append(" o.operatedate, "); // sqlsb.append(" o.operatetime, "); // sqlsb.append(" nodetype "); // sqlsb.append(" ,wr.operator "); // sqlsb.append(" FROM workflow_currentoperator o "); // // sqlsb.append(" left join workflow_requestlog wr"); // sqlsb.append(" on wr.requestid=o.requestid"); // sqlsb.append(" and wr.nodeid=o.nodeid"); // sqlsb.append(" and wr.operator = o.userid"); // sqlsb.append(" and wr.logtype <> '1'"); // // sqlsb.append(" , workflow_flownode "); // // sqlsb.append(" where o.nodeid = "); // sqlsb.append(" workflow_flownode.nodeid "); // if(desremark ==1){//1:已提交 // sqlsb.append(" AND o.isremark='2' AND wr.operator IS NOT null "); // }else if(desremark == 2){//2:未提交 // sqlsb.append(" and ((o.isremark = '0' and (o.takisremark is null or o.takisremark=0)) or o.isremark in ('1','5','7','8','9') )"); // }else if(desremark == 3){//3:已查看 // sqlsb.append(" and (((o.isremark = '2' AND wr.operator IS NULL) or o.isremark in ('0','1','4','5','7','8','9')) AND o.viewtype IN (-1,-2)) "); // }else if(desremark == 4){//4:未查看 // sqlsb.append(" AND o.viewtype = 0 "); // } // sqlsb.append(" and o.id > ").append(currentId); // sqlsb.append(" and o.requestid = " + requestid + ") a, "); // sqlsb.append(" workflow_nodebase b "); // sqlsb.append(" where a.nodeid = b.id "); // sqlsb.append(" and a.requestid = " + requestid + " "); // sqlsb.append(" and a.agenttype <> 1 "); // sqlsb.append(" order by a.id "); // //System.out.println("20170309 =====> sqlsb.toString() = "+sqlsb.toString()); // rs.executeSql(sqlsb.toString()); // // } else { // 处理相关流程的查看权限 // if ("".equals(viewlogids)) { // viewlogids = this.getViewLogids(); // } StringBuffer sqlsb = new StringBuffer(); if ("sqlserver".equalsIgnoreCase(rs.getDBType())) { // sqlserver 排序提到这里 sqlsb.append(" select top ").append(pageSize).append(" a.id,a.nodeid, "); } else { sqlsb.append(" select a.id,a.nodeid, "); } sqlsb.append("(CASE WHEN a.nodeid < -1 THEN (SELECT nodename FROM workflow_freenode t WHERE t.id = a.nodeid) ELSE (SELECT nodename FROM workflow_nodebase t1 WHERE t1.id = a.nodeid) END) AS nodename,"); sqlsb.append(" a.userid, "); sqlsb.append(" a.isremark, "); sqlsb.append(" a.preisremark, "); sqlsb.append(" a.lastisremark, "); sqlsb.append(" a.usertype, "); sqlsb.append(" a.agentorbyagentid, "); sqlsb.append(" a.agenttype, "); sqlsb.append(" a.receivedate, "); sqlsb.append(" a.receivetime, "); sqlsb.append(" a.operatedate, "); sqlsb.append(" a.operatetime, "); sqlsb.append(" a.processuser, "); sqlsb.append(" a.viewtype, "); sqlsb.append(" a.nodetype "); sqlsb.append(" ,a.operator "); sqlsb.append(" ,a.tab "); //if("true".equals(isfirst)){ /*if("oracle".equals(rs.getDBType()) || "mysql".equals(rs.getDBType())){ sqlsb.append(" from (SELECT distinct "); }else{ sqlsb.append(" from (SELECT distinct top ").append(pageSize); // sqlserver排序提到外层查询 }*/ sqlsb.append(" from (SELECT distinct "); // }else{ // sqlsb.append(" from (SELECT distinct "); // } sqlsb.append(" o.id, "); sqlsb.append(" o.requestid, "); sqlsb.append(" o.userid, "); sqlsb.append(" o.workflowid, "); sqlsb.append(" o.workflowtype, "); //workflow_otheroperator表中isremark为字符型,这里转下字符 if (rs.getDBType().toLowerCase().equals("oracle") || rs.getDBType().toLowerCase().equals("postgresql")) { sqlsb.append(" to_char(o.isremark) as isremark, "); sqlsb.append(" to_char(o.preisremark) AS preisremark, "); sqlsb.append(" to_char(o.lastisremark) AS lastisremark, "); } else if (rs.getDBType().toLowerCase().equals("mysql")) { sqlsb.append(" o.isremark, "); sqlsb.append(" o.preisremark, "); sqlsb.append(" o.lastisremark, "); } else { sqlsb.append(" cast(o.isremark as varchar) as isremark, "); sqlsb.append(" cast(o.preisremark as varchar) as preisremark, "); sqlsb.append(" cast(o.lastisremark as varchar) as lastisremark, "); } sqlsb.append(" o.usertype, "); sqlsb.append(" o.nodeid, "); sqlsb.append(" o.agentorbyagentid, "); sqlsb.append(" o.agenttype, "); sqlsb.append(" o.receivedate, "); sqlsb.append(" o.receivetime, "); sqlsb.append(" o.viewtype, "); sqlsb.append(" o.iscomplete, "); sqlsb.append(" o.operatedate, "); sqlsb.append(" o.operatetime, "); sqlsb.append(" o.processuser, "); sqlsb.append("(case when o.nodeid < -1 then (select nodetype from workflow_freenode t where t.id = o.nodeid) else (select nodetype from workflow_flownode t1 where t1.nodeid = o.nodeid) end) as nodetype "); sqlsb.append(" ,wr.operator "); sqlsb.append(" ,1 as tab "); sqlsb.append(" FROM workflow_currentoperator o "); sqlsb.append(" " + joinStr + " workflow_requestlog wr"); sqlsb.append(" on wr.requestid=o.requestid"); sqlsb.append(" and wr.nodeid=o.nodeid"); sqlsb.append(" and wr.operator = o.userid"); sqlsb.append(" and wr.logtype <> '1'"); sqlsb.append(" and o.operatedate = wr.operatedate"); sqlsb.append(" and o.operatetime = wr.operatetime");//再通过时间关联一下,防止流程状态操作状态显示错误 sqlsb.append(" where o.id > ").append(currentId); if ("submit".equals(desremark)) {//1:已提交----isremark等于4,preisremark=11实际对应已提交数据 sqlsb.append(" AND (o.isremark='2' or (o.isremark=4 and o.preisremark=11)) AND (wr.operator IS NOT null or o.userid = o.processuser)"); } else if ("nosubmit".equals(desremark)) {//2:未提交 sqlsb.append(" AND( (o.isremark != '2' AND o.isremark != '4') OR (o.isremark = '4' AND o.viewtype = 0 and o.preisremark != 11) ) "); } else if ("view".equals(desremark)) {//3:已查看 sqlsb.append(" and ((o.isremark = '2' AND wr.operator IS NULL) or o.isremark in ('0','1','5','7','8','9','11') or (o.isremark=4 and o.preisremark!=11)) AND o.viewtype IN (-1,-2) "); } else if ("noview".equals(desremark)) {//4:未查看 sqlsb.append(" AND o.viewtype=0 AND (o.isremark IN ('0','1','5','7','8','9','11') or (o.isremark = '2' AND wr.operator IS NULL) or (o.isremark=4 and o.preisremark!=11)) "); } sqlsb.append(" and o.requestid = " + requestid); sqlsb.append(" union "); sqlsb.append(" SELECT DISTINCT "); sqlsb.append(" o.id, "); sqlsb.append(" o.requestid, "); sqlsb.append(" o.userid, "); sqlsb.append(" o.workflowid, "); sqlsb.append(" 0 as workflowtype, "); sqlsb.append(" o.isremark, "); sqlsb.append(" o.isremark as preisremark, "); sqlsb.append(" o.isremark as lastisremark, "); sqlsb.append(" o.usertype, "); sqlsb.append(" o.nodeid, "); sqlsb.append(" 0 as agentorbyagentid, "); sqlsb.append(" '0' as agenttype, "); sqlsb.append(" o.receivedate, "); sqlsb.append(" o.receivetime, "); sqlsb.append(" o.viewtype, "); sqlsb.append(" 1 as iscomplete, "); sqlsb.append(" o.operatedate, "); sqlsb.append(" o.operatetime, "); sqlsb.append(" wr.operator as processuser, "); sqlsb.append("(case when o.nodeid < -1 then (select nodetype from workflow_freenode t where t.id = o.nodeid) else (select nodetype from workflow_flownode t1 where t1.nodeid = o.nodeid) end) as nodetype, "); sqlsb.append(" wr.operator "); sqlsb.append(" ,2 as tab "); sqlsb.append(" FROM workflow_otheroperator o LEFT JOIN workflow_requestlog wr ON wr.requestid = o.requestid "); sqlsb.append(" AND wr.nodeid = o.nodeid "); sqlsb.append(" AND wr.operator = o.userid "); sqlsb.append(" AND wr.logtype <> '1' "); sqlsb.append(" WHERE o.requestid = " + requestid + " "); sqlsb.append(" and o.id > ").append(currentId2); sqlsb.append(" ) a "); sqlsb.append(" where a.requestid = " + requestid + " "); sqlsb.append(" and a.agenttype <> 1 "); if (!"".equals(viewlogids)) { sqlsb.append(" and a.nodeid in (" + viewlogids + ") "); } if (selectedNode != -1) { sqlsb.append(" AND a.nodeid = " + selectedNode + " "); } if (!"".equals(selectedOperator)) { sqlsb.append(" AND a.userid = " + selectedOperator + " "); } WorkflowConfigComInfo configComInfo = new WorkflowConfigComInfo(); boolean showdelFreeNodeInfo = "1".equals(configComInfo.getValue("showdelete_freenode_info")); sqlsb.append(" and (a.nodeid > -1 or (a.nodeid < -1 and exists (select id from workflow_freenode where id = a.nodeid and requestid = " + requestid + (showdelFreeNodeInfo ? "" : " and groupid > 0 ") + " ))) "); //搜索时返回状态 if (isAdSearch && "true".equals(isfirst)) { rs.executeQuery("select count(id) as count from (" + sqlsb.toString().replace("top " + pageSize, "") + ") t"); result.put("countTime", new Date().getTime() - date1); if (rs.next()) { result.put("count", Util.null2String(rs.getString("count"))); } } sqlsb.append(" order by a.receivedate, a.receivetime,a.id , a.nodetype"); //System.out.println("20170309 =====> sqlsb.toString() = "+sqlsb.toString()); if ("oracle".equals(rs.getDBType())) { //必须排序后再限制rownum String sql_oracle = sqlsb.toString(); sqlsb.setLength(0); sqlsb.append("select * from (" + sql_oracle + ") where rownum < ").append(pageSize); } else if ("mysql".equals(rs.getDBType())) { sqlsb.append(" LIMIT " + pageSize); } else if ("postgresql".equals(rs.getDBType())) { sqlsb.append(" LIMIT " + pageSize); } if (requestid > 0) { rs.executeSql(sqlsb.toString()); } result.put("dataTime", new Date().getTime() - date1); // } List> statuslist = new ArrayList>(); int tmpnodeid = 0; while (rs.next()) { int tab = rs.getInt("tab"); if (tab == 1) { currentId = rs.getInt("id"); } else { currentId2 = rs.getInt("id"); } tmpnodeid = rs.getInt("nodeid"); String tmpnodename = rs.getString("nodename"); Map nodekv = null; if (statuslist.size() == 0) { currentMinId = currentId; nodekv = new HashMap(); statuslist.add(nodekv); } else { Map temmap = statuslist.get(statuslist.size() - 1); int tnodeid = Util.getIntValue(temmap.get("nodeid"), 0); if (tnodeid == tmpnodeid) { nodekv = temmap; } else { currentMinId = currentId; nodekv = new HashMap(); statuslist.add(nodekv); } } nodekv.put("nodeid", tmpnodeid + ""); nodekv.put("nodename", tmpnodename + ""); } int nextlistcount = 0; int nextsubmitCount = 0; int nextviewCount = 0; int nextnoviewCount = 0; if ("all".equals(desremark) && !isAdSearch) { currentMaxId = currentId; String maxsql = " select a.id,a.nodeid from workflow_currentoperator a where a.id > " + currentId + " and a.requestid=" + requestid + " order by a.id ,a.receivedate, a.receivetime"; rs1.executeSql(maxsql); while (rs1.next()) { int currentid = rs1.getInt("id"); int currentnodeid = rs1.getInt("nodeid"); if (currentnodeid == tmpnodeid) { currentMaxId = currentid; } else { break; } } String listcountsql = " select count(id) num from workflow_currentoperator where id > " + currentId + " and id <= " + currentMaxId + " and requestid=" + requestid + " and nodeid=" + tmpnodeid + " and agenttype <> 1 and usertype <> 1 "; //String submitCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid +" and agenttype <> 1 and usertype <> 1 and isremark = 2 and exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and workflow_requestlog.operator=workflow_currentoperator.userid )"; //String viewCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid + " and agenttype <> 1 and usertype <> 1 and (viewtype = -1 or viewtype=-2) and ((isremark = '0' and (takisremark is null or takisremark=0)) or isremark in ('1','5','7','8','9') or (isremark = '2' and not exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and (workflow_requestlog.operator is null or workflow_requestlog.operator ='' )))) "; //String noviewCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid + " and agenttype <> 1 and usertype <> 1 AND viewtype=0 AND (isremark IN ('0','1','4','5','7','8','9') or (isremark = '2' and not exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and (workflow_requestlog.operator is null or workflow_requestlog.operator ='' )))) "; String submitCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.isremark = 2 and wr.operator is NOT null "; String viewCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.viewtype IN (-1,-2) and ((wc.isremark = '2' AND wr.operator IS NULL) or wc.isremark in ('0','1','4','5','7','8','9')) "; String noviewCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.viewtype=0 AND (wc.isremark IN ('0','1','4','5','7','8','9','11') or (wc.isremark = '2' and wr.operator is null )) "; rs1.executeSql(listcountsql); while (rs1.next()) { nextlistcount = rs1.getInt("num"); } rs1.executeSql(submitCountsql); while (rs1.next()) { nextsubmitCount = rs1.getInt("num"); } rs1.executeSql(viewCountsql); while (rs1.next()) { nextviewCount = rs1.getInt("num"); } rs1.executeSql(noviewCountsql); while (rs1.next()) { nextnoviewCount = rs1.getInt("num"); } } Map allstatusmap = new HashMap(); Map submitstatusmap = new HashMap(); Map nosubmitstatusmap = new HashMap(); Map viewstatusmap = new HashMap(); Map noviewstatusmap = new HashMap(); //提交节点信息--滚动加载到当前currentoperator对应最大id //数字统计转到新接口count中 ResourceComInfo resourceComInfo = new ResourceComInfo(); CustomerInfoComInfo customerInfoComInfo = new CustomerInfoComInfo(); Map all_nodemap = new HashMap(); Map submit_nodemap = new HashMap(); Map nosubmit_nodemap = new HashMap(); Map view_nodemap = new HashMap(); Map noview_nodemap = new HashMap(); rs.beforFirst(); int currentnum = 0; for (Iterator> it = statuslist.iterator(); it.hasNext(); index++) { Map nodekv = it.next(); int fnodeid = Util.getIntValue(nodekv.get("nodeid")); String namename = nodekv.get("nodename"); int submitCount = 0; int viewCount = 0; int noviewCount = 0; int listcount = 0; if ("false".equals(isfirst) && currentnum == 0 && lastNodeId == fnodeid) { index -= 1; } if (tmpnodeid == fnodeid && currentnum == (statuslist.size() - 1)) { submitCount = nextsubmitCount; viewCount = nextviewCount; noviewCount = nextnoviewCount; listcount = nextlistcount; } currentnum++; Map all_nodemap_in = new HashMap(); all_nodemap_in.put("nodeid", fnodeid); all_nodemap_in.put("nodename", namename); Map submit_nodemap_in = new HashMap(); Map nosubmit_nodemap_in = new HashMap(); Map view_nodemap_in = new HashMap(); Map noview_nodemap_in = new HashMap(); List> nodeallstatuslist = new ArrayList>(); List> nodesubmitstatuslist = new ArrayList>(); List> nodenosubmitstatuslist = new ArrayList>(); List> nodeviewstatuslist = new ArrayList>(); List> nodenoviewstatuslist = new ArrayList>(); if ("submit".equals(desremark)) {//1:已提交 //提交节点信息 submit_nodemap_in.putAll(all_nodemap_in); submitstatusmap.put("datas", submit_nodemap); submit_nodemap.put("key" + index, submit_nodemap_in); submit_nodemap_in.put("list", nodesubmitstatuslist); } else if ("nosubmit".equals(desremark)) {//2:未提交 nosubmit_nodemap_in.putAll(all_nodemap_in); nosubmitstatusmap.put("datas", nosubmit_nodemap); nosubmit_nodemap.put("key" + index, nosubmit_nodemap_in); nosubmit_nodemap_in.put("list", nodenosubmitstatuslist); } else if ("view".equals(desremark)) {//3:已查看 view_nodemap_in.putAll(all_nodemap_in); viewstatusmap.put("datas", view_nodemap); view_nodemap.put("key" + index, view_nodemap_in); view_nodemap_in.put("list", nodeviewstatuslist); } else if ("noview".equals(desremark)) {//4:未查看 noview_nodemap_in.putAll(all_nodemap_in); noviewstatusmap.put("datas", noview_nodemap); noview_nodemap.put("key" + index, noview_nodemap_in); noview_nodemap_in.put("list", nodenoviewstatuslist); } else { //所有节点信息 allstatusmap.put("datas", all_nodemap); all_nodemap.put("key" + index, all_nodemap_in); all_nodemap_in.put("list", nodeallstatuslist); } boolean islight = false; RobotNodeServiceBiz robotNodeServiceBiz = new RobotNodeServiceBiz(); while (rs.next()) { int tmpnodeid1 = rs.getInt("nodeid"); if (tmpnodeid1 != fnodeid) { rs.previous(); break; } //String tmpnodename = rs.getString("nodename"); int tmpcurrid = rs.getInt("id"); String tmpuserid = rs.getString("userid"); String tmpisremark = Util.null2String(rs.getString("isremark")); if (tmpisremark.equals("")) { tmpisremark = Util.null2String(rs.getString("lastisremark")); } int tmpusertype = rs.getInt("usertype"); String tmpagentorbyagentid = rs.getString("agentorbyagentid"); int tmpagenttype = rs.getInt("agenttype"); String tmpreceivedate = rs.getString("receivedate"); String tmpreceivetime = rs.getString("receivetime"); String tmpoperatedate = rs.getString("operatedate"); String tmpoperatetime = rs.getString("operatetime"); String viewtype = rs.getString("viewtype"); String nodetype = rs.getString("nodetype"); int preisremark = rs.getInt("preisremark"); String processuser = rs.getString("processuser"); boolean flags = false; String tmpIntervel = ""; // 如果tmpisremark=2 判断时候在日志表里有该人(确定是否是由非会签得到的isremark=2) String operator = rs.getString("operator"); if (operator != null && !"".equals(operator)) { flags = true; } if ((tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && tmpoperatedate != null && !tmpoperatedate.equals("")) { tmpIntervel = TimeUtil.timeInterval2(tmpreceivedate + " " + tmpreceivetime, tmpoperatedate + " " + tmpoperatetime, user.getLanguage()); } islight = !islight; Map _statusmap = new HashMap(); // 操作人 String _statususername = ""; String _operatorid = ""; String _beagentid = ""; String _beagentname = ""; String _operatortype = "0"; if (tmpusertype == 0) { _operatorid = tmpuserid; _statususername = ServiceUtil.convertChar(resourceComInfo.getResourcename(tmpuserid)); if (tmpagenttype == 2) { //代理情况 _beagentid = tmpagentorbyagentid; _beagentname = ServiceUtil.convertChar(resourceComInfo.getResourcename(tmpagentorbyagentid)); } _statusmap.put("operatorImg", resourceComInfo.getMessagerUrls(tmpuserid)); _statusmap.put("operatorImgDefName", _statususername); } else if (RobotNodeBiz.operatortype.equals(tmpusertype + "")) { _statususername = Util.formatMultiLang(robotNodeServiceBiz.getRobotNodeSet(tmpnodeid1).getOperatorName()); _operatorid = tmpuserid; _operatortype = "2"; } else { _operatorid = tmpuserid; _operatortype = "1"; _statususername = ServiceUtil.convertChar(customerInfoComInfo.getCustomerInfoname(tmpuserid)); } // 查看状态 1:未查看, 2::以查看, 3:已提交, 4:暂停, 5:撤销, 6:启用 7:已查阅 8:退回 9:被撤回 int _statusCode = 0; if (preisremark != 8 && (tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && (flags || tmpuserid.equals(processuser))) { _statusCode = 3; submitCount++; if ("4".equals(nodetype) && preisremark == 0) { _statusCode = 7; } } else if (tmpisremark.equals("0") || tmpisremark.equals("1") || tmpisremark.equals("5") || tmpisremark.equals("4") || tmpisremark.equals("8") || tmpisremark.equals("9") || tmpisremark.equals("7") || tmpisremark.equals("11") || (tmpisremark.equals("2") && !flags)) { if (viewtype.equals("-2") || (viewtype.equals("-1") && !tmpoperatedate.equals(""))) { _statusCode = 2; viewCount++; } else { _statusCode = 1; noviewCount++; } } else if ("s".equals(tmpisremark)) { _statusCode = 4; } else if ("r".equals(tmpisremark)) { _statusCode = 6; } else if ("c".equals(tmpisremark)) { _statusCode = 5; } else if (preisremark == 8 && viewtype.equals("-2") && tmpisremark.equals("2")) { _statusCode = 2; viewCount++; } RecordSet recordSet = new RecordSet(); recordSet.executeQuery("select operatetype from workflow_currentoperator where id=?", tmpcurrid); if (recordSet.next()) { int operatetype = recordSet.getInt(1); if (operatetype == 3) {//退回 _statusCode = 8; } else if (operatetype == 4) {//被撤回 _statusCode = 9; } } listcount++; if ("view".equals(desremark)) {//3:已查看 if (processuser.equals(tmpuserid) && ("2".equals(tmpisremark) || "4".equals(tmpisremark))) { listcount--; } } String _receivedate = ""; String _operatedate = ""; String _intervel = ""; if (!tmpisremark.equals("s") && !tmpisremark.equals("c") && !tmpisremark.equals("r")) { _receivedate = Util.toScreen(tmpreceivedate, user.getLanguage()) + " " + Util.toScreen(tmpreceivetime, user.getLanguage()); } _operatedate = Util.toScreen(tmpoperatedate, user.getLanguage()) + " " + Util.toScreen(tmpoperatetime, user.getLanguage()); _intervel = Util.toScreen(tmpIntervel, user.getLanguage()); _statusmap.put("statuscode", String.valueOf(_statusCode)); _statusmap.put("operator", _statususername); _statusmap.put("receivedate", _receivedate); _statusmap.put("operatedate", _operatedate); _statusmap.put("intervel", _intervel); _statusmap.put("operatorid", _operatorid); _statusmap.put("operatortype", _operatortype); _statusmap.put("beagentid", _beagentid); _statusmap.put("beagentname", _beagentname); _statusmap.put("nodetype", nodetype); //所有节点 nodeallstatuslist.add(_statusmap); //查看状态 1:未查看, 2::以查看, 3:已提交, 4:暂停, 5:撤销, 6:启用 7:已查阅 if ((tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && (flags || tmpuserid.equals(processuser))) { nodesubmitstatuslist.add(_statusmap); } else if (tmpisremark.equals("0") || tmpisremark.equals("1") || tmpisremark.equals("5") || tmpisremark.equals("4") || tmpisremark.equals("8") || tmpisremark.equals("9") || tmpisremark.equals("7") || tmpisremark.equals("11") || (tmpisremark.equals("2") && !flags)) { if (viewtype.equals("-2") || (viewtype.equals("-1") && !tmpoperatedate.equals(""))) { nodeviewstatuslist.add(_statusmap); } else if (viewtype.equals("0")) { nodenoviewstatuslist.add(_statusmap); } } if ((!tmpisremark.equals("2") && !tmpisremark.equals("4")) || (tmpisremark.equals("4") && viewtype.equals("0"))) { if (!tmpisremark.equals("s") && !tmpisremark.equals("s") && !tmpisremark.equals("c") && !tmpisremark.equals("r")) { nodenosubmitstatuslist.add(_statusmap); } } } //--已提交、已查看、未查看 all_nodemap_in.put("submitCount", submitCount);//--已提交 all_nodemap_in.put("viewCount", viewCount);//--已查看 all_nodemap_in.put("noviewCount", noviewCount);//--未查看 if ("submit".equals(desremark)) {//1:已提交 //提交节点信息 submit_nodemap_in.put("listcount", listcount); result.putAll(submitstatusmap); } else if ("nosubmit".equals(desremark)) {//2:未提交 nosubmit_nodemap_in.put("listcount", listcount); result.putAll(nosubmitstatusmap); } else if ("view".equals(desremark)) {//3:已查看 view_nodemap_in.put("listcount", listcount); result.putAll(viewstatusmap); } else if ("noview".equals(desremark)) {//4:未查看 noview_nodemap_in.put("listcount", listcount); result.putAll(noviewstatusmap); } else { //所有节点信息 all_nodemap_in.put("listcount", listcount); result.putAll(allstatusmap); } lastNodeId = fnodeid; } // if(maxid == currentMaxId){ // isfinish = 1; // } putpara.put("nodeindex", index + ""); putpara.put("currentMaxId", currentMaxId + ""); putpara.put("currentMinId", currentMinId + ""); putpara.put("currentId", currentId + "_" + currentId2); putpara.put("lastNodeId", lastNodeId + ""); putpara.put("viewlogids", viewlogids + ""); result.put("parameter", putpara); result.put("otherTime", new Date().getTime() - date1); } catch (Exception e) { e.printStackTrace(); } return result; } %>