润乾报表-数据的上报与下达

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

 

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

(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)不用设置控制表达式


 

posted @ 2013-01-08 16:03  Aviva_ye  阅读(524)  评论(0编辑  收藏  举报