Диплом: Автоматизация документооборота организации ООО «Профкран»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
96
ServerLogin = __login_;
ServerPassword = __password_;
DataBaseName = __db_;
ServerPort = __port_;
}
/// <summary>
/// Сброс флага подключения к БД
/// </summary>
public void ResetConnection() { Connected = false; }
/// <summary>
/// Установка флага подключения к БД
/// </summary>
public void Successfully() { Connected = true; }
}
/// <summary>
/// Параметры строки подключения к БД
/// </summary>
public static ConnectionString DB_CS;
/// <summary>
/// Получение настроек подключения из файла
/// </summary>
/// <param name="__filename_">Файл с настройками</param>
/// <returns>Структура с параметрами плдключения к БД</returns>
public static ConnectionString LoadConnectionSettings(string __filename_)
{
// Новая строка подключения
ConnectionString NewCS = new ConnectionString();
// Поток чтения данных их файла
FileStream fs = null;
StreamReader sr = null;
// Попытка прочитать данные
try
{
fs = new FileStream(__filename_, FileMode.Open);
sr = new StreamReader(fs);
// Чтение данных
NewCS.ServerAddress = sr.ReadLine().Split(new char[] { '=' },
StringSplitOptions.RemoveEmptyEntries)[1];
NewCS.ServerLogin = sr.ReadLine().Split(new char[] { '=' },
StringSplitOptions.RemoveEmptyEntries)[1];
NewCS.ServerPassword = sr.ReadLine().Split(new char[] { '=' },
StringSplitOptions.RemoveEmptyEntries)[1];
NewCS.DataBaseName = sr.ReadLine().Split(new char[] { '=' },
StringSplitOptions.RemoveEmptyEntries)[1];
NewCS.ServerPort = sr.ReadLine().Split(new char[] { '=' },
StringSplitOptions.RemoveEmptyEntries)[1];
// Закрыть файл
sr.Close();
fs.Close();
// Возврат значения
return NewCS;
}
catch (Exception)
{
NewCS.DataBaseName = "failed!";
return NewCS;
}
}
/// <summary>
/// Сохранение настроек подключения в файл
/// </summary>
97
public static void SaveConnectionSettings(string __filename_)
{
// Поток записи данных в файл
FileStream fs = null;
StreamWriter sw = null;
// Попытка записать данные
try
{
fs = new FileStream(__filename_, FileMode.Create);
sw = new StreamWriter(fs);
// Запись данных
sw.WriteLine("adress=" + DB_CS.ServerAddress);
sw.WriteLine("login=" + DB_CS.ServerLogin);
sw.WriteLine("password=" + DB_CS.ServerPassword);
sw.WriteLine("db=" + DB_CS.DataBaseName);
sw.WriteLine("port=" + DB_CS.ServerPort);
// Закрыть файл
sw.Close();
fs.Close();
}
catch (Exception) { }
}
/// <summary>
/// Попытка установить подключение к БД
/// </summary>
/// <returns>Результат подключения</returns>
public static bool SetConnectionWithDB()
{
// Попытка подключиться
try
{
// Настройка подключения
string connString = "server=" + DB_CS.ServerAddress +
";uid=" + DB_CS.ServerLogin +
";database=" + DB_CS.DataBaseName +
";charset=utf8" +
";port=" + DB_CS.ServerPort +
";password=" + DB_CS.ServerPassword + ";";
Properties.Settings.Default["EDMS_CS"] = connString;
// Попытка прочитать данные
edmsDataSetTableAdapters.accountsTableAdapter TestTA = new
edmsDataSetTableAdapters.accountsTableAdapter();
edmsDataSet.accountsDataTable TestTable = TestTA.GetData();
// Если данные прочитаны, значит попытка успешна
DB_CS.Successfully();
TestTable.Dispose();
TestTA.Dispose();
return DB_CS.Connected;
}
catch (Exception ex)
{
MessageBox.Show("Неправильно указаны параметры подключения к БД!" +
Environment.NewLine + ex.Message, Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
/// <summary>
/// Показать панель настройки подключения к БД
/// </summary>
public static void ShowConnectionSettings()
{
98
// Предварительный сброс флага подключения к БД
DB_CS.ResetConnection();
// Предварительная очистка главного контейнера
MainForm.SubsystemView.Controls.Clear();
// Создание новой панели подключения
Screens.Service.ScreenConnectionSettings dbcPanel = new
Screens.Service.ScreenConnectionSettings();
// Отображение панели в подсистеме
MainForm.SubsystemView.Controls.Add(dbcPanel);
// Развернуть на всю область
dbcPanel.Dock = DockStyle.Fill;
}
/// <summary>
/// Показать панель авторизации пользователя
/// </summary>
public static void ShowLoginForm()
{
if (DB_CS.Connected)
{
// Предварительная очистка главного контейнера
MainForm.SubsystemView.Controls.Clear();
// Создание новой панели подключения
Screens.Service.ScreenLogin authPanel = new
Screens.Service.ScreenLogin();
// Отображение панели в подсистеме
MainForm.SubsystemView.Controls.Add(authPanel);
// Развернуть на всю область
authPanel.Dock = DockStyle.Fill;
// Очистить данные авторизованного пользователя на форме
MainForm.CurrentUserName = "-";
// Сброс данных пользователя
CurrentUser = null;
}
else
{
MessageBox.Show("Сначала необходимо подключиться к базе данных!",
Application.ProductName, MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
}
using System;
using System.Windows.Forms;
namespace EDMS
{
/// <summary>
/// Класс главной формы
/// </summary>
public partial class frmMain : Form
{
/// <summary>
/// Конструктор
/// </summary>
99
public frmMain()
{
// Создание и инициализация компонентов
InitializeComponent();
// Установить ссылку на себя глобально
Global.MainForm = this;
// Прочитать настройки подключения к БД
Global.DB_CS =
Global.LoadConnectionSettings(Global.CONNECTION_SETTINGS_FILE);
// Попытка подключиться к БД
if (!Global.SetConnectionWithDB())
{
// Показать панель настройки подключения к БД
Global.ShowConnectionSettings();
}
else // Подключение установлено
{
// Показать панель авторизации пользователя
Global.ShowLoginForm();
}
}
/// <summary>
/// Главный контейнер
/// </summary>
public Panel SubsystemView { get { return pnlMainContainer; } }
/// <summary>
/// Метка с отображением имени авторизованного пользователя
/// </summary>
public string CurrentUserName { set { tslblCurrentUser.Text = value; } }
/// <summary>
/// Завершение работы
/// </summary>
/// <param name="sender">Объект, вызвавший событие</param>
/// <param name="e">Параметры события</param>
private void tsbtnQuit_Click(object sender, EventArgs e)
{
Close();
}
/// <summary>
/// Запрос на завершение работы программы при закрытии формы
/// </summary>
/// <param name="sender">Объект, вызвавший событие</param>
/// <param name="e">Параметры события</param>
private void formMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Завершить работу программы?", Application.ProductName,
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
e.Cancel = true;
}
/// <summary>
/// Изменить настройки подключения к БД
/// </summary>
/// <param name="sender">Объект, вызвавший событие</param>
/// <param name="e">Параметры события</param>
private void tsbtnConnect_Click(object sender, EventArgs e)
{
Global.ShowConnectionSettings();
}
/// <summary>
/// Сменить пользователя
/// </summary>
100
/// <param name="sender">Объект, вызвавший событие</param>
/// <param name="e">Параметры события</param>
private void tsbtnLogin_Click(object sender, EventArgs e)
{
Global.ShowLoginForm();
}
}
}
using System;
using System.Windows.Forms;
namespace EDMS.Entities
{
/// <summary>
/// Класс задачи
/// </summary>
public class DocTask
{
/// <summary>
/// Конструктор
/// </summary>
/// <param name="__id_">Идентификатор задачи</param>
public DocTask(int __id_)
{
try
{
// Инициализация по идентификатору
if (__id_ != 0)
{
// Получение данных из таблицы
edmsDataSet.tasksDataTable TABLE = ADAPTERT.GetDataByID(__id_);
// Чтение полученных данных
if (TABLE.Rows.Count > 0)
{
__id = __id_;
__sender = new
Account(Convert.ToInt32(TABLE.Rows[0].ItemArray[1]));
__receiver = new
Account(Convert.ToInt32(TABLE.Rows[0].ItemArray[2]));
__event = new
DocEvent(Convert.ToInt32(TABLE.Rows[0].ItemArray[3]));
__type = Convert.ToInt32(TABLE.Rows[0].ItemArray[4]);
__content = Convert.ToString(TABLE.Rows[0].ItemArray[5]);
__createdate = Convert.ToDateTime(TABLE.Rows[0].ItemArray[6]);
__deadline = Convert.ToDateTime(TABLE.Rows[0].ItemArray[7]);
if (TABLE.Rows[0].ItemArray[8] != DBNull.Value)
__completeddate =
Convert.ToDateTime(TABLE.Rows[0].ItemArray[8]);
else
__completeddate = null;
// Освободить таблицу
TABLE.Dispose();
}
else
{
MessageBox.Show("Запись не найдена!", Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error);
101
}
}
else // Инициализация по умолчанию
{
MessageBox.Show("Запись не найдена!", Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show("Ошибка при выполнении операции: " + ex.Message,
Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// Адаптер подключения к БД - таблица задач
/// </summary>
edmsDataSetTableAdapters.tasksTableAdapter ADAPTERT = new
edmsDataSetTableAdapters.tasksTableAdapter();
/// <summary>
/// Адаптер подключения к БД - таблица событий
/// </summary>
edmsDataSetTableAdapters.eventsTableAdapter ADAPTERE = new
edmsDataSetTableAdapters.eventsTableAdapter();
/// <summary>
/// Адаптер подключения к таблице задач
/// </summary>
edmsDataSetTableAdapters.tasklistTableAdapter TLTA = new
edmsDataSetTableAdapters.tasklistTableAdapter();
// ----------------------------------------------------------
// Атрибуты
// ----------------------------------------------------------
private int __id;
private Account __sender;
private Account __receiver;
private DocEvent __event;
private int __type;
private string __content;
private DateTime __createdate;
private DateTime __deadline;
private DateTime? __completeddate;
// ------------------------------------ Доступ к атрибутам --
/// <summary>
/// Доступ к идентификатору
///
public int ID { get { return __id; } }
/// <summary>
/// Доступ к описанию события
/// </summary>
public DocEvent Event { get { return __event; } }
/// <summary>
/// Доступ к дате создания
/// </summary>
public DateTime CreateDate { get { return __createdate; } }
/// <summary>
/// Доступ к дате срока
/// </summary>
public DateTime DeadLine { get { return __deadline; } }
/// <summary>
/// Доступ к дате исполнения
/// </summary>
102
public DateTime? CompletedDate { get { return __completeddate; } }
/// <summary>
/// Доступ к инициатору
/// </summary>
public Account Sender { get { return __sender; } }
/// <summary>
/// Доступ к получателю
/// </summary>
public Account Receiver { get { return __receiver; } }
/// <summary>
/// Доступ к типу задачи
/// </summary>
public int Type { get { return __type; } }
/// <summary>
/// Доступ к описанию задачи
/// </summary>
public string Content { get { return __content; } }
// ----------------------------------------------------------
/// <summary>
/// Обработка задачи
/// </summary>
/// <returns>Результат обработки задачи</returns>
public bool Edit()
{
// Форма задачи
Dialog.frmTask TaskForm = new Dialog.frmTask(this);
// Актуализировать форму
TaskForm._Created = Sender.FullName + " " + CreateDate.ToLongDateString();
TaskForm._DeadLine = DeadLine.ToLongDateString();
TaskForm._CompletedDate = CompletedDate != null ?
((DateTime)CompletedDate).ToLongDateString() : "...";
TaskForm._Completed = CompletedDate != null;
TaskForm._Content = Content;
TaskForm._Type = Type;
// Показать форму задачи
DialogResult DR = TaskForm.ShowDialog();
switch (DR)
{
case DialogResult.None:
break;
case DialogResult.OK:
// Запись в БД времени завершения задачи
ADAPTERT.Complete(DateTime.Now.Date, ID);
// Количество перенаправленных задач на исполнение
int exec_send = Convert.ToInt32(TLTA.TasksSend(Global.CurrentUser.ID,
Event.Doc.ID));
// Инерементируем счетчик в иерархии для новых задач
exec_send++;
// Запись события завершения задачи
ADAPTERE.InsertQuery(Event.Doc.ID, Global.CurrentUser.ID,
"Исполнено", DateTime.Now.Date,
$"{Event.TreeCode}.{exec_send}", Global.CurrentUser.FullName
+ " (" + Global.CurrentUser.HisDepartment.Name + ")");
break;
case DialogResult.Cancel:
break;
case DialogResult.Abort:
break;
// Согласовать
case DialogResult.Retry:
// Запись в БД времени завершения задачи
ADAPTERT.Complete(DateTime.Now.Date, ID);
// Количество перенаправленных задач на исполнение
103
exec_send = Convert.ToInt32(TLTA.TasksSend(Global.CurrentUser.ID,
Event.Doc.ID));
// Инерементируем счетчик в иерархии для новых задач
exec_send++;
// Запись события завершения задачи
ADAPTERE.InsertQuery(Event.Doc.ID, Global.CurrentUser.ID,
"Согласовано", DateTime.Now.Date,
$"{Event.TreeCode}.{exec_send}", Global.CurrentUser.FullName
+ " (" + Global.CurrentUser.HisDepartment.Name + ")");
break;
case DialogResult.Ignore:
break;
// Перенаправление задачи
case DialogResult.Yes:
// Временная переменная для получателя
Account _receiver = null;
// Количество перенаправленных задач на исполнение
exec_send = Convert.ToInt32(TLTA.TasksSend(Global.CurrentUser.ID,
Event.Doc.ID));
// Инерементируем счетчик в иерархии для новых задач
exec_send++;
// Создание задач получателям
foreach (var item in TaskForm._Receivers)
{
// Идентификация получателя
_receiver = new Account(item);
// Создание нового события - Документ перенаправлен на исполнение
ADAPTERE.InsertQuery(Event.Doc.ID, Global.CurrentUser.ID,
"На исполнении", DateTime.Now,
$"{Event.TreeCode}.{exec_send++}", _receiver.FullName + " ("
+ _receiver.HisDepartment.Name + ")");
// Получение ID нового события
int event_id = Convert.ToInt32(ADAPTERE.GetLastID());
// Создание задачи
ADAPTERT.InsertQuery
(
Global.CurrentUser.ID, // Создатель задачи
item, // Получатель задачи
event_id, // Идентификатор связанного
события
2, // 1-Задача согласовать, 2-Задача
исполнить
TaskForm._Comment, // Содержание задачи
DateTime.Now, // Дата создания задачи
DeadLine // Срок выполнения задачи
);
}
break;
case DialogResult.No:
break;
default:
// Отмена действия
return false;
}
// Возврат успешного действия
return true;
}
/// <summary>
/// Проверка возможности назначения задачи исполнения
/// </summary>
/// <param name="__account_id_">Аккаунт на исполнение</param>
/// <returns>Результат проверки</returns>
public bool TryReassing(int __account_id_)
104
{
// Проверка назначения задачи исполнителю
edmsDataSet.tasklistDataTable TLDT = TLTA.TaskAssigned(__account_id_,
Event.Doc.ID);
// Возвращаем результат
return TLDT.Rows.Count == 0;
}
/// <summary>
/// Попытка исполнить задачу
/// </summary>
/// <returns>Результат попытки</returns>
public bool TryToExecute()
{
// Количество отправленных задач на исполнение
int exec_send = Convert.ToInt32(TLTA.TasksSend(Global.CurrentUser.ID,
Event.Doc.ID));
// Количество исполненных задач
int compl_send = Convert.ToInt32(TLTA.TasksCopmleted(Global.CurrentUser.ID,
Event.Doc.ID));
// Если количество исполненных задач равно количеству созданных, то задача
может быть исполненна
return compl_send == exec_send;
}
}
}

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)