zoukankan      html  css  js  c++  java
  • 润乾报表数据的上报与下达

    业务背景:使用数据的上传与下达功能来实现数据权限的控制,当普通用户点击上传后,就禁止显示修改和删除的按钮,关闭入口。当管理员点击下达按钮时,就将之前禁止显示的修改和删除按钮再次提供入口给普通用户。这些都是通过修改标志位编写控制表达式来实现的。

    (普通用户)上报功能实现步骤:

    (1)在上报单元格编写超链接如下【tomcat和Websphere下都一样】


    "javascript:update_status('econrespList.jsp','ECONRESP','FLAG','UUID','"+A3+"')"
    "javascript:update_status('enterpriseList.jsp','ENTERPRISE','FLAG','UUID','"+A3+"')"
    "javascript:update_status('financeList.jsp','FINANCE','FLAG','UUID','"+A3+"')"
    "javascript:update_status('socialSecurityList.jsp','SOCIALSECURITY','FLAG','UUID','"+A3+"')"

    (2)在各自页面编写该JS函数

    Tomcat下:
    function update_status(refreshUrl,table,column1,column2,value){
     if( table==null || table=='' ){
      alert("上报数据失败,请联系系统管理员");
      return;
     }
     if( refreshUrl==null || refreshUrl==''){
      alert("刷新url为空,请联系系统管理员");
      return;
     }
     if( confirm('确认上报吗?') ){
      window.location.href = "updateusejs.jsp?refreshUrl="
      +refreshUrl+"&table="+table+"&column1="+column1+"&column2="+column2+"&value="+value;
     }
    }


    Websphere下:
    function update_status(refreshUrl,table,column1,column2,value){
     if( table==null || table=='' ){
      alert("上报数据失败,请联系系统管理员");
      return;
     }
     if( refreshUrl==null || refreshUrl==''){
      alert("刷新url为空,请联系系统管理员");
      return;
     }
     if( confirm('确认上报吗?') ){
      window.location.href = "/newmodules/pages/reportJsp/updateusejs.jsp?refreshUrl="
      +refreshUrl+"&table="+table+"&column1="+column1+"&column2="+column2+"&value="+value;
     }
    }

    //其实这个JS函数还可以增加一个参数  就是标记位Flag的值  这样在处理的JS函数中就不用写死这个值  更加的灵活

    (3)编写共同的处理函数updateusejs.jsp【和XxxList.jsp放在同一个层级】
    <%@ page contentType="text/html;charset=gb2312" %>
    <%@ page import="java.io.*"%>
    <%@ page import="java.net.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="javax.servlet.*"%>
    <%@ page import="javax.servlet.http.*"%>
    <%@ page import="javax.naming.*,java.sql.*" %>
    <%@ page import="com.runqian.report4.usermodel.*"%>

    <%

    //获取各参数值
    String tableName1=request.getParameter("table");
    String colmn1=request.getParameter("column1");
    String colmn2=request.getParameter("column2");
    String value1=(String)request.getParameter("value");
    String refreshUrl = request.getParameter("refreshUrl");

    Connection con = null;
    Statement stmt = null;

    try{
    //获取context对象
    com.runqian.report4.usermodel.Context ct = new com.runqian.report4.usermodel.Context();
    con = ct.getConnectionFactory( ct.getDefDataSourceName() ).getConnection();
    stmt = con.createStatement();
    if((tableName1!=null || tableName1!="") && (colmn1!=null || colmn1!="" )&& (colmn2!=null || colmn2!="" ) && ( value1!=null || value1!="") ){
    //定义更新sql语句
    String sql= "update "+tableName1+" set "+colmn1+" ='unable' where "+colmn2+" = "+value1;

    //执行sql语句
    stmt.executeUpdate(sql);
    }
    //提交
    con.commit();
    //重定向url
    response.sendRedirect(refreshUrl);
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    //关闭流
    if( stmt != null ) stmt.close();
    if( con != null ) con.close();
    }
    %>


    (4)设置表达式
    在需要动态控制的"修改","删除"等单元格写控制表达式

    if(B3==null || ds1.FLAG=="unable","","修改")
    if(B3==null || ds1.FLAG=="unable","","删除")

    含义:若B3单元格为空【项目名称为空】或者标记为unable,不显示链接入口

    逻辑或:两者满足其一
    1)项目名称为空时不显示链接
    2)标记位为unable时不显示连接
    3)项目名称为空且标记位为unable时不显示链接


    (管理员)下达功能实现步骤:

    (0)使用未实现上报的raq文件,复制一份  把名字改为XxxManager.raq和XxxManager.jsp
       在raq文件的删除和下达的功能中,要把超链接改为XxxManage.jsp相关
       在jsp文件中,要把相应的raq文件和下达的jsp改为和Manage相关的【删除的处理页面不用改,只需要把刷新的路径修改即可】

    (1)在下达单元格编写超链接如下【tomcat和Websphere下都一样】【变化:刷新页面改为XxxManage.jsp】

    "javascript:update_status('econrespManage.jsp','ECONRESP','FLAG','UUID','"+A3+"')"
    "javascript:update_status('enterpriseManage.jsp','ENTERPRISE','FLAG','UUID','"+A3+"')"
    "javascript:update_status('financeManage.jsp','FINANCE','FLAG','UUID','"+A3+"')"
    "javascript:update_status('socialSecurityManage.jsp','SOCIALSECURITY','FLAG','UUID','"+A3+"')"


    注意:删除页面的raq也要做相应的修改,把超链接中刷新的页面改为XxxManage.jsp 【  管理员和普通用户返回的列表页面是不一样的 】


    (2)在各自页面编写该JS函数【变化:复制updateusejs.jsp页面,改名为updateusejsManage.jsp】

    Tomcat下:
    function update_status(refreshUrl,table,column1,column2,value){
     if( table==null || table=='' ){
      alert("下达数据失败,请联系系统管理员");
      return;
     }
     if( refreshUrl==null || refreshUrl==''){
      alert("刷新url为空,请联系系统管理员");
      return;
     }
     if( confirm('确认下达吗?') ){
      window.location.href = "updateusejsManage.jsp?refreshUrl="
      +refreshUrl+"&table="+table+"&column1="+column1+"&column2="+column2+"&value="+value;
     }
    }


    Websphere下:
    window.location.href = "/newmodules/pages/reportJsp/updateusejsManage.jsp?refreshUrl="
    +refreshUrl+"&table="+table+"&column1="+column1+"&column2="+column2+"&value="+value;

    (3)编写共同的处理函数updateusejsManage.jsp【和XxxManager.jsp放在同一个层级】
    <%@ page contentType="text/html;charset=gb2312" %>
    <%@ page import="java.io.*"%>
    <%@ page import="java.net.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="javax.servlet.*"%>
    <%@ page import="javax.servlet.http.*"%>
    <%@ page import="javax.naming.*,java.sql.*" %>
    <%@ page import="com.runqian.report4.usermodel.*"%>

    <%

    //获取各参数值
    String tableName1=request.getParameter("table");
    String colmn1=request.getParameter("column1");
    String colmn2=request.getParameter("column2");
    String value1=(String)request.getParameter("value");
    String refreshUrl = request.getParameter("refreshUrl");

    Connection con = null;
    Statement stmt = null;

    try{
    //获取context对象
    com.runqian.report4.usermodel.Context ct = new com.runqian.report4.usermodel.Context();
    con = ct.getConnectionFactory( ct.getDefDataSourceName() ).getConnection();
    stmt = con.createStatement();
    if((tableName1!=null || tableName1!="") && (colmn1!=null || colmn1!="" )&& (colmn2!=null || colmn2!="" ) && ( value1!=null || value1!="") ){
    //定义更新sql语句
    String sql= "update "+tableName1+" set "+colmn1+" ='able' where "+colmn2+" = "+value1;【注意,这里改为了able】

    //执行sql语句
    stmt.executeUpdate(sql);
    }
    //提交
    con.commit();
    //重定向url
    response.sendRedirect(refreshUrl);
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    //关闭流
    if( stmt != null ) stmt.close();
    if( con != null ) con.close();
    }
    %>


    (4)不用设置控制表达式


     

  • 相关阅读:
    [HAOI2015]树上操作(树链剖分)
    树链剖分——解决树上路径问题利器
    [CodeForces 833B] The Bakery(数据结构优化dp)
    [国家集训队]最长双回文串(马拉车)
    [国家集训队]拉拉队排练(Manacher)
    【ATcoder】AtCoder Beginner Contest 159 题解
    蒟蒻的数列[BZOJ4636](线段树)
    Manacher马拉车算法——解决最长回文子串问题
    HDU 1501 Zipper (记忆化搜索)
    HDU 1428 漫步校园 (dfs+记忆化搜索dfs)
  • 原文地址:https://www.cnblogs.com/avivaye/p/2851295.html
Copyright © 2011-2022 走看看