Вход

Модернизация узла коммерческого учета газа газового промысла

Дипломная работа
Дата создания 14.03.2016
Страниц 117
Источников 43
Вы будете перенаправлены на сайт нашего партнёра, где сможете оформить покупку данной работы.
5 940руб.
КУПИТЬ

Содержание

Оглавление 2 Введение 3 Раздел 1 Конструкторская часть. Выбор технологического оборудования 5 Раздел 2 Технологический раздел 32 Раздел 3 Исследовательский раздел 57 3.1 Выбор проектируемого узла учёта расхода 57 3.2 Подбор средств измерений, необходимых для комплексного измерения технологических параметров 73 Раздел 4 Расчетно-теоретический раздел 87 Раздел 5 Экономическая часть 93 Раздел 6 Безопасность жизнедеятельности и охрана труда 98 Заключение 111 Литература 114 Приложение 1 118 Содержание

Фрагмент работы для ознакомления

Программное обеспечение контроллера обеспечивает надежную работу и позволяет избежать сбоев в системе. После окончания проекта стала ясна важность последовательного выполнения всех этапов: от подробнейшего анализа предметной области до тестирования программы. Только так можно создать по-настоящему эффективное решение автоматизации. Применение системы автоматизации позволяет: Осуществить высокоточное дистанционное измерение расхода газа и оперативно анализировать состав газовой фазы добываемого продукта продукта с помлщью ультральтразвуковых преобразователей расхода FLOWSIC600 Quatro DN 700 фирмы «SICK MAIHAK GmbH» Преобразователи абсолютного давления измерительные EJX510A (рабочие и резервные) фирмы «Yokogawa», с пределами измерений 0…10,0 МПа, выходной сигнал 4-20 мА; Внедренные датчики температуры позволяют оперативно контролировать температурные колебание добываемого продукта Существенно сократить время, затрачиваемое на пуск установки в ручном режиме без применения средств управления и автоматизировать работу обслуживающего персонала установки, Проводить детальный контроль движения продукта в системе, Отображать результаты измерения и вычисления параметров на контроллере, Реализовать нормативные требования экологической и пожарной безопасности, Сигнализировать наличие превышения задымленности в помещении установки, Проводить метрологическую поверку без демонтажа оборудования, Использовать полученные данные измерений в комплексных системах учета, хранения и отпуска природного газа, организовать глобальные корпоративные распределённые системы учёта, Предложенный проект модернизации измерительной установки отвечает всем требованиям необходимым для работы. Цель дипломной работы была достигнута и позволила сформировать представления об этапах проектирования систем автоматизации. Литература Проектирование систем автоматизации технологических процессов: Справочное пособие/ Клюев А. С., Глазов Б.И., Дубровский А.Х., М.: Энергоатомиздат, 2010. Иванова Г.В. Автоматизация технологических процессов основных химических производств СПб, Санкт-Петербургский государственный технологический институт (технический университет), 2013 г. - 134 с. Рукин В.Л., Коробейникова У.Ю. Системы управления химико-технологическими процессами СПб.: СПбГТИ(ТУ), 2010. - 136 с. Дятлова Е.П., Сафонова М.Р. Проектирование автоматизированных систем управления технологическими процессами ЦБП 2012 Ремизова О.А., Рудакова И.В. Системы управления химико-технологическими процессами Питер 2014 Лапшенков Г.И., Полоцкий Л. М - Автоматизация производственных процессов в химической промышленностиТехнические средства и лабораторные работы. - Изд. 3-е, перераб. и доп.— М.: Химия, 2013. - 288 с: ил. ISBN 5-7245-0007-8 Миронов В.М., Беляев В.М. Основы автоматизированного проектирования химических производств Учебное пособие для студентов очного и заочного обучения по специальности 170500 – «Машины и аппараты химических производств». – Томск, ТПУ, 2011. – 169 с. Бельдеева Л.Н. Технологические измерения на предприятиях химической промышленности. В 2-х частяхУчебное пособие /Алт. гос. техн. ун-т им. И. И. Ползунова. -. Барнаул: изд-во АлтГТУ, 2012. - (73+76) с Справочник химика. Т. 1-3. -М.-Л.: Химия, 2015. Лазарев Н.В. Вредные вещества в промышленности. Т. 1-3. - Л.: Химия, 2011. Средства индивидуальной защиты работющих на производстве: Каталог-справочник / Под ред. В.Н. Ардасонова – М.: Альфа, 2014. Средства индивидуальной защиты: Справ. / Под ред. С.Л. Каминского – Л.: Химия, 2014. Кнорринг Г.М. Справочная книга для проектирования электрического освещения – Л.: Энергия, 20011. Кощулько Л.П., Суляева Н.Г. Производственное освещение. - Алма-Ата : 2012г. Пожарная опасность веществ и материалов, применяемых в химической промышленности: Справ. / Под ред. И.В.Рябова - М.: Химия, 2013. Пожаро- взрывоопасность веществ и материалов и средства их тушения: Справ. / Под ред. А.Н. Баратова, А.Я. Корольченко. Т. 1,2. – М.: Ассоциация «Пожнаука», 2014. Баратов А.Н., Иванов Е.н. пожаротушение на предприятиях химической и нефтеперерабатывающей промышленности. – М.: Химия, 2012. Монтаж приборов и средств автоматизации: Справ. / Под ред. А.С. Клюева. – М.: Энергия, 2012. Атаманюк В.Г., Ширшев Л.Г., Акимов Н.И. Гражданская оборона. – М.: Высш. шк., 2011. Каммерер В.Ю., Кутырев А.К., Харкевич А.Е. защитные сооружения гражданской обороны. – М.: Альфа, 2010 .Троп А.Е., Козин В.З., Прокофьев Е.В., "Автоматическое управления технологическими процессами обогатительных фабрик", М.: Недра, 2012. Козин В.З., Троп А.Е., Комаров А.Я. – Автоматизация производственных процессов на обогатительных фабриках: Учебник для вузов. – М.: Недра, 2013. Персиц В.З. - Измерение и контроль технологических параметров на обогатительных фабриках, М.: Недра, 2014. 3. Персиц В.З. - Разработка и патентование систем автоматизации обогатительных фабрик, М.: Недра, 2012. Прокофьев Е.В. – Автоматизация обогатительных фабрик: Учебное пособие. – Екатеринбург: Изд-во УГГУ, 2011 Чекрыжов С. Автоматизация типовых процессов химических производств Учебное пособие. - Кохтла-Ярве: 202012. - 151 стр. Деменков Н.П. scada – системы как инструмент проектирования АСУ ТП: Учеб. пособие. – М.: Изд-во МГТУ им. Н.Э.Баумана. 2014. – 328с.: ил. Аристова Н.И. Промышленные программно-аппаратные средства на отечественном рынке АСУТП / Аристова, Н. И., Корнеева, А. И. - М.: Наутехлитиздат, 2011. - 402с. - Библиогр.: с. 400 Справочник проектировщика АСУТП /Г.Л.Смилянский, Л.З.Амлинский, В.Я.Баранов и др. Под ред. Г.Л.Смилянского. - М.: Машиностро-ение, 2013. Проектирование систем автоматизации технологических процессов: Справочное пособие /А.С.Клюев, Б.В.Глазов,и др.; Под ред. А.С. Клюева.- 2-е изд., перераб. и доп.- М.:Энергоатомиздат, 2011. Техника чтения схем автоматического управления и технологического контроля /А.С.Клюев, Б.В.Глазов и др.; Под ред. А.С.Клюева - 3-е изд., перераб. и доп. - М.: Энергоатомиздат, 2013. Стефани Е.П. Основы построения АСУТП. Учебное пособие для вузов. - М.: Энергоатомиздат, 2012. Ястребенецкий М.А., Иванова Г.М. Надежность АСУТП: Уч.пособие для вузов. - М.: Энергоатомиздат, 2013. Родионов В.Д. Терехов В.А., Яковлев В.Б. Технические средства автоматизированных систем управления технологическими процессами.- М: Высшая школа, 2014. Вальков В.М. Вершинин В.Е. Автоматизированные системы управления технологическими процессами. -Л: Политехника,2015. Черняховский Е.А., Недоноскин Д.Д., Алексеев В.В. Измерительно-вычислительные средства автоматизации производственных процессов.- Л: Энергоатомиздат, 2012. Половинкин А.И. Основы инженерного творчества – М.: м/с, 1998. Кузнецов А. SCADA-системы: программистом можешь ты не быть...// Современные технологии автоматизации, 2012, №1,2013, - С. 32-35. Анзимиров Л. Trace Mode // Приборы и системы управления, 2010, №9. Анзимиров Л. Trace Mode управляет производством // Мир ПК, 2014, декабрь, С. 38-44. SCADA-системы, или муки выбора // РС WEEK, 2011, № 32-33(156-157), С. 35-40. Разработка АСУТП в системе ТРЕЙС МОУД: задачи и перспективы. Тезисы докладов ежегодных международных конференций.- М: AdAstra. 2013 ГОСТ 12.0003-74 " Опасные и вредные производственные факторы. Классификация " Приложение 1 Приложение 1 В результате работы вышеуказанной программы реализуется работа системы автоматического управления установкой. Становится возможной безопасная эксплуатация оборудования Proryv.Script.Output – класс Статический класс для вывода сообщений о выполнении скрипта в файл *.log. Файл размещен в одном каталоге со скриптом. Каталог по умолчанию: 0:/NANDFlash/TK16L/DATA/Init/Script/Projects/ProjectName/ где ProjectName – название проекта, в который включен скрипт. Output.WriteLine – метод Выводит сообщение в лог-файл. Синтаксис public void Output.WriteLine(string message) Параметры message (тип: string) текст сообщения. Пример Output.WriteLine(“Start control”); Output.WriteLine – метод Выводит сообщение со списком параметров в лог-файл. Синтаксис public void Output.WriteLine(string message, params object[] list) Параметры message (тип: string) текст сообщения. list (тип: params object[]) список параметров. Пример Output.WriteLine(“Message, Param1={0}, Param2={1}”, 123, 6.78); Output.WriteWarning – метод Выводит предупреждение в лог-файл. Синтаксис Руководство пользователя ТК16L Средства разработки скриптов Классы и методы . 15 public void Output.WriteWarning(string message) Параметры message (тип: string) текст сообщения. Пример Output. WriteWarning (“Warning message”); Output.WriteWarning – метод Выводит предупреждение со списком параметров в лог-файл. Синтаксис public void Output.WriteWarning(string message, params object[] list) Параметры message (тип: string) текст сообщения. list (тип: params object[]) список параметров. Пример Output. WriteWarning (“Warning message, Param1={0}, Param2={1}”, 123, 6.78); Output.WriteError – метод Выводит предупреждение в лог-файл. Синтаксис public void Output.WriteError(string message) Параметры message (тип: string) текст сообщения. Пример Output. WriteError (“Error message”); Output.WriteError – метод Выводит предупреждение в лог-файл. Синтаксис public void Output.WriteError(string message, params object[] list) Параметры message (тип: string) текст сообщения. list (тип: params object[]) список параметров. Пример Output. WriteError (“Error message, Param1={0}, Param2={1}”, 123, 6.78); Output.WriteException – метод Выводит предупреждение в лог-файл. Синтаксис public void Output.WriteException(string message, Exception ex) 16 . Классы и методы Руководство пользователя ТК16L Средства разработки скриптов Параметры message (тип: string) текст сообщения. ex (тип: Exception) исключение. Пример Output.WriteEхception (“Eхception message”, ex); Output.Format – метод Выполняет подстановку параметров, заданных в списке, в строку. Синтаксис public string Output.Format(string message, params object[] list) Параметры message (тип: string) строка. list (тип: params object[]) список аргументов. Пример string message = Output.Format ("Value1={0}, Value2={1}", 12, 45.6); В результате выполнения возвращается строка: Value1=12, Value2=45.6 Proryv.Script.Array – класс Статический класс для обработки данных в массивах. Array.Sort - метод Сортирует массив Синтаксис public void Sort(System.Array array, int index, int length) Параметры array (тип: System.Array) массив. index (тип: int) начальный элемент массива. length (тип: int) количество элементов массива. Пример byte[] data = { 0x05, 0x03, 0x07}; Array.Sort(data, 0, data,Length); Proryv.Script.DataUtils – класс Статический класс для обработки данных. Используется, в частности, при обмене данными с системой Телескоп+. DataUtils.StrHexToArray – метод Преобразует hex строку в массив байтов. Синтаксис public byte[] DataUtils.StrHexToArray(string str) Руководство пользователя ТК16L Средства разработки скриптов Классы и методы . 17 Параметры str (тип: string) hex строка Возвращаемое значение Массив байтов, преобразованный из строки (null если str=null) DataUtils.DataToStrHex – метод Преобразует массив байтов в hex строку. Синтаксис public string DataUtils.DataToStrHex(byte[] data) Параметры data (тип: byte[]) входной массив байтов Возвращаемое значение hex строка, преобразованная из массива DataUtils.CRC16 – метод Подсчитывает контрольную сумму для фрагмента массива. Синтаксис public UInt16 DataUtils.CRC16(byte[] buffer, int offset, int length) Параметры buffer (тип: byte[]) массив байтов offset (тип: int) сдвиг в массиве байтов до целевого фрагмента массива length (тип: int) количество байтов во фрагменте массива Возвращаемое значение Контрольная сумма CRC16 для фрагмента массива DataUtils.IsSetBit – метод Проверяет установку бита в битовой последовательности. Синтаксис public bool DataUtils.IsSetBit(int mask, int index) Параметры mask (тип: int) маска (битовая последовательность) index (тип: int) номер бита от младшего бита Возвращаемое значение Признак установки бита: true - бит установлен false - не установлен DataUtils.IsEqual – метод Сравнивает массивы. Синтаксис public void Stop() ElapsedMilliseconds – свойство Возвращает значение затраченного времени в миллисекундах. Синтаксис public uint ElapsedMilliseconds { get; } Пример Stopwatch measure = new Stopwatch(); measure.Restart(); ….. Output.WriteLine(string.Format(“Elapsed time = {0}”, measure.ElapsedMilliseconds)); Proryv.Script.Watchdog – класс Класс для реализация процесса типа watchdog: контроль зависания контроллера, перезагрузка контроллера при зависании. Watchdog – конструктор Инициализирует новый экземпляр класса Watchdog. Синтаксис public Watchdog(string name, int period) Параметры name (тип: string) уникальное имя watchdog period (тип: int) период обновления, мс Start – метод Запускает таймер Watchdog. Синтаксис public bool Start() Stop – метод Останавливает таймер Watchdog. Синтаксис public bool Stop() Refresh – метод Обновляет таймер Watchdog. Синтаксис Руководство пользователя ТК16L Средства разработки скриптов Классы и методы . 29 public bool Refresh() Пример Watchdog watchdog = new Watchdog(“MyWatchdog”, 60000); watchdog.Start(); while (true) { watchdog.Refresh(); … } watchdog.Stop(); Proryv.Script.RemotePort – класс Класс для работы по линиям RS485/RS232. RemotePort – конструктор Инициализирует новый экземпляр класса RemotePort. Синтаксис public RemotePort(string ipAddress, int tcpPort) Параметры ipAddress (тип: string) IP адрес удаленного порта. Можно указывать IP адрес любого контроллера TK16L. Чаще всего используется контроллер с IP=127.0.0.1 (текущий). tcpPort (тип: int) Dispose – метод Освобождает ресурсы. Синтаксис public void Dispose() Open – метод Открывает порт. Синтаксис public bool Open() Возвращаемое значение Признак выполнения: true – выполнено false – ошибка Close – метод Закрывает порт. public void Close() IsOpen – свойство Возвращает признак открытия порта. Синтаксис public bool IsOpen { get; } IPAddress – свойство Возвращает IP адрес порта. Синтаксис public string IPAddress { get; } TCPPort – свойство Возвращает номер TCP порта. Синтаксис public int TCPPort { get; } BaudRate – свойство Возвращает и устанавливает скорость обмена, например 9600. Синтаксис public int BaudRate { get; set; } DataBits – свойство Возвращает и устанавливает количество бит данных (8 или 7 бит). Синтаксис public byte DataBits { get; set; } System.IO.Ports.StopBits Stopbits – свойство Возвращает и устанавливает длину стоп-бита (StopBits.None, StopBits.One, StopBits.Two, StopBits.OnePointFive). Синтаксис public System.IO.Ports.StopBits Stopbits { get; set; } System.IO.Ports.Parity Parity – свойство Возвращает и устанавливает способ контроля четности (Parity.None, Parity.Odd, Parity.Even, Parity.Mark, Parity.Space). Синтаксис public System.IO.Ports.Parity Parity { get; set; } Руководство пользователя ТК16L Средства разработки скриптов Классы и методы . 31 ReadTimeoutInterval – свойство Возвращает и устанавливает таймаут чтения, мс (межсимвольный). Синтаксис public int ReadTimeoutInterval { get; set; } ReadTimeoutMultiplier – свойство Возвращает и устанавливает таймаут чтения, мс (множитель). Синтаксис public int ReadTimeoutConstant { get; set; } ReadTimeoutConstant – свойство Возвращает и устанавливает таймаут чтения, мс (константа). Синтаксис public int ReadTimeoutConstant { get; set; } WriteTimeoutMultiplier – свойство Возвращает и устанавливает таймаут записи, мс (множитель). Синтаксис public int WriteTimeoutMultiplier { get; set; } WriteTimeoutConstant – свойство Возвращает и устанавливает таймаут записи, мс (константа). ЛИСТИНГ СКРИПТА СОЗДАНИЯ БАЗЫ ДАННЫХ Ниже приведен листинг создания базы данных системы. -- -- Create schema bugtrackeram_1 -- CREATE DATABASE IF NOT EXISTS bugtrackeram_1; USE bugtrackeram_1; -- -- Definition of table `changehistory` -- DROP TABLE IF EXISTS `changehistory`; CREATE TABLE `changehistory` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `changetype_id` int(10) unsigned NOT NULL, `systemuser_id` int(10) unsigned NOT NULL, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `comment` varchar(2000) CHARACTER SET utf8 DEFAULT NULL, `oldvalue` varchar(100) CHARACTER SET utf8 DEFAULT NULL, `newvalue` varchar(100) CHARACTER SET utf8 DEFAULT NULL, `error_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=latin1; -- -- Dumping data for table `changehistory` -- /*!40000 ALTER TABLE `changehistory` DISABLE KEYS */; /*!40000 ALTER TABLE `changehistory` ENABLE KEYS */; -- -- Definition of table `changetype` -- DROP TABLE IF EXISTS `changetype`; CREATE TABLE `changetype` ( `id` int(10) unsigned NOT NULL, `name` varchar(100) CHARACTER SET utf8 NOT NULL, `code` varchar(45) CHARACTER SET utf8 NOT NULL, `action_text` varchar(200) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `changetype` -- /*!40000 ALTER TABLE `changetype` DISABLE KEYS */; INSERT INTO `changetype` (`id`,`name`,`code`,`action_text`) VALUES (1,'Добавление комментария','ADD_COMMENT','Добавлен комментарий'), (2,'Изменение типа ошибки','CHANGE_ERROR_TYPE','Изменен тип ошибки'), (3,'Изменение приоритета ошибки','CHANGE_ERROR_PRIORITY','Изменен приоритет ошибки'), (4,'Назначение ответственного','ASSIGN_TO_RESPONSIBLE','Назначен ответственный'), (5,'Изменение статуса ошибки','CHANGE_ERROR_STATE','Изменен статус ошибки'); /*!40000 ALTER TABLE `changetype` ENABLE KEYS */; -- -- Definition of table `error` -- DROP TABLE IF EXISTS `error`; CREATE TABLE `error` ( `error_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(150) CHARACTER SET utf8 NOT NULL, `description` varchar(2000) CHARACTER SET utf8 DEFAULT NULL, `creation_date` datetime NOT NULL, `priority_id` int(10) unsigned NOT NULL, `errortype_id` int(10) unsigned NOT NULL, `status_id` int(10) unsigned NOT NULL, `subsystem_id` int(10) unsigned NOT NULL, `responsible_id` int(10) unsigned zerofill DEFAULT NULL, `autor_id` int(10) unsigned NOT NULL, `correction_date` datetime DEFAULT NULL, PRIMARY KEY (`error_id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1; -- -- Dumping data for table `error` -- /*!40000 ALTER TABLE `error` DISABLE KEYS */; /*!40000 ALTER TABLE `error` ENABLE KEYS */; -- -- Definition of table `errorpriority` -- DROP TABLE IF EXISTS `errorpriority`; CREATE TABLE `errorpriority` ( `errorpriority_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) CHARACTER SET utf8 DEFAULT NULL, `description` varchar(100) CHARACTER SET utf8 NOT NULL, `code` varchar(45) CHARACTER SET utf8 NOT NULL, `days` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`errorpriority_id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- -- Dumping data for table `errorpriority` -- /*!40000 ALTER TABLE `errorpriority` DISABLE KEYS */; INSERT INTO `errorpriority` (`errorpriority_id`,`name`,`description`,`code`,`days`) VALUES (1,'Высокий','Высокий приоритет','высокий',3), (2,'Низкий','Низкий приоритет','низкий',20), (3,'Средний','Средний приоритет','средний',10); /*!40000 ALTER TABLE `errorpriority` ENABLE KEYS */; -- -- Definition of table `errorstatus` -- DROP TABLE IF EXISTS `errorstatus`; CREATE TABLE `errorstatus` ( `errorstatus_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) CHARACTER SET utf8 NOT NULL, `description` varchar(100) CHARACTER SET utf8 DEFAULT NULL, `code` varchar(45) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`errorstatus_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; -- -- Dumping data for table `errorstatus` -- /*!40000 ALTER TABLE `errorstatus` DISABLE KEYS */; INSERT INTO `errorstatus` (`errorstatus_id`,`name`,`description`,`code`) VALUES (1,'Новая','Статус новая','новая'), (2,'Исправлена','Статус исправлена','исправлена'); /*!40000 ALTER TABLE `errorstatus` ENABLE KEYS */; -- -- Definition of table `errortype` -- DROP TABLE IF EXISTS `errortype`; CREATE TABLE `errortype` ( `errortype_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) CHARACTER SET utf8 NOT NULL, `description` varchar(100) CHARACTER SET utf8 DEFAULT NULL, `code` varchar(45) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`errortype_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; -- -- Dumping data for table `errortype` -- /*!40000 ALTER TABLE `errortype` DISABLE KEYS */; INSERT INTO `errortype` (`errortype_id`,`name`,`description`,`code`) VALUES (1,'Ошибка','Тип ошибка','ошибка'), (2,'Доработка','Тип доработка','доработка'); /*!40000 ALTER TABLE `errortype` ENABLE KEYS */; -- -- Definition of table `subsystem` -- DROP TABLE IF EXISTS `subsystem`; CREATE TABLE `subsystem` ( `subsystem_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) CHARACTER SET utf8 NOT NULL, `description` varchar(45) CHARACTER SET utf8 NOT NULL, `creation_date` datetime NOT NULL, PRIMARY KEY (`subsystem_id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; -- -- Dumping data for table `subsystem` -- /*!40000 ALTER TABLE `subsystem` DISABLE KEYS */; /*!40000 ALTER TABLE `subsystem` ENABLE KEYS */; -- -- Definition of table `systemuser` -- DROP TABLE IF EXISTS `systemuser`; CREATE TABLE `systemuser` ( `systemuser_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `creation_date` datetime NOT NULL, `user_id` int(10) unsigned NOT NULL, `subsystem_id` int(10) unsigned NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '0', `read_role` tinyint(1) NOT NULL DEFAULT '0', `write_role` tinyint(1) NOT NULL DEFAULT '0', `add_role` tinyint(1) NOT NULL DEFAULT '0', `delete_role` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`systemuser_id`), KEY `FK_systemuser_user` (`user_id`), KEY `FK_systemuser_subsystem` (`subsystem_id`), CONSTRAINT `FK_systemuser_subsystem` FOREIGN KEY (`subsystem_id`) REFERENCES `subsystem` (`subsystem_id`), CONSTRAINT `FK_systemuser_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1; -- -- Dumping data for table `systemuser` -- /*!40000 ALTER TABLE `systemuser` DISABLE KEYS */; /*!40000 ALTER TABLE `systemuser` ENABLE KEYS */; -- -- Definition of table `userrole` -- DROP TABLE IF EXISTS `userrole`; CREATE TABLE `userrole` ( `userrole_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(40) NOT NULL, `description` varchar(200) DEFAULT NULL, PRIMARY KEY (`userrole_id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; -- -- Dumping data for table `userrole` -- /*!40000 ALTER TABLE `userrole` DISABLE KEYS */; INSERT INTO `userrole` (`userrole_id`,`name`,`description`) VALUES (1,'Администратор','Администратор системы'), (2,'Пользователь','Пользователь системы'), (3,'Менеджер','Менеджер'), (4,'Программист','Программист'), (5,'Менеджер проекта','Менеджер проекта'), (6,'Тестировщик','Тестировщик'), (7,'Специалист по поддержке','Специалист по поддержке'); /*!40000 ALTER TABLE `userrole` ENABLE KEYS */; -- -- Definition of table `users` -- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `fio` varchar(45) CHARACTER SET utf8 NOT NULL, `login` varchar(45) CHARACTER SET utf8 NOT NULL, `password` varchar(45) CHARACTER SET utf8 NOT NULL, `email` varchar(45) CHARACTER SET utf8 NOT NULL, `creation_date` datetime NOT NULL, `userrole_id` int(10) unsigned NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`user_id`), KEY `FK_Users_Urole` (`userrole_id`), CONSTRAINT `FK_Users_Urole` FOREIGN KEY (`userrole_id`) REFERENCES `userrole` (`userrole_id`) ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1; ЛИСТИНГ ИСХОДНОГО КОДА ПРОГРАММЫ Ниже приведен исходных код класса, формирующего данные для отчетов. package com.btam.adapter.reports; import com.btam.adapter.dao.BTConnection; import com.btam.adapter.errors.ErrorsBean; import com.btam.adapter.errortype.ErrorTypeBean; import com.btam.adapter.errortype.errorstatus.ErrorStatusBean; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; /** * Содержит методы возвращающие отчетные данные об ошибках. */ public class ReportsServerImpl { /** * Возвращает количество всех ошибок в системе * @return количество всех ошибок в системе * @throws java.sql.SQLException */ public int getTotalErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = "SELECT count(*) FROM error"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public int getNewErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = String.format("SELECT count(*) FROM error, errorstatus " + "where error.status_id = errorstatus.errorstatus_id " + "and errorstatus.code='%s' ", ErrorStatusBean.NEW_CODE); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public ArrayList<ErrorsBean> getNewError() throws SQLException { String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date " + //17 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "where s.code='%s' ", ErrorStatusBean.NEW_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList<ErrorsBean> result = new ArrayList<ErrorsBean>(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } public ArrayList<ErrorsBean> getOverTimeError() throws SQLException { String sql = "SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE e.correction_date is null "; Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList<ErrorsBean> result = new ArrayList<ErrorsBean>(); while (rs.next()) { Date creationDate = rs.getTimestamp(4); Date correctionDate = new Date(); // если тип ошибки "ошибка" if ((rs.getString(18).equals(ErrorTypeBean.ERROR_TYPE)) && // если приоритет = высокий то 48 часов (((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) > 0)) || // если приоритет средний то 120 часов (rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) > 0) || // если приоритет низкий то 240 часов (rs.getString(19).equals("3") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0)) || // если тип ошибки "доработка" ((rs.getString(18).equals(ErrorTypeBean.REVISION_TYPE)) && // если приоритет = высокий то 72 часов ((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 72) > 0) || // если приоритет средний то 240 часов (rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0) || // если приоритет низкий то 480 часов (rs.getString(19).equals("3") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 480) > 0)))) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } } return result; } public ArrayList<ErrorsBean> getCriticalError() throws SQLException { String sql = "SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE e.correction_date is null "; Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList<ErrorsBean> result = new ArrayList<ErrorsBean>(); while (rs.next()) { Date creationDate = rs.getTimestamp(4); Date correctionDate = new Date(); // если тип ошибки "ошибка" if (((rs.getString(18).equals(ErrorTypeBean.ERROR_TYPE)) && // если приоритет = высокий то 48 часов ((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 40) >= 0) || // если приоритет средний то 120 часов (rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 100) >= 0) || // если приоритет низкий то 240 часов (rs.getString(19).equals("3") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 200) >= 0))) || // если тип ошибки "доработка" ((rs.getString(18).equals(ErrorTypeBean.REVISION_TYPE)) && // если приоритет = высокий то 72 часов ((rs.getString(19).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 40) >= 0) ||// если приоритет средний то 240 часов (rs.getString(19).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 100) >= 0) || // если приоритет низкий то 480 часов (rs.getString(19).equals("3") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 200) >= 0)))) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } } return result; } public int getAllFicsedErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = String.format("SELECT count(*) FROM error " + "inner join errorstatus " + "ON error.status_id = errorstatus.errorstatus_id " + "INNER JOIN errortype " + "ON error.errortype_id = errortype.errortype_id " + "WHERE errortype.code = '%s' and errorstatus.code='%s' " + "and error.correction_date is not null ", ErrorTypeBean.ERROR_TYPE, ErrorStatusBean.CORRECTED_CODE); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public ArrayList<ErrorsBean> getAllFicsedError() throws SQLException { String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE et.code = '%s' and s.code='%s' " + "and e.correction_date is not null ", ErrorTypeBean.ERROR_TYPE, ErrorStatusBean.CORRECTED_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList<ErrorsBean> result = new ArrayList<ErrorsBean>(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } public int getAllAdditionalErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = String.format("SELECT count(*) FROM error " + "inner join errorstatus " + "ON error.status_id = errorstatus.errorstatus_id " + "INNER JOIN errortype " + "ON error.errortype_id = errortype.errortype_id " + "WHERE errortype.code = '%s' and errorstatus.code='%s' " + "and error.correction_date is not null", ErrorTypeBean.REVISION_TYPE, ErrorStatusBean.CORRECTED_CODE); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; if (rs.next()) { result = rs.getInt(1); } return result; } public ArrayList<ErrorsBean> getAllAdditionalError() throws SQLException { String sql = String.format("SELECT e.error_id, " + //1 "e.name, " + //2 "e.description, " + //3 "e.creation_date, " + //4 "e.priority_id, " + //5 "p.name, " + //6 "e.errortype_id, " + //7 "et.name, " + //8 "e.status_id, " + //9 "s.name, " + //10 "e.subsystem_id, " + //11 "ss.name, " + //12 "e.responsible_id, " + //13 "resp.fio, " + //14 "e.autor_id, " + //15 "autr.fio, " + //16 "e.correction_date, " + //17 "et.code, " + //18 "p.code " + //19 "FROM error as e " + "INNER JOIN errorpriority as p ON e.priority_id = p.errorpriority_id " + "INNER JOIN errortype as et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorstatus as s ON e.status_id = s.errorstatus_id " + "INNER JOIN subsystem as ss ON e.subsystem_id = ss.subsystem_id " + "LEFT OUTER JOIN systemuser as sresp ON e.responsible_id = sresp.systemuser_id " + "LEFT OUTER JOIN users as resp ON sresp.user_id = resp.user_id " + "INNER JOIN systemuser as sautr ON e.autor_id = sautr.systemuser_id " + "INNER JOIN users as autr ON sautr.user_id = autr.user_id " + "WHERE et.code = '%s' and s.code='%s' " + "and e.correction_date is not null ", ErrorTypeBean.REVISION_TYPE, ErrorStatusBean.CORRECTED_CODE); Connection conn = BTConnection.getInstance().getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ArrayList<ErrorsBean> result = new ArrayList<ErrorsBean>(); while (rs.next()) { ErrorsBean error = new ErrorsBean(); error.setId(rs.getInt(1)); error.setName(rs.getString(2)); error.setDescription(rs.getString(3)); error.setCreationDate(rs.getDate(4)); error.setPriorityId(rs.getInt(5)); error.setPriorityName(rs.getString(6)); error.setErrorTypeId(rs.getInt(7)); error.setErrorTypeText(rs.getString(8)); error.setStatusId(rs.getInt(9)); error.setStatusText(rs.getString(10)); error.setSubSystemId(rs.getInt(11)); error.setSubSystemText(rs.getString(12)); error.setResponsibleId(rs.getInt(13)); error.setResponsibleText(rs.getString(14)); error.setAutorId(rs.getInt(15)); error.setAutorText(rs.getString(16)); error.setCorrectionDate(rs.getTimestamp(17)); result.add(error); } return result; } public int getOverTimeErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = "SELECT e.creation_date, e.correction_date, " + "et.code, ep.code FROM error as e " + "INNER JOIN errortype et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorpriority ep ON e.priority_id = ep.errorpriority_id " + "WHERE e.correction_date is null "; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; while (rs.next()) { Date creationDate = rs.getTimestamp(1); Date correctionDate = new Date(); // если тип ошибки "ошибка" if ((rs.getString(3).equals(ErrorTypeBean.ERROR_TYPE)) && // если приоритет = высокий то 48 часов (((rs.getString(4).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) > 0)) || // если приоритет средний то 120 часов (rs.getString(4).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) > 0) || // если приоритет низкий то 240 часов (rs.getString(4).equals("3") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0)) || // если тип ошибки "доработка" ((rs.getString(3).equals(ErrorTypeBean.REVISION_TYPE)) && // если приоритет = высокий то 72 часов ((rs.getString(4).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 72) > 0) || // если приоритет средний то 240 часов (rs.getString(4).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) > 0) || // если приоритет низкий то 480 часов (rs.getString(4).equals("3") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 480) > 0)))) { result++; } } return result; } public int getCriticalErrorCount() throws SQLException { Connection conn = BTConnection.getInstance().getConnection(); String sql = "SELECT e.creation_date, e.correction_date, " + "et.code, ep.code FROM error as e " + "INNER JOIN errortype et ON e.errortype_id = et.errortype_id " + "INNER JOIN errorpriority ep ON e.priority_id = ep.errorpriority_id " + "WHERE e.correction_date is null "; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int result = 0; while (rs.next()) { Date creationDate = rs.getTimestamp(1); Date correctionDate = new Date(); // если тип ошибки "ошибка" if (((rs.getString(3).equals(ErrorTypeBean.ERROR_TYPE)) && // если приоритет = высокий то 48 часов ((rs.getString(4).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 40) >= 0) || // если приоритет средний то 120 часов (rs.getString(4).equals("2") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 120) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 100) >= 0) || // если приоритет низкий то 240 часов (rs.getString(4).equals("3") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 240) < 0 && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 200) >= 0))) || // если тип ошибки "доработка" ((rs.getString(3).equals(ErrorTypeBean.REVISION_TYPE)) && // если приоритет = высокий то 72 часов ((rs.getString(4).equals("1") && ((correctionDate.getTime() - creationDate.getTime()) / 1000 / 3600 - 48) < 0 && ((correctionDat

