package com.nis.web.service.basics; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.nis.domain.Page; import com.nis.domain.basics.CommonGroupInfo; import com.nis.domain.basics.IpCommCfg; import com.nis.domain.basics.UrlCommCfg; import com.nis.exceptions.MaatConvertException; import com.nis.util.ConfigServiceUtil; import com.nis.util.StringUtil; import com.nis.web.dao.basics.CommonGroupManageDao; import com.nis.web.dao.basics.IpCommGroupCfgDao; import com.nis.web.dao.basics.UrlCommGroupDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; @Service public class CommonGroupManageService extends BaseService{ @Autowired private CommonGroupManageDao commonGroupManageDao; @Autowired private IpCommGroupCfgDao ipCommGroupCfgDao; // 校验分组时使用 @Autowired private UrlCommGroupDao urlCommGroupDao; public Page findCommonGroupInfoList(Page page, CommonGroupInfo entity) { entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); entity.setPage(page); List list=commonGroupManageDao.findCommonGroupInfoList(entity); page.setList(list); return page; } public CommonGroupInfo getById(int id) { CommonGroupInfo groupInfo=commonGroupManageDao.getById(id); return groupInfo; } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveOrUpdate(CommonGroupInfo entity) throws MaatConvertException{ entity.setIsValid(1); if(entity.getGroupId()==null){ // 新增 Date createTime=new Date(); entity.setCreatorId(UserUtils.getUser().getId()); entity.setCreateTime(createTime); // 获取GroupId int serviceGroupId=0; List groupIds= ConfigServiceUtil.getId(2,1); if(groupIds.size()>0) { serviceGroupId=groupIds.get(0).intValue(); }else { throw new MaatConvertException("Get group id failed"); } entity.setServiceGroupId(serviceGroupId); commonGroupManageDao.insert(entity); }else{ // 修改 Date editTime=new Date(); entity.setEditorId(UserUtils.getUser().getId()); entity.setEditTime(editTime); commonGroupManageDao.update(entity); } } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void deldete(String ids, int isValid){ CommonGroupInfo entity=new CommonGroupInfo(); Date editTime=new Date(); entity.setEditorId(UserUtils.getUser().getId()); entity.setEditTime(editTime); entity.setIsValid(isValid); if(!StringUtil.isEmpty(ids)){ for (String id : ids.split(",")) { if(!StringUtil.isEmpty(id)){ entity.setGroupId(Integer.parseInt(id)); commonGroupManageDao.update(entity); } } } } // 分组配置界面使用 public List findCommonGroupInfosByType(int type) { List list=commonGroupManageDao.findCommonGroupInfosByType(type); return list; } // 导出时使用 public List findGroupInfoList(String ids) { List list=commonGroupManageDao.findGroupInfoList(ids); return list; } /** * 删除时校验分组是否被引用,未被引用可删除 * @param groupIds * @return false未被引用 / true已被引用 */ public boolean checkIsIssued(String groupIds) { // 组织格式 Map> map = new HashMap>(); for(String str : groupIds.split(",")) { Integer id = Integer.valueOf(str.substring(0, str.indexOf("_"))); Integer type = Integer.valueOf(str.substring(str.indexOf("_")+1)); if(map.containsKey(type)) { Set set = map.get(type); set.add(id); map.put(type, set); }else { Set set = new HashSet(); set.add(id); map.put(type, set); } } // 根据类型去相应配置查询,若存在被引用的则限制操作 Set keySet = map.keySet(); for (Integer type : keySet) { Set set = map.get(type); String str = set.toString(); String ids = str.substring(1, str.indexOf("]")); if(type == 5) { List list = ipCommGroupCfgDao.getCfgInfoByGroupIds(ids); if(list.size() > 0) { return true; } }else if(type == 7) { List list = urlCommGroupDao.getCfgInfoByGroupIds(ids); if(list.size() > 0) { return true; } } } return false; } }