Диплом: Автоматизация приема и обработки заявок отделом техподдержки ООО "Centrobit"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
108
MessageBox.Show("Нет документа в базе данных");
return null;
}
else
return (byte[])dt.Rows[0]["Img"];
}
//
//
//
public static bool OpenDoc(int ID, int ConstID)
{
byte[] fileData = LoadImg(ID, ConstID);
if (fileData != null)
{
string fileName = @"c:\" + DateTime.Now.ToFileTime().ToString() +
".pdf";
File.WriteAllBytes(fileName, fileData);
System.Diagnostics.Process.Start(fileName);
return true;
}
else return false;
}
//
// Фильтр отображаемых документов
//
private void Search(string Dept = "", string TypeDoc = "", string NumDoc = "",
string InNumDoc = "", string DateDoc = "", string InDateDoc = "",string Description =
"", bool ClearRowFilter = false)
{
if (ClearRowFilter)
{
((DataTable)(dgvInDocs.DataSource)).DefaultView.RowFilter = "";
currentFilter = null;
return;
}
DataTable dt = new DataTable();
dt = (DataTable)(dgvInDocs.DataSource);
dt.DefaultView.RowFilter = "";
currentFilter = new CurrentFilter(Dept , TypeDoc, NumDoc,
InNumDoc, DateDoc, InDateDoc, Description);
if (Dept != "" && dgvInDocs.RowCount > 0)
dt.DefaultView.RowFilter = "Dept=" + "'" + Dept + "'";
if (TypeDoc != "" && dgvInDocs.RowCount > 0)
dt.DefaultView.RowFilter += (dt.DefaultView.RowFilter == "" ? "": "
and " ) + "DocType=" + "'" + TypeDoc + "'";
if (NumDoc != "" && dgvInDocs.RowCount > 0 )
dt.DefaultView.RowFilter +=(dt.DefaultView.RowFilter == "" ? "": " and
" ) + "Num Like "+"'%"+ NumDoc+"%'";
if (InNumDoc != "" && dgvInDocs.RowCount > 0)
dt.DefaultView.RowFilter +=(dt.DefaultView.RowFilter == "" ? "": " and
" ) + "ConstID=" + int.Parse(InNumDoc);
if (DateDoc != null && dgvInDocs.RowCount > 0)
dt.DefaultView.RowFilter += (dt.DefaultView.RowFilter == "" ? "" : "
and ") + "Convert(Date,'System.String') Like '" + DateDoc + "%'";
if (InDateDoc != null && dgvInDocs.RowCount > 0)
dt.DefaultView.RowFilter += (dt.DefaultView.RowFilter == "" ? "" : "
and ") + "Convert(InDate,'System.String') Like '"+ InDateDoc + "%'";
109
if (Description != "")
dt.DefaultView.RowFilter += (dt.DefaultView.RowFilter == "" ? "" : "
and ") + "Description Like '%" + Description + "%'";
}
private void btnScan_Click(object sender, EventArgs e)
{
//if (ApplicationManager.flagScannerInstalled == true )
//{
if (rowStatus == 0)
{
Show_frmEditInDocsScan();
}
else if (rowStatus == 1)
{
System.Windows.Forms.DialogResult dlgResult =
MessageBox.Show("Заменить текущий документ?\n\"Да\" - заменить;\n\"Нет\" - открыть на
редактирование.", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dlgResult ==
System.Windows.Forms.DialogResult.Yes)
{
Show_frmEditInDocsScan();
}
else if (dlgResult ==
System.Windows.Forms.DialogResult.No)
{
List<Image> imgs = null ;
doc =
frmEditInDocs.LoadImg((int)dgvInDocs.CurrentRow.Cells["ID"].Value,
(int)dgvInDocs.CurrentRow.Cells["ConstID"].Value);
try
{
imgs = ExtractImages(doc);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"Ошибка!!!",MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
if (imgs != null)
{
Show_frmEditInDocsScan(imgs);
}
}
}
//}
//else
// MessageBox.Show("Ошибка подключения устройства ввода изображения.");
//
}
//
//
//
private void Show_frmEditInDocsScan()
{
WIAScan.frmEditInDocsScan FrmEditInDocsScan = new
WIAScan.frmEditInDocsScan();
FrmEditInDocsScan.Owner = this.Owner;
FrmEditInDocsScan.MdiParent = this.MdiParent;
FrmEditInDocsScan.RaiseSaveScanImage +=
frmEditInDocsScan_RaiseSaveScanImage;
FrmEditInDocsScan.Show();
110
}
//
//
//
private void Show_frmEditInDocsScan(List<Image> imgs)
{
WIAScan.frmEditInDocsScan FrmEditInDocsScan = new
WIAScan.frmEditInDocsScan(imgs);
FrmEditInDocsScan.Owner = this.Owner;
FrmEditInDocsScan.MdiParent = this.MdiParent;
FrmEditInDocsScan.RaiseSaveScanImage +=
frmEditInDocsScan_RaiseSaveScanImage;
FrmEditInDocsScan.Show();
}
//
//
//
private void frmEditInDocsScan_RaiseSaveScanImage(object sender, EventArgs e)
{
doc = (byte[])sender;
btnOk.Enabled = true;
}
//
// Начала поиска по Description(Описание) через tbFindDescription
//
private void dgvInDocs_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Cancel || e.KeyChar == 15)
return;
tbFindDescription.Top = 1;
tbFindDescription.Visible = true;
tbFindDescription.Focus();
char keypress = (e.KeyChar);
tbFindDescription.Text = "";
tbFindDescription.SelectedText += keypress;
}
//
//Потеря фокуса tbFindDescription
//
private void textBoxFind_LostFocus(object sender, System.EventArgs e)
{
tbFindDescription.Visible = false;
tbFindDescription.Text = "";
}
private void tbFindDescription_TextChanged(object sender, EventArgs e)
{
if (tbFindDescription.Text == String.Empty)
return;
//Поиск
DataRow dr;
try
{
DataTable dt = ds.Tables["InDocs"].DefaultView.ToTable();
dr = dt.Select("[Description] LIKE '%" + tbFindDescription.Text +
"%'")[0];
// dr = ds.Tables["InDocs"].Select("[Description] LIKE '%" +
tbFindDescription.Text + "%'")[0];//.Select("[Description] LIKE '%" +
tbFindDescription.Text + "%'")[0];
int j = dr.Table.Rows.IndexOf(dr);
dgvInDocs.CurrentCell = dgvInDocs.Rows[j].Cells["Description"];
}
catch
{
int i = tbFindDescription.Text.Length;
111
if (i > 0)
{
char[] ch = new char[tbFindDescription.Text.Length - 1];// =
textBoxFind.Text.ToCharArray();
string str = "";
for (int j = 0; j < tbFindDescription.Text.Length - 1; j++)
{
ch[j] = tbFindDescription.Text[j];
str += ch[j];
}
tbFindDescription.Text = "";
tbFindDescription.SelectedText = str;
}
}//Конец поиска
}
private void dgvInDocs_CellValueNeeded(object sender,
DataGridViewCellValueEventArgs e)
{
if (e.RowIndex < dgvInDocs.Rows.Count)
{
e.Value = imgList.Images[0];
}
}
public static byte[] GetDoc(string filePath)
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] doc = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
return doc;
}
//
//
//
private string SearchString(string str, string pattern)
{
Match match = Regex.Match(str,
pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
return match.Value;
}
//
private void FillValueAfterOpenFileDialog(string path, string proc = "", int
deptID = 0)
{
SwitchMode(0);
bool flagDeptID = false, flagInDocTypeID = false, flagNum = false,
flagDate = false;
string result;
string str = Path.GetFileName(path);
//Заполнение типа документа
DataTable dt = (DataTable)cboInDocType.DataSource;
foreach(DataRow row in dt.Rows)
{
if (row["NameInFile"].ToString() != "")
{
result = SearchString(str, row["NameInFile"].ToString() );
if (result != string.Empty)
{
cboInDocType.SelectedValue = (int)row["ID"];
112
flagInDocTypeID = true;
break;
}
}
}
//Заполнение подразеление
dt = (DataTable)cboDept.DataSource;
foreach (DataRow row in dt.Rows)
{
result = SearchString(str, row["Description"].ToString());
if (result != string.Empty)
{
deptID = (int)row["ID"];
flagDeptID = true;
break;
}
}
//Заполнение номера документа
result = SearchString(str, @"№\s?[\d-]+");
if (result != string.Empty)
{
result = SearchString(result, @"[\w-]+");
tbNum.Text = result;
flagNum = true;
}
//Заполнение даты документа
result = SearchString(str, @"\d{2}\.\d{2}\.\d{2,4}");
if (result != string.Empty)
{
try
{
dtpDate.Value = DateTime.Parse(result);
flagDate = true;
}
catch
{
}
}
doc = GetDoc(path);
//Заполнение описания
tbDescription.Text = str;
if (proc != "")
if ((flagDate || flagNum) & (flagDeptID || flagInDocTypeID))
{
SaveChanges(dtpDate.Value,dtpInDate.Value, InDocTypeID :
(int)cboInDocType.SelectedValue,ConstID: 0,
Num: tbNum.Text, DeptID: deptID, Description:
tbDescription.Text,
ImgFile: lblImgFile.Text, Img: doc, rowStatus: 0);
}
}
private void btnFolder_Click(object sender, EventArgs e)
{
string[] FileName;
int deptID = (int)cboDept.SelectedValue;
FolderBrowserDialog openFolder = new FolderBrowserDialog();
if (openFolder.ShowDialog() == DialogResult.OK)
{
FileName =
Directory.GetFileSystemEntries/*GetFiles*/(openFolder.SelectedPath, "*.pdf");
113
if (FileName.Length > 0)
foreach (string path in FileName)
{
FillValueAfterOpenFileDialog(path, proc: "btnFolder_Click",
deptID: deptID);
}
DgvInDocsFill();
SwitchMode(2);
}
}
private void tsbHistory_Click(object sender, EventArgs e)
{
if (dgvInDocs.Rows.Count <= 0)
{
MessageBox.Show("Нет строк!!!", "Внимание!!!", MessageBoxButtons.OK,
MessageBoxIcon.Information);
return;
}
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(@"SELECT InD.ID AS
Идентификатор, Dept.Description AS Отдел, InDT.Description AS [Тип дакумента],InD.Num
AS [№], CONVERT(DATETIME, CONVERT(VARCHAR(15), InD.Date, 101)) AS Дата,
CONVERT(DATETIME, CONVERT(VARCHAR(15), InD.InDate, 101)) AS
[Вх. дата], InD.ConstID AS [Вх. №],
InD.ImgFile AS Файл, InD.Description AS Описание, InD.RowDate
as [Дата строки], InD.isLast [Текущая], VS.Surname +' '+ VS. Firstname+'
'+VS.Patronymic AS [Ввел(а)]
FROM InDocs AS InD LEFT OUTER JOIN
Dept ON Dept.ID = InD.DeptID LEFT OUTER JOIN
InDocTypes AS InDT ON InDT.ID = InD.InDocTypesID LEFT OUTER
JOIN
ViewSessions AS VS ON VS.SessionsID =
InD.SessionsID
WHERE ConstID = " +
dgvInDocs.CurrentRow.Cells["ConstID"].Value.ToString(), new
SqlConnection(SessionProperties.currentConnectionString));
try
{
cmd.Connection.Open();
dt.Load(cmd.ExecuteReader());
frmHistory _frmHistory = new frmHistory(dt, this.Name);
_frmHistory.Owner = this.Owner;
_frmHistory.MdiParent = this.MdiParent;
_frmHistory.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "tsbHistory_Click()",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally { cmd.Connection.Close(); }
}
private void tbNum_KeyPress(object sender, KeyPressEventArgs e)
{
// Если это не цифра.
if (!Char.IsDigit(e.KeyChar))
{
TextBox tb = (TextBox)sender;
if ("а/-".IndexOf(e.KeyChar) == -1)
{
if (e.KeyChar != (int)Keys.Back)
e.Handled = true;
}
114
}
}
//
//
//
private static List<System.Drawing.Image> ExtractImages(byte[]
PDFSourcePath)
{
List<System.Drawing.Image> ImgList = new
List<System.Drawing.Image>();
iTextSharp.text.pdf.RandomAccessFileOrArray RAFObj = null;
iTextSharp.text.pdf.PdfReader PDFReaderObj = null;
iTextSharp.text.pdf.PdfObject PDFObj = null;
iTextSharp.text.pdf.PdfStream PDFStremObj = null;
try
{
RAFObj = new
iTextSharp.text.pdf.RandomAccessFileOrArray(PDFSourcePath);
PDFReaderObj = new iTextSharp.text.pdf.PdfReader(RAFObj,
null);
for (int i = 0; i <= PDFReaderObj.XrefSize - 1; i++)
{
PDFObj = PDFReaderObj.GetPdfObject(i);
if ((PDFObj != null) && PDFObj.IsStream())
{
PDFStremObj =
(iTextSharp.text.pdf.PdfStream)PDFObj;
iTextSharp.text.pdf.PdfObject subtype =
PDFStremObj.Get(iTextSharp.text.pdf.PdfName.SUBTYPE);
if ((subtype != null) && subtype.ToString() ==
iTextSharp.text.pdf.PdfName.IMAGE.ToString())
{
try
{
iTextSharp.text.pdf.parser.PdfImageObject PdfImageObj =
new
iTextSharp.text.pdf.parser.PdfImageObject((iTextSharp.text.pdf.PRStream)PDFStremObj);
System.Drawing.Image ImgPDF =
PdfImageObj.GetDrawingImage();
ImgList.Add(ImgPDF);
}
catch (Exception)
{
}
}
}
}
PDFReaderObj.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return ImgList;
}
//
//
115
//
public class CurrentFilter
{
public string Dept, TypeDoc,
NumDoc, InNumDoc, DateDoc ,
InDateDoc, Description;
public CurrentFilter(string Dept, string TypeDoc,
string NumDoc, string InNumDoc, string DateDoc,
string InDateDoc, string Description)
{
this.Dept = Dept;
this.TypeDoc = TypeDoc;
this.NumDoc = NumDoc;
this.InNumDoc = InNumDoc;
this.DateDoc = DateDoc;
this.InDateDoc = InDateDoc;
this.Description = Description;
}
}
private void tstbFilter_TextChanged(object sender, EventArgs e)
{
tblInDocs.DefaultView.RowFilter =
tblInDocs.Columns["Description"].ColumnName + string.Format(" Like '%{0}%'",
tstbFilter.Text);
}
}
}

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

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