Изменение суммы лимита определенной группе договоров

Материал из BiTel WiKi

Версия от 08:51, 27 февраля 2015; Phricker (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Скрипт меняет лимит

package ru.ellcom.test;
 
import bitel.billing.server.contract.bean.LimitChangeTask;
import bitel.billing.server.contract.bean.LimitManager;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.event.events.LimitChangedEvent;
import ru.bitel.bgbilling.kernel.event.events.system.SystemLimitChangedEvent;
import ru.bitel.bgbilling.kernel.module.common.bean.User;
import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
 
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
 
public class ChangeLimitTest
        extends GlobalScriptBase {
    @Override
    public void execute(Setup setup, ConnectionSet connectionSet)
            throws Exception {
        int groupId = 1; //ID группы
        int count = 0;
        BigDecimal limit = new BigDecimal(-10000000); //Сумма установленного лимита
 
        print("Start");
        Connection con = connectionSet.getConnection();
        LimitManager lm = new LimitManager(con);
        ServerContext context = ServerContext.get();
 
        long timeStart = System.currentTimeMillis();
        String query = " SELECT c.id FROM contract AS c WHERE gr&(1<<" + groupId + ") > 0";
        PreparedStatement ps = con.prepareStatement(query);
        ResultSet rs = ps.executeQuery();
 
        while (rs.next()) {
            int cid = rs.getInt("c.id");
            List<LimitChangeTask> taskList = lm.getContractMoveTasks(cid);
            for (LimitChangeTask task : taskList) {
                lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());
            }
 
            lm.updateContractLimit(User.USER_SERVER, limit, cid, "Лимит выставленный VIP абонентам", "");
            context.publishAfterCommit(new SystemLimitChangedEvent(cid, limit));
            context.publishAfterCommit(new LimitChangedEvent(cid, limit));
            count++;
        }
        rs.close();
        ps.close();
        long timeEnd = System.currentTimeMillis();
        print("Count = " + count);
        print("Process time: " + (timeEnd - timeStart) / 1000 + " s.");
 
    }
}
Личные инструменты