@@ -2,6 +2,7 @@ package com.nis.web.service.basics;
import java.util.ArrayList ;
import java.util.Date ;
import java.util.HashMap ;
import java.util.HashSet ;
import java.util.List ;
import java.util.Map ;
@@ -18,9 +19,12 @@ import org.springframework.transaction.annotation.Transactional;
import com.beust.jcommander.internal.Lists ;
import com.google.common.collect.Maps ;
import com.nis.domain.FunctionRegionDict ;
import com.nis.domain.FunctionServiceDict ;
import com.nis.domain.Page ;
import com.nis.domain.basics.AsnGroupInfo ;
import com.nis.domain.basics.AsnIpCfg ;
import com.nis.domain.configuration.AsnKeywordCfg ;
import com.nis.domain.configuration.BaseIpCfg ;
import com.nis.domain.configuration.CfgIndexInfo ;
import com.nis.domain.maat.GroupReuseAddBean ;
@@ -36,6 +40,7 @@ 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.DictUtils ;
import com.nis.util.StringUtil ;
import com.nis.web.dao.CrudDao ;
import com.nis.web.dao.basics.AsnGroupInfoDao ;
@@ -167,50 +172,284 @@ public class AsnIpCfgService extends CrudService<CrudDao<AsnIpCfg>, AsnIpCfg> {
auditAllAsnRegionCfg(entity,auditAsnGroupList,null);
}*/
}
/**
*
* @param asnNoMaps 所有asn的信息
* @param configGroupInfos asn组织的数据库信息
* @param asnOrgMap asn和组织的关系
* @param isImportAll 是否导入全量
*/
@Transactional ( readOnly = false , rollbackFor = RuntimeException . class )
public void processGroup ( Map < Long , AsnGroupInfo > asnNoMap ) {
logger . warn ( " Start to save group " ) ;
public void processAsnIp ( FunctionServiceDict service , FunctionRegionDict regionDict , List < BaseIpCfg > ipCfgList , List < Map < Long , AsnGroupInfo > > asnNoMaps , String isSend , String isImportAll , Integer requestId , String attribute , String classify ) {
logger . warn ( " Start to save asn ip size: " + ipCfgList . size ( ) ) ;
long start = System . currentTimeMillis ( ) ;
Date createTime = new Date ( ) ;
int index = 0 ;
//List<AsnIpCfg> asnIpCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
Date date = new Date ( ) ;
SqlSessionFactory sqlSessionFactory = SpringContextHolder . getBean ( SqlSessionFactory . class ) ;
SqlSession batchSqlSession = null ;
Set < String > groupSet = new HashSet < > ( ) ;
int index = 0 ;
Map < Long , AsnGroupInfo > auditInfo = new HashMap < > ( ) ;
//存储未下发的asno及asnIP
Map < Integer , List < AsnIpCfg > > noAuditGroupIds = new HashMap < > ( ) ;
//存储已下发的asnno
Map < Integer , List < AsnIpCfg > > auditGroupIds = new HashMap < > ( ) ;
//本次未下发的组信息
List < AsnGroupInfo > noAuditGroupList = new ArrayList < AsnGroupInfo > ( ) ;
Long asno = 0l ;
try {
List < Integer > regionIds = ConfigServiceUtil . getId ( 3 , ipCfgList . size ( ) ) ;
batchSqlSession = sqlSessionFactory . openSession ( ExecutorType . BATCH , false ) ;
if ( ! asnNoMap . isEmpty ( ) ) {
List < Integer > compileIds = ConfigServiceUtil . getId ( 1 , a snNoMap . size ( ) ) ;
List < Integer > groupIds = ConfigService Util. getId ( 2 , asnNoMap . size ( ) ) ;
List < Integer > regionIds = ConfigServiceUtil . g etId ( 3 , asnNoMap . siz e( ) ) ;
for ( Entry < Long , AsnGroupInfo > e : asnNoMap . entrySet ( ) ) {
A snGroupInfo info = e . getValu e( ) ;
info . setAsnId ( e . getKey ( ) ) ;
info . setIsValid ( 0 ) ;
info . setIsUse d( 0 ) ;
info . setCreatorId ( UserUtils . getUser ( ) . getId ( ) ) ;
info . setCreateTime ( c reateTime ) ;
info . setGroupId ( groupIds . get ( index ) ) ;
info . setCompileId ( compileIds . get ( index ) ) ;
info . setRegionId ( regionIds . get ( index ) ) ;
if ( ! groupSet . contains ( info . getOrganization ( ) ) ) {
groupSet . add ( info . g etOrganization ( ) ) ;
}
( ( AsnGroupInfoDao ) batchSqlSession . getMapper ( AsnGroupInfoDao . class ) ) . insert ( info ) ;
if ( index % Constants . IMPORT_LIMIT = = 0 ) {
batchSqlSession . commit ( ) ;
}
index + + ;
}
batchSqlSession . commit ( ) ;
for ( BaseIpCfg cfg : ipCfgList ) {
AsnIpCfg asnIpCfg = new A snIpCfg ( ) ;
Bean Utils . copyProperties ( cfg , asnIpCfg , new String [ ] { " cfgId " } ) ;
asnIpCfg . s etTableName ( AsnIpCfg . getTablenam e( ) ) ;
asnIpCfg . setAction ( service = = null ? 0 : service . getAction ( ) ) ;
a snIpCfg . setCfgRegionCode ( regionDict . getConfigRegionCod e( ) ) ;
asnIpCfg . setCfgType ( regionDict . getConfigRegionValue ( ) ) ;
asnIpCfg . setCreateTime ( date ) ;
asnIpCfg . setCreatorId ( UserUtils . getUser ( ) . getI d( ) ) ;
asnIpCfg . setDoLog ( 2 ) ;
asnIpCfg . setFunctionId ( regionDict . getFunctionId ( ) ) ;
if ( isSend . equals ( " 1 " ) ) {
asnIpCfg . setIsAudit ( Constants . AUDIT_YES ) ;
asnIpCfg . setIsValid ( Constants . VALID_YES ) ;
asnIpCfg . setAuditorId ( UserUtils . getUser ( ) . getId ( ) ) ;
asnIpCfg . s etAuditTime ( date ) ;
} else {
asnIpCfg . setIsAudit ( Constants . AUDIT_NOT_YET ) ;
asnIpCfg . setIsValid ( Constants . VALID_NO ) ;
}
asnIpCfg . setIsAreaEffective ( 0 ) ;
asnIpCfg . setLable ( " 0 " ) ;
asnIpCfg . setRequestId ( StringUtil . isEmpty ( requestId ) ? 0 : requestId ) ;
asnIpCfg . setAttribute ( attribute ) ;
asnIpCfg . setClassify ( classify ) ;
asnIpCfg . setServiceId ( service = = null ? 0 : service . getServiceId ( ) ) ;
asnIpCfg . setRegionId ( regionIds . get ( index ) ) ;
asno = Long . parseLong ( asnIpCfg . getUserRegion1 ( ) ) ;
//设置group id,compileId
asnIpCfg . setAsnIpGroup ( asnNoMaps . get ( 2 ) . get ( Long . parseLong ( asnIpCfg . getUserRegion1 ( ) ) ) . getGroupId ( ) ) ;
asnIpCfg . setCompileId ( asnNoMaps . get ( 2 ) . get ( Long . parseLong ( asnIpCfg . getUserRegion1 ( ) ) ) . getCompileId ( ) ) ;
/*if(isSend.equals("1")) {
//判断组是否已下发
if(asnNoMaps.get(3).keySet().contains(asno)){
}else{
asnNoMaps.get(3).put(asno, asnNoMaps.get(2).get(asno));
}
}*/
( ( AsnIpCfgDao ) batchSqlSession . getMapper ( AsnIpCfgDao . class ) ) . insert ( asnIpCfg ) ;
index + + ;
}
batchSqlSession . commit ( ) ;
} finally {
if ( batchSqlSession ! = null ) {
batchSqlSession . close ( ) ;
}
}
batchSaveConfigGroupInfo ( groupSet ) ;
//刷新缓存
//AsnCacheUtils.init(true);
//6、配置取消所有编译[编译取消, 编译下的所有group和region都会取消(已和服务端确认)]
/*if(!StringUtil.isEmpty(deleteAsnCompile)){
long startAudit=System.currentTimeMillis();
ToMaatBean maatBean = new ToMaatBean();
MaatCfg maatCfg = new MaatCfg();
List<MaatCfg> configCompileList = new ArrayList();
List<GroupCfg> groupRelationList = new ArrayList();
List<IpCfg> ipRegionList = new ArrayList();
List<StringCfg> strRegionList = new ArrayList();
List<NumBoundaryCfg> numRegionList = new ArrayList();
List<DigestCfg> digestRegionList = new ArrayList();
List<IpCfg> areaIpRegionList = new ArrayList();
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(600);
Integer serviceId=0;
serviceId=serviceList.get(0).getServiceId();
for(Entry<Long, AsnGroupInfo> e:deleteAsnCompile.entrySet()) {
maatCfg.setCompileId(e.getValue().getCompileId());
maatCfg.setServiceId(serviceId);
maatCfg.setIsValid(0);//无效
configCompileList.add(maatCfg);
}
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(createTime);
maatBean.setCreatorName(UserUtils.getUser().getName());
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.UPDATE_ACTION);
//调用服务接口取消配置
String json=gsonToJson(maatBean);
logger.info("ASN IP 业务的编译配置全部失效参数:"+json);
long auditEnd=System.currentTimeMillis();
logger.warn("Cancle all ASN compile finish,cost:"+(auditEnd-startAudit));
ToMaatResult result = ConfigServiceUtil.put(json,1);
logger.info("ASN IP所有编译取消返回结果: "+result.getMsg());
long resultEnd=System.currentTimeMillis();
logger.warn("Cancle all ASN compile finish,cost:"+(resultEnd-auditEnd));
}*/
long end = System . currentTimeMillis ( ) ;
logger . warn ( " Save asn ip finish,cost: " + ( end - start ) ) ;
}
/**
*
* @param asnNoMaps 所有asn的信息
* @param configGroupInfos asn组织的数据库信息
* @param asnOrgMap asn和组织的关系
* @param isImportAll 是否导入全量
*/
@Transactional ( readOnly = false , rollbackFor = RuntimeException . class )
public void processGroup ( FunctionServiceDict service , List < Map < Long , AsnGroupInfo > > asnNoMaps , List < Map < String , ConfigGroupInfo > > asnOrgList , String isSend , String isImportAll ) {
logger . warn ( " Start to save group " ) ;
long start = System . currentTimeMillis ( ) ;
Map < Long , AsnGroupInfo > deleteAsnCompile = null ;
Date createTime = new Date ( ) ;
SqlSessionFactory sqlSessionFactory = SpringContextHolder . getBean ( SqlSessionFactory . class ) ;
SqlSession batchSqlSession = null ;
int index = 0 ;
Integer serviceId = service . getServiceId ( ) ;
try {
//1、删除所有asn ip
asnIpCfgDao . deleteAll ( ) ;
//2、删除所有的asn_group_info
asnGroupInfoDao . deleteAll ( ) ;
//3、删除所有的组织信息
configGroupInfoDao . deleteAllAsnGroup ( ) ;
batchSqlSession = sqlSessionFactory . openSession ( ExecutorType . BATCH , false ) ;
//4、遍历保存所有的config_group_info
if ( ! StringUtil . isEmpty ( asnOrgList ) ) {
Map < String , ConfigGroupInfo > newOrgMap = asnOrgList . get ( 0 ) ; //【0】 新的config group info
Map < String , ConfigGroupInfo > oldOrgMap = asnOrgList . get ( 1 ) ; //【1】 旧的config group info
//入库旧的asn组织信息
if ( ! StringUtil . isEmpty ( oldOrgMap ) ) {
index = 0 ;
for ( Entry < String , ConfigGroupInfo > e : oldOrgMap . entrySet ( ) ) {
ConfigGroupInfo configGroupInfo = e . getValue ( ) ;
configGroupInfo . setIsIssued ( 0 ) ;
( ( ConfigGroupInfoDao ) batchSqlSession . getMapper ( ConfigGroupInfoDao . class ) ) . insertWithId ( configGroupInfo ) ;
if ( index ! = 0 & & index % Constants . IMPORT_LIMIT = = 0 ) {
batchSqlSession . commit ( ) ;
}
index + + ;
}
batchSqlSession . commit ( ) ;
}
//入库新的asn组织信息
if ( ! StringUtil . isEmpty ( newOrgMap ) ) {
index = 0 ;
List < Integer > groupIds = ConfigServiceUtil . getId ( 2 , newOrgMap . size ( ) ) ;
for ( Entry < String , ConfigGroupInfo > e : newOrgMap . entrySet ( ) ) {
ConfigGroupInfo configGroupInfo = e . getValue ( ) ;
configGroupInfo . setGroupId ( groupIds . get ( index ) ) ;
configGroupInfo . setIsIssued ( 0 ) ;
configGroupInfo . setIsUsed ( 0 ) ;
configGroupInfo . setIsAuditAll ( 0 ) ;
configGroupInfo . setGroupType ( 4 ) ;
configGroupInfo . setInsertTime ( createTime ) ;
asnOrgList . get ( 1 ) . put ( configGroupInfo . getGroupName ( ) , configGroupInfo ) ;
( ( ConfigGroupInfoDao ) batchSqlSession . getMapper ( ConfigGroupInfoDao . class ) ) . insertWithoutId ( configGroupInfo ) ;
if ( index ! = 0 & & index % Constants . IMPORT_LIMIT = = 0 ) {
batchSqlSession . commit ( ) ;
}
index + + ;
}
batchSqlSession . commit ( ) ;
}
}
//4、遍历保存所有的asn_group_info
if ( ! asnNoMaps . isEmpty ( ) ) {
Map < Long , AsnGroupInfo > newAsnGroup = asnNoMaps . get ( 0 ) ; //【0】 新的asn group info
Map < Long , AsnGroupInfo > oldAsnGroup = asnNoMaps . get ( 1 ) ; //【1】 旧的asn group info
Map < Long , AsnGroupInfo > allAsnGroup = asnNoMaps . get ( 2 ) ; //【2】 所有的asn group info
Map < Long , AsnGroupInfo > auditedAsnNoMap = asnNoMaps . get ( 3 ) ; //【3】已下发的所有asn信息【失效所有的asn 编译】
deleteAsnCompile = auditedAsnNoMap ;
//保存新增的asn 信息
if ( ! newAsnGroup . isEmpty ( ) ) {
index = 0 ;
List < Integer > compileIds = ConfigServiceUtil . getId ( 1 , newAsnGroup . size ( ) ) ;
List < Integer > groupIds = ConfigServiceUtil . getId ( 2 , newAsnGroup . size ( ) ) ;
List < Integer > regionIds = ConfigServiceUtil . getId ( 3 , newAsnGroup . size ( ) ) ;
for ( Entry < Long , AsnGroupInfo > e : newAsnGroup . entrySet ( ) ) {
AsnGroupInfo asnGroupInfo = e . getValue ( ) ;
asnGroupInfo . setAsnId ( e . getKey ( ) ) ;
asnGroupInfo . setIsValid ( 0 ) ;
asnGroupInfo . setIsUsed ( 0 ) ;
asnGroupInfo . setCreatorId ( UserUtils . getUser ( ) . getId ( ) ) ;
asnGroupInfo . setCreateTime ( createTime ) ;
asnGroupInfo . setGroupId ( groupIds . get ( index ) ) ;
asnGroupInfo . setCompileId ( compileIds . get ( index ) ) ;
asnGroupInfo . setRegionId ( regionIds . get ( index ) ) ;
asnGroupInfo . setOrgGroupId ( asnOrgList . get ( 1 ) . get ( asnGroupInfo . getOrganization ( ) ) . getGroupId ( ) ) ;
asnNoMaps . get ( 0 ) . put ( e . getKey ( ) , asnGroupInfo ) ; //设置完各种id后更新map数据
asnNoMaps . get ( 2 ) . put ( e . getKey ( ) , asnGroupInfo ) ; //设置完各种id后更新map数据
( ( AsnGroupInfoDao ) batchSqlSession . getMapper ( AsnGroupInfoDao . class ) ) . insertWithId ( asnGroupInfo ) ;
if ( index ! = 0 & & index % Constants . IMPORT_LIMIT = = 0 ) {
batchSqlSession . commit ( ) ;
}
index + + ;
}
batchSqlSession . commit ( ) ;
}
//保存旧的asn信息
if ( ! oldAsnGroup . isEmpty ( ) ) {
index = 0 ;
for ( Entry < Long , AsnGroupInfo > e : oldAsnGroup . entrySet ( ) ) {
AsnGroupInfo asnGroupInfo = e . getValue ( ) ;
asnGroupInfo . setIsValid ( 0 ) ;
asnGroupInfo . setOrgGroupId ( asnOrgList . get ( 1 ) . get ( asnGroupInfo . getOrganization ( ) ) . getGroupId ( ) ) ;
( ( AsnGroupInfoDao ) batchSqlSession . getMapper ( AsnGroupInfoDao . class ) ) . insertWithoutId ( asnGroupInfo ) ;
if ( index ! = 0 & & index % Constants . IMPORT_LIMIT = = 0 ) {
batchSqlSession . commit ( ) ;
}
index + + ;
}
batchSqlSession . commit ( ) ;
}
}
} finally {
if ( batchSqlSession ! = null ) {
batchSqlSession . close ( ) ;
}
}
//6、配置取消所有编译[编译取消, 编译下的所有group和region都会取消(已和服务端确认)]
if ( ! StringUtil . isEmpty ( deleteAsnCompile ) ) {
long startAudit = System . currentTimeMillis ( ) ;
ToMaatBean maatBean = new ToMaatBean ( ) ;
MaatCfg maatCfg = new MaatCfg ( ) ;
List < MaatCfg > configCompileList = new ArrayList ( ) ;
List < GroupCfg > groupRelationList = new ArrayList ( ) ;
List < IpCfg > ipRegionList = new ArrayList ( ) ;
List < StringCfg > strRegionList = new ArrayList ( ) ;
List < NumBoundaryCfg > numRegionList = new ArrayList ( ) ;
List < DigestCfg > digestRegionList = new ArrayList ( ) ;
List < IpCfg > areaIpRegionList = new ArrayList ( ) ;
List < FunctionServiceDict > serviceList = DictUtils . getFunctionServiceDictList ( 600 ) ;
for ( Entry < Long , AsnGroupInfo > e : deleteAsnCompile . entrySet ( ) ) {
maatCfg . setCompileId ( e . getValue ( ) . getCompileId ( ) ) ;
maatCfg . setServiceId ( serviceId ) ;
maatCfg . setIsValid ( 0 ) ; //无效
configCompileList . add ( maatCfg ) ;
}
maatBean . setConfigCompileList ( configCompileList ) ;
maatBean . setAuditTime ( createTime ) ;
maatBean . setCreatorName ( UserUtils . getUser ( ) . getName ( ) ) ;
maatBean . setVersion ( Constants . MAAT_VERSION ) ;
maatBean . setOpAction ( Constants . UPDATE_ACTION ) ;
//调用服务接口取消配置
String json = gsonToJson ( maatBean ) ;
logger . info ( " ASN IP 业务的编译配置全部失效参数: " + json ) ;
long auditEnd = System . currentTimeMillis ( ) ;
logger . warn ( " Cancle all ASN compile finish,cost: " + ( auditEnd - startAudit ) ) ;
ToMaatResult result = ConfigServiceUtil . put ( json , 1 ) ;
logger . info ( " ASN IP所有编译取消返回结果: " + result . getMsg ( ) ) ;
long resultEnd = System . currentTimeMillis ( ) ;
logger . warn ( " Cancle all ASN compile finish,cost: " + ( resultEnd - auditEnd ) ) ;
}
long end = System . currentTimeMillis ( ) ;
logger . warn ( " Save group finish,cost: " + ( end - start ) ) ;
}
@@ -226,6 +465,8 @@ public class AsnIpCfgService extends CrudService<CrudDao<AsnIpCfg>, AsnIpCfg> {
ConfigGroupInfo configGroupInfo = new ConfigGroupInfo ( ) ;
configGroupInfo . setGroupName ( org ) ;
configGroupInfo . setIsIssued ( 0 ) ;
configGroupInfo . setIsUsed ( 0 ) ;
configGroupInfo . setIsAuditAll ( 0 ) ;
configGroupInfo . setGroupType ( 4 ) ;
configGroupInfo . setInsertTime ( new Date ( ) ) ;
configGroupInfo . setGroupId ( groupIds . get ( index ) ) ;