Диплом: Автоматизация обработки заявок ООО "Юлмарт РСК"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
95
Полученные при реализации данного проекта и создании приложения
результаты имеют значительную практическую значимость, которую можно
выразить как в общественной, так и в производственной пользе при
использовании подобных разработок.
В итоге, главные задачи дипломной – анализ деятельности компании,
выявление в ней значимых недостатков и ошибок управления, а также
разработка автоматизированной системы учета заявок, выполнены.
Все задачи дипломной работы выполнены, следовательно, можно
обоснованно утверждать, что главная цель исследования - достигнута.
96
Список литературы
1. АлистерКоберн, Современные методы описания функциональных
требований к системам, М. , Лори, 2017 г., 288 с.
2. Бунаков П.А., Лопатин А. В, Практикум по решению задач на ЭВМ
в среде Delphi. Учебное пособие, М., Инфра-М, 2018 г, 304 с.
3. Васильев Р.А, Калянов Г.А., Левочкина Г.А., Стратегическое
управление информационными системами, М, Интернет-университет
информационных технологий, Бином. Лаборатория знаний, 2017 г, 512 с.
4. Вон Вернон, Реализация методов предметно-ориентированного
проектирования, М, Вильямс, 2017 г, 688 с.
5. Грацианова Т.А., Программирование в примерах и задачах, М.,
Лаборатория знаний, 2018 г, 368 с.
6. Данилин А.А., Слюсаренко А. В., Архитектура и стратегия. "Инь" и
"янь" информационных технологий, М, Интернет-университет информационных
технологий, 2017 г, 506 с.
7. ДжоэлГрас, DataScience. Наука о данных с нуля, М, БХВ-Петербург,
2018, 336 с.
8. Дональд Эрвин Кнут, Искусство программирования. Том 2.
Получисленные алгоритмы, М., Вильямс, 2017 г, 832 с.
9. Дональд Эрвин Кнут, Искусство программирования. Том 3.
Сортировка и поиск, М., Вильямс, 2017 г., 824 с.
10. Иванова Г.А., Технология программирования, М, КноРус, 2018 г,
336 с.
11. Исаев Г.А, Теоретико-методологические основы качества
информационных систем, М. Инфра-М, 2018 г. 258 с.
12. Кузнецов А. С., Ченцов С. В, Многоэтапный анализ архитектурной
надежности и синтез отказоустойчивого программного обеспечения сложных
систем, М, Инфра-М, 2018 г, 144 с.
13. Ли Атчисон, Масштабирование приложений. Выращивание
сложных систем, М, Питер, 2018 г, 256 с.
97
14. М. Тим Джонс, Программирование искусственного интеллекта в
приложениях, М., ДМК Пресс, 2018 с., 312 с.
15. Макаровских Т.А., Панюков А. С., Языки и методы
программирования. Создание простых GUI-приложений с помощью Visual С++,
М., Ленанд, 2018 г, 144 с.
16. Панюкова Т.А. Панюков А.С., Языки и методы программирования.
Путеводитель по языку С++, М., Ленанд, 2018 г, 216 с.
17. Подбельский В.А, Курс программирования на языке Си, М.,
ДМК Пресс, 2018 г, 384 с.
18. Поль М. Дюваль, Стивен Матиас, Эндрю Гловер, Непрерывная
интеграция. Улучшение качества программного обеспечения и снижение риска,
М., Вильямс, 2017 г, 240 с.
19. Стивен С. Скиена, Алгоритмы. Руководство по разработке, Спб,
БХВ-Петербург, 2018 г, 720 с.
20. Царев Ю.Р, Мультиверсионное программное обеспечение.
Алгоритмы голосования и оценка надёжности: Монография, М, Инфра-М,
2018 г, 118 с.
98
Приложение. Листинг программного кода (фрагмент)
<?php
namespace app\controllers;
use Yii;
use app\models\Request;
use app\models\RequestSearch;
use app\models\RequestService;
use app\models\RequestServiceSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use yii\base\UserException;
/**
* RequestController implements the CRUD actions for Request model.
*/
class RequestController extends Controller
{
public function behaviors()
{
return [
'verbs' => [
'class' =>VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' =>AccessControl::className(),
'rules' => [
[
'actions' => ['index', 'view', 'create', 'delete', 'add-
service', 'request-full'],
'allow' => true,
'roles' => ['@'],
'matchCallback' =>function ($rule, $action)
{
99
return Yii::$app->user->identity-
>IsClient;
}
],
[
'actions' => ['index', 'view', 'create', 'delete', 'add-
service', 'request-select', 'request-paid', 'request-performing', 'request-performed'],
'allow' => true,
'roles' => ['@'],
'matchCallback' =>function ($rule, $action)
{
return Yii::$app->user->identity-
>IsManager;
}
],
[
'actions' => ['index', 'view', 'create', 'update', 'delete',
'add-service', 'request-select', 'request-paid', 'request-performing', 'request-performed'],
'allow' => true,
'roles' => ['@'],
'matchCallback' =>function ($rule, $action)
{
return Yii::$app->user->identity-
>IsAdmin;
}
],
],
],
];
}
/**
* Lists all Request models.
* @return mixed
*/
publicfunctionactionIndex()
{
$searchModel = new RequestSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$view_name = '';
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
100
$view_name = 'client-index';
$dataProvider->query->andWhere(['id_creator'
=>Yii::$app->user->identity->id]);
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
$view_name = 'manager-index';
$dataProvider->query->andWhere(['id_executor'
=>Yii::$app->user->identity->id])->orWhere('id_executor IS NULL')-
>andWhere('id_request_status> ' .
\app\models\Request::REQUEST_STATUS_OPEN);
} break;
case \app\models\User::USER_TYPE_ADMIN :
{
$view_name = 'admin-index';
} break;
}
return $this->render($view_name, [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single Request model.
* @param integer $id
* @return mixed
*/
public function actionView($id)
{
$view_name = '';
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
$view_name = 'client-view';
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
$view_name = 'manager-view';
} break;
101
case \app\models\User::USER_TYPE_ADMIN :
{
$view_name = 'admin-view';
} break;
}
return $this->render($view_name, [
'model' => $this->findModel($id),
'editable' =>RequestController::RequestEditable ($id, false),
]);
}
publicstaticfunctionRequestGetCurrent ()
{
$models = Request::find()->andWhere (
['id_request_status' =>Request::REQUEST_STATUS_OPEN,
'id_creator' =>Yii::$app->user->identity->id])->orderby(['id' =>
SORT_ASC])->all();
if (count ($models) == 0)
{
return null;
}
else
{
return $models[0]->id;
}
}
public static function RequestCreate ()
{
$model = new Request();
$model->registration_date = date ('Y-m-d H:i:s');
$model->id_creator = Yii::$app->user->identity->id;
$model->id_request_status = Request::REQUEST_STATUS_OPEN;
$model->save();
return $model->id;
}
public function actionAddService ($id_service)
{
$id = RequestController::RequestGetCurrent ();
if ($id == NULL)
$id = RequestController::RequestCreate ();
$request = RequestController::findModel($id);
102
$model = RequestService::find()->andWhere (['id_request' => $request-
>id, 'id_service' => $id_service])->one();
if (empty ($model) == true)
{
$model = new RequestService();
$model->id_request = $id;
$model->registration_date = date ('Y-m-d H:i:s');
$model->id_creator = Yii::$app->user->identity->id;
$model->id_service = $id_service;
$model->amount = 1;
$model->cost = $model->idService->cost;
$model->total = $model->cost * $model->amount;
$model->save();
}
else
{
$model->amount += 1;
$model->cost = $model->idService->cost;
$model->total = $model->cost * $model->amount;
$model->save();
}
$request->RecalculateCost();
$this->redirect(['request-service/index', 'id_request' => $request->id]);
}
public function actionRequestFull ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_OPEN)
throw new UserException (Yii::t('app', 'Bad Request Status'));
$request->id_request_status = Request::REQUEST_STATUS_FULL;
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public function actionRequestPaid ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_FULL)
throw new UserException (Yii::t('app', 'Bad Request Status'));
$request->id_executor = Yii::$app->user->identity->id;
$request->paid = true;
103
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public function actionRequestPerforming ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_FULL)
throw new UserException (Yii::t('app', 'Bad Request Status'));
if ($request->paid != true)
throw new UserException (Yii::t('app', 'Request Not Paid'));
$request->id_request_status =
Request::REQUEST_STATUS_PERFORMING;
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public function actionRequestPerformed ($id_request)
{
$request = RequestController::findModel($id_request);
if ($request->id_request_status !=
Request::REQUEST_STATUS_PERFORMING)
throw new UserException (Yii::t('app', 'Bad Request Status'));
$request->id_request_status =
Request::REQUEST_STATUS_PERFORMED;
$request->save();
return $this->redirect(Yii::$app->request->referrer);
}
public static function RequestEditable ($id_request, $exception = true)
{
$result = false;
$model = RequestController::findModel($id_request);
switch (Yii::$app->user->identity->id_user_type)
{
case \app\models\User::USER_TYPE_CLIENT :
{
$result = $model->id_request_status ==
Request::REQUEST_STATUS_OPEN;
} break;
case \app\models\User::USER_TYPE_MANAGER :
{
104
$result = $model->id_request_status ==
Request::REQUEST_STATUS_FULL && $model->paid == false;
} break;
case \app\models\User::USER_TYPE_ADMIN :
{
$result = $model->id_request_status ==
Request::REQUEST_STATUS_FULL;
} break;
}
if ($exception)
{
if ($result == false)
throw new UserException (Yii::t('app', 'Request Is Not
Editable'));
}
else
return $result;
}
/**
* Creates a new Request model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
return $this->redirect(['view', 'id' =>RequestController::RequestCreate
()]);
}
/**
* Updates an existing Request model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id
* @return mixed
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,

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

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