查询数据库所有菜单项
@Override
public ListqueryMenuListByUserCode(String userCode) {
ListmenuList = new ArrayList();
String sql = "select * from fpd.T_INTRA_MENU m where m.status=1 "
+ "and m.code in (select rm.menu_Code from fpd.T_INTRA_ROLE_MENU rm "
+ "where rm.role_code in (select ur.role_code from fpd.T_INTRA_USER_ROLE ur"
+ " where ur.USER_CODE= ? )) order by m.order_no desc";
Object[] paramArr = new Object[]{userCode};
List> queryList = jdbcTemplate.queryForList(sql, paramArr);
if (!CollectionUtils.isEmpty(queryList)) {
for (Mapmap : queryList) {
IntraMenu model = new IntraMenu();
model.setId(((BigDecimal)map.get("ID")).longValue());
model.setCode(map.get("CODE").toString());
if(map.get("P_CODE")!=null){
model.setpCode(map.get("P_CODE").toString());
}
model.setRankLevel(((BigDecimal)map.get("RANK_LEVEL")).intValue());
model.setName(map.get("NAME").toString());
if(map.get("URL")!=null){
model.setURL(map.get("URL").toString());
}
model.setOrderNo(((BigDecimal)map.get("ORDER_NO")).intValue());
menuList.add(model);
}
}
return menuList;
}
树形处理
@RequestMapping(value = "/main")
public ModelAndView loginSuccess(HttpServletRequest request, HttpServletResponse response) {
String loginName = request.getParameter("loginName");
ModelAndView mv = new ModelAndView("intra/login/main");
String name = FPDUtils.getUserCode();
mv.addObject("name", name);
ListmenuList = intraBaseQueryService.queryMenuListByUserCode(loginName);
ListpMenuList = new ArrayList();
MultiMap multiMap = new MultiHashMap();
if(CollectionUtils.isNotEmpty(menuList)){
for(IntraMenu menu:menuList){
if(menu.getRankLevel()==2){
String menuCode="",menuName="";
menuCode = menu.getpCode();//找父节点
//根据父节点编码找相应的名称
IntraMenu pMenu = intraBaseQueryService.queryByMenuCode(menuCode);
if(pMenu!=null){
menuName = pMenu.getName();
multiMap.put(menuCode+"@"+menuName, menu);
}else{
logger.error("父节点编码:"+menuCode+"不存在");
}
}else{
menu.setCode(menu.getCode()+"@"+menu.getName());
pMenuList.add(menu);
}
}
}
SetkeySet = multiMap.keySet();
Listlist = new ArrayList();
for(IntraMenu menu:pMenuList){
for(Iteratoriterator =keySet.iterator();iterator.hasNext();){
String mapKey = iterator.next();
if(menu.getCode().equals(mapKey)){
IntraTreeMenu intraTreeMenu = new IntraTreeMenu();
Listchildren = (List) multiMap.get(mapKey);
intraTreeMenu.setCode(mapKey.split("@")[0]);
intraTreeMenu.setName(mapKey.split("@")[1]);
intraTreeMenu.setChildren(children);
list.add(intraTreeMenu);
}
}
}
mv.addObject("menuList", list);
return mv;
}
前端处理