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.ConfigDictUtils; import com.nis.util.Configurations; 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, List itType) { // 设置分页参数 sysDictInfo.setPage(page); //根据条件查询符合数据 sysDictInfo.setConditionType(itType); List allList = sysDictInfoDao.findTopDictList(sysDictInfo); 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, List itType,String orderBy) { sysDictInfo.setConditionType(itType); return sysDictInfoDao.findAllSysDictInfo(sysDictInfo,orderBy); } /** * 查询所有有效字典配置 */ public List findAllDictList() { return sysDictInfoDao.findAllDictList(new SysDictInfo()); } /** * 根据主键查询生效范围字典详细信息 * @param sysDictId * @return */ public SysDictInfo getDictById(Integer sysDictId) { return sysDictInfoDao.getDictById(sysDictId); } /** * 新增或修改生效范围字典表 * @param sysDictInfo */ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) 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,rollbackFor=RuntimeException.class) 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(); List intArr = ConfigDictUtils.dealTypeCondition(Configurations.getStringProperty("SYS_DICT_ITM_TYPE", ""), itType); for(Integer intType:intArr){ List tempList = sysDictInfoDao.findAllNoLeafDictList(intType); list.addAll(tempList); } 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); } public List getDistrictDict(String tableName){ return sysDictInfoDao.getDistrictDict(tableName); } }