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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Если нужно назначить новые номера договоров для группы, еспользуем этот скрипт Разработк…»)
 
Строка 2: Строка 2:
Разработка Bitel @author dimon
Разработка Bitel @author dimon
-
v. 6.0
+
{{Актуальность Версии|версия=6.0}}
<source lang="java">
<source lang="java">
import java.sql.Connection;
import java.sql.Connection;

Текущая версия на 08:36, 1 апреля 2014

Если нужно назначить новые номера договоров для группы, еспользуем этот скрипт Разработка Bitel @author dimon

Внимание! Данное решение/метод/статья относится к версии 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." );
	}
}
Личные инструменты