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.SysMenu; import com.nis.domain.SysUser; import com.nis.domain.basics.ServiceDictInfo; import com.nis.util.ConfigDictUtils; import com.nis.util.Configurations; import com.nis.util.Constants; import com.nis.util.StringUtil; import com.nis.web.dao.basics.ServiceDictInfoDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; @Service public class ServiceDictInfoService extends BaseService{ @Autowired private ServiceDictInfoDao serviceDictInfoDao; /** * 查询业务字典顶层分页 * @param page * @param serviceDictInfo * @return */ public Page findTopDictList(Page page, ServiceDictInfo serviceDictInfo,List itType) { // 设置分页参数 serviceDictInfo.setPage(page); serviceDictInfo.setConditionType(itType); List parentList = serviceDictInfoDao.findTopDictList(serviceDictInfo); ServiceDictInfo sd = new ServiceDictInfo(); sd.setServiceDictId(0); for(ServiceDictInfo se:parentList){ se.setParent(sd); } page.setList(parentList); return page; } /** * 根据条件查询所有数据 * @param serviceDictInfo * @param itType * @return */ public List findAllServiceDictInfo(ServiceDictInfo serviceDictInfo,List itType,String orderBy){ serviceDictInfo.setConditionType(itType);; return serviceDictInfoDao.findAllServiceDictInfo(serviceDictInfo,orderBy); } /** * 查询所有有效字典配置 * @return */ public List findAllDictList() { return serviceDictInfoDao.findAllDictList(new ServiceDictInfo()); } /** * 查询该类型所有的非叶子配置 */ public List findAllNoLeafDictList(String itType) { List list = Lists.newArrayList(); List intArr = ConfigDictUtils.dealTypeCondition(Configurations.getStringProperty("SERVICE_DICT_ITM_TYPE", ""), itType); for(Integer intType:intArr){ List tempList = serviceDictInfoDao.findAllNoLeafDictList(intType); list.addAll(tempList); } return list; } /** * 查询该类型所有的非叶子配置 */ public List findAllNoLeafDictList(String itType,Integer cfgType) { List list = Lists.newArrayList(); List intArr = ConfigDictUtils.dealTypeCondition(Configurations.getStringProperty("SERVICE_DICT_ITM_TYPE", ""), itType); for(Integer intType:intArr){ List tempList = serviceDictInfoDao.findAllNoLeafDictList(intType); list.addAll(tempList); } return list; } /** * 根据主键查询字典详细信息 * @param serviceDictId * @return */ public ServiceDictInfo getDictById(Integer serviceDictId) { return serviceDictInfoDao.getDictById(serviceDictId); } /** * 根据上级id选出所有下级 * @param parentId * @return */ public List getDictByParentId(Integer parentId) { return serviceDictInfoDao.getDictByParentId(parentId); } /** * 新增或修改业务字典表(添加层级改变) * @param serviceDictInfo */ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveOrUpdate(ServiceDictInfo serviceDictInfo) { if(serviceDictInfo.getParent()==null ||(serviceDictInfo.getParent()!=null&&serviceDictInfo.getParent().getServiceDictId()==null) ||(serviceDictInfo.getParent()!=null&&serviceDictInfo.getParent().getServiceDictId()==-1) ||(serviceDictInfo.getParent()!=null&&serviceDictInfo.getParent().getServiceDictId()==0) ){ ServiceDictInfo parent = new ServiceDictInfo(); parent.setServiceDictId(0); parent.setLevelNo(0); serviceDictInfo.setParent(parent); } if(serviceDictInfo.getParent().getServiceDictId()!=0){ ServiceDictInfo parent = serviceDictInfoDao.getDictById(serviceDictInfo.getParent().getServiceDictId()); serviceDictInfo.setParent(parent); } SysUser user = UserUtils.getUser(); if(StringUtil.isEmpty(serviceDictInfo.getServiceDictId())) {//新增 serviceDictInfo.setLevelNo(serviceDictInfo.getParent().getLevelNo()+1); serviceDictInfo.setIsValid(1); serviceDictInfo.setServiceDictCreator(user); serviceDictInfo.setCreateTime(new Date()); serviceDictInfo.setServiceDictEditor(user); serviceDictInfo.setEditTime(serviceDictInfo.getCreateTime()); serviceDictInfoDao.insertDict(serviceDictInfo); } else {//修改 List resultList = Lists.newArrayList(); List list = serviceDictInfoDao.getDictByParentId(serviceDictInfo.getServiceDictId()); //处理层级 if(serviceDictInfo.getParent().getServiceDictId()==0){ serviceDictInfo.setLevelNo(1); //处理子集 childLevel(serviceDictInfo,list,resultList); }else{ serviceDictInfo.setLevelNo(serviceDictInfo.getParent().getLevelNo()+1); //处理子集 childLevel(serviceDictInfo,list,resultList); } serviceDictInfo.setServiceDictEditor(user); serviceDictInfo.setEditTime(new Date()); for(ServiceDictInfo sc:resultList){ serviceDictInfoDao.updateLevelNo(sc); } serviceDictInfoDao.update(serviceDictInfo); } } //处理子集层级 public void childLevel(ServiceDictInfo serviceDictInfo, List list,List resultList){ for(ServiceDictInfo se:list){ se.setLevelNo(serviceDictInfo.getLevelNo()+1); resultList.add(se); List newList = serviceDictInfoDao.getDictByParentId(se.getServiceDictId()); childLevel(se,newList,resultList); } } /** * 删除 * @param serviceDictInfo */ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void deleteDict(String mulitId) { String[] ids = mulitId.split(","); for(String id:ids){ if (!id.equals("")) { ServiceDictInfo serviceDictInfo = serviceDictInfoDao.getDictById(Integer.valueOf(id)); List list = Lists.newArrayList(); //找出所有下级 //查出所有节点 if(serviceDictInfo!=null){ ServiceDictInfo.sortList(list, serviceDictInfoDao.findAllDictList(new ServiceDictInfo()), serviceDictInfo.getServiceDictId(), true); list.add(serviceDictInfo); for(ServiceDictInfo se:list){ se.setIsValid(0); serviceDictInfoDao.delete(se); } } } } } /** * 根据itemCode查出对象集合 */ public List findByItemCode(String itemCode){ return serviceDictInfoDao.findByItemCode(itemCode); } /** * * findFlDict(查找所有有效的分类) * (这里描述这个方法适用条件 – 可选) * @return *List * @exception * @since 1.0.0 */ public List findFlDict() { return serviceDictInfoDao.findItemDict(Constants.ITEM_TYPE_FL,Constants.VALID_YES,null); } /** * * findFlDict(查找所有有效的分类) * (这里描述这个方法适用条件 – 可选) * @return *List * @exception * @since 1.0.0 */ public List findAllFlDict() { return serviceDictInfoDao.findAllItemDictByItemType(Constants.ITEM_TYPE_FL,null); } /** * * findFlDict(查找所有有效的性质) * (这里描述这个方法适用条件 – 可选) * @return *List * @exception * @since 1.0.0 */ public List findXzDict() { return serviceDictInfoDao.findItemDict(Constants.ITEM_TYPE_XZ,Constants.VALID_YES,null); } /** * * findFlDict(查找所有有效的性质) * (这里描述这个方法适用条件 – 可选) * @return *List * @exception * @since 1.0.0 */ public List findAllXzDict() { return serviceDictInfoDao.findAllItemDictByItemType(Constants.ITEM_TYPE_XZ,null); } /** * * findFlDict(查找所有有效的标签) * (这里描述这个方法适用条件 – 可选) * @return *List * @exception * @since 1.0.0 */ public List findLableDict() { return serviceDictInfoDao.findItemDict(Constants.ITEM_TYPE_LABEL,Constants.VALID_YES,null); } /** * * findFlDict(查找所有有效的标签) * (这里描述这个方法适用条件 – 可选) * @return *List * @exception * @since 1.0.0 */ public List findAllLableDict() { return serviceDictInfoDao.findAllItemDictByItemType(Constants.ITEM_TYPE_LABEL,null); } }