Не отрабатывает конкретный метод, поэтому забивать голову лишним кодом не стал.
Но если думаете это поможет, то весь код ниже:
Код:
import java.util.*;
import java.math.*;
import bitel.billing.server.util.*;
import bitel.billing.common.*;
import ru.bitel.bgbilling.kernel.contract.status.server.*;
import ru.bitel.bgbilling.kernel.contract.status.common.bean.*;
import ru.bitel.common.model.*;
//import bitel.billing.server.contract.bean.ContractParameterManager;
//import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.contract.object.bean.*;
import ru.bitel.bgbilling.plugins.crm.server.model.*;
import ru.bitel.bgbilling.plugins.crm.server.dao.*;
import ru.bitel.bgbilling.plugins.crm.common.model.*;
import ru.bitel.bgbilling.kernel.contract.status.server.service.ContractStatusMonitorServiceImpl;
import ru.bitel.bgbilling.common.BGException;
includeBGBS( "bgbs://ru.bitel.bgbilling.kernel.script.common.bean.ScriptLibrary/contract" );
StringBuilder contractIds= new StringBuilder();
ContractParameterManager cpm = new ContractParameterManager( con );
RegisterTaskManager rtm = new RegisterTaskManager( con );
private void addTaskJoin( cid )
{
EventDate = new java.util.Date();
TargetDate = new GregorianCalendar();
TargetDate.add( Calendar.DAY_OF_MONTH, 7 );
print("TargetDate="+TargetDate.getTime());
task_type_id = 1; // подключение
task_group_id = 6; // операторы
//Ищем задачу
filter = new TaskFilter();
filter.cid = cid;
filter.types = Integer.toString( task_type_id );
if ( rtm.getTaskCount( filter ) == 0 ){
//Создаем новую задачу
RegisterTask task = new RegisterTask();
task.setContractID( cid );
task.setTypeID( task_type_id );
task.setGroupID( task_group_id );
task.setOpenUserID( 0 ) ;
task.setOpenTime( EventDate );
task.setComment( "Целая" );
task.setAddressParamID( 13 );
//task.setAddressObjectId( task_AddressObjectId );
task.setTargetDate( TargetDate.getTime() );
rtm.updateTask( task );
};
}
private void processContracts( con, List list, ContractStatusMonitorServiceImpl ws )
{
//print("---------------------\n");
// обходим массив договоров
int[] cids = new int[list.size()];
int i = 0;
for( MonitorStatusResult m : list )
{
cids[i] = m.getCid();
cpu = new ContractParamUtils( con );
if ( cpu.getAddressParam( cids[i], PARAM_JOIN_ADDR ) != null ) {
contractIds.append( "contractId = " );
contractIds.append( m.getCid() );
contractIds.append( "\n" );
cpm.setGroup( cids[i], 22 );
cpm.unsetGroup( cids[i], 21 );
addTaskJoin( cids[i] );
}
i++;
}
}
private void sendEmail( MailMsg msg )
{
String m = "Следующие новые договоры были поставлены в очередь на подключение: \n";
m += contractIds.toString();
msg.sendMessage( "operators@local", "Договора на подключение", m );
}
public void main( setup, con, conSlave )
{
ws = new ru.bitel.bgbilling.kernel.contract.status.server.bean.ContractStatusMonitorDao( con );
MailMsg msg = new MailMsg( setup );
//ws.setConnection(con);
//ws.setSetup( setup );
try
{
print("Create balans dump start ...");
ws.createBalanceDump();
print("Create balans dump finish !");
}
catch(BGException e)
{
print("Ошибка при создании среза балансов \n");
print( e.getMessage() );
return;
}
// ------------ ОПИСАНИЕ ПЕРЕМЕННЫХ ДЛЯ ПОИСКА ДОГОВОРОВ-------------------
int mode = -1;
int statusPeriod = 0 ;
String statusPeriodUnit = "day";
String status = "-1,3";
String saldoFrom = "";
String saldoTo = "";
String sort ="";
int subContract = 0;
Page page = new Page(0,25);
int saldoAccountMonths = 0;
BigDecimal saldoAcconuntsMore = BigDecimal.ZERO;
float serviceMaxVal = -1f;
int balanceLimit = 0;
int balancePrevLimit = 0;
String serviceAccountMaxServices = "";
long group = 21L;
long notGroup = 0L;
try
{
print("Search contracts and change status start...");
//Result res = ws.contractSearch( mode, statusPeriod, statusPeriodUnit, group, notGroup, status, saldoFrom, saldoTo, sort, subContract, page, saldoAccountMonths, saldoAcconuntsMore, serviceAccountMaxServices, serviceMaxVal, balanceLimit, balancePrevLimit );
Result res = ws.contractSearch ( -1,
saldoAccountMonths,
serviceMaxVal,
serviceAccountMaxServices,
status,
mode,
subContract,
balanceLimit,
balancePrevLimit,
statusPeriod,
statusPeriodUnit,
group,
notGroup,
saldoFrom,
saldoTo,
saldoAcconuntsMore,
sort,
page
);
print( "Кол-во страниц = " + res.getPage().getPageCount() );
page = res.getPage();
processContracts( con, res.getList(), ws );
}
catch( BGException e )
{
print("Ошибка при поиске и изменении статуса договоров \n");
print( e.getMessage() );
return;
}
print("Search contracts finish !");
if ( contractIds.length() > 0 ) {
print("Send email !");
sendEmail(msg);
}
print("Finish!!!");
}