This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/java/com/nis/web/controller/basics/ServiceDictInfoController.java

461 lines
14 KiB
Java
Raw Normal View History

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.apache.zookeeper.ZooDefs.Ids;
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.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.controller.BaseController;
@Controller
@RequestMapping(value = "${adminPath}/basics/serviceDictInfo")
public class ServiceDictInfoController extends BaseController {
@ModelAttribute
public ServiceDictInfo get(@RequestParam(required=false) Integer serviceDictId) {
if (!StringUtil.isEmpty(serviceDictId)){
return serviceDictInfoService.getDictById(serviceDictId);
}else{
return new ServiceDictInfo();
}
}
/**
* 根据serviceDictId查出配置对象
* @param serviceDictId
* @param request
* @param response
* @param model
* @return
*/
@ResponseBody
@RequestMapping(value = "loadDataDict")
public ServiceDictInfo loadDataDict(@RequestParam(required=false) Integer serviceDictId,HttpServletRequest request, HttpServletResponse response, Model model){
return serviceDictInfoService.getDictById(serviceDictId);
}
/**
* 查询业务辅助表-业务字典信息列表(无条件分页查询)
* @param serviceDictInfo
* @param request
* @param response
* @param model
* @return
*/
@RequiresPermissions("sys:dict:view")
@RequestMapping(value = {"list", ""})
public String list(String itType, ServiceDictInfo serviceDictInfo,HttpServletRequest request, HttpServletResponse response, Model model,Integer selectedType) {
//处理数据
String[] strArr = itType.split("-");
Integer[] intArr = new Integer[strArr.length];
for(int i=0;i<strArr.length;i++){
intArr[i] = Integer.valueOf(strArr[i]);
}
if(serviceDictInfo.getItemType()!=null){
model.addAttribute("selectedType", serviceDictInfo.getItemType());
}else{
model.addAttribute("selectedType", selectedType);
serviceDictInfo.setItemType(selectedType);
}
//查出顶层分页数据
Page<ServiceDictInfo> page = serviceDictInfoService.findTopDictList(new Page<ServiceDictInfo>(request, response), serviceDictInfo,intArr);
model.addAttribute("page", page);
//查出所有数据
List<ServiceDictInfo> allList = serviceDictInfoService.findAllDictList();
//处理数据,保留顶层中的所有下层数据
List<ServiceDictInfo> list = Lists.newArrayList();
for(int i=allList.size()-1;i>=0;i--){
ServiceDictInfo se = allList.get(i);
if(se!=null&&se.getParent()!=null&&se.getParent().getServiceDictId()!=null&&se.getParent().getServiceDictId()==0){
allList.remove(se);
}
}
allList.addAll(page.getList());
ServiceDictInfo.sortList(list,allList,0,true);
model.addAttribute("itType", itType);
model.addAttribute("intArr", Arrays.asList(intArr));
model.addAttribute("list", list);
return "/basics/serviceDictList";
}
/**
* 查询业务辅助表-业务字典信息列表(含条件查询)
* @param serviceDictInfo
* @param request
* @param response
* @param model
* @return
*/
@RequiresPermissions("sys:dict:view")
@RequestMapping(value = {"searchList"})
public String searchList(String itType, ServiceDictInfo serviceDictInfo,HttpServletRequest request, HttpServletResponse response, Model model,Integer selectedType) {
if(StringUtils.strIsBlank(serviceDictInfo.getItemValue())
&&StringUtils.strIsBlank(serviceDictInfo.getItemCode())
&&serviceDictInfo.getBeginDate()==null
&&serviceDictInfo.getEndDate()==null
&&serviceDictInfo.getEditBeginDate()==null
&&serviceDictInfo.getEditEndDate()==null){
if(serviceDictInfo.getItemType()!=null){
selectedType = serviceDictInfo.getItemType();
return "redirect:"+ adminPath + "/basics/serviceDictInfo/list?itType="+itType+"&selectedType="+selectedType;
}
return "redirect:"+ adminPath + "/basics/serviceDictInfo/list?itType="+itType;
}
String[] strArr = itType.split("-");
Integer[] intArr = new Integer[strArr.length];
for(int i=0;i<strArr.length;i++){
intArr[i] = Integer.valueOf(strArr[i]);
}
if(serviceDictInfo.getItemType()!=null){
model.addAttribute("selectedType", serviceDictInfo.getItemType());
}else{
model.addAttribute("selectedType", selectedType);
serviceDictInfo.setItemType(selectedType);
}
String searchType = null;
String searchContent = null;
if(!StringUtils.isBlank(serviceDictInfo.getItemCode())){
searchType = "itemCode";
searchContent = serviceDictInfo.getItemCode();
}
if(!StringUtils.isBlank(serviceDictInfo.getItemValue())){
searchType = "itemValue";
searchContent = serviceDictInfo.getItemValue();
}
model.addAttribute("searchType", searchType);
model.addAttribute("searchContent", searchContent);
//先查出条件查询所有数据(注意顺序)
List<ServiceDictInfo> allList = serviceDictInfoService.findAllDictSearchList(serviceDictInfo,intArr);
//查出条件查询顶层分页数据
Page<ServiceDictInfo> page = serviceDictInfoService.findDictTopSearchList(new Page<ServiceDictInfo>(request, response), serviceDictInfo,intArr);
model.addAttribute("page", page);
//处理数据,保留顶层中的所有下层数据
List<ServiceDictInfo> list = Lists.newArrayList();
//取出主键优化处理
List<Integer> tempList = Lists.newArrayList();
for(ServiceDictInfo se:page.getList()){
if(se!=null&&se.getServiceDictId()!=null){
tempList.add(se.getServiceDictId());
}
}
//删除所有重复
for(int i=allList.size()-1;i>=0;i--){
ServiceDictInfo se = allList.get(i);
if(se!=null&&se.getServiceDictId()!=null){
2018-03-09 14:08:27 +08:00
if(tempList.contains(se.getServiceDictId())||se.getParent().getServiceDictId()==0){
allList.remove(se);
}
}
}
allList.addAll(page.getList());
ServiceDictInfo.sortList(list,allList,0,true);
2018-03-09 14:08:27 +08:00
//serviceDictInfo.setItemType(selectedType);
model.addAttribute("itType", itType);
model.addAttribute("intArr", Arrays.asList(intArr));
model.addAttribute("list", list);
return "/basics/serviceDictInfoSearchList";
}
/**
* 进入添加或修改页面
* @param serviceDictInfo
* @param model
* @return
*/
@RequestMapping(value={"form"})
public String form(ServiceDictInfo serviceDictInfo, Model model,String doAction,String itType, String mulitId) {
if(doAction!=null&&doAction.equals("0")){
return "/basics/serviceDictInfo";
}
Integer id=0;
if(mulitId!=null){
String[] ids = mulitId.split(",");
id = Integer.valueOf(ids[0]);
}
if(id!=0){
serviceDictInfo = serviceDictInfoService.getDictById(id);
}
if (serviceDictInfo.getParent() == null || serviceDictInfo.getParent().getServiceDictId() == null||serviceDictInfo.getParent().getServiceDictId() == 0) {
ServiceDictInfo parent = new ServiceDictInfo();
parent.setServiceDictId(0);
parent.setItemValue("根节点");
serviceDictInfo.setParent(parent);
}
String[] strArr = itType.split("-");
Integer[] intArr = new Integer[strArr.length];
for(int i=0;i<strArr.length;i++){
intArr[i] = Integer.valueOf(strArr[i]);
}
model.addAttribute("intArr", Arrays.asList(intArr));
model.addAttribute("serviceDictInfo", serviceDictInfo);
model.addAttribute("itType", itType);
return "/basics/serviceDictForm";
}
/**
* 新增或修改
* @param serviceDictInfo
* @param model
* @param redirectAttributes
* @return
*/
@RequiresPermissions("sys:dict:edit")
@RequestMapping(value = "saveOrUpdate")
public String saveOrUpdate(ServiceDictInfo serviceDictInfo,Model model, RedirectAttributes redirectAttributes,String itType) {
try {
serviceDictInfoService.saveOrUpdate(serviceDictInfo);
addMessage(redirectAttributes, "保存成功");
} catch (Exception e) {
e.printStackTrace();
addMessage(redirectAttributes, "保存失败!");
}
return "redirect:" + adminPath + "/basics/serviceDictInfo/list?itType="+itType;
}
/**
* 删除(删除时删除所有下级菜单)
* @param serviceDictInfo
* @param model
* @return
*/
@RequestMapping(value={"delete"})
public String delete(ServiceDictInfo serviceDictInfo, RedirectAttributes redirectAttributes, String itType, String mulitId) {
try {
serviceDictInfoService.deleteDict(mulitId);
addMessage(redirectAttributes, "删除成功");
} catch (Exception e) {
e.printStackTrace();
addMessage(redirectAttributes, "删除失败!");
}
return "redirect:" + adminPath + "/basics/serviceDictInfo/list?itType="+itType;
}
/**
* isShowHide是否显示隐藏菜单
* @param extId
* @param isShowHidden
* @param response
* @return
*/
@RequiresPermissions("user")
@ResponseBody
@RequestMapping(value = "treeData")
public List<Map<String, Object>> treeData(@RequestParam(required=false) String extId,@RequestParam(required=false) String isShowHide, HttpServletResponse response, String itType) {
List<Map<String, Object>> mapList = Lists.newArrayList();
Map<String, Object> map2 = Maps.newHashMap();
map2.put("id", 0);
map2.put("pId", 0);
map2.put("name","根节点");
//map2.put("placeholder","0");
mapList.add(map2);
//找出该类型所有的非叶子配置
List<ServiceDictInfo> list = serviceDictInfoService.findAllNoLeafDictList(itType);
for (int i=0; i<list.size(); i++){
ServiceDictInfo serviceDictInfo = list.get(i);
if (StringUtils.isBlank(extId) || (extId !=null && !extId.equals(serviceDictInfo.getServiceDictId().toString()))) {
if(serviceDictInfo.getIsValid().equals(0)){
continue;
}
Map<String, Object> map = Maps.newHashMap();
map.put("id", serviceDictInfo.getServiceDictId());
map.put("pId", serviceDictInfo.getParent().getServiceDictId());
map.put("name",serviceDictInfo.getItemValue());
/*if(serviceDictInfo.getParent().getServiceDictId()!=0){
ServiceDictInfo parent = serviceDictInfoService.getDictById(serviceDictInfo.getParent().getServiceDictId());
//map.put("placeholder",parent.getItemType().toString());
}*/
mapList.add(map);
}
}
return mapList;
}
/**
* 校验itemCode是否重复
* @param itemCode
* @return
*/
@ResponseBody
@RequestMapping(value = "isItemCodeRepeat")
public boolean isItemCodeRepeat(String itemCode,String oldItemCode) {
List<ServiceDictInfo> list = Lists.newArrayList();
if(oldItemCode!=null&&itemCode.trim().equals(oldItemCode.trim())){
return true;
}
if(!StringUtil.isEmpty(itemCode)){
list = serviceDictInfoService.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;
}
ServiceDictInfo p = serviceDictInfoService.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<ServiceDictInfo> list = serviceDictInfoService.getDictByParentId(parent);
if(list==null||list.size()==0){
return true;
}else{
for(ServiceDictInfo serviceDictInfo:list){
if(serviceDictInfo.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;
}
ServiceDictInfo p = serviceDictInfoService.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<ServiceDictInfo> list = serviceDictInfoService.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{
ServiceDictInfo p = serviceDictInfoService.getDictById(parentId);
if(currentId==null){
if(p.getLevelNo()<4){
return true;
}
}else{
ServiceDictInfo c = serviceDictInfoService.getDictById(currentId);
if((p.getLevelNo()+c.getLevelNo())<5){
return true;
}
}
}
return false;
}
}