package com.nis.web.service.basics; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.beust.jcommander.internal.Lists; import com.google.common.collect.Maps; import com.nis.domain.Page; import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.maat.GroupReuseAddBean; import com.nis.domain.maat.GroupReuseCfg; import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.MaatCfg.DigestCfg; import com.nis.domain.maat.MaatCfg.GroupCfg; import com.nis.domain.maat.MaatCfg.IpCfg; import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.maat.ToMaatBean; import com.nis.domain.maat.ToMaatResult; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.StringUtil; import com.nis.web.dao.CrudDao; import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnIpCfgDao; import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.dao.specific.ConfigGroupInfoDao; import com.nis.web.security.UserUtils; import com.nis.web.service.CrudService; import com.nis.web.service.SpringContextHolder; @Service public class AsnIpCfgService extends CrudService, AsnIpCfg> { @Autowired private AsnIpCfgDao asnIpCfgDao; // @Autowired // private SpecificServiceCfgDao specificServiceCfgDao; @Autowired private ConfigGroupInfoDao configGroupInfoDao; @Autowired private AsnGroupInfoDao asnGroupInfoDao; /** * @param page * @param entity * @return */ public Page findPage(Page page, AsnIpCfg entity) { entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); entity.setPage(page); List list=asnIpCfgDao.findPage(entity); page.setList(list); return page; } public List findByPage(String ids) { List list=asnIpCfgDao.findByPage(ids); return list; } public boolean hasValidAsnIp(Long asnId) { return asnIpCfgDao.hasValidAsnIp(asnId)>0; } public AsnIpCfg get(Long id ) { return asnIpCfgDao.get(id); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void save(List entitys) { logger.warn("Start to save IP,size:"+entitys.size()); long start=System.currentTimeMillis(); SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); SqlSession batchSqlSession = null; try{ batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); for(AsnIpCfg asnIpCfg:entitys) { ((AsnIpCfgDao) batchSqlSession.getMapper(AsnIpCfgDao.class)).insert(asnIpCfg); } batchSqlSession.commit(); }finally { if(batchSqlSession != null){ batchSqlSession.close(); } } long end=System.currentTimeMillis(); logger.warn("Save IP finish,cost:"+(end-start)); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void update(AsnIpCfg entity){ List auditAsnIpList=new ArrayList<>(); List auditAsnGroupList=new ArrayList<>(); Date editTime=new Date(); entity.setEditTime(editTime); entity.setEditorId(entity.getCurrentUser().getId()); String userRegion1=entity.getUserRegion1(); AsnGroupInfo groupInfo=new AsnGroupInfo(); groupInfo.setAsnId(Long.parseLong(userRegion1)); groupInfo=asnGroupInfoDao.getInfoByAsnNo(groupInfo); String org=groupInfo.getOrganization().trim(); String country=groupInfo.getCountry().trim(); String detail=groupInfo.getDetail().trim(); entity.setOrganization(org); entity.setCountry(country); entity.setDetail(detail); entity.setCompileId(groupInfo.getCompileId()); /** * isvalid=0 and asnNo=false 直接修改 * isvalid=0 and asnNo=true 需要下发 * isvalid=1 需要下发asnNo下所有的域配置 */ /*if(groupInfo.getIsUsed().equals(1) && entity.getIsValid().equals(Constants.VALID_NO)){ entity.setAuditTime(editTime); entity.setAuditorId(entity.getCurrentUser().getId()); entity.setIsValid(Constants.VALID_YES); entity.setIsAudit(Constants.AUDIT_YES); auditAsnIpList.add(entity); } if(groupInfo.getIsUsed().equals(1) && entity.getIsValid().equals(Constants.VALID_YES)){ entity.setAuditTime(editTime); entity.setAuditorId(entity.getCurrentUser().getId()); entity.setIsValid(Constants.VALID_YES); entity.setIsAudit(Constants.AUDIT_YES); auditAsnGroupList.add(groupInfo); }*/ if(entity.getIsValid() ==1){ entity.setAuditTime(editTime); entity.setAuditorId(entity.getCurrentUser().getId()); entity.setEditTime(editTime); entity.setEditorId(entity.getCurrentUser().getId()); entity.setIsValid(Constants.VALID_YES); entity.setIsAudit(Constants.AUDIT_YES); }else{ entity.setEditTime(editTime); entity.setEditorId(entity.getCurrentUser().getId()); entity.setIsValid(Constants.VALID_NO); entity.setIsAudit(Constants.VALID_NO); } asnIpCfgDao.update(entity); //ASN下发状态时可以更改,更改之后直接下发 if(entity.getIsValid() ==1){ auditAsnIpList.add(entity); asnIPRegionSendToMaat(auditAsnIpList,Constants.VALID_YES,Constants.OPACTION_PUT); } //common group 新增下发 ASN IP配置 /*if(!StringUtil.isEmpty(auditAsnIpList)){ asnIPRegionSendToMaat(auditAsnIpList,Constants.VALID_YES,Constants.OPACTION_POST); }*/ //common group 修改已下发过的配置,全量下发 ASN NO下的所有有效配置 /*if(entity.getIsAudit().equals(Constants.VALID_YES)){ auditAllAsnRegionCfg(entity,auditAsnGroupList,null); }*/ } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void processGroup(Map asnNoMap){ logger.warn("Start to save group"); long start=System.currentTimeMillis(); Date createTime=new Date(); int index=0; SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); SqlSession batchSqlSession = null; Set groupSet=new HashSet<>(); try{ batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); if(!asnNoMap.isEmpty()) { List compileIds=ConfigServiceUtil.getId(1, asnNoMap.size()); List groupIds=ConfigServiceUtil.getId(2, asnNoMap.size()); for(Entry e:asnNoMap.entrySet()) { AsnGroupInfo info=e.getValue(); info.setAsnId(e.getKey()); info.setIsValid(0); info.setCreatorId(UserUtils.getUser().getId()); info.setCreateTime(createTime); info.setGroupId(groupIds.get(index)); info.setCompileId(compileIds.get(index)); if(!groupSet.contains(info.getOrganization())) { groupSet.add(info.getOrganization()); } ((AsnGroupInfoDao) batchSqlSession.getMapper(AsnGroupInfoDao.class)).insert(info); if(index%Constants.IMPORT_LIMIT==0) { batchSqlSession.commit(); } index++; } batchSqlSession.commit(); } }finally { if(batchSqlSession != null){ batchSqlSession.close(); } } batchSaveConfigGroupInfo(groupSet); //刷新缓存 //AsnCacheUtils.init(true); long end=System.currentTimeMillis(); logger.warn("Save group finish,cost:"+(end-start)); } public void batchSaveConfigGroupInfo(Set groupSet) { SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); SqlSession batchSqlSession = null; try{ batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); if(groupSet.size()>0) { int index=0; List groupIds=ConfigServiceUtil.getId(2, groupSet.size()); for(String org:groupSet) { ConfigGroupInfo configGroupInfo=new ConfigGroupInfo(); configGroupInfo.setGroupName(org); configGroupInfo.setIsIssued(0); configGroupInfo.setGroupType(4); configGroupInfo.setInsertTime(new Date()); configGroupInfo.setGroupId(groupIds.get(index)); ((ConfigGroupInfoDao) batchSqlSession.getMapper(ConfigGroupInfoDao.class)).insertConfigGroupInfo(configGroupInfo); if(index%Constants.IMPORT_LIMIT==0) { batchSqlSession.commit(); } index++; } batchSqlSession.commit(); } }finally { if(batchSqlSession != null){ batchSqlSession.close(); } } } // public void deleteIps(Map asnNoMap){ // List toDelAndSendAsnIpCfgs=Lists.newArrayList(); // List asnIds=Lists.newArrayList(asnNoMap.size()); // for(Entry e:asnNoMap.entrySet()) { // AsnGroupInfo asnGroupInfo=e.getValue(); // if(asnGroupInfo==null) { // asnGroupInfo=this.getAsnGroupInfoByAsnNo(e.getKey()); // } // if(asnGroupInfo.getIsValid()==1) {//已下发 // List _toDelAsnIpCfgs=this.getByAsnNo(asnGroupInfo.getAsnId()); // toDelAndSendAsnIpCfgs.addAll(_toDelAsnIpCfgs); // }else { // asnIds.add(e.getKey()); // } // } // if(asnIds.size()>0) { // this.deleteByAsnNo(asnIds); // } // if(toDelAndSendAsnIpCfgs.size()>0) { // int pointsDataLimit = Constants.MAAT_JSON_SEND_SIZE;//限制条数 // Integer size = toDelAndSendAsnIpCfgs.size(); // //判断是否有必要分批 // if(pointsDataLimit listPage = toDelAndSendAsnIpCfgs.subList(0, pointsDataLimit); // delAndSend(listPage); // //剔除 // toDelAndSendAsnIpCfgs.subList(0, pointsDataLimit).clear(); // } // //最后剩下的 // if(!toDelAndSendAsnIpCfgs.isEmpty()){ // delAndSend(toDelAndSendAsnIpCfgs); // // } // }else { // delAndSend(toDelAndSendAsnIpCfgs); // } // } // } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void delAndSend(List entities) { StringBuilder sb=new StringBuilder(); Map asnDelCounts=Maps.newHashMap(); for(AsnIpCfg ip:entities) { sb.append(ip.getCfgId()); sb.append(","); if(asnDelCounts.containsKey(Long.parseLong(ip.getUserRegion1()))) { int count=asnDelCounts.get(Long.parseLong(ip.getUserRegion1()))+1; asnDelCounts.put(Long.parseLong(ip.getUserRegion1()), count); }else { asnDelCounts.put(Long.parseLong(ip.getUserRegion1()), 1); } } //跟新asn组的审核通过IP数量 for(Entry asnDelCount: asnDelCounts.entrySet()) { AsnGroupInfo info=new AsnGroupInfo(); info.setAsnId(asnDelCount.getKey()); info.setIssuedIPs(0l-asnDelCount.getValue()); asnGroupInfoDao.modifyIssuedIp(info); } sb.deleteCharAt(sb.toString().lastIndexOf(",")); asnIpCfgDao.delete(sb.toString()); asnIPRegionSendToMaat(entities,Constants.VALID_NO,Constants.OPACTION_PUT); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveAsnIpCfg(CfgIndexInfo entity) { List auditAsnIpList=new ArrayList<>(); Date createTime=new Date(); //asn号 String userRegion1=entity.getUserRegion1(); AsnGroupInfo asnGroupInfo=new AsnGroupInfo(); asnGroupInfo.setAsnId(Long.parseLong(userRegion1)); asnGroupInfo=asnGroupInfoDao.getInfoByAsnNo(asnGroupInfo); //组织去除首尾空格 entity.setOrganization(asnGroupInfo.getOrganization().trim()); entity.setCountry(asnGroupInfo.getCountry().trim()); entity.setDetail(asnGroupInfo.getDetail().trim()); ConfigGroupInfo configGroupInfo=configGroupInfoDao.getAsnGroupByName(entity.getOrganization()); Integer orgGroup=0; Integer compileId=0; Integer asnIdGroup=0; if(configGroupInfo==null) { configGroupInfo=new ConfigGroupInfo(); configGroupInfo.setGroupName(entity.getOrganization()); configGroupInfo.setGroupType(4); configGroupInfo.setInsertTime(new Date()); configGroupInfo.setIsIssued(0); List groupIdList=ConfigServiceUtil.getId(2, 2); orgGroup=groupIdList.get(0); configGroupInfo.setGroupId(orgGroup); configGroupInfoDao.insertConfigGroupInfo(configGroupInfo); } asnIdGroup=asnGroupInfo.getGroupId(); entity.setAsnIpGroup(asnIdGroup); entity.setCompileId(asnGroupInfo.getCompileId()); List idList=ConfigServiceUtil.getId(3, entity.getAsnIpCfgs().size()); int index=0; if(entity.getAsnIpCfgs()!=null) { for(AsnIpCfg cfg:entity.getAsnIpCfgs()) { BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); cfg.setRequestId(0); cfg.setClassify("0"); cfg.setAttribute("0"); cfg.setLable("0"); cfg.setCreateTime(createTime); cfg.setCreatorId(entity.getCurrentUser().getId()); cfg.setAsnIpGroup(entity.getAsnIpGroup().intValue()); cfg.setRegionId(idList.get(index)); //TODO 注意:被策略引用并下发过的ASN NO,配置新增后直接下发【此功能暂时不做自动,asnip拥有审核功能】 /*if(asnGroupInfo.getIsUsed().equals(1)){ cfg.setIsValid(Constants.VALID_YES); cfg.setIsAudit(Constants.AUDIT_YES); cfg.setAuditorId(UserUtils.getUser().getId()); cfg.setAuditTime(createTime); auditAsnIpList.add(cfg); }else{*/ cfg.setIsValid(Constants.VALID_NO); cfg.setIsAudit(Constants.AUDIT_NOT_YET); /*}*/ index++; } } this.save(entity.getAsnIpCfgs()); //TODO 注意:被策略引用并下发过的ASN NO,配置新增后直接下发【此功能暂时不做自动,asnip拥有审核功能】 /*if(!StringUtil.isEmpty(auditAsnIpList)){ asnIPRegionSendToMaat(auditAsnIpList,Constants.VALID_YES,Constants.OPACTION_POST); }*/ } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void delete(String ids) { /*for(String id:ids.split(",")) { Long.parseLong(id); }*/ List issuedList=new ArrayList<>(); List asnIpCfgList= asnIpCfgDao.getByIds(ids); for(AsnIpCfg asnIpCfg:asnIpCfgList) { if(asnIpCfg.getIsValid()==Constants.VALID_YES) {//代表下发过了 asnIpCfg.setIsValid(Constants.VALID_DEL); issuedList.add(asnIpCfg); // groupId=asnIpCfg.getAsnIpGroup(); //List result=asnIpCfgDao.findOtherIps(groupId, asnIpCfg.getCfgId().intValue()); //if(result==null||result.size()==0) { // throw new RuntimeException("Cant not delete ip from asn group, there is only one ip left in the group!"); //} } } asnIpCfgDao.delete(ids); //已经下发过的,调用分组复用配置删除接口 // splitAndSend(issuedList,Constants.VALID_NO); if(issuedList.size() > 0){ asnIPRegionSendToMaat(issuedList,Constants.VALID_NO,Constants.OPACTION_PUT); } } /** * 选中组中是否含有只剩一个未删除IP的组 * @param serviceGroupIds * @return */ public boolean hasLastIp(String serviceGroupIds,String ids) { // TODO Auto-generated method stub for(String groupId:serviceGroupIds.split(",")) { Long.parseLong(groupId); } List countList=asnIpCfgDao.countValidIPs(serviceGroupIds,ids); if(countList.size()==0) { return true; } for(Integer count:countList) { if(count==0) { return true; } } return false; } public AsnGroupInfo getAsnGroupInfoByAsnNo(Long asnNo) { AsnGroupInfo configGroupInfo=new AsnGroupInfo(); configGroupInfo.setAsnId(asnNo); configGroupInfo=asnGroupInfoDao.getInfoByAsnNo(configGroupInfo); return configGroupInfo; } public List getByAsnNo(Long asnNo) { if(asnNo==null) { throw new RuntimeException("groupId or asnNo is null!"); } return asnIpCfgDao.getByAsnNo(asnNo.longValue()); } public List getByIds(String ids) { if(ids==null) { throw new RuntimeException("ids is null!"); } return asnIpCfgDao.getByIds(ids); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void deleteByAsnNo(List asnNoList) { // for(Long asnNo:asnNoList) { // int result=0; // do { // result=asnIpCfgDao.deleteByAsnId(String.valueOf(asnNo)); // }while(result>0); // } int pointsDataLimit = 1000;//限制条数 Integer size = asnNoList.size(); if(pointsDataLimit listPage = asnNoList.subList(0, pointsDataLimit); StringBuilder asnNoStr=new StringBuilder(); for(Long asnNo:asnNoList) { asnNoStr.append(asnNo); asnNoStr.append(","); } int result=0; do { result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); //剔除 asnNoList.subList(0, pointsDataLimit).clear(); } if(!asnNoList.isEmpty()){ StringBuilder asnNoStr=new StringBuilder(); for(Long asnNo:asnNoList) { asnNoStr.append(asnNo); asnNoStr.append(","); } int result=0; do { result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); asnNoList.clear(); } }else { StringBuilder asnNoStr=new StringBuilder(); for(Long asnNo:asnNoList) { asnNoStr.append(asnNo); asnNoStr.append(","); } int result=0; do { result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); asnNoList.clear(); } } /*public void ajaxDeleteAsnIp(String ids) { asnIpCfgDao.ajaxDeleteAsnIp(ids); }*/ /** * * auditIpBatch(非IP类配置用,审核区域IP) * (这里描述这个方法适用条件 – 可选) * @param data *void * @exception * @since 1.0.0 */ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void auditIpBatch(List asnIpCfgs,Long asn,Integer isValid) { List auditAsnGroupList=new ArrayList<>(); SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); final SqlSession batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); try{ int issuedNum=asnIpCfgs.size(); for(int index = 0; index < asnIpCfgs.size();index++){ AsnIpCfg t = asnIpCfgs.get(index); BaseIpCfg ipCfg=new BaseIpCfg(); BeanUtils.copyProperties(t, ipCfg); ipCfg.setTableName(AsnIpCfg.getTablename()); ((IpCfgDao) batchSqlSession.getMapper(IpCfgDao.class)).audit(ipCfg); } batchSqlSession.commit(); AsnGroupInfo asnGroupInfo=new AsnGroupInfo(); asnGroupInfo.setAsnId(asn); asnGroupInfo=asnGroupInfoDao.getInfoByAsnNo(asnGroupInfo); Integer groupId=asnGroupInfo.getGroupId(); MaatCfg maatCfg = new MaatCfg(); List configCompileList = new ArrayList(); List groupRelationList = new ArrayList(); List ipRegionList = new ArrayList(); List strRegionList = new ArrayList(); List numRegionList = new ArrayList(); List digestRegionList = new ArrayList(); List areaIpRegionList = new ArrayList(); if(isValid==Constants.VALID_YES) {//审核通过 if(asnGroupInfo.getIsValid()==0) {//ans组未下发过,下发编译配置 asnGroupInfo.setIsValid(1); asnGroupInfo.setEditorId(UserUtils.getUser().getId()); asnGroupInfo.setEditTime(new Date()); asnGroupInfo.setIssuedIPs(issuedNum+0L); asnGroupInfoDao.updateValid(asnGroupInfo); maatCfg.initDefaultValue(); ToMaatBean maatBean = new ToMaatBean(); //group GroupCfg groupCfg=new GroupCfg(); groupCfg.setCompileId(asnGroupInfo.getCompileId()); groupCfg.setGroupId(groupId); groupCfg.setIsValid(Constants.VALID_YES); //asnGroupId标记为公共组 groupCfg.setIsCommonGroup(1); groupCfg.setAuditTime(asnIpCfgs.get(0).getAuditTime()); groupRelationList.add(groupCfg); BeanUtils.copyProperties(asnIpCfgs.get(0), maatCfg); ipRegionList.addAll(groupReuseCfgAddRemoveConvert(asnIpCfgs,Constants.VALID_YES,groupId)); maatCfg.setCompileId(asnGroupInfo.getCompileId()); maatCfg.setAction(asnIpCfgs.get(0).getAction()); maatCfg.setAuditTime(asnIpCfgs.get(0).getAuditTime()); maatCfg.setIpRegionList(ipRegionList); maatCfg.setStrRegionList(strRegionList); maatCfg.setNumRegionList(numRegionList); maatCfg.setDigestRegionList(digestRegionList); maatCfg.setGroupRelationList(groupRelationList); maatCfg.setGroupNum(groupRelationList.size()); maatCfg.setAreaIpRegionList(areaIpRegionList); maatCfg.setIsValid(isValid); // 设置ASN自定义域 String userRegion = "ASN_ID=" + asnIpCfgs.get(0).getUserRegion1(); maatCfg.setUserRegion(userRegion); configCompileList.add(maatCfg); maatBean.setConfigCompileList(configCompileList); maatBean.setAuditTime(asnIpCfgs.get(0).getAuditTime()); maatBean.setCreatorName(asnIpCfgs.get(0).getCurrentUser().getName()); maatBean.setVersion(Constants.MAAT_VERSION); maatBean.setOpAction(Constants.INSERT_ACTION); // 调用服务接口下发配置数据 String json = gsonToJson(maatBean); logger.info("ASN IP配置下发配置参数:" + json); // 调用服务接口下发配置 ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); logger.info("ASN IP配置下发响应信息:" + result.getMsg()); }else if(asnGroupInfo.getIsValid()==1){//已经下发过,走分组复用 asnGroupInfo.setIssuedIPs(issuedNum+0l); asnGroupInfoDao.update(asnGroupInfo); asnIPRegionSendToMaat(asnIpCfgs,isValid,Constants.OPACTION_POST); }else { throw new RuntimeException("asnGroupInfo isValid value is "+asnGroupInfo.getIsValid()); } }else if(isValid==Constants.VALID_NO) {//取消审核通过 asnGroupInfo.setIssuedIPs(0L-issuedNum); asnGroupInfoDao.update(asnGroupInfo); //已经下发过的,调用分组复用配置删除接口 GroupReuseAddBean maatBean = new GroupReuseAddBean(); List groupReuseList=new ArrayList<>(); GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); ipRegionList.addAll(groupReuseCfgAddRemoveConvert(asnIpCfgs,Constants.VALID_NO,groupId)); groupReuseCfg.setIpRegionList(ipRegionList); groupReuseCfg.setStrRegionList(strRegionList); groupReuseCfg.setNumRegionList(numRegionList); groupReuseList.add(groupReuseCfg); maatBean.setGroupReuseCfgList(groupReuseList); maatBean.setAuditTime(asnIpCfgs.get(0).getAuditTime()); maatBean.setCreatorName(asnIpCfgs.get(0).getCurrentUser().getName()); maatBean.setVersion(Constants.MAAT_VERSION); maatBean.setOpAction(Constants.UPDATE_ACTION); //调用服务接口下发配置数据 String json=gsonToJson(maatBean); logger.info("ASN IP域删除配置下发配置参数:"+json); //调用服务接口下发配置 ToMaatResult result = ConfigServiceUtil.auditCommonGroupRegionSources(json,3); logger.info("ASN IP域删除配置响应信息:"+result.getMsg()); //如果一个asn组下没有IP了,修改有效状态 if(hasValidAsnIp(asn)) { asnGroupInfo.setIsValid(0); asnGroupInfo.setEditorId(UserUtils.getUser().getId()); asnGroupInfo.setEditTime(new Date()); asnGroupInfoDao.updateValid(asnGroupInfo); } } }finally { if(batchSqlSession != null){ batchSqlSession.close(); } } } public AsnIpCfg getOne(AsnIpCfg cfg) { // TODO Auto-generated method stub return asnIpCfgDao.getOne(cfg); } }