не закончили )))
Код:
import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.ContractRemover;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ContractParameterManager;
import bitel.billing.server.contract.bean.ContractPattern;
import bitel.billing.server.contract.bean.ContractPatternManager;
import bitel.billing.server.contract.bean.ContractTariff;
import bitel.billing.server.contract.bean.ContractTariffManager;
import bitel.billing.server.contract.bean.PaymentManager;
import ru.bitel.bgbilling.common.BGMessageException;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.contract.balance.common.PaymentService;
import ru.bitel.bgbilling.kernel.contract.balance.common.bean.Payment;
import ru.bitel.bgbilling.kernel.event.EventProcessor;
import ru.bitel.bgbilling.kernel.event.events.ContractTariffUpdateEvent;
import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.kernel.tariff.server.event.ContractTariffChangedEvent;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import bitel.billing.server.phone.bean.ClientItem;
import bitel.billing.server.phone.bean.ClientItemManager;
import bitel.billing.server.util.PswdGen;
import bitel.billing.server.voiceip.bean.VoiceIpLoginManager;
import bitel.billing.server.voiceip.bean.VoiceIpLogin;
import java.util.Set;
import java.util.HashSet;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.sql.ResultSet;
import java.sql.Statement;
public class schedulerBase extends GlobalScriptBase {
@Override
public void execute(Setup setup1, ConnectionSet connectionSet2)
throws Exception {
int parent = 2;// категория ресурса предка
int source = 1;// код источника
int Tcid = -1;
int VOICEIP_MID = 3;
String hostname = "";
String port = "";
String username = "";
String password = "";
String dbname = "";
Connection con = connectionSet2.getConnection();
ContractManager cm = new ContractManager(con);
ClientItemManager cim = new ClientItemManager(con, 5);
Setup setup = Setup.getSetup();
ServerContext context = new ServerContext(setup, 5, 0);
ContractTariffManager ctm = new ContractTariffManager(con);
ContractParameterManager cpm = new ContractParameterManager(con);
Calendar calndar = Calendar.getInstance();
Class.forName("org.postgresql.Driver");
Connection c = DriverManager.getConnection("jdbc:postgresql://"
+ hostname + ":" + port + "/" + dbname, username, password);
c.setAutoCommit(false);
System.out.println("Opened database successfully");
Statement stmt = c.createStatement();
String query = "SELECT notification_id, status, tariff_id, template_id, balance, billing_lock_datetime, contract_number, number FROM billing.notification WHERE status = 'N'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
int id = rs.getInt(1);
String status = rs.getString(2);
int tariff_id = rs.getInt(3);
//int tariff_id = 7;
int template_id = rs.getInt(4);
//int template_id = 3;
BigDecimal balance = rs.getBigDecimal(5);
// BigDecimal balance = new BigDecimal ("23");
Date billing_lock_datetime = rs.getTimestamp(6);
String contract_number = rs.getString(7);
String number = rs.getString(8);
// int person_id = rs.getInt(6);
int person_id = 1;
ContractPattern pattern = new ContractPatternManager(con)
.getPattern(template_id);
System.out.println("ID = " + id);
System.out.println("status = " + status);
System.out.println("tariff_id = " + tariff_id);
System.out.println("template_id = " + template_id);
System.out.println("balance = " + balance);
System.out.println("billing_lock_datetime = "
+ billing_lock_datetime);
System.out.println("contract_number = " + contract_number);
System.out.println("number = " + number);
System.out.println("");
Statement uStmt = c.createStatement();
Statement dStmt = c.createStatement();
Contract contract = cm.createFromPattern(template_id,
ContractPatternManager.getContractTitle(con, pattern,
calndar), calndar, PswdGen.generatePassword(7,
"0123456789"));
cpm.updateStringParam(contract.getId(), VATS_ID,
Integer.toString(person_id), 0);
if (balance != null) {
print("debug after if != null balance " + balance);
ServerContext contextb = ServerContext.get();
PaymentService paymentService = contextb.getService(
PaymentService.class, 0);
Payment p = new Payment();
p.setContractId(contract.getId());
p.setComment("Создан автоматически системой, при создании договора");
p.setTypeId(6);
p.setUserId(0);
p.setDate(new Date());
p.setSum(balance);
java.util.List<java.lang.Integer> pmt = paymentService.paymentUpdate(p, null);
print("balance update " + balance);
}
print("title " + contract.getTitle() + "\n");
int cid = contract.getId();
// int cid = 1;
String update_status = "UPDATE notification SET status = 'P' WHERE notification_id = "
+ id;
String uBilling_lock_datetime = "UPDATE notification SET billing_lock_datetime = '"
+ TimeUtils.convertDateToTimestamp(new Date())
+ "' WHERE notification_id = " + id;
String uContract_number = "UPDATE notification SET contract_number = '"
+ contract.getTitle() + "' WHERE notification_id = " + id;
uStmt.executeUpdate(update_status);
uStmt.executeUpdate(uBilling_lock_datetime);
uStmt.executeUpdate(uContract_number);
c.commit();
String setNumber = " SELECT cid, nru.date2 FROM number_resource_5 AS nr " +
" LEFT JOIN number_resource_use_5 AS nru ON nru.resource_id = nr.id " +
" WHERE (nru.date2 IS NULL OR nru.date2 < NOW()) AND number = '"+number+"'";
PreparedStatement contractPs = con.prepareStatement(setNumber);
ResultSet contractRs = contractPs.executeQuery();
while (contractRs.next()) {
Tcid = contractRs.getInt(1);
Date date2 = contractRs.getDate(2);
print ("Tcid " + Tcid);
if (Tcid > 0 && date2 != null )
{
ClientItem newPhone = new ClientItem();
newPhone.setContractId(contract.getId());
newPhone.setDate1(calndar);
newPhone.setType(1);
newPhone.setSourceId(1);
ArrayList<String> phoneNumber = new ArrayList<String>();
phoneNumber.add(number);
newPhone.setClientNumbers(phoneNumber);
cim.realUpdate(0, newPhone, true, context, true );
cim.updateClientItem(newPhone);
// создание логина voiceip
VoiceIpLoginManager lm = new VoiceIpLoginManager(con, VOICEIP_MID);
VoiceIpLogin login = new VoiceIpLogin();
login.setCid( contract.getId() );
login.setStatus( true );
login.setPswd( "" );
login.setDate1( calndar.getTime() );
login.setComment( "" );
login.setType(1);
//
login = lm.addLogin( login, Setup.getSetup().getModuleSetup( VOICEIP_MID ) );
//установка алиаса
Set aliases = new HashSet();
aliases.add( number + "-100" );
lm.updateAliases( login.getId(), aliases );
print("phone add ");
}
else if (Tcid <= 0 )
{
ClientItem newPhone = new ClientItem();
newPhone.setContractId(contract.getId());
newPhone.setDate1(calndar);
newPhone.setType(1);
newPhone.setSourceId(1);
ArrayList<String> phoneNumber = new ArrayList<String>();
phoneNumber.add(number);
newPhone.setClientNumbers(phoneNumber);
cim.realUpdate(0, newPhone, false, context, true );
cim.updateClientItem(newPhone);
// создание логина voiceip
VoiceIpLoginManager lm = new VoiceIpLoginManager(con, VOICEIP_MID);
VoiceIpLogin login = new VoiceIpLogin();
login.setCid( contract.getId() );
login.setStatus( true );
login.setPswd( "" );
login.setDate1( calndar.getTime() );
login.setComment( "" );
login.setType(1);
//
login = lm.addLogin( login, Setup.getSetup().getModuleSetup( VOICEIP_MID ) );
//установка алиаса
Set aliases = new HashSet();
aliases.add( number + "-100" );
lm.updateAliases( login.getId(), aliases );
print("phone add ");
}
else if (Tcid > 0 && date2 == null)
{
print("Ошибка, номер занят ");
}
}
java.util.List<java.lang.String> ltp = pattern.getTariffPlanList();
print("Befor TP " + ltp);
if (ltp == null || ltp.isEmpty()) {
print("TP ");
ContractTariff t = new ContractTariff();
t.setContractId(cid);
t.setDate1(calndar);
t.setTariffPlanId(tariff_id);
t.setComment("Тариф назначился скриптом при создании договора в"
+ new Date());
ctm.updateContractTariff(t);
EventProcessor.getInstance().publishAfterCommit(
new ContractTariffUpdateEvent(0, cid, t, true));
EventProcessor.getInstance().publishAfterCommit(
new ContractTariffChangedEvent(cid));
}
ContractRemover cr = new ContractRemover(setup1, con, null);
//cr.deleteContract(cid);
String update_status_down = "UPDATE notification SET status = 'D' WHERE notification_id = "
+ id;
dStmt.executeUpdate(update_status_down);
c.commit();
dStmt.close();
System.out.println("balance = " + balance);
rs.close();
stmt.close();
c.close();
System.out.println("Operation done successfully");
}
}
ошибка вылетает такая
Код:
04-02/09:51:04 INFO [pool-2-thread-1] CommonKernelEventProcessor - Process event cid:0; event:Event[ru.bitel.bgbilling.kernel.event.events.system.ContractCreateEvent] moduleId: 0; pluginId: no; cid: 0; scid: -1; userId: 0; timestamp: 1427957464415
04-02/09:51:04 INFO [pool-2-thread-1] CommonKernelEventProcessor - Process event cid:279; event:Event[ru.bitel.bgbilling.kernel.event.events.system.ContractCreateEvent] moduleId: 0; pluginId: no; cid: 279; scid: -1; userId: 0; timestamp: 1427957464454
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - ru.bitel.bgbilling.common.BGException: java.sql.SQLException: Can't call commit when autocommit=true
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.kernel.contract.balance.server.PaymentServiceImpl.paymentUpdate(PaymentServiceImpl.java:241)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.firstTelecom.global.schedulerBase.execute(schedulerBase.java:147)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.kernel.script.server.bean.GlobalScriptInvoker.invoke(GlobalScriptInvoker.java:38)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.kernel.script.server.GlobalScriptServiceImpl.executeGlobalScriptParams(GlobalScriptServiceImpl.java:83)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.kernel.script.server.task.GlobalScriptTimer.executeJava(GlobalScriptTimer.java:88)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.kernel.script.server.task.GlobalScriptTimer.executeTask(GlobalScriptTimer.java:55)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:76)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at java.lang.Thread.run(Thread.java:745)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - Caused by: java.sql.SQLException: Can't call commit when autocommit=true
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:925)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:922)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1741)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.commit(PoolGuardConnectionWrapper.java:74)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - at ru.bitel.bgbilling.kernel.contract.balance.server.PaymentServiceImpl.paymentUpdate(PaymentServiceImpl.java:218)
04-02/09:51:04 ERROR [pool-2-thread-1] LoggingPrintStream - ... 9 more
04-02/09:51:04 INFO [pool-2-thread-1] GlobalScriptTimer - Task finished time=121 ms.
падает вот тут
Код:
java.util.List<java.lang.Integer> pmt = paymentService.paymentUpdate(p, null);
_________________
Код:
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegramСтиль программирования - пьяный мастерстер
Разработка мобильных приложений