Список литературы

1. Проектирование систем автоматизации технологических процессов: Справочное пособие/ Клюев А. С., Глазов Б.И., Дубровский А.Х., М.: Энергоатомиздат, 2010. 2. Иванова Г.В. Автоматизация технологических процессов основных химических производств СПб, Санкт-Петербургский государственный технологический институт (технический университет), 2013 г. - 134 с. 3. Рукин В.Л., Коробейникова У.Ю. Системы управления химико-технологическими процессами СПб.: СПбГТИ(ТУ), 2010. - 136 с. 4. Дятлова Е.П., Сафонова М.Р. Проектирование автоматизированных систем управления технологическими процессами ЦБП 2012 5. Ремизова О.А., Рудакова И.В. Системы управления химико-технологическими процессами Питер 2014 6. Лапшенков Г.И., Полоцкий Л. М - Автоматизация производственных процессов в химической промышленностиТехнические средства и лабораторные работы. - Изд. 3-е, перераб. и доп.— М.: Химия, 2013. - 288 с: ил. ISBN 5-7245-0007-8 7. Миронов В.М., Беляев В.М. Основы автоматизированного проектирования химических производств Учебное пособие для студентов очного и заочного обучения по специальности 170500 – «Машины и аппараты химических производств». – Томск, ТПУ, 2011. – 169 с. 8. Бельдеева Л.Н. Технологические измерения на предприятиях химической промышленности. В 2-х частяхУчебное пособие /Алт. гос. техн. ун-т им. И. И. Ползунова. -. Барнаул: изд-во АлтГТУ, 2012. - (73+76) с 9. Справочник химика. Т. 1-3. -М.-Л.: Химия, 2015. 10. Лазарев Н.В. Вредные вещества в промышленности. Т. 1-3. - Л.: Химия, 2011. 11. Средства индивидуальной защиты работющих на производстве: Каталог-справочник / Под ред. В.Н. Ардасонова – М.: Альфа, 2014. 12. Средства индивидуальной защиты: Справ. / Под ред. С.Л. Каминского – Л.: Химия, 2014. 13. Кнорринг Г.М. Справочная книга для проектирования электрического освещения – Л.: Энергия, 20011. 14. Кощулько Л.П., Суляева Н.Г. Производственное освещение. - Алма-Ата : 2012г. 15. Пожарная опасность веществ и материалов, применяемых в химической промышленности: Справ. / Под ред. И.В.Рябова - М.: Химия, 2013. 16. Пожаро- взрывоопасность веществ и материалов и средства их тушения: Справ. / Под ред. А.Н. Баратова, А.Я. Корольченко. Т. 1,2. – М.: Ассоциация «Пожнаука», 2014. 17. Баратов А.Н., Иванов Е.н. пожаротушение на предприятиях химической и нефтеперерабатывающей промышленности. – М.: Химия, 2012. 18. Монтаж приборов и средств автоматизации: Справ. / Под ред. А.С. Клюева. – М.: Энергия, 2012. 19. Атаманюк В.Г., Ширшев Л.Г., Акимов Н.И. Гражданская оборона. – М.: Высш. шк., 2011. 20. Каммерер В.Ю., Кутырев А.К., Харкевич А.Е. защитные сооружения гражданской обороны. – М.: Альфа, 2010 21. .Троп А.Е., Козин В.З., Прокофьев Е.В., "Автоматическое управления технологическими процессами обогатительных фабрик", М.: Недра, 2012. 22. Козин В.З., Троп А.Е., Комаров А.Я. – Автоматизация производственных процессов на обогатительных фабриках: Учебник для вузов. – М.: Недра, 2013. 23. Персиц В.З. - Измерение и контроль технологических параметров на обогатительных фабриках, М.: Недра, 2014. 24. 3. Персиц В.З. - Разработка и патентование систем автоматизации обогатительных фабрик, М.: Недра, 2012. 25. Прокофьев Е.В. – Автоматизация обогатительных фабрик: Учебное пособие. – Екатеринбург: Изд-во УГГУ, 2011 26. Чекрыжов С. Автоматизация типовых процессов химических производств Учебное пособие. - Кохтла-Ярве: 202012. - 151 стр. 27. Деменков Н.П. SCADA – системы как инструмент проектирования АСУ ТП: Учеб. пособие. – М.: Изд-во МГТУ им. Н.Э.Баумана. 2014. – 328с.: ил. 28. Аристова Н.И. Промышленные программно-аппаратные средства на отечественном рынке АСУТП / Аристова, Н. И., Корнеева, А. И. - М.: Наутехлитиздат, 2011. - 402с. - Библиогр.: с. 400 29. Справочник проектировщика АСУТП /Г.Л.Смилянский, Л.З.Амлинский, В.Я.Баранов и др. Под ред. Г.Л.Смилянского. - М.: Машиностро-ение, 2013. 30. Проектирование систем автоматизации технологических процессов: Справочное пособие /А.С.Клюев, Б.В.Глазов,и др.; Под ред. А.С. Клюева.- 2-е изд., перераб. и доп.- М.:Энергоатомиздат, 2011. 31. Техника чтения схем автоматического управления и технологического контроля /А.С.Клюев, Б.В.Глазов и др.; Под ред. А.С.Клюева - 3-е изд., перераб. и доп. - М.: Энергоатомиздат, 2013. 32. Стефани Е.П. Основы построения АСУТП. Учебное пособие для вузов. - М.: Энергоатомиздат, 2012. 33. Ястребенецкий М.А., Иванова Г.М. Надежность АСУТП: Уч.пособие для вузов. - М.: Энергоатомиздат, 2013. 34. Родионов В.Д. Терехов В.А., Яковлев В.Б. Технические средства автоматизированных систем управления технологическими процессами.- М: Высшая школа, 2014. 35. Вальков В.М. Вершинин В.Е. Автоматизированные системы управления технологическими процессами. -Л: Политехника,2015. 36. Черняховский Е.А., Недоноскин Д.Д., Алексеев В.В. Измерительно-вычислительные средства автоматизации производственных процессов.- Л: Энергоатомиздат, 2012. 37. Половинкин А.И. Основы инженерного творчества – М.: м/с, 1998. 38. Кузнецов А. SCADA-системы: программистом можешь ты не быть...// Современные технологии автоматизации, 2012, №1,2013, - С. 32-35. 39. Анзимиров Л. Trace Mode // Приборы и системы управления, 2010, №9. 40. Анзимиров Л. Trace Mode управляет производством // Мир ПК, 2014, декабрь, С. 38-44. 41. SCADA-системы, или муки выбора // РС WEEK, 2011, № 32-33(156-157), С. 35-40. 42. Разработка АСУТП в системе ТРЕЙС МОУД: задачи и перспективы. Тезисы докладов ежегодных международных конференций.- М: AdAstra. 2013 43. ГОСТ 12.0003-74 " Опасные и вредные производственные факторы. Классификация " список литературы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
Сколько стоит
заказать работу?
1
Заполните заявку - это бесплатно и ни к чему вас не обязывает. Окончательное решение вы принимаете после ознакомления с условиями выполнения работы.
2
Менеджер оценивает работу и сообщает вам стоимость и сроки.
3
Вы вносите предоплату 25% и мы приступаем к работе.
4
Менеджер найдёт лучшего автора по вашей теме, проконтролирует выполнение работы и сделает всё, чтобы вы остались довольны.
5
Автор примет во внимание все ваши пожелания и требования вуза, оформит работу согласно ГОСТам, произведёт необходимые доработки БЕСПЛАТНО.
6
Контроль качества проверит работу на уникальность.
7
Готово! Осталось внести доплату и работу можно скачать в личном кабинете.
После нажатия кнопки "Узнать стоимость" вы будете перенаправлены на сайт нашего официального партнёра Zaochnik.com
© Рефератбанк, 2002 - 2017