ASN IP全量+数据入库提交
This commit is contained in:
@@ -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, asnNoMap.size());
|
||||
List<Integer> groupIds=ConfigServiceUtil.getId(2, asnNoMap.size());
|
||||
List<Integer> regionIds=ConfigServiceUtil.getId(3, asnNoMap.size());
|
||||
for(Entry<Long, AsnGroupInfo> e:asnNoMap.entrySet()) {
|
||||
AsnGroupInfo info=e.getValue();
|
||||
info.setAsnId(e.getKey());
|
||||
info.setIsValid(0);
|
||||
info.setIsUsed(0);
|
||||
info.setCreatorId(UserUtils.getUser().getId());
|
||||
info.setCreateTime(createTime);
|
||||
info.setGroupId(groupIds.get(index));
|
||||
info.setCompileId(compileIds.get(index));
|
||||
info.setRegionId(regionIds.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();
|
||||
for (BaseIpCfg cfg : ipCfgList) {
|
||||
AsnIpCfg asnIpCfg=new AsnIpCfg();
|
||||
BeanUtils.copyProperties(cfg, asnIpCfg,new String[] {"cfgId"});
|
||||
asnIpCfg.setTableName(AsnIpCfg.getTablename());
|
||||
asnIpCfg.setAction(service==null?0:service.getAction());
|
||||
asnIpCfg.setCfgRegionCode(regionDict.getConfigRegionCode());
|
||||
asnIpCfg.setCfgType(regionDict.getConfigRegionValue());
|
||||
asnIpCfg.setCreateTime(date);
|
||||
asnIpCfg.setCreatorId(UserUtils.getUser().getId());
|
||||
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.setAuditTime(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));
|
||||
|
||||
Reference in New Issue
Block a user