package com.nis.web.controller.basics; import java.util.Arrays; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.nis.domain.Page; import com.nis.domain.basics.SysDictInfo; import com.nis.util.StringUtil; import com.nis.util.StringUtils; import com.nis.web.controller.BaseController; @Controller @RequestMapping(value = "${adminPath}/basics/sysDictInfo") public class SysDictInfoController extends BaseController { @ModelAttribute public SysDictInfo get(@RequestParam(required=false) Integer sysDictId) { if (!StringUtil.isEmpty(sysDictId)){ return sysDictInfoService.getDictById(sysDictId); }else{ return new SysDictInfo(); } } /** * 根据sysDictId查出配置对象 * @param sysDictId * @param request * @param response * @param model * @return */ @ResponseBody @RequestMapping(value = "loadDataDict") public SysDictInfo loadDataDict(@RequestParam(required=false) Integer sysDictId,HttpServletRequest request, HttpServletResponse response, Model model){ return sysDictInfoService.getDictById(sysDictId); } /** * 查询业务辅助表-生效范围系统字典信息列表(无条件分页查询) * @param sysDictInfo * @param request * @param response * @param model * @return */ @RequiresPermissions("sys:dict:view") @RequestMapping(value = {"list", ""}) public String list(String itType, SysDictInfo sysDictInfo,HttpServletRequest request, HttpServletResponse response, Model model, Integer selectedType) { //处理数据 String[] strArr = itType.split("-"); Integer[] intArr = new Integer[strArr.length]; for(int i=0;i page = sysDictInfoService.findTopDictList(new Page(request, response), sysDictInfo,intArr); model.addAttribute("page", page); //查出所有数据 List allList = sysDictInfoService.findAllDictList(); //处理数据,保留顶层中的所有下层数据 List list = Lists.newArrayList(); for(int i=allList.size()-1;i>=0;i--){ SysDictInfo se = allList.get(i); if(se!=null&&se.getParent()!=null&&se.getParent().getSysDictId()!=null&&se.getParent().getSysDictId()==0){ allList.remove(se); } } allList.addAll(page.getList()); SysDictInfo.sortList(list,allList,0,true); model.addAttribute("itType", itType); model.addAttribute("intArr", Arrays.asList(intArr)); model.addAttribute("list", list); return "/basics/sysDictList"; } /** * 查询业务辅助表-系统字典信息列表(含条件查询) * @param sysDictInfo * @param request * @param response * @param model * @return */ @RequiresPermissions("sys:dict:view") @RequestMapping(value = {"searchList"}) public String searchList(String itType, SysDictInfo sysDictInfo,HttpServletRequest request, HttpServletResponse response, Model model, Integer selectedType) { if(StringUtils.strIsBlank(sysDictInfo.getItemValue()) &&StringUtils.strIsBlank(sysDictInfo.getItemCode()) &&sysDictInfo.getBeginDate()==null &&sysDictInfo.getEndDate()==null){ if(sysDictInfo.getItemType()!=null){ selectedType = sysDictInfo.getItemType(); return "redirect:"+ adminPath + "/basics/sysDictInfo/list?itType="+itType+"&selectedType="+selectedType; } return "redirect:"+ adminPath + "/basics/sysDictInfo/list?itType="+itType; } String[] strArr = itType.split("-"); Integer[] intArr = new Integer[strArr.length]; for(int i=0;i allList = sysDictInfoService.findAllDictSearchList(sysDictInfo,intArr); //查出条件查询顶层分页数据 Page page = sysDictInfoService.findDictTopSearchList(new Page(request, response), sysDictInfo,intArr); model.addAttribute("page", page); //处理数据,保留顶层中的所有下层数据 List list = Lists.newArrayList(); //取出主键优化处理 List tempList = Lists.newArrayList(); for(SysDictInfo se:page.getList()){ if(se!=null&&se.getSysDictId()!=null){ tempList.add(se.getSysDictId()); } } //删除所有重复 for(int i=allList.size()-1;i>=0;i--){ SysDictInfo se = allList.get(i); //System.out.println("删前顺序"+se.getSysDictId()); if(se!=null&&se.getSysDictId()!=null){ if(tempList.contains(se.getSysDictId())||se.getParent().getSysDictId()==0){ allList.remove(se); } } } /* for(int i=allList.size()-1;i>=0;i--){ SysDictInfo se = allList.get(i); System.out.println("删后顺序"+se.getSysDictId()); }*/ allList.addAll(page.getList()); SysDictInfo.sortList(list,allList,0,true); /*for(int i=list.size()-1;i>=0;i--){ SysDictInfo se = list.get(i); System.out.println("最终顺序"+se.getSysDictId()+":"+se.getParent().getSysDictId()); }*/ model.addAttribute("itType", itType); model.addAttribute("intArr", Arrays.asList(intArr)); model.addAttribute("list", list); return "/basics/sysDictInfoSearchList"; } /** * 进入添加或修改页面 * @param sysDictInfo * @param model * @return */ @RequestMapping(value={"form"}) public String form(SysDictInfo sysDictInfo, Model model, String doAction, String itType) { if(doAction!=null&&doAction.equals("0")){ return "/basics/sysDictInfo"; } if (sysDictInfo.getParent() == null || sysDictInfo.getParent().getSysDictId() == null||sysDictInfo.getParent().getSysDictId() == 0) { SysDictInfo parent = new SysDictInfo(); parent.setSysDictId(0); parent.setItemValue("根节点"); sysDictInfo.setParent(parent); } String[] strArr = itType.split("-"); Integer[] intArr = new Integer[strArr.length]; for(int i=0;i> treeData(@RequestParam(required=false) String extId,@RequestParam(required=false) String isShowHide, HttpServletResponse response, String itType) { List> mapList = Lists.newArrayList(); Map map2 = Maps.newHashMap(); map2.put("id", 0); map2.put("pId", 0); map2.put("name","根节点"); //map2.put("placeholder","0"); mapList.add(map2); //找出该类型所有的非叶子配置 List list = sysDictInfoService.findAllNoLeafDictList(itType); for (int i=0; i map = Maps.newHashMap(); map.put("id", sysDictInfo.getSysDictId()); map.put("pId", sysDictInfo.getParent().getSysDictId()); map.put("name",sysDictInfo.getItemValue()); mapList.add(map); } } return mapList; } /** * 校验itemCode是否重复 * @param itemCode * @return */ @ResponseBody @RequestMapping(value = "isItemCodeRepeat") public boolean isItemCodeRepeat(String itemCode,String oldItemCode) { List list = Lists.newArrayList(); if(oldItemCode!=null&&itemCode.trim().equals(oldItemCode.trim())){ return true; } if(!StringUtil.isEmpty(itemCode)){ list = sysDictInfoService.findByItemCode(itemCode); } if(list==null||list.size()==0){ return true; } return false; } /** * 校验上下级配置数据类型 * @param parent 父级id * param parent 子级类型 * @return */ @ResponseBody @RequestMapping(value = "ajaxType") public boolean ajaxType(Integer parent,Integer child) { if(parent==-1||parent==0){ return true; } SysDictInfo p = sysDictInfoService.getDictById(parent); if(p.getItemType()==child){ return true; } return false; } /** * 校验更改数据类型后校验数据类型是否与下级冲突 * @param parent 父级id * param parent 子级类型 * @return */ @ResponseBody @RequestMapping(value = "ajaxChildrenType") public boolean ajaxChildrenType(Integer parent,Integer newItemType) { if(parent==null){ return true; } //比较下级任意一个对象 List list = sysDictInfoService.getDictByParentId(parent); if(list==null||list.size()==0){ return true; }else{ for(SysDictInfo sysDictInfo:list){ if(sysDictInfo.getItemType()==newItemType){ return true; } } } return false; } /** * 根据id取itemType * @return */ @ResponseBody @RequestMapping(value = "ajaxItemType") public Integer ajaxItemType(Integer parent) { if(parent==0||parent==-1){ return 0; } SysDictInfo p = sysDictInfoService.getDictById(parent); return p.getItemType(); } /** * 校验叶子节点有下级不得更改为叶子节点 * @return */ @ResponseBody @RequestMapping(value = "ajaxLeafChange") public boolean ajaxLeafChange(Integer parent,Integer newIsLeaf) { if(parent==null||parent==0){ return true; } List list = sysDictInfoService.getDictByParentId(parent); if(list==null||list.size()==0){ return true; }else{ if(newIsLeaf==0){ return true; } } return false; } /** * 校验叶子节点无父级不得更改为叶子节点 * @return */ @ResponseBody @RequestMapping(value = "ajaxLeafHasTree") public boolean ajaxLeafHasTree(Integer serviceDictId,Integer newIsLeaf,Integer parentId) { if(parentId==null||parentId==0||parentId==-1){ if(newIsLeaf==0){ return true; } } if(parentId!=null&&parentId!=0){ return true; } return false; } /** * 校验层级关系 * @return */ @ResponseBody @RequestMapping(value = "isLevelTotalSure") public boolean isLevelTotalSure(Integer parentId,Integer currentId) { if(parentId==-1||parentId==0){ return true; }else{ SysDictInfo p = sysDictInfoService.getDictById(parentId); if(currentId==null){ if(p.getLevelNo()<4){ return true; } }else{ SysDictInfo c = sysDictInfoService.getDictById(currentId); if((p.getLevelNo()+c.getLevelNo())<5){ return true; } } } return false; } }