ASN导入全量,删除asnip逻辑修改为基于asn no的批量删除。

每次删除定量的asn ip cfg遍历,基于本批asn no,asn ip数量大于maat_send_size即删除并入库最新asn ip信息
This commit is contained in:
duandongmei
2019-01-30 11:07:22 +06:00
parent 64e3c13513
commit b95e597b57
4 changed files with 258 additions and 40 deletions

View File

@@ -20,6 +20,7 @@ import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
@@ -43,7 +44,8 @@ public class CheckIpFormatThread implements Callable<String>{
//【1】 旧的asn group info
//【2】 所有的asn group info
//【3】 所有已审核通过的asn group info
private List<Map<Long,AsnGroupInfo>> asnNoMaps;
private List<Map<Long,AsnGroupInfo>> asnNoMaps;
private Map<String,List<IpPortCfg>> asnIpMap;
//组织之间的关系
//【0】 新的组织信息
//【1】 旧的组织信息
@@ -66,7 +68,7 @@ public class CheckIpFormatThread implements Callable<String>{
int size=srcQueue.drainTo(dataList,Constants.MAAT_JSON_SEND_SIZE);
if(regionDict.getRegionType().intValue()==1) {
try {
List<BaseIpCfg> ipcfgs=this.checkIpCfg(msg,asnNoMaps, dataList);
List<BaseIpCfg> ipcfgs=this.checkIpCfg(msg,asnNoMaps,asnIpMap, dataList);
boolean success=destQueue.addAll(ipcfgs);
}catch (Exception e) {
logger.error("checkIpCfg error,",e);
@@ -85,7 +87,7 @@ public class CheckIpFormatThread implements Callable<String>{
return msg.toString();
}
public List<BaseIpCfg> checkIpCfg(StringBuffer msg,List<Map<Long,AsnGroupInfo>> asnNos, List<Object> list)
public List<BaseIpCfg> checkIpCfg(StringBuffer msg,List<Map<Long,AsnGroupInfo>> asnNos,Map<String, List<IpPortCfg>> asnIpCfgs, List<Object> list)
throws ServiceException {
logger.warn("start to validate ip...");
long start=System.currentTimeMillis();
@@ -367,8 +369,6 @@ public class CheckIpFormatThread implements Callable<String>{
asnNos.get(3).put(asnNo,asnGroupInfo);
}
asnNos.get(1).put(asnNo,asnGroupInfo);
asnGroupInfo.setIsValid(0);
asnGroupInfo.setIssuedIPs(0l);
asnGroupInfo.setOrganization(organization);
asnGroupInfo.setCountry(baseIpCfg.getCountry());
asnGroupInfo.setDetail(baseIpCfg.getDetail());
@@ -955,6 +955,16 @@ public class CheckIpFormatThread implements Callable<String>{
errTip.append(errInfo);
errTip.append("<br>");
}else {
synchronized (Constants.IMPORT_ASN_LOCK) {
//asn根据asn号分组存储asn ip信息
if(StringUtil.isEmpty(asnIpCfgs.get(baseIpCfg.getUserRegion1()))){
List<IpPortCfg> asnIpList=new ArrayList<>();
asnIpList.add(baseIpCfg);
asnIpCfgs.put(baseIpCfg.getUserRegion1(), asnIpList);
}else{
asnIpCfgs.get(baseIpCfg.getUserRegion1()).add(baseIpCfg);
}
}
ipList.add(baseIpCfg);
}
}
@@ -1408,5 +1418,10 @@ public class CheckIpFormatThread implements Callable<String>{
public void setAsnOrgList(List<Map<String, ConfigGroupInfo>> asnOrgList) {
this.asnOrgList = asnOrgList;
}
public Map<String, List<IpPortCfg>> getAsnIpMap() {
return asnIpMap;
}
public void setAsnIpMap(Map<String, List<IpPortCfg>> asnIpMap) {
this.asnIpMap = asnIpMap;
}
}