package com.zky.manager ;
import com.zky.pub.Common ;
import com.zky.pub.DbConn ;
import com.zky.pub.DispatchServlet ;
import com.zky.pub.HashFmlBuf ;
import com.zky.util.OptionsBean ;
import com.zky.util.PageQuery ;
import com.zky.util.jdbc.HashFmlBufResultSetHandler ;
import com.zky.util.jdbc.JDBCUtils ;
import com.zky.util.jdbc.SingleStringRSHandler ;
import java.io.PrintWriter ;
import java.sql.Connection ;
import java.sql.SQLException ;
import javax.servlet.RequestDispatcher ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
import javax.servlet.http.HttpSession ;
import org.apache.log4j.Logger ;
import org.jdom.Document ;
import org.jdom.Element ;
import org.jdom.output.XMLOutputter ;
public class MenuManageServlet extends DispatchServlet
{
private static final Logger log = Logger . getLogger ( MenuManageServlet . class ) ;
public void queryMenu ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
StringBuffer sql = new StringBuffer ( "select distinct frameworkid,menuitem,menuitemname from tab_menuitem where 1=1" ) ;
String menuitemname = request . getParameter ( "menuitemnameQ" ) ;
String companyid = request . getParameter ( "companyidQ" ) ;
String areaid = request . getParameter ( "areaidQ" ) ;
String menuitem = request . getParameter ( "menuitemQ" ) ;
if ( ( menuitem ! = null ) & & ( ! ( menuitem . equals ( "" ) ) ) ) {
sql . append ( " and menuitem=" ) . append ( menuitemname ) . append ( "'" ) ;
} else {
if ( ( menuitemname ! = null ) & & ( ! ( menuitemname . equals ( "" ) ) ) ) {
sql . append ( " and menuitemname like '%" ) . append ( menuitemname ) . append ( "%'" ) ;
}
if ( ( companyid ! = null ) & & ( ! ( companyid . equals ( "" ) ) ) )
sql . append ( " and frameworkid = '" ) . append ( companyid ) . append ( "'" ) ;
// if ((areaid != null) && (!(areaid.equals(""))))
// sql.append(" and EPARCHYCODE ='").append(areaid).append("'");
}
Connection conn = null ;
try {
conn = DbConn . getConn ( ) ;
//HashFmlBuf buf = (HashFmlBuf)JDBCUtils.query(conn, sql.toString(),new HashFmlBufResultSetHandler());
PageQuery pageQuery = new PageQuery ( conn , sql . toString ( ) , new HashFmlBufResultSetHandler ( ) , request ) ;
HashFmlBuf buf = ( HashFmlBuf ) pageQuery . query ( 20 ) ;
request . setAttribute ( "menu_buf" , buf ) ;
request . getRequestDispatcher ( "/manage/MenuManage.jsp" ) . forward ( request , response ) ;
} catch ( SQLException e ) {
throw e ;
} finally {
JDBCUtils . close ( conn ) ;
}
}
public void deleteMenu ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
String companyid = request . getParameter ( "companyid" ) ;
String menuitem = request . getParameter ( "menuitem" ) ;
String sql = "select count(*) from tab_jobmenu where frameworkid=? and menuitem=?" ;
Connection conn = null ;
try {
conn = DbConn . getConn ( ) ;
String count = ( String ) JDBCUtils . query ( conn , sql , companyid , menuitem , new SingleStringRSHandler ( ) ) ;
if ( ( count ! = null ) & & ( count . compareTo ( "0" ) > 0 ) )
throw new Exception ( Common . toGb ( "此菜单已在角色岗位中使用,无法删除!" ) ) ;
JDBCUtils . update ( conn , "delete from tab_menuitem where menuitem=? and frameworkid=?" ,
menuitem , companyid ) ;
//oracle数据库手动提交, mysql中 自动提交autoCommit();
conn . commit ( ) ;
queryMenu ( request , response ) ;
} catch ( SQLException e ) {
throw e ;
} finally {
JDBCUtils . close ( conn ) ;
}
}
public void newMenuTree ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
String treeid = request . getParameter ( "menuitem" ) ;
String treename = request . getParameter ( "menuitemname" ) ;
String companyid = request . getParameter ( "companyid" ) ;
String areaid = request . getParameter ( "areaid" ) ;
MenuTree tree = new MenuTree ( companyid , areaid , treeid , treename ) ;
request . getSession ( ) . setAttribute ( "menu_tree" , tree ) ;
request . getRequestDispatcher ( "/manage/MenuEdit.jsp" ) . forward ( request , response ) ;
}
public void getMenuTree ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
String companyid = request . getParameter ( "companyid" ) ;
String menuitem = request . getParameter ( "menuitem" ) ;
String sql = "select a.frameworkid,a.menuitem,a.menuitemname,a.menuid,a.menuname,a.menulevel,a.uplevel,decode(b.web_workobject,null,'0','1') as type from tab_menuitem a,tab_funcmodu b where a.menuid=b.funcmoducode(+) and a.frameworkid = ? and a.menuitem =? order by type,a.menuid" ;
Connection conn = null ;
try {
conn = DbConn . getConn ( ) ;
HashFmlBuf buf = ( HashFmlBuf ) JDBCUtils . query ( conn , sql . toString ( ) ,
companyid , menuitem , new HashFmlBufResultSetHandler ( ) ) ;
MenuTree tree = new MenuTree ( ) . init ( buf ) ;
request . getSession ( ) . setAttribute ( "menu_tree" , tree ) ;
} catch ( SQLException e ) {
throw e ;
} finally {
JDBCUtils . close ( conn ) ;
}
request . getRequestDispatcher ( "/manage/MenuEdit.jsp" ) . forward ( request , response ) ;
}
public void addBranch ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
MenuTree tree = ( MenuTree ) request . getSession ( ) . getAttribute ( "menu_tree" ) ;
if ( tree = = null )
throw new Exception ( Common . toGb ( "提示!" ) ) ;
String menuid = request . getParameter ( "menuid" ) ;
String menuName = request . getParameter ( "menuname" ) ;
Connection conn = null ;
try {
conn = DbConn . getConn ( ) ;
JDBCUtils . update ( conn , "insert tab_menu(submenuid,submenuname) values(?,?)" , menuid , menuName ) ;
//oracle数据库手动提交, mysql中 自动提交autoCommit();
conn . commit ( ) ;
} catch ( SQLException e ) {
throw e ;
} finally {
JDBCUtils . close ( conn ) ;
}
}
public void moveNode ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
MenuTree tree = ( MenuTree ) request . getSession ( ) . getAttribute ( "menu_tree" ) ;
String errorinfo = "" ;
if ( tree ! = null ) {
String upMenuId = request . getParameter ( "upmenuid" ) ;
String menuid = request . getParameter ( "menuid" ) ;
String toMenuId = request . getParameter ( "tomenuid" ) ;
if ( ! ( upMenuId . equals ( toMenuId ) ) ) {
MenuBean menu = null ;
if ( upMenuId . equals ( tree . getTreeId ( ) ) )
menu = tree . removeMenu ( menuid ) ;
else
menu = tree . getMenuById ( upMenuId ) . removeChild ( menuid ) ;
if ( toMenuId . equals ( tree . getTreeId ( ) ) )
tree . addMenu ( menu ) ;
else
tree . getMenuById ( toMenuId ) . addChild ( menu ) ;
}
}
else {
errorinfo = "提示!" ; }
response . setContentType ( "text/xml; charset=UTF-8" ) ;
response . setHeader ( "Cache-Control" , "no-cache" ) ;
PrintWriter pw = response . getWriter ( ) ;
pw . write ( errorinfo ) ;
pw . close ( ) ;
}
public void addNode ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
MenuTree tree = ( MenuTree ) request . getSession ( ) . getAttribute ( "menu_tree" ) ;
String errorinfo = "" ;
if ( tree ! = null ) {
String upMenuId = request . getParameter ( "upmenuid" ) ;
String menuid = request . getParameter ( "menuid" ) ;
String menuName = request . getParameter ( "menuname" ) ;
String type = request . getParameter ( "type" ) ;
if ( upMenuId . equals ( tree . getTreeId ( ) ) )
tree . addMenu ( new MenuBean ( menuid , menuName , type ) ) ;
else
tree . addMenu ( upMenuId , new MenuBean ( menuid , menuName , type ) ) ;
}
else {
errorinfo = Common . toGb ( "提示!" ) ;
}
response . setContentType ( "text/xml; charset=UTF-8" ) ;
response . setHeader ( "Cache-Control" , "no-cache" ) ;
PrintWriter pw = response . getWriter ( ) ;
pw . write ( errorinfo ) ;
pw . close ( ) ;
}
public void removeNode ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
MenuTree tree = ( MenuTree ) request . getSession ( ) . getAttribute ( "menu_tree" ) ;
String errorinfo = "" ;
if ( tree ! = null ) {
String menuid = request . getParameter ( "menuid" ) ;
String upMenuid = request . getParameter ( "upmenuid" ) ;
if ( upMenuid . equals ( tree . getTreeId ( ) ) )
tree . removeMenu ( menuid ) ;
else
tree . getMenuById ( upMenuid ) . removeChild ( menuid ) ;
}
else {
errorinfo = Common . toGb ( "提示!" ) ;
}
response . setContentType ( "text/xml; charset=UTF-8" ) ;
response . setHeader ( "Cache-Control" , "no-cache" ) ;
PrintWriter pw = response . getWriter ( ) ;
pw . write ( errorinfo ) ;
pw . close ( ) ;
}
public void getOperList ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
MenuTree tree = ( MenuTree ) request . getSession ( ) . getAttribute ( "menu_tree" ) ;
Element root = new Element ( "root" ) ;
if ( tree ! = null ) {
String menuid = request . getParameter ( "menuid" ) ;
String upMenuid = request . getParameter ( "upmenuid" ) ;
String type = request . getParameter ( "type" ) ;
log . debug ( "type==========" + type ) ;
if ( upMenuid . equals ( "" ) ) {
root . addContent ( new OptionsBean ( "branch" ) . toXML ( ) ) ;
} else {
OptionsBean branchOptions = MenuTreeUtils . getBranchOptions ( tree , menuid , upMenuid , type ) ;
root . addContent ( branchOptions . toXML ( ) ) ;
}
if ( type . equals ( "0" ) ) {
OptionsBean subMenuOptions = MenuTreeUtils . getSubMenuOptions ( tree ) ;
root . addContent ( subMenuOptions . toXML ( ) ) ;
Login login = ( Login ) request . getSession ( ) . getAttribute ( "login" ) ;
String deptlvlid = login . getDepartlvlid ( ) ;
String menuitem = "" ;
//控制级别权限
if ( ! ( deptlvlid . equals ( "0" ) ) )
menuitem = login . menuitem ;
OptionsBean funcOptions = MenuTreeUtils . getFuncOptions ( tree , menuitem ) ;
root . addContent ( funcOptions . toXML ( ) ) ;
} else {
root . addContent ( new OptionsBean ( "submenu" ) . toXML ( ) ) ;
root . addContent ( new OptionsBean ( "func" ) . toXML ( ) ) ;
}
}
Document responseDoc = new Document ( root ) ;
response . setContentType ( "text/xml;charset=UTF-8" ) ;
new XMLOutputter ( ) . output ( responseDoc , response . getWriter ( ) ) ;
}
public void saveTree ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
ManagerServlet ms = new ManagerServlet ( ) ;
String menuitem = request . getParameter ( "menuitem" ) ;
String companyid = request . getParameter ( "companyid" ) ;
HashFmlBuf bufcheck = ms . readTabMenuItem ( menuitem , companyid ) ;
if ( bufcheck ! = null & & bufcheck . getRowCount ( ) > 0 ) {
String errorSmx = "菜单编号为【" + menuitem + "】的记录已经存在!" ;
request . setAttribute ( "errorMenuItem" , Common . toGb ( errorSmx ) ) ;
request . getRequestDispatcher ( "/one/smbx/message.jsp?op=menuitem" ) . forward ( request , response ) ;
return ;
}
MenuTree tree = ( MenuTree ) request . getSession ( ) . getAttribute ( "menu_tree" ) ;
if ( tree = = null )
throw new Exception ( "提示!" ) ;
String menuitemname = request . getParameter ( "menuitemname" ) ;
tree . setTreeName ( menuitemname ) ;
Connection conn = null ;
try {
conn = DbConn . getConn ( ) ;
conn . setAutoCommit ( false ) ;
JDBCUtils . update ( conn , "delete from tab_menuitem where menuitem=? and frameworkid=?" ,
tree . getTreeId ( ) , tree . getCompanyId ( ) ) ;
MenuTreeUtils . saveTree ( conn , tree ) ;
//oracle数据库手动提交, mysql中 自动提交autoCommit();
conn . commit ( ) ;
queryMenu ( request , response ) ;
} catch ( SQLException e ) {
if ( conn ! = null )
conn . rollback ( ) ;
throw e ;
} finally {
JDBCUtils . close ( conn ) ;
}
}
public void defaultMethod ( HttpServletRequest request , HttpServletResponse response ) throws Exception {
}
}