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

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

(Различия между версиями)
Перейти к: навигация, поиск
 
(2 промежуточные версии не показаны)
Строка 1: Строка 1:
Скрипт меняет лимит договорам в определенной группе
Скрипт меняет лимит договорам в определенной группе
 +
Предварительно скрипт удаляет все задачи по восстановлению временного лимита, на том договоре на котором будет происходить смена лимита.
<source lang="java">package ru.ellcom.test;
<source lang="java">package ru.ellcom.test;
Строка 23: Строка 24:
     public void execute(Setup setup, ConnectionSet connectionSet)
     public void execute(Setup setup, ConnectionSet connectionSet)
             throws Exception {
             throws Exception {
 +
        print("Start");
 +
        long timeStart = System.currentTimeMillis();
 +
         int groupId = 1; //ID группы
         int groupId = 1; //ID группы
         int count = 0;
         int count = 0;
         BigDecimal limit = new BigDecimal(-10000000); //Сумма установленного лимита
         BigDecimal limit = new BigDecimal(-10000000); //Сумма установленного лимита
-
 
+
         String comment = "Лимит выставленный скриптом";
-
         print("Start");
+
       
         Connection con = connectionSet.getConnection();
         Connection con = connectionSet.getConnection();
         LimitManager lm = new LimitManager(con);
         LimitManager lm = new LimitManager(con);
         ServerContext context = ServerContext.get();
         ServerContext context = ServerContext.get();
-
        long timeStart = System.currentTimeMillis();
 
         String query = " SELECT c.id FROM contract AS c WHERE gr&(1<<" + groupId + ") > 0";
         String query = " SELECT c.id FROM contract AS c WHERE gr&(1<<" + groupId + ") > 0";
         PreparedStatement ps = con.prepareStatement(query);
         PreparedStatement ps = con.prepareStatement(query);
Строка 44: Строка 47:
             }
             }
-
             lm.updateContractLimit(User.USER_SERVER, limit, cid, "Лимит выставленный VIP абонентам", "");
+
             lm.updateContractLimit(User.USER_SERVER, limit, cid, comment, "");
             context.publishAfterCommit(new SystemLimitChangedEvent(cid, limit));
             context.publishAfterCommit(new SystemLimitChangedEvent(cid, limit));
             context.publishAfterCommit(new LimitChangedEvent(cid, limit));
             context.publishAfterCommit(new LimitChangedEvent(cid, limit));

Текущая версия на 09:00, 27 февраля 2015

Скрипт меняет лимит договорам в определенной группе Предварительно скрипт удаляет все задачи по восстановлению временного лимита, на том договоре на котором будет происходить смена лимита.

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 {
        print("Start");
        long timeStart = System.currentTimeMillis();
 
        int groupId = 1; //ID группы
        int count = 0;
        BigDecimal limit = new BigDecimal(-10000000); //Сумма установленного лимита
        String comment = "Лимит выставленный скриптом";
 
        Connection con = connectionSet.getConnection();
        LimitManager lm = new LimitManager(con);
        ServerContext context = ServerContext.get();
 
        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, comment, "");
            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.");
 
    }
}
Личные инструменты