package com.nis.web.service.basics; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.google.common.collect.Lists; import com.nis.domain.Page; import com.nis.domain.SysUser; import com.nis.domain.basics.SysDictInfo; import com.nis.util.StringUtil; import com.nis.web.dao.basics.SysDictInfoDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; @Service public class SysDictInfoService extends BaseService{ @Autowired private SysDictInfoDao sysDictInfoDao; /** * 查询顶层分页(含条件查询,考虑排序接入可行性) * @param page * @param sysDictInfo * @param itType * @return */ public Page findTopDictList(Page page, SysDictInfo sysDictInfo, Integer[] itType) { // 设置分页参数 sysDictInfo.setPage(page); //根据条件查询符合数据 List allList = Lists.newArrayList(); Integer tempType = 0; if(sysDictInfo.getItemType()!=null){ tempType = sysDictInfo.getItemType(); } if(itType.length==1){ sysDictInfo.setItemType(itType[0]); allList = sysDictInfoDao.findTopDictList(sysDictInfo); } if(itType.length==2){ if(tempType!=0){ allList = sysDictInfoDao.findTopDictList(sysDictInfo); }else{ List tempIntegerList = Lists.newArrayList(); tempIntegerList.add(1);tempIntegerList.add(2);tempIntegerList.add(3); if(tempIntegerList.contains(itType[0])){ tempIntegerList.remove(itType[0]); } if(tempIntegerList.contains(itType[1])){ tempIntegerList.remove(itType[1]); } sysDictInfo.setItemType(tempIntegerList.get(0)); allList = sysDictInfoDao.findTopDictListN(sysDictInfo); } } //allList = sysDictInfoDao.findDictTopSearchList(sysDictInfo); if(tempType!=0){ sysDictInfo.setItemType(tempType); }else{ sysDictInfo.setItemType(null); } SysDictInfo tempSe = new SysDictInfo(); tempSe.setSysDictId(0); for(SysDictInfo se:allList){ se.setParent(tempSe); } page.setList(allList); return page; } /** * 查询所有数据 * @param page * @param sysDictInfo * @param intArr * @return */ public List findAllSysDictInfo(SysDictInfo sysDictInfo, Integer[] itType,String orderBy) { List list = Lists.newArrayList(); Integer tempType = 0; if(sysDictInfo.getItemType()!=null){ tempType = sysDictInfo.getItemType(); } if(itType.length==1){ sysDictInfo.setItemType(itType[0]); list = sysDictInfoDao.findAllSysDictInfo(sysDictInfo,orderBy); } if(itType.length==2){ if(tempType!=0){ list = sysDictInfoDao.findAllSysDictInfo(sysDictInfo,orderBy); }else{ List tempIntegerList = Lists.newArrayList(); tempIntegerList.add(1);tempIntegerList.add(2);tempIntegerList.add(3); if(tempIntegerList.contains(itType[0])){ tempIntegerList.remove(itType[0]); } if(tempIntegerList.contains(itType[1])){ tempIntegerList.remove(itType[1]); } sysDictInfo.setItemType(tempIntegerList.get(0)); list = sysDictInfoDao.findAllSysDictInfoN(sysDictInfo,orderBy); } } if(tempType!=0){ sysDictInfo.setItemType(tempType); }else{ sysDictInfo.setItemType(null); } return list; } /** * 查询所有有效字典配置 */ public List findAllDictList() { return sysDictInfoDao.findAllDictList(new SysDictInfo()); } /** * 根据主键查询生效范围字典详细信息 * @param sysDictId * @return */ public SysDictInfo getDictById(Integer sysDictId) { return sysDictInfoDao.getDictById(sysDictId); } /** * 新增或修改生效范围字典表 * @param sysDictInfo */ public void saveOrUpdate(SysDictInfo sysDictInfo) { if(sysDictInfo.getParent()==null ||(sysDictInfo.getParent()!=null&&sysDictInfo.getParent().getSysDictId()==null) ||(sysDictInfo.getParent()!=null&&sysDictInfo.getParent().getSysDictId()==-1) ||(sysDictInfo.getParent()!=null&&sysDictInfo.getParent().getSysDictId()==0) ){ SysDictInfo parent = new SysDictInfo(); parent.setSysDictId(0); parent.setLevelNo(0); sysDictInfo.setParent(parent); } if(sysDictInfo.getParent().getSysDictId()!=0){ SysDictInfo parent = sysDictInfoDao.getDictById(sysDictInfo.getParent().getSysDictId()); sysDictInfo.setParent(parent); } SysUser user = UserUtils.getUser(); if(StringUtil.isEmpty(sysDictInfo.getSysDictId())) {//新增 sysDictInfo.setLevelNo(sysDictInfo.getParent().getLevelNo()+1); sysDictInfo.setIsValid(1); sysDictInfo.setSysDictCreator(user); sysDictInfo.setCreateTime(new Date()); sysDictInfo.setSysDictEditor(user); sysDictInfo.setEditTime(sysDictInfo.getCreateTime()); sysDictInfoDao.insertDict(sysDictInfo); } else {//修改 List resultList = Lists.newArrayList(); List list = sysDictInfoDao.getDictByParentId(sysDictInfo.getSysDictId()); //处理层级 if(sysDictInfo.getParent().getSysDictId()==0){ sysDictInfo.setLevelNo(1); //处理子集 childLevel(sysDictInfo,list,resultList); }else{ sysDictInfo.setLevelNo(sysDictInfo.getParent().getLevelNo()+1); //处理子集 childLevel(sysDictInfo,list,resultList); } sysDictInfo.setSysDictEditor(user); sysDictInfo.setEditTime(new Date()); for(SysDictInfo sc:resultList){ sysDictInfoDao.updateLevelNo(sc); } sysDictInfoDao.update(sysDictInfo); } } //处理子集层级 public void childLevel(SysDictInfo sysDictInfo, List list,List resultList){ for(SysDictInfo se:list){ se.setLevelNo(sysDictInfo.getLevelNo()+1); resultList.add(se); List newList = sysDictInfoDao.getDictByParentId(se.getSysDictId()); childLevel(se,newList,resultList); } } /** * 删除 * @param sysDictInfo */ @Transactional(readOnly = false) public void deleteDict(String mulitId) { String[] ids = mulitId.split(","); for(String id:ids){ if (!id.equals("")) { List list = Lists.newArrayList(); SysDictInfo sysDictInfo = sysDictInfoDao.getDictById(Integer.valueOf(id)); if(sysDictInfo!=null){ SysDictInfo.sortList(list, sysDictInfoDao.findAllDictList(new SysDictInfo()), sysDictInfo.getSysDictId(), true); list.add(sysDictInfo); for(SysDictInfo se:list){ se.setIsValid(0); sysDictInfoDao.delete(se); } } } } } /** * 查询该类型所有的非叶子配置 * @param itType * @return */ public List findAllNoLeafDictList(String itType) { List list = Lists.newArrayList(); String[] strArr = itType.split("-"); Integer[] intArr = new Integer[strArr.length]; for(int i=0;i tempList = sysDictInfoDao.findAllNoLeafDictList(intArr[i]); for(SysDictInfo sysDictInfo:tempList){ list.add(sysDictInfo); } } return list; } /** * 根据itemCode查出对象集合 * @param itemCode * @return */ public List findByItemCode(String itemCode) { return sysDictInfoDao.findByItemCode(itemCode); } /** * 根据上级id选出所有下级 * @param parent * @return */ public List getDictByParentId(Integer parentId) { return sysDictInfoDao.getDictByParentId(parentId); } }