Материал из BiTel WiKi
import java.sql.*;
import java.util.*;
import java.text.SimpleDateFormat;
import org.w3c.dom.Element;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import ru.bitel.bgbilling.plugins.crm.common.model.RegisterGroup;
import ru.bitel.bgbilling.plugins.crm.common.model.RegisterTask;
import bitel.billing.server.script.bean.event.*;
import ru.bitel.bgbilling.plugins.crm.server.bean.event.RegisterTaskClosedEvent;
import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterGroupManager;
import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterTaskManager;
import bitel.billing.common.CommonUtils;
import bitel.billing.server.bill.bean.DataExtractor;
import bitel.billing.server.script.bean.event.EventProcessor;
import bitel.billing.server.util.MailMsg;
import bitel.billing.server.admin.bean.UserManager;
import bitel.billing.server.admin.bean.User;
import bitel.billing.module.common.ListItem;
import ru.bitel.bgbilling.plugins.crm.common.model.RegisterExecutor;
import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterExecutorManager;
import bitel.billing.server.contract.bean.ContractParamUtils;
import bitel.billing.plugin.BaseManager;
import java.io.*;
import java.net.*;
import bitel.billing.common.TimeUtils;
//Преобразование даты к нужному формату
public String convertDateToString(Object date)
{
if( date == null ) return "";
SimpleDateFormat sdfDate = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
return sdfDate.format(date);
}
//получение задачи по событию
public RegisterTask getTaskFromEvent(ActionAfterEvent event)
{
Element rootNode = event.getRootNode().getFirstChild();
int id = Integer.parseInt(rootNode.getAttribute("id"));
taskManager = new RegisterTaskManager( con );
return taskManager.getTaskByID( id );
}
//Получение списка исполнителей
public List getTitleExecutors(RegisterTask task)
{
List listExecutors = new ArrayList();
query = "SELECT * FROM register_executor where id in (" + CommonUtils.listToString( task.getExecutors() ) + ")";
re = con.prepareStatement(query);
ResultSet re = re.executeQuery();
while (re.next()) {
listExecutors.add( re.getString(2) );
}
return listExecutors;
}
//Получение списка почтовых ящиков исполнителей
public List getEmailExecutors(List listExecutors)
{
List listEmails = new ArrayList();
for (String executor : listExecutors) {
switch ( executor )
{
case "Фамилия Имя Отчество":
listEmails.add("name@post.ru");
break;
default:
}
}
return listEmails;
}
//Получение названия типа задачи
public String getTitleTaskType(RegisterTask task)
{
query = "SELECT * FROM register_task_type where id = " + String.valueOf(task.getTypeID());
rtt = con.prepareStatement(query);
ResultSet re = rtt.executeQuery();
while (re.next()) {
return re.getString(2);
}
return "Unknow task";
}
//Получение времени исполнения задачи по названию типа задачи в минутах
public int getTimeExecuteByTitleTaskType(String titleTaskType)
{
//Время по умолчанию на задачу
int timeExecute = 60;
switch ( titleTaskType )
{
case "Подключение простое":
timeExecute = 90;
break;
default:
}
return timeExecute;
}
//Получение места выполнения задачи
public String getAddressTask(ActionAfterEvent event)
{
int ADDR = 38;
cpu = new ContractParamUtils ( con );
cid = event.getContractID();
capv = cpu.getAddressParam(cid,ADDR);
if ( capv == null )
return "Unknow Address";
else
return capv.getAddress();
}
public String getUserNameByID(int userID)
{
String username = "unknow user";
userManager = new UserManager( con );
user = userManager.getUserByID(userID);
if (user != null) username = user.getLogin() + ":" + user.getTitle();
return username;
}
//Получение идентификатора договора
cid = event.getContractID();
task = getTaskFromEvent(event);
//Время создания
print( "CreateTime: " + convertDateToString( task.getCreateTime() ) );
print( "Create user: " + getUserNameByID( task.getCreateUserID() ) );
//Время открытия
print( "OpenTime: " + convertDateToString( task.getOpenTime() ) );
print( "Open user: " + getUserNameByID( task.getOpenUserID() ) );
listExecutors = getTitleExecutors(task);
listEmails = getEmailExecutors(listExecutors);
print( "Исполнители: " + CommonUtils.listToString(listExecutors) );
print( "Email исполнителей: " + CommonUtils.listToString(listEmails) );
titleTaskType = getTitleTaskType(task);
print( "Название задачи:" + titleTaskType);
print( "Место выполнения задачи:" + getAddressTask(event) );
int timeExecute = getTimeExecuteByTitleTaskType(titleTaskType);
print( "Время выполнения задачи (мин):" + String.valueOf( timeExecute ) );
//Дата выполнения
print( "ExecuteDate: " + convertDateToString( task.getExecuteDate() ) );
start = TimeUtils.convertDateToCalendar( task.getExecuteDate() );
start.add(Calendar.MINUTE, timeExecute);
print( "End of ExecuteDate: " + convertDateToString( start.getTime() ) );
//Срок выполнения
print( "TargetDate: " + convertDateToString( task.getTargetDate() ) );
//Время последней модификации
print( "LastmodTime: " + convertDateToString( task.getLastmodTime() ) );
print( "Lastmod user: " + getUserNameByID( task.getLastmodUserID() ) );
//Время закрытия
print( "CloseTime: " + convertDateToString( task.getCloseTime() ) );
print( "Close user: " + getUserNameByID( task.getCloseUserID() ) );
print( "Комментарий: " + String.valueOf( task.getComment() ) );
print( "Статус задачи: " + task.getStringStatus() );
//Пример разбора статуса задачи
String status = "Статус задачи: " ;
switch ( task.getStatus() )
{
case RegisterTask.STATUS_CLOSED:
status = status + "закрыта";
break;
case RegisterTask.STATUS_OPEN:
status = status + "открыта";
break;
case RegisterTask.STATUS_ACCEPTED:
status = status + "принята";
break;
}