package com.nis.web.service.basics; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.ToMaatBean; import com.nis.domain.maat.ToMaatResult; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.exceptions.MaatConvertException; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtil; import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnIpCfgDao; import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.specific.ConfigGroupInfoDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; import jersey.repackaged.com.google.common.collect.Maps; @Service public class AsnGroupInfoService extends BaseService{ @Autowired private AsnGroupInfoDao asnGroupInfoDao; @Autowired private ConfigGroupInfoDao configGroupInfoDao; @Autowired private AsnIpCfgDao asnIpCfgDao; /** * @param page * @param entity * @return */ public Page findAsnGroupInfoList(Page page, AsnGroupInfo entity) { entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); entity.setPage(page); List list=asnGroupInfoDao.findAsnGroupInfoList(entity); page.setList(list); return page; } public AsnGroupInfo getById(int id) { AsnGroupInfo AsnGroupInfo=asnGroupInfoDao.getById(id); return AsnGroupInfo; } public List getByOrg(String org) { List AsnGroupInfos=asnGroupInfoDao.getConfigGroupInfoByName(org); return AsnGroupInfos; } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveOrUpdate(AsnGroupInfo entity) throws MaatConvertException{ //asn类型从综合服务获取groupId String org=entity.getOrganization().trim().toUpperCase(); String country=entity.getCountry().trim().toUpperCase(); entity.setOrganization(org); entity.setCountry(country); int groupId=0; //获取组织 ConfigGroupInfo configGroupInfo=configGroupInfoDao.getAsnGroupByName(org); if(configGroupInfo==null) { List groupIds= ConfigServiceUtil.getId(2,2); if(groupIds.size()>0) { groupId=groupIds.get(0).intValue(); }else { throw new MaatConvertException("Get asn group id failed"); } configGroupInfo=new ConfigGroupInfo(); configGroupInfo.setGroupName(org.toUpperCase()); configGroupInfo.setIsIssued(0); configGroupInfo.setGroupType(4); configGroupInfo.setGroupId(groupIds.get(1)); configGroupInfo.setInsertTime(new Date()); configGroupInfoDao.insertConfigGroupInfo(configGroupInfo); }else { List groupIds= ConfigServiceUtil.getId(2,1); if(groupIds.size()>0) { groupId=groupIds.get(0).intValue(); }else { throw new MaatConvertException("Get asn group id failed"); } } //新增 if(entity.getGroupId()==null){ Date createTime=new Date(); entity.setCreatorId(UserUtils.getUser().getId()); entity.setCreateTime(createTime); entity.setGroupId(groupId); entity.setIsValid(0); List compileIds= ConfigServiceUtil.getId(1,1); if(compileIds.size()>0) { entity.setCompileId(compileIds.get(0)); }else { throw new MaatConvertException("Get asn group id failed"); } asnGroupInfoDao.insert(entity); //修改 }else{ long id=entity.getId(); AsnGroupInfo group=asnGroupInfoDao.getById(id); int count=asnGroupInfoDao.getCountGroupInfoByName(group.getOrganization()); if(count==1&&!group.getOrganization().equalsIgnoreCase(entity.getOrganization())) { configGroupInfoDao.delAsnGroup(group.getOrganization()); } ConfigGroupInfo configGroupInfo1=configGroupInfoDao.getAsnGroupByName(entity.getOrganization()); if(configGroupInfo1==null) { List groupIds= ConfigServiceUtil.getId(2,2); if(groupIds.size()>0) { groupId=groupIds.get(0).intValue(); }else { throw new MaatConvertException("Get asn group id failed"); } configGroupInfo1=new ConfigGroupInfo(); configGroupInfo1.setGroupName(entity.getOrganization().toUpperCase()); configGroupInfo1.setIsIssued(0); configGroupInfo1.setGroupType(4); configGroupInfo1.setGroupId(groupIds.get(1)); configGroupInfo1.setInsertTime(new Date()); configGroupInfoDao.insertConfigGroupInfo(configGroupInfo1); } Date editTime=new Date(); entity.setEditorId(UserUtils.getUser().getId()); entity.setEditTime(editTime); entity.setGroupId(groupId); asnGroupInfoDao.update(entity); asnIpCfgDao.updateAsn(String.valueOf(entity.getAsnId()),entity.getOrganization(),entity.getCountry(),entity.getDetail()); } } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void delete(String ids,String asnIds){ if(!StringUtil.isEmpty(ids)){ List dicts=DictUtils.getFunctionServiceDictList(600); int result=0; do { result=asnIpCfgDao.deleteByAsnId(asnIds); }while(result>0); for (String id : ids.split(",")) { if(!StringUtil.isEmpty(id)){ AsnGroupInfo entity=asnGroupInfoDao.getById(Integer.parseInt(id)); int valid=entity.getIsValid(); entity.setIsValid(-1); entity.setId(Long.parseLong(id)); asnGroupInfoDao.updateValid(entity); if(asnGroupInfoDao.getCountGroupInfoByName(entity.getOrganization())==0) { configGroupInfoDao.delAsnGroup(entity.getOrganization()); } //取消下发过的编译 if(valid==1) { ToMaatBean maatBean = new ToMaatBean(); MaatCfg maatCfg = new MaatCfg(); List configCompileList = new ArrayList(); maatCfg.setCompileId(entity.getCompileId()); maatCfg.setServiceId(dicts.get(0).getServiceId()); maatCfg.setIsValid(0);//无效 configCompileList.add(maatCfg); maatBean.setConfigCompileList(configCompileList); maatBean.setAuditTime(entity.getAuditTime()); maatBean.setCreatorName(entity.getCurrentUser().getName()); maatBean.setVersion(Constants.MAAT_VERSION); maatBean.setOpAction(Constants.UPDATE_ACTION); //调用服务接口取消配置 String json=gsonToJson(maatBean); logger.info("asn ip配置取消配置参数:"+json); //调用服务接口下发配置 ToMaatResult _result = ConfigServiceUtil.put(json,1); logger.info("asn ip配置取消配置响应信息:"+_result.getMsg()); } } } } } public boolean checkIps(String groupIds) { for(String groupId:groupIds.split(",")) { Integer.parseInt(groupId); } List hasIpList=asnIpCfgDao.hasASNIds(groupIds); if(hasIpList!=null&&hasIpList.size()>0) { return true; } return false; } public boolean checkIpAddrs(String groupIds) { StringBuffer buffer=new StringBuffer(); for(String groupId:groupIds.split(",")) { Integer.parseInt(groupId); buffer.append("'AS"+groupId+"',"); } List hasIpList=asnIpCfgDao.hasASNIpAddrs(buffer.substring(0, buffer.toString().length()-1)); if(hasIpList!=null&&hasIpList.size()>0) { return true; } return false; } public AsnGroupInfo getInfoByAsnNo(AsnGroupInfo AsnGroupInfo){ return asnGroupInfoDao.getInfoByAsnNo(AsnGroupInfo); } public Integer getGroupIdByOrganization(String groupName){ return asnGroupInfoDao.getGroupIdByOrganization(groupName); } public AsnGroupInfo getGroupInfo(AsnGroupInfo AsnGroupInfo){ return asnGroupInfoDao.getGroupInfo(AsnGroupInfo); } public AsnGroupInfo getGroupIdByNameAndASNId(String organization,String country,Long asnId) { return asnGroupInfoDao.getGroupIdByNameAndASNId(organization,country,asnId); } public Map getGroupList() { Map map=Maps.newConcurrentMap(); for(AsnGroupInfo info:asnGroupInfoDao.findAsnGroupInfos()) { map.put(info.getAsnId(), info); } return map; } }