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 queryMenu1(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"); 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 ,(CASE WHEN b.web_workobject IS NULL THEN '0' ELSE '1' END) 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"); 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 editTree(HttpServletRequest request, HttpServletResponse response) throws Exception { ManagerServlet ms=new ManagerServlet(); String menuitem=request.getParameter("menuitem"); String companyid=request.getParameter("companyid"); 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(); queryMenu1(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 { } }