Новый номер договора группе договоров

Материал из 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." );
	}
}
Личные инструменты