package com.zky.manager ;
import com.zky.pub.Common ;
import com.zky.pub.DbConn ;
import com.zky.pub.HashFmlBuf ;
import com.zky.util.jdbc.HashFmlBufResultSetHandler ;
import com.zky.util.jdbc.JDBCUtils ;
import org.apache.log4j.Logger ;
import javax.servlet.http.HttpServletRequest ;
import java.sql.Connection ;
import java.sql.PreparedStatement ;
import java.sql.ResultSet ;
import java.sql.Statement ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
/ * *
功 能 :
1 、 验 证 口 令 checkPwd
2 、 获 取 菜 单 getMenu
3 、 修 改 口 令 modiPwd
* /
public class Login {
private static final Logger log = Logger . getLogger ( Login . class ) ;
//教师表的基本信息
public String frameworkid = null ; //地市编码
public String optrid = null ; //教师工号
public String empid = null ;
private String empname = null ; //教师名称
private String emppwd = null ; //教师口令
public String empstate = null ; //教师口令状态
public String empstatedate = null ; //教师状态修改时间
public String optrlvl = null ; //教师级别
public String optrareaid = null ; //区县标识
public String optrcontaddr = null ; //联系地址
public String optrcontphone = null ; //联系电话
public String optrcontmobphone = null ; //手机
public String optrfaxnum = null ; //传真
public String shiftid = null ; //组长标识(暂时不用)
public String acptsiteid = null ; //学校标识
public String departlvlid = null ; //级别 0,省分级 1,市级 2,区县级 3,学校
public String departid = null ; //学校标识
private String departname = null ; //学校名
private String empidbegindate = null ; //工号启用时间
private String empidenddate = null ; //工号停用时间
private String departtypeid = null ; //学校类型
private String jobcode = null ; //岗位编码
public String menuidlist = null ; //模块标示
private String emppro = null ; //管理员类型: MA-省分管理员; CM-市管理员; CU-区县管理员; NONE-不是管理员
private String parentdeptid = null ;
private String menu = null ;
public String menuitem = null ; //菜单模板,生成导航条的时候使用
public String menuitemname = null ;
public String menuname = null ;
public String sanyuan = null ;
public String certname = null ;
public String certid = null ;
public String getMenuname ( ) {
return this . menuname ;
}
public void setMenuname ( String menuname ) {
this . menuname = menuname ;
}
//标识该用户是否验证通过1: 通过, 0: 未通过
private String passtag = "0" ;
public HashFmlBuf para_menu ;
public String loginresult = null ;
public Login ( ) {
para_menu = new HashFmlBuf ( ) ;
}
public void setacpt ( String as_acpt ) {
acptsiteid = as_acpt ;
}
/ * *
* 在 HashFmlBuf para_menu 中 查 找 传 入 的 URL 是 否 存 在 , 拦 截 器 使 用
* * /
public int checkUrl ( String url )
{
for ( int i = 0 ; i < para_menu . getRowCount ( ) ; i + + )
{
String workurl = para_menu . fget ( "workurl" , i ) = = null ? "" : para_menu . fget ( "workurl" , i ) ;
if ( workurl . toLowerCase ( ) . indexOf ( url . toLowerCase ( ) ) > = 0 )
{
return 1 ;
}
}
return - 1 ;
}
/ * *
* 功 能 :
* 这 里 的 操 作 员 是 指 用 户 当 前 登 录 的 操 作 员 的 信 息
* /
public void getOptr ( HashFmlBuf para_out ) {
if ( passtag . equals ( "1" ) ) {
para_out . fchg ( "FRAMEWORKID" , 0 , frameworkid ) ;
para_out . fchg ( "OPTRID" , 0 , optrid ) ;
para_out . fchg ( "SANYUAN" , 0 , sanyuan ) ;
para_out . fchg ( "CERTNAME" , 0 , certname ) ;
para_out . fchg ( "CERTID" , 0 , certid ) ;
para_out . fchg ( "EMPNAME" , 0 , empname ) ;
para_out . fchg ( "OPTRPWD" , 0 , emppwd ) ;
para_out . fchg ( "OPTRSTAT" , 0 , empstate ) ;
para_out . fchg ( "OPTRSTATDATE" , 0 , empstatedate ) ;
para_out . fchg ( "OPTRLVL" , 0 , optrlvl ) ;
para_out . fchg ( "OPTRAREAID" , 0 , optrareaid ) ;
para_out . fchg ( "OPTRCONTADDR" , 0 , optrcontaddr ) ;
para_out . fchg ( "OPTRCONTPHONE" , 0 , optrcontphone ) ;
para_out . fchg ( "OPTRCONTMOBPHONE" , 0 , optrcontmobphone ) ;
para_out . fchg ( "OPTRFAXNUM" , 0 , optrfaxnum ) ;
para_out . fchg ( "SHIFTID" , 0 , shiftid ) ;
para_out . fchg ( "ACPTSITEID" , 0 , acptsiteid ) ;
para_out . fchg ( "EMPIDBEGINDATE" , 0 , empidbegindate ) ;
para_out . fchg ( "EMPIDENDDATE" , 0 , empidenddate ) ;
para_out . fchg ( "DEPARTTYPEID" , 0 , departtypeid ) ;
para_out . fchg ( "JOBCODE" , 0 , jobcode ) ;
para_out . fchg ( "MENUNAME" , 0 , menuname ) ;
para_out . fchg ( "parentdeptid" , 0 , parentdeptid ) ;
} else {
para_out . fchg ( "FRAMEWORKID" , 0 , null ) ;
para_out . fchg ( "OPTRID" , 0 , null ) ;
para_out . fchg ( "SANYUAN" , 0 , null ) ;
para_out . fchg ( "CERTNAME" , 0 , null ) ;
para_out . fchg ( "CERTID" , 0 , null ) ;
para_out . fchg ( "OPTRGRP" , 0 , null ) ;
para_out . fchg ( "EMPNAME" , 0 , null ) ;
para_out . fchg ( "OPTRPWD" , 0 , null ) ;
para_out . fchg ( "OPTRSTAT" , 0 , null ) ;
para_out . fchg ( "OPTRSTATDATE" , 0 , null ) ;
para_out . fchg ( "OPTRLVL" , 0 , null ) ;
para_out . fchg ( "OPTRAREAID" , 0 , null ) ;
para_out . fchg ( "PLC" , 0 , null ) ;
para_out . fchg ( "OPTRCONTADDR" , 0 , null ) ;
para_out . fchg ( "OPTRCONTPHONE" , 0 , null ) ;
para_out . fchg ( "OPTRCONTMOBPHONE" , 0 , null ) ;
para_out . fchg ( "OPTRFAXNUM" , 0 , null ) ;
para_out . fchg ( "SHIFTID" , 0 , null ) ;
para_out . fchg ( "ACPTSITEID" , 0 , null ) ;
para_out . fchg ( "OPTRIDBEGINDATE" , 0 , null ) ;
para_out . fchg ( "OPTRIDENDDATE" , 0 , null ) ;
para_out . fchg ( "DEPARTTYPEID" , 0 , null ) ;
para_out . fchg ( "JOBCODE" , 0 , null ) ;
para_out . fchg ( "MENUNAME" , 0 , null ) ;
}
}
/ * *
* 功 能 描 述 :
* 验 证 传 入 的 URL 是 否 在 该 用 户 的 权 限 之 内 , 如 果 能 找 到
* 则 返 回 TRUE , 否 则 返 回 FALSE ;
* /
public boolean checkPassURL ( String as_url ) {
if ( para_menu . find ( "WORKOBJECT" , as_url ) = = - 1 ) {
return false ;
}
return true ;
}
/ * *
* 功 能 :
* 验 证 是 否 通 过 口 令 校 验
* /
public boolean checkPasstag ( ) {
if ( passtag . equals ( "1" ) )
return true ;
else
return false ;
}
/ * *
* 功 能 :
* 清 除 私 有 变 量 的 所 有 数 据
* /
private void cleanLocalData ( ) {
frameworkid = null ;
optrid = null ;
empname = null ;
emppwd = null ;
empstate = null ;
empstatedate = null ;
optrlvl = null ;
optrareaid = null ;
optrcontaddr = null ;
optrcontphone = null ;
optrcontmobphone = null ;
optrfaxnum = null ;
shiftid = null ;
acptsiteid = null ;
departname = null ;
empidbegindate = null ;
empidenddate = null ;
departtypeid = null ;
jobcode = null ;
passtag = "0" ;
parentdeptid = null ;
sanyuan = null ;
certname = null ;
certid = null ;
}
/ * *
* 功 能 :
* 验 证 员 工 工 号 是 否 存 在 , 如 果 存 在 则 取 出 相 关 的 数 据 , 存 放 到 私 有 变 量 中
* @param
* 员 工 工 号
*
* @param para_out - 输 入 参 数 可 以 是 一 个 对 象 , 该 对 象 包 含 以 下 参 数 :
* 1 、 成 功 标 志 checktag ( char5 ) 00000 : 成 功 , 00001 : tuxedo 失 败
* 00002 : 工 号 不 存 在 , 00003 : 用 户 过 期
* 2 、 错 误 原 因 errorinfo ( char100 )
* /
public int checkOptrid ( String empid , HashFmlBuf para_out ) {
//定义变量
ResultSet rs ;
Connection conn = null ;
PreparedStatement prep = null ;
passtag = "0" ;
int i = 0 ;
//清除输出缓冲区中的数据
//para_out.finit();
//获取输入参数
if ( empid . trim ( ) . equals ( "" ) ) {
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
cleanLocalData ( ) ;
para_out . fchg ( "ERRORINFO" , 0 , "操作员工号不能为空!" ) ;
return - 1 ;
}
//如果已经存在该工号了,就不需要到数据库验证了
if ( empid . trim ( ) . equals ( optrid ) ) {
para_out . fchg ( "CHECKTAG" , 0 , "00000" ) ;
return 0 ;
}
String ls_sql =
"select frameworkid,empname,emppwd,empstate,empstatedate,emplvl,empcontaddr,empcontphone,empcontmobphone,empfaxnum,empidbegindate,empidenddate,sanyuan,certname,certid from tab_employee where empid = ?" ;
try {
//连接数据库
conn = DbConn . getConn ( ) ;
prep = conn . prepareStatement ( ls_sql ) ;
prep . setString ( 1 , empid ) ;
//执行sql语句
rs = prep . executeQuery ( ) ;
//处理输出数据
while ( rs . next ( ) ) {
//frameworkid = rs.getString("frameworkid");
optrid = empid ;
empname = rs . getString ( "empname" ) ;
emppwd = rs . getString ( "emppwd" ) ;
empstate = rs . getString ( "empstate" ) ;
empstatedate = rs . getString ( "empstatedate" ) ;
optrlvl = rs . getString ( "emplvl" ) ;
sanyuan = rs . getString ( "sanyuan" ) ;
certname = rs . getString ( "certname" ) ;
certid = rs . getString ( "certid" ) ;
optrcontaddr = rs . getString ( "empcontaddr" ) ;
optrcontphone = rs . getString ( "empcontphone" ) ;
optrcontmobphone = rs . getString ( "empcontmobphone" ) ;
optrfaxnum = rs . getString ( "empfaxnum" ) ;
empidbegindate = rs . getString ( "empidbegindate" ) ;
empidenddate = rs . getString ( "empidenddate" ) ;
i + + ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
cleanLocalData ( ) ;
para_out . fchg ( "ERRORINFO" , 0 , e . toString ( ) ) ;
} finally {
if ( conn ! = null ) {
try {
conn . close ( ) ;
} catch ( Exception e ) {
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
cleanLocalData ( ) ;
para_out . fchg ( "ERRORINFO" , 0 , e . toString ( ) ) ;
}
}
}
//验证工号是否存在
if ( i = = 0 ) {
para_out . fchg ( "CHECKTAG" , 0 , "00002" ) ;
cleanLocalData ( ) ;
para_out . fchg ( "ERRORINFO" , 0 , "您输入的人员编号有误,请重新输入!" ) ;
return - 1 ;
}
//判断工号是否启用和是否禁用
String ls_sysdate = "" ;
//先获取系统时间
try {
//连接数据库
conn = DbConn . getConn ( ) ;
Statement statement = conn . createStatement ( ) ;
rs = statement . executeQuery (
// "select now() as sys_date from dual");
"select now() as sys_date from dual" ) ;
if ( rs . next ( ) ) {
ls_sysdate = rs . getString ( "sys_date" ) ;
}
} catch ( Exception e ) {
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
cleanLocalData ( ) ;
para_out . fchg ( "ERRORINFO" , 0 , e . toString ( ) ) ;
} finally {
if ( conn ! = null ) {
try {
conn . close ( ) ;
} catch ( Exception e ) {
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
cleanLocalData ( ) ;
para_out . fchg ( "ERRORINFO" , 0 , e . toString ( ) ) ;
}
}
}
//判断工号是否过期
if ( ls_sysdate . compareTo ( empidbegindate ) < 0 | | ls_sysdate . compareTo ( empidenddate ) > 0 ) {
para_out . fchg ( "CHECKTAG" , 0 , "00003" ) ;
cleanLocalData ( ) ;
para_out . fchg ( "ERRORINFO" , 0 , "您的用户过期或还没有启用!" ) ;
return - 1 ;
}
para_out . fchg ( "CHECKTAG" , 0 , "00000" ) ;
return 0 ;
}
/ * *
* 功 能 :
* 根 据 员 工 的 工 号 和 口 令 验 证 用 户 是 否 可 以 登 录 系 统 。
* < p >
* 流 程 描 述 :
* < p >
* 1 、 验 证 输 入 的 口 令 是 否 正 确
* 2 、 根 据 optrid 查 询 员 工 对 应 部 门 表 tab_empdept , 获 得 员 工 部 门 号 ,
* 根 据 部 门 号 查 询 表 tab_department 获 取 部 门 名 称 departname 、 部 门 类 型 departtypeid .
*
* @param para_in - 输 入 参 数 可 以 是 一 个 对 象 , 该 对 象 包 含 以 下 参 数 :
* 1 、 optrid : 员 工 工 号
* 2 、 emppwd : 员 工 口 令
* 3 、 opername : 操 作 名 称
* @param para_out - 该 对 象 中 包 含 以 下 输 出 参 数 :
* 1 、 成 功 标 志 checktag ( char5 ) 00000 : 成 功 , 00001 : tuxedo 失 败
* 00002 : 工 号 与 口 令 校 验 失 败 , 00003 : 无 部 门 , 00004 : 口 令 过 期
* 2 、 错 误 原 因 errorinfo ( char100 )
* 3 、 操 作 员 姓 名 optrname ( char40 )
* 4 、 分 公 司 编 码 frameworkid ( char8 )
* 5 、 地 域 标 示 areaid ( char8 )
* 6 、 对 应 部 门 数 acptsitecnt ( char5 )
* 7 、 对 应 部 门 acptsiteid ( char15 )
* 8 、 部 门 类 型 acptsitetypeidchar ( 2 )
* 9 、 对 应 部 门 名 称 acptsitename ( char40 )
* /
public int checkPwd ( String emppwd , HashFmlBuf para_out ) {
//清除输出缓冲区中的数据
para_out . finit ( ) ;
int j = 0 ;
ResultSet rs ;
Connection conn = null ;
PreparedStatement prep = null ;
//比较口令是否校验成功
if ( encrypt_optr_password ( emppwd ) . equals ( this . emppwd ) & & certid . equals ( this . certid ) ) {
//if (encrypt_optr_password(emppwd).equals(this.emppwd) ) {
//判断口令是否过期
//System.out.println(this.certid);
// if (empstate.equals("")){
// para_out.fchg("CHECKTAG", 0, "00005");
// para_out.fchg("ERRORINFO", 0, "您需要进行UKEY验证!");
// return -1;
// }
if ( empstate . equals ( "0" ) ) {
para_out . fchg ( "CHECKTAG" , 0 , "00004" ) ;
para_out . fchg ( "ERRORINFO" , 0 , "您的用户账号已经过期!" ) ;
return - 1 ;
}
} else if ( ! encrypt_optr_password ( emppwd ) . equals ( this . emppwd ) ) {
para_out . fchg ( "CHECKTAG" , 0 , "00002" ) ;
para_out . fchg ( "ERRORINFO" , 0 , "您输入的登录密码不正确!" ) ;
return - 1 ;
} else {
para_out . fchg ( "ERRORINFO" , 0 , "您的UKEY登录信息不正确!" ) ;
return - 1 ;
}
//判断岗位是否存在
//根据工号查询表 tab_empdept 获取部门
String sql = "select b.frameworkid,b.parentdeptid,b.areaid,b.departid,b.acptsiteid,b.departname,b.departtypeid,a.jobcode,a.emppro ,a.DEPARTLVLID adjustlvlid, b.DEPARTLVLID lvlid from tab_empdept a,tab_department b where a.departid=b.departid and a.empid = ?" ;
try {
//连接数据库
conn = DbConn . getConn ( ) ;
prep = conn . prepareStatement ( sql ) ;
prep . setString ( 1 , optrid ) ;
//prep.setString(2, frameworkid);
//执行sql语句
rs = prep . executeQuery ( ) ;
//处理输出数据
String lvlid ;
while ( rs . next ( ) ) {
para_out . fchg ( "OPTRAREAID" , j , rs . getString ( "areaid" ) ) ;
para_out . fchg ( "frameworkid" , j , rs . getString ( "frameworkid" ) ) ;
para_out . fchg ( "departid" , j , rs . getString ( "departid" ) ) ;
String acptsiteid = rs . getString ( "ACPTSITEID" ) ;
if ( Common . isNull ( acptsiteid ) ) {
acptsiteid = rs . getString ( "departid" ) ;
}
para_out . fchg ( "ACPTSITEID" , j , acptsiteid ) ;
para_out . fchg ( "DEPARTNAME" , j , rs . getString ( "departName" ) ) ;
para_out . fchg ( "DEPARTTYPEID" , j , rs . getString ( "departTypeID" ) ) ;
para_out . fchg ( "JOBCODE" , j , rs . getString ( "jobcode" ) ) ;
para_out . fchg ( "EMPPRO" , j , Common . convertNull ( rs . getString ( "emppro" ) ) ) ;
//部门级别,如果调整不为空,则用调整级别。
lvlid = rs . getString ( "lvlid" ) ;
if ( ! Common . isNull ( rs . getString ( "adjustlvlid" ) ) ) {
lvlid = rs . getString ( "adjustlvlid" ) ;
}
para_out . fchg ( "DEPARTLVLID" , j , lvlid ) ;
para_out . fchg ( "parentdeptid" , j , Common . convertNull ( rs . getString ( "parentdeptid" ) ) ) ;
j + + ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
para_out . fchg ( "ERRORINFO" , 0 , e . toString ( ) ) ;
} finally {
if ( conn ! = null ) {
try {
conn . close ( ) ;
} catch ( Exception e ) {
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
para_out . fchg ( "ERRORINFO" , 0 , e . toString ( ) ) ;
}
}
}
//判断部门是否存在
if ( j = = 0 ) {
para_out . fchg ( "CHECKTAG" , 0 , "00003" ) ;
para_out . fchg ( "ERRORINFO" , 0 , "您没有对应的部门!" ) ;
return - 1 ;
}
para_out . fchg ( "DEPTCOUNT" , 0 , Integer . toString ( j ) ) ;
if ( j = = 1 ) {
acptsiteid = para_out . fget ( "ACPTSITEID" , 0 ) ; //对应营帐部门
departid = para_out . fget ( "departid" , 0 ) ;
departname = para_out . fget ( "DEPARTNAME" , 0 ) ;
departtypeid = para_out . fget ( "DEPARTTYPEID" , 0 ) ;
emppro = para_out . fget ( "EMPPRO" , 0 ) ;
jobcode = para_out . fget ( "JOBCODE" , 0 ) ;
optrareaid = para_out . fget ( "OPTRAREAID" , 0 ) ;
parentdeptid = para_out . fget ( "parentdeptid" , 0 ) ;
frameworkid = para_out . fget ( "frameworkid" , 0 ) ;
departlvlid = para_out . fget ( "DEPARTLVLID" , 0 ) ;
}
//填写返回数据
//para_out.fchg("FRAMEWORKID", 0, frameworkid);
para_out . fchg ( "EMPNAME" , 0 , empname ) ;
para_out . fchg ( "CHECKTAG" , 0 , "00000" ) ;
//表示用户身份验证通过
passtag = "1" ;
return 0 ;
}
/ * *
功 能 :
根 据 当 前 操 作 员 获 取 该 操 作 员 所 对 应 的 菜 单 项 信 息
流 程 描 述 :
1 、 根 据 optrid 从 td_m_optrjob 中 找 出 岗 位 编 码 ( 可 能 有 多 条 记 录 )
2 、 根 据 岗 位 编 码 从 tab_jobmenu 中 找 出 和 该 岗 位 所 对 应 的 菜 单 模 板 的 编 码 。
3 、 根 据 菜 单 模 板 的 编 码 从 表 tab_menuitem 中 获 取 菜 单 的 信 息 , 然 后 根 据 菜 单 项 编 码 到 表 td
_s_funcmodu 和 表 tab_menu 中 查 找 对 应 信 息 ( 如 果 在 tab_funcmodu 中 能 够 找 到 对 应 记 录 , ?
表 示 是 功 能 模 块 , 要 返 回 相 对 应 的 URL , 如 果 在 tab_menu 中 找 到 记 录 , 则 表 示 是 菜 单 的 一 个
枝 )
4 、 根 据 工 号 从 额 外 调 整 表 tab_empfunc 中 取 该 员 工 所 对 应 的 调 整 的 功 能 模 块
@param para_in - 输 入 参 数 为 :
optrid : 工 号
opername : 操 作 名
@param para_out - 输 出 参 数 :
1 、 成 功 标 志 checktag ( char5 ) 00000 : 成 功 , 00001 : 失 败
2 、 错 误 原 因 errorinfo ( char100 )
3 、 岗 位 菜 单 编 码 menuitem ( char10 )
4 、 岗 位 菜 单 名 称 menuitemname ( char30 )
5 、 菜 单 总 数 menucnt ( char5 )
6 、 菜 单 项 编 码 menu_id ( char10 )
7 、 菜 单 项 名 称 menu_name ( char30 )
8 、 菜 单 级 别 menulevel ( char1 )
9 、 上 级 菜 单 uplevel ( char10 )
10 、 工 作 对 象 workobject ( char50 )
11 、 快 捷 键 shortcut ( char20 )
12 、 是 否 调 整 标 志 adjusttag ( char1 ) 0 : 不 调 整 , 1 : 调 整
13 、 调 整 类 型 adjusttype ( char1 ) 0 : 减 少 , 1 : 增 加
* /
public int getMenu ( HashFmlBuf para_out ) {
//定义变量
ResultSet rs ;
Connection conn = null ;
PreparedStatement prep = null ;
//清除输出缓冲区中的数据
para_out . finit ( ) ;
//判断实例是否创建,如果没有创建则新创建一个
if ( para_menu = = null ) {
para_menu = new HashFmlBuf ( ) ;
}
//清除私有变量中的数据
para_menu . finit ( ) ;
//根据当前工号所对应的岗位查找对应的菜单模板
String sql =
"select distinct a.menuitem,b.menuitemname from tab_jobmenu a,tab_menuitem b where a.frameworkid=b.frameworkid and a.menuitem=b.menuitem and a.jobcode = ? and a.frameworkid=?" ;
try {
//连接数据库
conn = DbConn . getConn ( ) ;
prep = conn . prepareStatement ( sql ) ;
prep . setString ( 1 , jobcode ) ;
prep . setString ( 2 , frameworkid ) ;
//执行sql语句
rs = prep . executeQuery ( ) ;
//根据工号获取岗位编码,然后根据岗位编码查询该岗位对应的菜单模板
String menuitemname = "" ;
if ( rs . next ( ) ) {
//保存菜单模板,导航条使用
this . menuitem = rs . getString ( "menuitem" ) ;
menuitemname = rs . getString ( "menuitemname" ) ;
}
prep . close ( ) ;
rs . close ( ) ;
StringBuffer menuSql = new StringBuffer ( ) ;
menuSql . append ( "select distinct * from (" ) ;
menuSql . append ( "(select a.menuid,a.menuname as menuname,a.uplevel as upmenuid,b.web_workobject as workurl,a.menulevel " ) ;
menuSql . append ( " from tab_menuitem a,tab_funcmodu b" ) ;
menuSql . append ( " where a.menuid=b.funcmoducode(+) and" ) ;
menuSql . append ( " not exists(select 1 from tab_empfunc c where a.menuid=c.funcmoducode and c.adjust='-' and c.empid=?) and " ) ;
menuSql . append ( " a.menuitem=? and a.frameworkid=?)" ) ;
menuSql . append ( "union" ) ;
menuSql . append ( "(select a.funcmoducode as menuid,b.funcmoduname as menuname,a.uplevel as upmenuid,b.web_workobject as workurl,a.curlevel as menulevel" ) ;
menuSql . append ( " from tab_empfunc a,tab_funcmodu b " ) ;
menuSql . append ( " where a.funcmoducode=b.funcmoducode and " ) ;
menuSql . append ( " not exists (select 1 from tab_menuitem c where a.funcmoducode=c.menuid and c.menuitem=? and c.frameworkid=?) and" ) ;
menuSql . append ( " a.adjust='+' and a.empid =?)" ) ;
menuSql . append ( ") " ) ;
menuSql . append ( "order by menulevel,decode(workurl,null,0,1),menuid" ) ;
para_menu = ( HashFmlBuf ) JDBCUtils . query ( conn , menuSql . toString ( ) ,
new Object [ ] { optrid , menuitem , frameworkid , menuitem , frameworkid , optrid } ,
new HashFmlBufResultSetHandler ( ) ) ;
int rowcount = para_menu . getRowCount ( ) ;
//设置菜单模板名称和标识
para_menu . fchg ( "menuitem" , 0 , menuitem ) ;
para_menu . fchg ( "menuitemname" , 0 , menuitemname ) ;
para_menu . setRowCount ( rowcount ) ;
} catch ( Exception e ) {
para_out . fchg ( "CHECKTAG" , 0 , "00001" ) ;
para_out . fchg ( "ERRORINFO" , 0 , e . toString ( ) ) ;
} finally {
if ( conn ! = null ) {
try {
conn . close ( ) ;
} catch ( Exception e ) {
}
}
}
//把总记录条数添加上去
para_out . fchg ( "CHECKTAG" , 0 , "00000" ) ;
return 0 ;
}
public String modiPwd ( String oldPwd , String newPwd ) {
String errorinfo = "" ;
if ( passtag . equals ( "0" ) ) {
errorinfo = "没有登录,不可以修改口令!" ;
return errorinfo ;
}
if ( newPwd = = null | | newPwd . equals ( "" ) ) {
errorinfo = "新口令不可以为空!" ;
return errorinfo ;
}
//判断老口令是否正确
if ( encrypt_optr_password ( oldPwd ) . equals ( emppwd ) ) {
} else {
errorinfo = "原口令校验失败!" ;
return errorinfo ;
}
newPwd = encrypt_optr_password ( newPwd ) ;
String sql = "update tab_employee set emppwd = ? where empid = ?" ;
Connection conn = null ;
PreparedStatement pst = null ;
try {
conn = DbConn . getConn ( ) ;
conn . setAutoCommit ( false ) ;
pst = conn . prepareStatement ( sql ) ;
pst . setString ( 1 , newPwd ) ;
pst . setString ( 2 , optrid ) ;
pst . executeUpdate ( ) ;
//oracle数据库手动提交, mysql中 自动提交autoCommit();
conn . commit ( ) ;
this . emppwd = newPwd ;
} catch ( Exception e ) {
try {
conn . rollback ( ) ;
} catch ( Exception e1 ) {
}
errorinfo = "修改口令失败!" + e . toString ( ) ;
} finally {
try {
if ( conn ! = null )
conn . close ( ) ;
if ( pst ! = null )
pst . close ( ) ;
} catch ( Exception e ) {
}
}
return errorinfo ;
}
/ * *
* 生 成 树
* @return List 中 存 放 了 输 出 的 JavaScript
* /
public List outXTree ( ) {
//如果没有登录,则直接返回空
if ( passtag = = "0" )
return null ;
List list = new ArrayList ( ) ;
String tmpTreeStr = "" ;
list . add ( "<script>" ) ;
list . add ( "if (document.getElementById){" ) ;
//生成树的根节点
tmpTreeStr =
new StringBuffer ( "var " )
. append ( "tree" )
. append ( para_menu . fget ( "menuitem" , 0 ) )
. append ( "=new WebFXTree('" )
. append ( para_menu . fget ( "menuitemname" , 0 ) )
. append ( "');" )
. toString ( ) ;
list . add ( tmpTreeStr ) ;
tmpTreeStr =
new StringBuffer ( "tree" )
. append ( para_menu . fget ( "menuitem" , 0 ) )
. append ( ".setBehavior('classic');" )
. toString ( ) ;
list . add ( tmpTreeStr ) ;
//生成节点
menuidlist = "var menuidlist = new Array();" ;
String menuid = "" ;
String upMenuid = "" ;
HashMap map = new HashMap ( ) ;
map . put ( menuitem , menuitem ) ;
try {
int rowcount = para_menu . getRowCount ( ) ;
for ( int j = 0 ; j < rowcount ; j + + ) {
menuid = para_menu . fget ( "MENUID" , j ) ;
upMenuid = para_menu . fget ( "upmenuid" , j ) ;
if ( map . get ( upMenuid ) = = null ) {
//如果找不到上级节点则跳入下一次循环
continue ;
}
map . put ( menuid , menuid ) ;
tmpTreeStr =
new StringBuffer ( "var tree" ) . append ( menuid )
. append ( " = new WebFXTreeItem('" )
. append ( para_menu . fget ( "MENUNAME" , j ) )
. append ( "','" ) . append ( para_menu . fget ( "WORKURL" , j ) )
. toString ( ) ;
if ( para_menu . fget ( "workurl" , j ) ! = null
& & para_menu . fget ( "workurl" , j ) . indexOf ( "?" ) > 0 ) {
tmpTreeStr + = "&funcmoducode=" + menuid ;
} else {
tmpTreeStr + = "?funcmoducode=" + menuid ;
}
tmpTreeStr + = "');" ;
list . add ( tmpTreeStr ) ;
menuidlist + = "menuidlist[" + j + "] = '" + menuid + "';" ;
tmpTreeStr =
new StringBuffer ( "tree" ) . append ( upMenuid )
. append ( ".add(tree" ) . append ( menuid ) . append ( ");" )
. toString ( ) ;
list . add ( tmpTreeStr ) ;
} // end of for
} catch ( Exception e ) {
return null ;
}
// 输出树
tmpTreeStr =
new StringBuffer ( "document.write(tree" )
. append ( para_menu . fget ( "menuitem" , 0 ) )
. append ( ");tree" )
. append ( para_menu . fget ( "menuitem" , 0 ) )
. append ( ".expandAll();" )
. toString ( ) ;
list . add ( tmpTreeStr ) ;
list . add ( "}" ) ;
return list ;
}
//加密
public static String encrypt_optr_password ( String srcstr ) {
String str = "" ;
for ( int i = 0 ; i < srcstr . length ( ) ; i + + ) {
char c ;
c = srcstr . charAt ( i ) ;
c = ( char ) ( ( int ) c - 10 ) ;
str = str + c ;
}
return str ;
}
//解密
public static String incrypt_optr_password ( String srcstr ) {
String str = "" ;
for ( int i = 0 ; i < srcstr . length ( ) ; i + + ) {
char c ;
c = srcstr . charAt ( i ) ;
c = ( char ) ( ( int ) c + 10 ) ;
str = str + c ;
}
return str ;
}
public void loginLog ( HttpServletRequest request ) {
Login login = ( Login ) request . getSession ( ) . getAttribute ( "login" ) ;
String ipAddr = request . getRemoteAddr ( ) ;
ipAddr = "BMXT:" + ipAddr ;
loginresult = "登录成功!" ;
Connection conn = null ;
PreparedStatement prep = null ;
String sql = "insert into tf_l_logonlog (IPADDR,OPTRID,ACPTSITEID,LOGONTIME,LOGINRESULT) values(?,?,?,now(),?)" ;
try {
conn = DbConn . getConn ( ) ;
conn . setAutoCommit ( true ) ;
prep = conn . prepareStatement ( sql ) ;
prep . setString ( 1 , ipAddr ) ;
prep . setString ( 2 , login . getEmpname ( ) ) ;
prep . setString ( 3 , login . getDepartname ( ) ) ;
prep . setString ( 4 , loginresult ) ;
prep . executeUpdate ( ) ;
} catch ( Exception e ) {
} finally {
try {
if ( prep ! = null ) prep . close ( ) ;
if ( conn ! = null ) conn . close ( ) ;
} catch ( Exception e ) {
}
}
}
public void loginLogfalse ( HttpServletRequest request ) {
Login login = ( Login ) request . getSession ( ) . getAttribute ( "login" ) ;
String ipAddr = request . getRemoteAddr ( ) ;
ipAddr = "BMXT:" + ipAddr ;
loginresult = "登陆失败!" ;
Connection conn = null ;
PreparedStatement prep = null ;
String sql = "insert into tf_l_logonlog (IPADDR,OPTRID,ACPTSITEID,LOGONTIME,LOGINRESULT) values(?,?,?,now(),?)" ;
try {
conn = DbConn . getConn ( ) ;
conn . setAutoCommit ( true ) ;
prep = conn . prepareStatement ( sql ) ;
prep . setString ( 1 , ipAddr ) ;
prep . setString ( 2 , login . getEmpname ( ) ) ;
prep . setString ( 3 , login . getDepartname ( ) ) ;
prep . setString ( 4 , loginresult ) ;
prep . executeUpdate ( ) ;
} catch ( Exception e ) {
} finally {
try {
if ( prep ! = null ) prep . close ( ) ;
if ( conn ! = null ) conn . close ( ) ;
} catch ( Exception e ) {
}
}
}
public void operateLog ( HttpServletRequest request , String menugn ) {
String ipAddr = request . getRemoteAddr ( ) ;
ipAddr = "BMXT" + ipAddr ;
Connection conn = null ;
PreparedStatement prep = null ;
String sql = "insert into tf_l_operaelog (IPADDR,OPTRID,OPERAESITEID,OPERAEMENUITEM,OPERAEGN,OPERAETIME) values(?,?,?,?,'查询',now())" ;
try {
conn = DbConn . getConn ( ) ;
conn . setAutoCommit ( true ) ;
prep = conn . prepareStatement ( sql ) ;
prep . setString ( 1 , ipAddr ) ;
prep . setString ( 2 , this . departid ) ;
prep . setString ( 3 , this . empname ) ;
prep . setString ( 4 , para_menu . fget ( "menuname" , 0 ) ) ;
prep . executeUpdate ( ) ;
} catch ( Exception e ) {
} finally {
try {
if ( prep ! = null ) prep . close ( ) ;
if ( conn ! = null ) conn . close ( ) ;
} catch ( Exception e ) {
}
}
}
public String getManagerType ( ) {
if ( Common . isNull ( emppro ) ) {
emppro = "NONE" ;
}
return emppro ;
}
/ * *
* @return Returns the departid .
* /
public String getDepartid ( ) {
return this . departid ;
}
public String getSanyuan ( ) {
return sanyuan ;
}
public void setSanyuan ( String sanyuan ) {
this . sanyuan = sanyuan ;
}
public String getMenu ( ) {
return menu ;
}
public void setMenu ( String menu ) {
this . menu = menu ;
}
/ * *
* @param departid The departid to set .
* /
public void setDepartid ( String departid ) {
this . departid = departid ;
}
/ * *
* @return Returns the departtypeid .
* /
public String getDeparttypeid ( ) {
return this . departtypeid ;
}
/ * *
* @param departtypeid The departtypeid to set .
* /
public void setDeparttypeid ( String departtypeid ) {
this . departtypeid = departtypeid ;
}
/ * *
* @return Returns the departname .
* /
public String getDepartname ( ) {
return this . departname ;
}
/ * *
* @param departname The departname to set .
* /
public void setDepartname ( String departname ) {
this . departname = departname ;
}
/ * *
* @return Returns the empname .
* /
public String getEmpname ( ) {
return this . empname ;
}
/ * *
* @param empname The empname to set .
* /
public void setEmpname ( String empname ) {
this . empname = empname ;
}
/ * *
* @return Returns the emppro .
* /
public String getEmppro ( ) {
return this . emppro ;
}
/ * *
* @param emppro The emppro to set .
* /
public void setEmppro ( String emppro ) {
this . emppro = emppro ;
}
/ * *
* @return Returns the emppwd .
* /
public String getEmppwd ( ) {
return this . emppwd ;
}
/ * *
* @param emppwd The emppwd to set .
* /
public void setEmppwd ( String emppwd ) {
this . emppwd = emppwd ;
}
/ * *
* @return Returns the jobcode .
* /
public String getJobcode ( ) {
return this . jobcode ;
}
/ * *
* @param jobcode The jobcode to set .
* /
public void setJobcode ( String jobcode ) {
this . jobcode = jobcode ;
}
/ * *
* @return Returns the parentdeptid .
* /
public String getParentdeptid ( ) {
return this . parentdeptid ;
}
/ * *
* @param parentdeptid The parentdeptid to set .
* /
public void setParentdeptid ( String parentdeptid ) {
this . parentdeptid = parentdeptid ;
}
/ * *
* @return Returns the optrid .
* /
public String getEmpid ( ) {
return this . optrid ;
}
/ * *
* @param optrid The optrid to set .
* /
public void setEmpid ( String empid ) {
this . optrid = empid ;
}
/ * *
* @return Returns the frameworkid .
* /
public String getCompanyid ( ) {
return this . frameworkid ;
}
/ * *
* @param frameworkid The frameworkid to set .
* /
public void setCompanyid ( String companyid ) {
this . frameworkid = companyid ;
}
public String getDepartlvlid ( ) {
return departlvlid ;
}
public void setDepartlvlid ( String departlvlid ) {
this . departlvlid = departlvlid ;
}
/ * *
* @return Returns the optrareaid .
* /
public String getAreaid ( ) {
return this . optrareaid ;
}
/ * *
* @param optrareaid The optrareaid to set .
* /
public void setAreaid ( String areaid ) {
this . optrareaid = areaid ;
}
}