Новый номер договора группе договоров
Материал из BiTel WiKi
Версия от 08:30, 1 апреля 2014; Zavndw (Обсуждение | вклад)
Если нужно назначить новые номера договоров для группы, еспользуем этот скрипт Разработка Bitel @author dimon
v. 6.0
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.GregorianCalendar; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import bitel.billing.server.contract.bean.ContractPattern; import bitel.billing.server.contract.bean.ContractPatternManager; /** * Т.е. переименовать внутри групп по одному шаблону. Ну в целом не очень сложно, * скрипт выбирает все договоры группы и ставит новый тайтл по какой-то маске. Чтобы дальше * сами нумеровались надо будет шаблон имени договора сделать точно с таким же форматом. * @author dimon */ public class RenameContract { /** группа для обработки */ private final static int GROUP = 24; /** id шаблона договора, где находится нужный паттерн именования договора */ private final static int PATTERN_ID = 31; public void execute( Setup setup, ConnectionSet connectionSet ) throws Exception { System.out.println("Start"); Connection con = connectionSet.getConnection(); // long timeStart = System.currentTimeMillis(); // ContractPattern pattern = new ContractPatternManager( con ).getPattern( PATTERN_ID ); // PreparedStatement ps = con.prepareStatement( "SELECT id, title FROM contract WHERE gr & (1<<?) != 0" ); ps.setInt( 1, GROUP ); ResultSet rs = ps.executeQuery(); int count = 0; while ( rs.next() ) { int id = rs.getInt("id"); String title = rs.getString("title"); String new_title = ContractPatternManager.getContractTitle( con, pattern, new GregorianCalendar(), null ); System.out.println(String.format("#%s : %s -> %s", id, title, new_title)); // переименование PreparedStatement psc = con.prepareStatement( "UPDATE contract SET title=? WHERE id=?" ); psc.setString( 1, new_title ); psc.setInt( 2, id ); psc.executeUpdate(); psc.close(); // ++count; } ps.close(); System.out.println( "Processed " + count + " contracts..." ); // long timeEnd = System.currentTimeMillis(); System.out.println( "Process time: " + (timeEnd - timeStart)/1000 + " s." ); } }