Изменение суммы лимита определенной группе договоров
Материал из BiTel WiKi
(Различия между версиями)
Phricker (Обсуждение | вклад) |
Phricker (Обсуждение | вклад) |
||
(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 = "Лимит выставленный скриптом"; | |
- | + | ||
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(); | ||
- | |||
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, | + | 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."); } }