Диплом: Автоматизация услуг почтовой связи для Почты России

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
109
chartArea1.ShadowColor = System.Drawing.Color.Transparent;
this.chart3.ChartAreas.Add(chartArea1);
this.BackColor = System.Drawing.Color.White;
this.ResumeLayout(false);
}
Метод DataForGraf () обращается к БД и достает данные для графика.
Листинг 1.12. Метод DataForGraf()
private void DataForGraf()
{
// Populate series data
SqlCommand command = new SqlCommand("SELECT
right(convert(varchar, Month, 106), 8) AS Месяц, SUM(Sum) AS Сумма FROM DZ
GROUP BY Month ORDER BY Month", sqlConnection);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = command;
da.Fill(ds, "DZ");
List<string> axisLabel = new List<string>();
string sdf = "";
for (int pointIndex = 0; pointIndex < ds.Tables[0].Rows.Count;
pointIndex++)
{
chart3.Series["Series1"].Points.AddY(ds.Tables[0].Rows[pointIndex][1]);
chart3.ChartAreas[0].AxisX.Title = "Месяц";
chart3.ChartAreas[0].AxisY.Title = "Сумма";
chart3.Series["Series1"].Points[pointIndex].AxisLabel =
ds.Tables[0].Rows[pointIndex][0].ToString();
}
UpdateChartSettings();
}
110
Метод checkedListBox1_SelectedIndexChanged () считывает выбранные
поля и перестраивает таблицу, по выбранным полям.
Листинг 1.13. Метод checkedListBox1_SelectedIndexChanged()
private void checkedListBox1_SelectedIndexChanged(object sender,
EventArgs e)
{
string namesColumns = null;
string namesColumnsGROUP = null;
columnSelection(0, 1);
columnSelection(1, 2);
columnSelection(2, 3);
columnSelection(3, 4);
columnSelection(4, 5);
columnSelection(5, 6);
columnSelection(6, 8);
columnSelection(7, 9);
columnSelection(8, 10);
columnSelection(9, 12);
columnSelection(10, 13);
foreach (int indexChecked in checkedListBox1.CheckedIndices)
{
namesColumns += listColumns[indexChecked];
}
foreach (int indexChecked in checkedListBox1.CheckedIndices)
{
namesColumnsGROUP += listColumnsInDZ[indexChecked];
}
//перестраиваем таблицу
string MonthName = comboBoxMonth2.SelectedValue.ToString();
111
SqlCommand command = new SqlCommand("SELECT " +
namesColumns.Remove(namesColumns.Length - 2) + ", Replace(Format(SUM(Sum),
'N'),',',' ') AS Сумма FROM DZ WHERE Month='" + MonthName + "' GROUP BY "
+ namesColumnsGROUP.Remove(namesColumnsGROUP.Length - 2) + " ",
sqlConnection);//создаем новый запрос к БД без указанных полей
command.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = command;
da.Fill(ds, "DZ");
dataGridView1.DataSource = ds.Tables[0];
double balans = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
double incom;
double.TryParse(row.Cells[7].Value.ToString().Replace(".", ","), out
incom);
balans += incom;//пересчитываем сумму
}
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberGroupSeparator = " ";
textBox1.Text = balans.ToString("N", nfi);
}
Метод AddComment () отвечает за интеграцию комментариев в базу
данных из Excel файла.
Листинг 1.14. Метод AddComment()
private void AddComment(object sender, EventArgs e)
{
OpenFileDialog ope = new OpenFileDialog();
ope.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
112
if (ope.ShowDialog() == DialogResult.Cancel)
return;
DataTable table = LoadExcelSheetToTable(ope.FileName, "Лист1");
foreach (DataRow row in table.Rows)
{
SqlCommand command = new SqlCommand("UPDATE DZ SET
Comment=@Comment WHERE Id=@Id", sqlConnection);
command.Parameters.AddWithValue("Id",
Convert.ToString(row[0]));
command.Parameters.AddWithValue("Comment",
Convert.ToString(row[13]));
command.ExecuteNonQuery();
}
MessageBox.Show(
"Комментарии успешно импортированы. " + "\n" + "Обновлено "
+ table.Rows.Count + " записей",
"Сообщение",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
Form1_Load(sender, e);
}
Метод makePDF () создает уведомление в формате pdf.
Листинг 1.15. Метод makePDF()
public void makePDF(string Name, string NumberOfContract, string
ContractDate, string Sum)
{
113
string existingFile =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
"file1.pdf");//указываем шаблон
string newFile =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
Name+".pdf");//указываем путь и название нового файла
PdfReader reader = new PdfReader(existingFile);//читаем pdf
byte[] bytes;
using (MemoryStream ms = new MemoryStream())//создаем поток
{
using (PdfStamper stamper = new PdfStamper(reader, ms))
{
PdfContentByte cb = stamper.GetOverContent(1);//записываем
даные поверх шаблона
ColumnText ct = new ColumnText(cb);//разметка с помощью
ColumnText
ColumnText ct1 = new ColumnText(cb);
ColumnText ct2 = new ColumnText(cb);
ColumnText ct3 = new ColumnText(cb);
ct.SetSimpleColumn(100, 100, 563, 563);//располагаем
ct.AddElement(new Paragraph(NumberOfContract));//добавляем
текст
ct1.SetSimpleColumn(380, 380, 563, 563);
ct1.AddElement(new Paragraph(ContractDate));
ct2.SetSimpleColumn(335, 335, 540, 540);
ct2.AddElement(new Paragraph(Sum));
ct3.SetSimpleColumn(380, 380, 800, 800);
ct3.AddElement(new Paragraph(Name));
ct.Go();
ct1.Go();
114
ct2.Go();
ct3.Go();
stamper.Close();//закрваем поток
bytes = ms.ToArray();//записываем в массив
}
}
using (FileStream fs = new FileStream(newFile, FileMode.Create,
FileAccess.Write, FileShare.None))//записываем изменени
{
fs.Write(bytes, 0, bytes.Length);
}
}
Приложение
Полный листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
115
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.IO;
using ExcelDataReader;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Windows.Forms.DataVisualization.Charting;
using System.Globalization;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace DZ
{
public partial class Form1 : Form
{
SqlConnection sqlConnection;
String columnName = "Id, Unit AS Почтамт, KAY AS
'Код аналитического учета', Client AS Клиент, Contract AS
Договор," +
"NumberOfContract AS 'Номер
договора',ContractDate AS 'Дата договора',
Replace(Format(DZ.Sum, 'N'),',',' ') AS Сумма, INN AS ИНН," +
"ResponsibleBlock AS 'Ответственный блок',
ResponsibleDepartment AS 'Ответственный отдел',
right(convert(varchar, Month, 106), 8) AS Месяц, KindOfDZ AS
Вид, Comment AS Комментарии";
int angle = 0;
private DateTimeKind kind;
public Form1()
{
InitializeComponent();
116
}
private void AddExcel(object sender, EventArgs e)
{
OpenFileDialog ope = new
OpenFileDialog();//открываем окно выбора файла
ope.Filter = "Excel
Files|*.xls;*.xlsx;*.xlsm";//поддерживаемые форматы
if (ope.ShowDialog() == DialogResult.Cancel)
return;
DataTable table =
LoadExcelSheetToTable(ope.FileName, "62.01");
PlaceTableToDatabase(table);
deleteEmpty(sender, e);//удаление пустых
ячейки в конце таблицы
MessageBox.Show(//вывод сообщения о успешном
добавлении
"Данные успешно импортированы. " + "\n" +
"Добавлено " + table.Rows.Count + " записей",
"Сообщение",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
Form1_Load(sender, e);
}
private void PlaceTableToDatabase(DataTable
table)//добавить таблицу в БД
{
foreach (DataRow row in table.Rows)//для
каждой строки добаляем значения
{
SqlCommand command = new
SqlCommand("INSERT INTO [DZ] (Unit, KAY, Client, Contract,
NumberOfContract, ContractDate, Sum, INN, ResponsibleBlock,
ResponsibleDepartment, Month, Gp, OrganizationLiquidated,
PeriodOfLimitation, KindOfDZ)VALUES(@Unit, @KAY, @Client,
@Contract, @NumberOfContract, @ContractDate, @Sum, @INN,
117
@ResponsibleBlock, @ResponsibleDepartment, @Month, @GP,
@OrganizationLiquidated, @PeriodOfLimitation, @KindOfDZ)",
sqlConnection);
command.Parameters.AddWithValue("Unit",
Convert.ToString(row[0]));
command.Parameters.AddWithValue("KAY",
Convert.ToString(row[1]));
command.Parameters.AddWithValue("Client",
Convert.ToString(row[2]));
command.Parameters.AddWithValue("Contract",
Convert.ToString(row[3]));
command.Parameters.AddWithValue("NumberOfContract",
Convert.ToString(row[4]));
command.Parameters.AddWithValue("ContractDate",
Convert.ToString(row[5]));
if (Convert.IsDBNull(row[6]))
command.Parameters.AddWithValue("Sum",
Convert.ToDouble("0"));
else
command.Parameters.AddWithValue("Sum",
Convert.ToDouble(row[6]));
command.Parameters.AddWithValue("INN",
Convert.ToString(row[7]));
command.Parameters.AddWithValue("ResponsibleBlock",
Convert.ToString(row[8]));
command.Parameters.AddWithValue("ResponsibleDepartment",
Convert.ToString(row[9]));
if (Convert.IsDBNull(row[10]))
118
command.Parameters.AddWithValue("Month",
Convert.ToDateTime("01.01.2222"));
else
command.Parameters.AddWithValue("Month",
Convert.ToDateTime(row[10]));
command.Parameters.AddWithValue("GP",
Convert.ToString(row[11]));
command.Parameters.AddWithValue("OrganizationLiquidated",
Convert.ToString(row[12]));
command.Parameters.AddWithValue("PeriodOfLimitation",
Convert.ToString(row[13]));
if (Convert.IsDBNull(row[11]))
{
command.Parameters.AddWithValue("KindOfDZ",
Convert.ToString("-"));
}
else
{//определение вида ДЗ
if (Convert.ToBoolean(row[11]))
command.Parameters.AddWithValue("KindOfDZ",
Convert.ToString("Нормальная"));
else if (Convert.ToInt32(row[13]) >
35) command.Parameters.AddWithValue("KindOfDZ",
Convert.ToString("Безнадежная"));
else if (Convert.ToBoolean(row[12]))
command.Parameters.AddWithValue("KindOfDZ",
Convert.ToString("Безнадежная"));
else
command.Parameters.AddWithValue("KindOfDZ",
Convert.ToString("Сомнительная"));
}

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

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