Artur писал(а):
Скрипт в студию.
Код:
import java.text.DecimalFormat;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ContractTariffManager;
import bitel.billing.server.contract.bean.ContractParameterManager;
import bitel.billing.server.contract.bean.PaymentManager;
import bitel.billing.server.contract.bean.ChargeManager;
import bitel.billing.server.contract.bean.BalanceUtils;
import java.sql.PreparedStatement;
import com.Ostermiller.util.ExcelCSVParser;
import java.math.BigDecimal;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.ContractTariffGroupManager;
import bitel.billing.server.contract.bean.ContractTariffGroup;
import bitel.billing.server.contract.bean.ContractStatusManager;
import bitel.billing.server.contract.bean.ContractStatus;
import bitel.billing.common.KernelConst;
import ru.bitel.bgbilling.kernel.module.common.bean.User;
import bitel.billing.server.contract.bean.ContractTariff;
import bitel.billing.server.contract.bean.ContractModuleManager;
import bitel.billing.server.contract.bean.ContractModule;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import bitel.billing.common.IPUtils;
import ru.bitel.common.Utils;
import bitel.billing.server.npay.bean.ServiceObjectManager;
import bitel.billing.server.npay.bean.ServiceObject;
import bitel.billing.server.voiceip.bean.VoiceIpLoginManager;
import bitel.billing.server.voiceip.bean.VoiceIpLogin;
import bitel.billing.server.card.bean.Card;
import bitel.billing.server.contract.bean.ContractServiceManager;
import bitel.billing.server.contract.bean.ContractService;
java.util.Date curdate = new java.util.Date();
Calendar now = new GregorianCalendar();
DecimalFormat format1 = new DecimalFormat( "700000" );
DecimalFormat format2 = new DecimalFormat( "3000000" );
String ip;
String ip2;
String login;
String password;
String gr;
String ipsf;
String ipst;
int num;
int prefix;
public void main( setup, con, conSlave )
{
long timeStart = System.currentTimeMillis();
loadFile( "/root/all.csv", setup, con, 0 );
long timeEnd = System.currentTimeMillis();
print( "Process time: " + (timeEnd - timeStart)/1000 + " s." );
}
private void loadFile( file, setup, con, patternId )
{
int rowNum = 0;
error( "Loading " + file );
ContractManager cm = new ContractManager( con );
ContractTariffManager ctm = new ContractTariffManager( con );
ContractParameterManager cpm = new ContractParameterManager( con );
PaymentManager paymentManager = new PaymentManager( con );
ChargeManager chargeManager = new ChargeManager( con );
BalanceUtils bu = new BalanceUtils( con );
String query = "INSERT INTO contract_balance(yy, mm, cid, summa1) VALUES(?,?,?,?)";
PreparedStatement psInsertBalance = con.prepareStatement( query );
psInsertBalance.setInt( 1, now.get( Calendar.YEAR ) );
psInsertBalance.setInt( 2, now.get( Calendar.MONTH ) + 1 );
String[][] data = ExcelCSVParser.parse( new InputStreamReader( new FileInputStream( file ), "windows-1251" ) , ';' );
if( data != null && data.length > 0 )
{
final int rowCount = data.length;
for( rowNum = 1; rowNum < rowCount; rowNum++ )
{
String[] fields = data[rowNum];
if( fields.length < 9 )
{
continue;
}
if( rowNum % 100 == 0 )
{
System.out.println( "Count => " + rowNum );
}
String fio = fields[0];
String licSchet = fields[1];
String address = fields[2];
String phone = fields[3];
String tariff = fields[4];
iplist = fields[8];
login = fields[9];
password = fields[10];
String tel = fields[11];
gr = fields[12];
String active = fields[13];
String ndog = fields[14];
String inn = fields[15];
String email = fields[16];
String contact = fields[17];
String lo = fields[18];
String phonelst = fields[19];
String pasport = fields[20];
String com = fields[21];
BigDecimal saldo = BigDecimal.ZERO;
BigDecimal pay = BigDecimal.ZERO;
BigDecimal charge = BigDecimal.ZERO;
try
{
saldo = new BigDecimal( fields[5].replaceAll( " ", "0" ) );
pay = new BigDecimal( fields[6].replaceAll( " ", "0" ) );
charge = new BigDecimal( fields[7].replaceAll( " ", "0" ) );
}
catch( Exception ex )
{
error( "Error load summ file: " + file + "; line: " + rowNum + "; fio: " + fio );
}
String title;
if ( gr.equals( "37" ) )
{
title = licSchet;
}
if ( (gr.equals( "47" ) || gr.equals( "42" ) || gr.equals( "20" )) )
{
title = format2.format( Utils.parseLong( licSchet ) );
}
if ( gr.equals( "10" ) )
{
title = format1.format( Utils.parseLong( licSchet ) );
}
Contract contract = cm.createFromPattern( patternId, title, TimeUtils.convertDateToCalendar( curdate ), password );
if ( gr.equals( "37" ) )
{
contract.setGroups( contract.getGroups() | ( 1L << 0 ) );
contract.setFc(0);
val = new BigDecimal (-100);
contract.setBalanceLimit ( val );
contract.setBalanceMode( 1 );
// группа тарифов
ContractTariffGroupManager ctgm = new ContractTariffGroupManager( con );
ContractTariffGroup contractTariffGroup = new ContractTariffGroup();
contractTariffGroup.setContractID( contract.getID() );
contractTariffGroup.setTariffGroupId( 1 );
contractTariffGroup.setDate1( TimeUtils.convertDateToCalendar( curdate ) );
ctgm.updateContractTariffGroup( contractTariffGroup );
}
if ( (gr.equals( "47" ) || gr.equals( "42" )) )
{
contract.setGroups( contract.getGroups() | ( 1L << 0 ) );
contract.setFc(1);
val = new BigDecimal (-100000);
contract.setBalanceLimit ( val );
contract.setBalanceMode( 0 );
}
if ( gr.equals( "10" ) )
{
contract.setGroups( contract.getGroups() | ( 1L << 1 ) );
contract.setFc(0);
val = new BigDecimal (-100);
contract.setBalanceLimit ( val );
contract.setBalanceMode( 1 );
// группа тарифов
ContractTariffGroupManager ctgm = new ContractTariffGroupManager( con );
ContractTariffGroup contractTariffGroup = new ContractTariffGroup();
contractTariffGroup.setContractID( contract.getID() );
contractTariffGroup.setTariffGroupId( 2 );
contractTariffGroup.setDate1( TimeUtils.convertDateToCalendar( curdate ) );
ctgm.updateContractTariffGroup( contractTariffGroup );
}
if ( gr.equals( "20" ) )
{
contract.setGroups( contract.getGroups() | ( 1L << 1 ) );
contract.setFc(1);
val = new BigDecimal (-100000);
contract.setBalanceLimit ( val );
contract.setBalanceMode( 0 );
}
contract.setComment( fio );
if ( active.equals( "f" ) )
{
csm = new ContractStatusManager(con);
ContractStatus newStatus = new ContractStatus();
newStatus.setContractId(contract.getId());
newStatus.setDateFrom(curdate);
newStatus.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED);
csm.changeStatus(newStatus, User.USER_SERVER);
contract.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED);
csm.recycle();
}
cm.updateContract( contract );
cid = contract.getID();
cpm.setStringParam( contract.getID(), 24, address, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 3, fio, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 4, licSchet, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 5, tariff, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 15, iplist, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 16, ndog, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 17, inn, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 18, email, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 19, phone, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 20, contact, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 21, lo, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 22, phonelst, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 23, pasport, User.USER_SERVER );
cpm.setStringParam( contract.getID(), 24, com, User.USER_SERVER );
// баланс
if( saldo.compareTo( BigDecimal.ZERO ) != 0 )
{
psInsertBalance.setInt( 3, contract.getID() );
psInsertBalance.setBigDecimal( 4, saldo );
psInsertBalance.executeUpdate();
}
bu.updateBalance( curdate, contract.getID() );
if (!phonelst.equals(""))
{
ContractModuleManager manager = new ContractModuleManager( con );
ContractModule module = new ContractModule();
module.setContractId( cid );
module.setModuleId( 6 );
manager.addContractModule( cid, 6 );
ContractTariff contractTariff = new ContractTariff();
contractTariff.setContractID( contract.getID() );
contractTariff.setTariffPlanID( 18 );
contractTariff.setDate1( TimeUtils.convertDateToCalendar( curdate ) );
ctm.updateContractTariff( contractTariff );
String[] phonearray = phonelst.split( "," );
int nphone;
nphone = phonearray.length;
for (; nphone > 0;)
{
nphone--;
String sub1 = phonearray[nphone].substring(0, 1);
int rep = 0;
String newphone;
StringBuffer sb = new StringBuffer(phonearray[nphone]);
if (sub1.equals("8"))
{
sb.replace(0, 1, "7");
newphone = sb.toString();
rep = 1;
}
VoiceIpLoginManager lm = new VoiceIpLoginManager( con, 6 );
VoiceIpLogin login = new VoiceIpLogin();
login.setCid( contract.getID() );
login.setStatus( true );
login.setDate1( curdate );
login.setType(1);
login = lm.addLogin( login, Setup.getSetup().getModuleSetup( 6 ) );
Set aliases = new HashSet();
if (rep == 1)
{
aliases.add( newphone );
} else
{
aliases.add( phonearray[nphone] );
}
lm.updateAliases( login.getId(), aliases );
}
}
// список ип адресов в массив.
String[] iparray = iplist.split( "," );
if (!iplist.equals(""))
{
// ТП назначаем
// установка тарифа
ContractTariff contractTariff = new ContractTariff();
contractTariff.setContractID( contract.getID() );
int itariff;
if (!(tariff == ""))
{
itariff = Integer.parseInt(tariff);
}
switch (itariff)
{
case 75: contractTariff.setTariffPlanID( 1 ); break;
case 76: contractTariff.setTariffPlanID( 2 ); break;
case 77: contractTariff.setTariffPlanID( 3 ); break;
case 145: contractTariff.setTariffPlanID( 4 ); break;
case 154: contractTariff.setTariffPlanID( 1 ); break;
case 155: contractTariff.setTariffPlanID( 2 ); break;
case 156: contractTariff.setTariffPlanID( 3 ); break;
case 7000: contractTariff.setTariffPlanID( 21 ); break;
case 7010: contractTariff.setTariffPlanID( 22 ); break;
case 7020: contractTariff.setTariffPlanID( 23 ); break;
case 7030: contractTariff.setTariffPlanID( 24 ); break;
case 7040: contractTariff.setTariffPlanID( 25 ); break;
case 8000: contractTariff.setTariffPlanID( 26 ); break;
case 8010: contractTariff.setTariffPlanID( 27 ); break;
case 8020: contractTariff.setTariffPlanID( 28 ); break;
case 8030: contractTariff.setTariffPlanID( 29 ); break;
case 5000: contractTariff.setTariffPlanID( 21 ); break;
case 5100: contractTariff.setTariffPlanID( 21 ); break;
case 5200: contractTariff.setTariffPlanID( 21 ); break;
case 5300: contractTariff.setTariffPlanID( 21 ); break;
case 5400: contractTariff.setTariffPlanID( 21 ); break;
case 3101: contractTariff.setTariffPlanID( 21 ); break;
case 3201: contractTariff.setTariffPlanID( 21 ); break;
case 3203: contractTariff.setTariffPlanID( 21 ); break;
case 3210: contractTariff.setTariffPlanID( 21 ); break;
case 3301: contractTariff.setTariffPlanID( 21 ); break;
case 93: contractTariff.setTariffPlanID( 6 ); break;
case 118: contractTariff.setTariffPlanID( 7 ); break;
case 119: contractTariff.setTariffPlanID( 8 ); break;
case 146: contractTariff.setTariffPlanID( 9 ); break;
case 153: contractTariff.setTariffPlanID( 10 ); break;
case 105: contractTariff.setTariffPlanID( 11 ); break;
default: contractTariff.setTariffPlanID( 5 ); break;
}
contractTariff.setDate1( TimeUtils.convertDateToCalendar( curdate ) );
ctm.updateContractTariff( contractTariff );
// ТП для IP
if ( (tariff.equals( "154" ) || tariff.equals( "155" ) || tariff.equals( "156" ) ) )
{
ContractTariff contractTariff = new ContractTariff();
contractTariff.setContractID( contract.getID() );
// + ip
contractTariff.setTariffPlanID( 20 );
contractTariff.setDate1( TimeUtils.convertDateToCalendar( curdate ) );
ctm.updateContractTariff( contractTariff );
}
// Модуль добавляем
ContractModuleManager manager = new ContractModuleManager( con );
ContractModule module = new ContractModule();
module.setContractId( cid );
module.setModuleId( 1 );
manager.addContractModule( cid, 1 );
}
if ( (active.equals( "t" ) && (gr.equals( "47" ) || gr.equals( "42" )) ) )
{
// Модуль добавляем
ContractModuleManager manager = new ContractModuleManager( con );
ContractModule module = new ContractModule();
module.setContractId( cid );
module.setModuleId( 11 );
}
// Цикл сколько ип в массиве столько раз выполняться
int nip;
nip = iparray.length;
for (; nip > 0;)
{
nip--;
// проверка первого [0] элемента в массиве на префикс
String[] tokens = iparray[nip].split( "/" );
// если есть префикс
num = tokens.length;
ipsf = tokens[0];
// Если токена 2 то есть префикс
if (num == 2)
{
prefix = 1;
mask = tokens[1];
int maskBit = Integer.parseInt(mask);
long lnet = IPUtils.convertStringIPtoLong (ipsf);
long lmask = ( 0xFFFFFFFFl << ( 32 - maskBit ) ) & 0xFFFFFFFFl;
public static final long[] range = IPUtils.netMaskToRange(lnet, lmask);
ipst = IPUtils.convertLongIpToString(range[1]);
} else
{
prefix = 0;
}
if (!ipsf.equals(""))
{
setIp( ipsf, ipst, contract.getID());
}
}
if ( (gr.equals( "37" ) || gr.equals( "10" )) )
{
ContractModuleManager manager = new ContractModuleManager( con );
ContractModule module = new ContractModule();
module.setContractId( cid );
module.setModuleId( 3 );
manager.addContractModule( cid, 3 );
ServiceObjectManager som = new ServiceObjectManager( con, 3 ) ;
// установка абонплаты
object = new ServiceObject();
object.setContractId( cid );
if ( gr.equals( "37" ) )
{
// ид услуги модуля npay
object.setServiceId( 2 );
}
if ( (gr.equals( "10" ) || gr.equals( "20" )) )
{
// ид услуги модуля npay
object.setServiceId( 12 );
}
object.setDate1( new Date() );
som.updateServiceObject( object );
}
if ( gr.equals( "10" ) )
{
ContractModuleManager manager = new ContractModuleManager( con );
ContractModule module = new ContractModule();
module.setContractId( cid );
module.setModuleId( 5 );
manager.addContractModule( cid, 5 );
object = new Card();
object.setContractId( cid );
object.setServiceActivateId( 13 );
object.setDateBegin( new Date() );
ContractServiceManager csm = new ContractServiceManager( con );
ContractService cs = new ContractService();
cs.setContractId(cid);
cs.setServiceId(14);
cs.setDateFrom( new Date() );
csm.updateContractService( "new", cs);
}
if ( (tariff.equals( "154" ) || tariff.equals( "155" ) || tariff.equals( "156" )) )
{
ServiceObjectManager som = new ServiceObjectManager( con, 3 ) ;
object = new ServiceObject();
object.setContractId( cid );
object.setServiceId( 6 );
object.setDate1( new Date() );
som.updateServiceObject( object );
}
}
}
cm.recycle();
psInsertBalance.close();
}
private void setIp (ipsf, ipst, cid)
{
optionList = new ArrayList();
final ServerContext context = ServerContext.get();
final InetServService servService = context.newService( InetServService.class, 1 );
{
InetServ serv = new InetServ();
int ipif = IPUtils.convertStringIPtoInt(ipsf);
int ipit = IPUtils.convertStringIPtoInt(ipst);
serv.setAddressFrom( Utils.convertIntToBytes( ipif ) );
if (prefix == 0)
{
ipit = ipif;
}
serv.setAddressTo( Utils.convertIntToBytes( ipit ) );
serv.setIpResourceId( 1 ); // id ресурса ip адресов, из которого диапазон
// интернет логин
String cid2 = Integer.toString(cid);
serv.setLogin(cid2);
serv.setPassword("Redback");
// Интернет пароль
// тип сервиса
serv.setTypeId(4);
if ( (gr.equals( "37" ) || gr.equals( "42" )) )
{
serv.setDeviceId(12);
serv.setInterfaceId(0);
}
if ( gr.equals( "47" ) )
{
serv.setDeviceId(13);
serv.setInterfaceId(0);
}
if ( gr.equals( "10" ) )
{
serv.setDeviceId(12);
serv.setInterfaceId(0);
}
if ( gr.equals( "20" ) )
{
serv.setDeviceId(14);
serv.setInterfaceId(0);
}
serv.setVlan(1);
serv.setDateFrom( new Date() );
serv.setContractId(cid);
servService.inetServUpdate( serv, optionList, false, false, 0 );
}
}