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.ServiceDictInfo; import com.nis.domain.basics.SysDictInfo; import com.nis.util.Configurations; 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,boolean isFilterAction) { //处理数据 sysDictInfo.setIsFilterAction(isFilterAction); String[] strArr = itType.split("-"); Integer[] intArr = new Integer[strArr.length]; for(int i=0;i pageCondition = new Page(request, response); //查询符合条件总数 List allList = sysDictInfoService.findAllSysDictInfo(sysDictInfo,intArr,pageCondition.getOrderBy()); model.addAttribute("showTotalCount", allList.size()); //查出顶层分页数据 Page page = sysDictInfoService.findTopDictList(pageCondition, sysDictInfo,intArr); //植入序号 for(int i=0;i intList = Lists.newArrayList(); for(SysDictInfo se:page.getList()){ if(se!=null){ intList.add(se.getSysDictId()); } } List list = Lists.newArrayList(); for(int i=allList.size()-1;i>=0;i--){ SysDictInfo se = allList.get(i); if(se!=null&&intList.contains(se.getSysDictId())||(se!=null&&se.getParent().getSysDictId()==0)){ allList.remove(se); } } allList.addAll(page.getList()); SysDictInfo.sortList(list,allList,0,true); //处理下级序号 SysDictInfo.addChildrenSeq(list, 0); model.addAttribute("itType", itType); model.addAttribute("intArr", Arrays.asList(intArr)); model.addAttribute("list", list); return "/basics/sysDictList"; } /** * 进入添加或修改页面 * @param sysDictInfo * @param model * @return */ @RequestMapping(value={"form"}) public String form(SysDictInfo sysDictInfo, Model model, String doAction, String itType, String mulitId) { if(doAction!=null&&doAction.equals("0")){ return "/basics/sysDictInfo"; } Integer id=0; if(mulitId!=null){ String[] ids = mulitId.split(","); id = Integer.valueOf(ids[0]); } if(id!=0){ sysDictInfo = sysDictInfoService.getDictById(id); } 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 sysDictId,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) { //获取层级配置 int max = Integer.valueOf(Configurations.getIntProperty("maxLevelNo", 4)); if(parentId==-1||parentId==0){ return true; }else{ SysDictInfo p = sysDictInfoService.getDictById(parentId); if(currentId==null){ if(p.getLevelNo()