Диплом: Автоматизация обработки заявок ИП "Байбеков"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
106
{
MessageBox.Show(ex.Message, "DgvInDocsFill()",MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
finally
{
cmd.Connection.Close();
}
}
private void UpdateHeaderText()
{
this.Text = "Входящие документы за период с " +
SessionProperties.begDate.ToShortDateString() + " по " +
SessionProperties.endDate.ToShortDateString();
}
private void DocDelete()
{
var result = MessageBox.Show("Удалить документ?", "Внимание???",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
if (SaveChanges(Date: dtpDate.Value, InDate: dtpInDate.Value, ConstID:
currentConstID, rowStatus: 2))
{
DgvInDocsFill();
RestoreRowIndexPosition();
}
}
}
private void btnExit_Click(object sender, EventArgs e)
{
if (exitCancel)
{
Close();
}
else
{
btnExit.Text = "Esc - Выход";
SwitchMode(2);
}
}
private void btnOk_Click(object sender, EventArgs e)
{
if (rowStatus == 0)
{
DataTable dt = SearchSimilarDoc((int)cboDept.SelectedValue,
(int)cboInDocType.SelectedValue,tbNum.Text);
if (dt.Rows.Count > 0)
{
frmEditInDocsChoosingReplaceDoc _frmEditInDocsChoosingReplaceDoc =
new frmEditInDocsChoosingReplaceDoc(dt);
DialogResult dResult =
_frmEditInDocsChoosingReplaceDoc.ShowDialog();
if (DialogResult.Yes == dResult)
{
rowStatus = 1;
currentConstID = SessionProperties.retInt;
}
if (DialogResult.Cancel == dResult)
{
return;
107
}
}
if (lblImgFile.Text == "" && doc == null)
{
MessageBox.Show("Нет образа отсканированного документа!!!",
"Внимание!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
if (SaveChanges(dtpDate.Value,dtpInDate.Value, InDocTypeID :
(int)cboInDocType.SelectedValue,ConstID: currentConstID,
Num : tbNum.Text, DeptID : (int)cboDept.SelectedValue, Description :
tbDescription.Text,
ImgFile: lblImgFile.Text, Img: doc, rowStatus: rowStatus))
{
DefaultDate = dtpDate.Value;
DefaultInDate = dtpInDate.Value;
DefaultInDocType = (int)cboInDocType.SelectedValue;
DgvInDocsFill();
RestoreRowIndexPosition();
doc = null;
SwitchMode(2);
}
}
private DataTable SearchSimilarDoc(int DeptID,int InDocTypesID,string DocNum)
{
DataTable resTable = new DataTable();
SqlCommand cmd = new SqlCommand("SELECT * FROM ViewInDocs WHERE DeptID =
@DeptID AND InDocTypesID = @InDocTypesID AND Num = @DocNum ORDER BY Description", new
SqlConnection(SessionProperties.currentConnectionString));
cmd.Parameters.Add("@DeptID", SqlDbType.Int).Value = DeptID;
cmd.Parameters.Add("@InDocTypesID", SqlDbType.Int).Value = InDocTypesID;
cmd.Parameters.Add("@DocNum", SqlDbType.NVarChar).Value = DocNum;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(resTable);
return resTable;
}
private void RestoreRowIndexPosition()
{
try
{
if (dgvInDocs.Rows.Count > 0)
{
DataRow[] searchedRows =
((DataTable)dgvInDocs.DataSource).Select("ConstID = " + currentConstID.ToString());
int rowIndex;
if (searchedRows.Length > 0)
{
rowIndex = tblInDocs.Rows.IndexOf(searchedRows[0]);
}
else
{
rowIndex = (dgvRowIndex >= dgvInDocs.Rows.Count) ?
dgvInDocs.Rows.Count - 1 : dgvRowIndex;
}
if (rowIndex > dgvInDocs.Rows.Count - 1)
{
dgvInDocs.CurrentCell = dgvInDocs[0, 0];
}
else
dgvInDocs.CurrentCell = dgvInDocs[0, rowIndex];
}
}
108
catch (Exception ex)
{
MessageBox.Show(ex.Message,
"RestoreRowIndexPosition()",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void dgvInDocs_CellMouseDoubleClick(object sender,
DataGridViewCellMouseEventArgs e)
{
if (rowStatus == -1)//режим выбора
{
DataRow row =
((DataRowView)dgvInDocs.Rows[e.RowIndex].DataBoundItem).Row;//строка из привязанной
таблицы
SessionProperties.retInt = (int)row["ConstID"];//возврат
(сохранение в статическом объекте) значения из формы
SessionProperties.retString = (string)row["FullName"];
EventHandler<EventArgs> handler = RaiseInDocSelected;
// Event will be null if there are no subscribers
if (handler != null)
{
// Use the () operator to raise the event.
handler(this, e);
}
Close();
return;
}
if (e.RowIndex >= 0)
{
dgvRowIndex = dgvInDocs.CurrentRow.Index;
rowStatus = 1;
tsbDocEdit_Click(null, null);
//SwitchMode(1);
}
}
private void dgvInDocs_RowEnter(object sender, DataGridViewCellEventArgs
e)
{
ControlsRefresh(e);
}
private void tsbDocNew_Click(object sender, EventArgs e)
{
if (rights.Contains("a"))
SwitchMode(0);
else
{
MessageBox.Show("У вас нет прав на добавление документов!!!",
"Обратитесь к администратору!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void tsbDocEdit_Click(object sender, EventArgs e)
{
if (rights.Contains("e"))
{
SwitchMode(1);
}
else
{
MessageBox.Show("У вас нет прав на редактирование документов!!!",
"Обратитесь к администратору!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
109
}
}
private void btnImage_Click(object sender, EventArgs e)
{
OpenFileDialog ofdInDoc = new OpenFileDialog();
string val = lblImgFile.Text;
if (val == "")
{
val = GetDefaultSetting.Get("DefaultInDocImgPath");
if (val == "") { return; }
}
ofdInDoc.InitialDirectory = val;
val = GetDefaultSetting.Get("DefaultInDocImgFilter");
if (val == "") { return; }
ofdInDoc.Filter = val;
if (ofdInDoc.ShowDialog() == DialogResult.OK)
{
lblImgFile.Text = ofdInDoc.FileName;
FillValueAfterOpenFileDialog(ofdInDoc.FileName);
}
Environment.CurrentDirectory = Application.StartupPath;
}
private void tsbSetting_Click(object sender, EventArgs e)
{
frmPeriodSelector fps = new frmPeriodSelector();
//fps.Owner = this;
//fps.MdiParent = this.MdiParent;
if (fps.ShowDialog() == DialogResult.OK)
{
DgvInDocsFill();
UpdateHeaderText();
}
}
private void tsbDocDelete_Click(object sender, EventArgs e)
{
if (rights.Contains("d"))
DocDelete();
else
{
MessageBox.Show("У вас нет прав на удаление документов!!!",
"Обратитесь к администратору!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void dgvInDocs_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Enter:
e.SuppressKeyPress = true;
if (dgvInDocs.CurrentRow != null)
{
DataRow row =
((DataRowView)dgvInDocs.CurrentRow.DataBoundItem).Row;
SwitchMode(1);
}
break;
case Keys.Insert:
SwitchMode(0);
break;
case Keys.Delete:
110
dgvRowIndex = dgvInDocs.CurrentRow.Index;
DocDelete();
break;
}
if (e.Control && Keys.O == e.KeyCode)
{
if (dgvInDocs.CurrentRow != null)
OpenDoc((int)dgvInDocs.CurrentRow.Cells["ID"].Value,
(int)dgvInDocs.CurrentRow.Cells["constID"].Value);
}
}
private void tsmiDocNew_Click(object sender, EventArgs e)
{
//SwitchMode(0);
tsbDocNew_Click(null, null);
}
private void tsmiDocEdit_Click(object sender, EventArgs e)
{
//SwitchMode(1);
tsbDocEdit_Click(null, null);
}
private void tsmiDocDelete_Click(object sender, EventArgs e)
{
tsbDocDelete_Click(null, null);
//DocDelete();
}
private void frmEditInDocs_FormClosed(object sender, FormClosedEventArgs
e)
{
GLOBAL2.Properties.Settings.Default.frmEditInDocsLocation =
this.Location;
GLOBAL2.Properties.Settings.Default.Save();
}
//
//Форма настройки поиска (аля фильтр)
//
private void tsbSettings_Click(object sender, EventArgs e)
{
if (FrmEditInDocsSettings != null)
if (FrmEditInDocsSettings.IsDisposed == true)
FrmEditInDocsSettings = null;
if (FrmEditInDocsSettings == null)
{
FrmEditInDocsSettings = new frmEditInDocsSettings();
FrmEditInDocsSettings.invokeSearch = Search;
FrmEditInDocsSettings.Owner = this.Owner;
FrmEditInDocsSettings.MdiParent = this.MdiParent;
FrmEditInDocsSettings.dtDept = ((DataTable)cboDept.DataSource).Copy();
FrmEditInDocsSettings.dtTypeDoc =
((DataTable)cboInDocType.DataSource).Copy();
FrmEditInDocsSettings.frmEIDs = this;
FrmEditInDocsSettings.Show();
if (currentFilter != null)
{
FrmEditInDocsSettings.SetControlValue(currentFilter.Dept,
currentFilter.TypeDoc, currentFilter.NumDoc,
currentFilter.InNumDoc, currentFilter.DateDoc,
currentFilter.InDateDoc, currentFilter.Description);
}
}
111
else
FrmEditInDocsSettings.Focus();
}
//
//Нажатие правой кнопки мыши по ячейки datagridview
//
private void dgvInDocs_CellMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
{
if (e.Button == MouseButtons.Right)
{
PathToFile =
dgvInDocs.Rows[e.RowIndex].Cells["FileName"].Value.ToString();
dgvInDocs.Rows[e.RowIndex].Cells[e.ColumnIndex].ContextMenuStrip =
cmsInDocs; // cmsInDocs;
cmsInDocs.Show(MousePosition);
dgvInDocs.Rows[e.RowIndex].Cells[e.ColumnIndex].ContextMenuStrip =
null;
tsmiOpenDoc.Tag = new int[] {
(int)dgvInDocs.Rows[e.RowIndex].Cells["ID"].Value,
(int)dgvInDocs.Rows[e.RowIndex].Cells["constID"].Value };
}
}
}
//
//Обработка нажатия "Открыть документ" в контекстном меню
//
private void tsmiOpenDoc_Click(object sender, EventArgs e)
{
ToolStripMenuItem tsmi = (ToolStripMenuItem)sender;
if (tsmi.Tag != null)
{
int[] array = (int[])tsmi.Tag;
//Прочитать документ из базы
OpenDoc(array[0]/*ID*/, array[1]/*ConstID*/);
}
}
//
//
//
private static byte[] LoadImg(int ID, int ConstID)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = new
SqlConnection(SessionProperties.currentConnectionString);
cmd.CommandText = "SELECT Img FROM InDocs WHERE Img is not null and
ConstID=@ConstID and ID = @ID";
cmd.CommandTimeout = 0;
cmd.Parameters.Add("@ID", SqlDbType.Int);
cmd.Parameters["@ID"].Value = ID;
cmd.Parameters.Add("@ConstID", SqlDbType.Int);
cmd.Parameters["@ConstID"].Value = ConstID;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count == 0)
{
MessageBox.Show("Нет документа в базе данных");
return null;
112
}
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 + "%'";
if (Description != "")
113
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();
}
114
//
//
//
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;
if (i > 0)
115
{
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"];
flagInDocTypeID = true;

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

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