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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
case 2:
ev_name = "Документ отправлен на предыдущий
этап";
break;
case 3:
ev_name = "Документ вернут на первый этап";
break;
case 4:
ev_name = "Документ согласован";
break;
case 5:
ev_name = "Документ помещен в архив";
break;
}
subitem1->Tag = 1;
break;
case 2:
ev_name = "Загруженфайл";
subitem1->Tag = 2;
break;
case 3:
subitem1->Tag = 3;
ev_name = "Добавленосообщение";
break;
}
subitem1->Text = ev_name;
item->SubItems->Add(subitem1);
// Текст/Файл
ListViewItem::ListViewSubItem^ subitem2 = gcnew
ListViewItem::ListViewSubItem();
switch(type_ev_int)
{
case 1:
text_file = "";
break;
case 2:
sql = "select date_fi, name_fi, oldname_fi, ext_fi from files
where id_fi="+sqlresult[i][2]+" and id_do="+id_do;
res = mF->sqlSelect(sql, %sqlresult1);
if(!res || sqlresult1.Count==0)
{
MessageBox::Show("Ошибка
12\r\nНемогупрочитатьданныеофайлевсобытииот " + sqlresult[i][1]);
return false;
}
subitem2->Tag = sqlresult1[0][1]+sqlresult1[0][3]; //
Имяфайлана FTP сервере
text_file = sqlresult1[0][2]+sqlresult1[0][3]; //
Имяфайланакомпьютере
break;
case 3:
sql = "select id_do, date_in, text_in from info where
id_in="+sqlresult[i][2]+" and id_do="+id_do;
res = mF->sqlSelect(sql, %sqlresult1);
if(!res || sqlresult1.Count==0)
{
MessageBox::Show("Ошибка
12\r\nНемогупрочитатьданныеосообщениивсобытииот " + sqlresult[i][1]);
return false;
}
text_file = sqlresult1[0][2]; // текстсообщения
break;
}
subitem2->Text = text_file;
item->SubItems->Add(subitem2);
// Добавлениесобытиявгруппуэтапа
if(i==0 || new_num_co!=old_num_co) // Новыйэтап
{
ListViewGroup ^gr = gcnew ListViewGroup("Этап
"+Convert::ToString(stepCnt));
listView1->Groups->Add(gr);
curr_group = gr;
item->Group = curr_group;
stepCnt++;
}
else // такойжеэтап
item->Group = curr_group;
listView1->Items->Add(item);
old_num_co = new_num_co;
}
}
return true;
}
boolshowDoc::coordinate(intstatus) // status = 4 – согласовать, 3 – Отказать, инаначало,
2 – Откзать, отправитьнадоработки
{
if(status > 4 && status < 2)
return false;
int id_fi_int, id_in_int, id_ev_int;
String ^sql, ^id_ro, ^id_wo, ^num_co, ^id_do, ^code_ev, ^mess, ^status_do;
list_of_list sqlresult = gcnew list_of_list();
list_of_list sqlresult1 = gcnew list_of_list();
int num_co_int;
int new_num_co;
bool res;
id_ro = currList[currDocInd][4];
id_wo = Convert::ToString(mF->idU);//currList[currDocInd][6];
num_co = currList[currDocInd][5];
id_do = currList[currDocInd][0];
// Прикрепляем сообщение к документу
mess = textBox3->Text->Trim();
if(mess != "")
{
sql = "insert into info(id_do, date_in, text_in) values("+id_do+", getdate(),
'"+mess+"')";
id_in_int = mF->sqlInsert(sql);
if(id_in_int < 1)
{
MessageBox::Show("Ошибка\r\nНе могу прикрепить сообщение к
документу");
return false;
}
else
{
// Записываем событие прикрепления документа
sql = "insert into events(date_ev, id_do, id, id_ro, id_wo, num_co,
type_ev, code_ev) values(getdate(), "+id_do+", "+id_in_int+", "+id_ro+", "+id_wo+", "+num_co+", 3,
1)";
id_ev_int = mF->sqlInsert(sql);
if(id_ev_int < 1)
{
MessageBox::Show("Ошибка\r\nНе могу записать
информацию о прекреплении сообщения к документу");
return false;
}
}
}
// Записываем файлы в БД, а также события загрузки файлов
for(int i=0; i<filesUploaded.Count; i++)
{
// ЗаписываемфайлывБД
sql = "insert into files(id_do, date_fi, name_fi, oldname_fi, ext_fi)
values("+id_do+", getdate(), '"+filesUploaded[i][1]+"', '"+filesUploaded[i][3]+"',
'"+filesUploaded[i][2]+"')";
id_fi_int = mF->sqlInsert(sql);
if(id_fi_int < 1)
{
MessageBox::Show("Ошибка\r\nНемогузаписатьинформациюофайле
\""+filesUploaded[i][0]+"\" вБД");
return false;
}
// событиязагрузкифайлов
sql = "insert into events(date_ev, id_do, id, id_ro, id_wo, num_co, type_ev,
code_ev) values(getdate(), "+id_do+", "+id_fi_int+", "+id_ro+", "+id_wo+", "+num_co+", 2, 1)";
id_ev_int = mF->sqlInsert(sql);
if(id_ev_int < 1)
{
MessageBox::Show("Ошибка\r\nНемогузаписатьфактзагрузкифайла
\""+filesUploaded[i][0]+"\" всписоксобытий");
return false;
}
}
// Меняем этап докуента в БД
num_co_int = Convert::ToInt32(num_co);
switch(status)
{
case 2: // предыдущийэтап
sql = "select max(num_co) as new_num_co from coordination where
id_ro="+id_ro+" and num_co<"+num_co;
res = mF->sqlSelect(sql, %sqlresult);
if(!res)
{
MessageBox::Show("Ошибка 12\r\nНе могу прочитать данные о
предыдущем этапе");
return false;
}
break;
case 3: // первыйэтап
sql = "select min(num_co) from coordination where id_ro="+id_ro;
res = mF->sqlSelect(sql, %sqlresult);
if(!res)
{
MessageBox::Show("Ошибка 12\r\nНе могу прочитать данные о
предыдущем этапе");
return false;
}
break;
case 4: // следующийэтап
sql = "select min(num_co) as min, max(num_co) as max from coordination
where id_ro="+id_ro+" and num_co>"+num_co;
res = mF->sqlSelect(sql, %sqlresult);
if(!res)
{
MessageBox::Show("Ошибка 12\r\nНе могу прочитать данные о
предыдущем этапе");
return false;
}
break;
}
// Обновлениеэтапа
sql = "select max(num_co) as max from coordination where id_ro="+id_ro;
res = mF->sqlSelect(sql, %sqlresult1);
if(!res && sqlresult1.Count==0)
{
MessageBox::Show("Ошибка
13\r\nНемогупрочитатьданныеомаксимальномэтапе");
return false;
}
int max_num_co = Convert::ToInt32(sqlresult1[0][0]);
new_num_co = Convert::ToInt32(sqlresult[0][0] == "" ? "0" : sqlresult[0][0]);
if(num_co_int == max_num_co && status==4) // достигнутпоследнийэтап
{
status_do = "3";
sql = "update docs set num_co="+Convert::ToString(max_num_co)+",
status_do="+status_do+", cl_date_do=getdate() where id_do="+id_do;
res = mF->sqlOther(sql);
if(!res)
{
MessageBox::Show("Ошибка\r\nНе могу обновить этап
документа");
return false;
}
}
else if(new_num_co != num_co_int) // Этапизменился, нонепоследний
{
//if(status==4 && new_num_co == Convert::ToInt32(sqlresult[0][1])) //
достигнутпредпоследнийэтап
// status_do = "3";
//else
status_do = "2";
sql = "update docs set num_co="+Convert::ToString(new_num_co)+",
status_do="+status_do+", cl_date_do=getdate() where id_do="+id_do;
res = mF->sqlOther(sql);
if(!res)
{
MessageBox::Show("Ошибка\r\nНе могу обновить этап
документа");
return false;
}
}
// Записываем событие изменения этапа в БД
code_ev = Convert::ToString(status);
sql = "insert into events(date_ev, id_do, id, id_ro, id_wo, num_co, type_ev, code_ev)
values(getdate(), "+id_do+", "+id_do+", "+id_ro+", "+id_wo+", "+num_co+", 1, "+code_ev+")";
id_ev_int = mF->sqlInsert(sql);
if(id_ev_int < 1)
{
MessageBox::Show("Ошибка\r\nНе могу записать факт изменения этапа
документа в список событий");
return false;
}
if(num_co_int == max_num_co && status==4) // достигнутпоследнийэтап
{
sql = "insert into events(date_ev, id_do, id, id_ro, id_wo, num_co, type_ev,
code_ev) values(getdate(), "+id_do+", "+id_do+", "+id_ro+", "+id_wo+", "+num_co+", 1, 5)";
id_ev_int = mF->sqlInsert(sql);
if(id_ev_int < 1)
{
MessageBox::Show("Ошибка 34\r\nНе могу записать факт
изменения этапа документа в список событий");
return false;
}
}
MessageBox::Show("Состояние документа успешно обновлено");
return true;
}
}

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

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")