Промежутка.

This commit is contained in:
Programmist73 2023-05-19 20:11:24 +04:00
parent f4bc6c16f1
commit 5f1dd6418a
14 changed files with 513 additions and 73 deletions

View File

@ -11,6 +11,8 @@ using System.Text;
using System.Threading.Tasks;
using BankYouBankruptContracts.ViewModels.Client.Reports;
using BankYouBankruptContracts.ViewModels;
using BankYouBankruptDataModels.Enums;
using BankYouBankruptContracts.ViewModels.Client.Default;
namespace BankYouBankruptBusinessLogic.BusinessLogics
{
@ -69,6 +71,7 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics
}).ToList();
}
//для excel отчёта по переводам между счетов
public List<MoneyTransferViewModel>? GetMoneyTransfer(ReportBindingModel model)
{
//список счетов по выбранным картам
@ -91,20 +94,79 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics
AccountPayeeId = index
}).OrderBy(x => x.AccountSenderId).ToList();
totalList.Union(result);
totalList.AddRange(result);
}
return totalList;
}
public void SaveToExcelFile(ReportBindingModel model)
//для excel отчёта по пополнениям карты
public List<CreditingViewModel> GetExcelCrediting(ReportBindingModel model)
{
_saveToExcel.CreateReport(new ExcelInfo
List<CreditingViewModel> totalList = new();
foreach (var index in model.CardList)
{
FileName = model.FileName,
Title = "Список переводов денег",
MoneyTransfer = GetMoneyTransfer(model)
});
var result = _creditingStorage.GetFilteredList(new CreditingSearchModel
{
CardId = index
});
totalList.AddRange(result);
}
return totalList;
}
//для excel отчёта по снятиям с карты
public List<DebitingViewModel> GetExcelDebiting(ReportBindingModel model)
{
List<DebitingViewModel> totalList = new();
foreach (var index in model.CardList)
{
var result = _debitingStorage.GetFilteredList(new DebitingSearchModel
{
CardId = index
});
totalList.AddRange(result);
}
return totalList;
}
public void SaveToExcelFile(ReportBindingModel model, ExcelOperationEnum operationEnum)
{
if(operationEnum == ExcelOperationEnum.Между_cчетами)
{
_saveToExcel.CreateReport(new ExcelInfo
{
FileName = model.FileName,
Title = "Отчёт по переводам",
MoneyTransfer = GetMoneyTransfer(model)
}, operationEnum);
}
if (operationEnum == ExcelOperationEnum.Пополнениеарт)
{
_saveToExcel.CreateReport(new ExcelInfo
{
FileName = model.FileName,
Title = "Отчёт по пополнениям (переводам из налички на карту)",
Crediting = GetExcelCrediting(model)
}, operationEnum);
}
if (operationEnum == ExcelOperationEnum.Cнятие_сарты)
{
_saveToExcel.CreateReport(new ExcelInfo
{
FileName = model.FileName,
Title = "Отчёт по снятиям денежных средств",
Crediting = GetExcelCrediting(model)
}, operationEnum);
}
}
public void SaveToWordFile(ReportBindingModel model)

View File

@ -1,5 +1,6 @@
using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums;
using BankYouBankruptBusinessLogic.OfficePackage.HelperModels;
using BankYouBankruptDataModels.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
@ -11,28 +12,51 @@ namespace BankYouBankruptBusinessLogic.OfficePackage
public abstract class AbstractSaveToExcel
{
//Создание отчета. Описание методов ниже
public void CreateReport(ExcelInfo info)
public void CreateReport(ExcelInfo info, ExcelOperationEnum operationEnum)
{
CreateExcel(info);
if(operationEnum == ExcelOperationEnum.Между_cчетами)
{
CreateMoneyTransferExcel(info);
}
if (operationEnum == ExcelOperationEnum.Пополнениеарт)
{
CreateCreditingExcel(info);
}
if (operationEnum == ExcelOperationEnum.Cнятие_сарты)
{
CreateDebitingExcel(info);
}
if (operationEnum == ExcelOperationEnum.Дляассира)
{
CreateCashierExcel(info);
}
}
private void CreateMoneyTransferExcel(ExcelInfo info)
{
CreateExcel(info);
//вставляет заголовок
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = 1,
Text = info.Title,
StyleInfo = ExcelStyleInfoType.Title
});
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = 1,
Text = info.Title,
StyleInfo = ExcelStyleInfoType.Title
});
//соединяет 3 ячейки для заголовка
MergeCells(new ExcelMergeParameters
{
CellFromName = "A1",
CellToName = "C1"
});
MergeCells(new ExcelMergeParameters
{
CellFromName = "A1",
CellToName = "C1"
});
//номер строчки в докуметне
uint rowIndex = 2;
uint rowIndex = 2;
foreach (var mt in info.MoneyTransfer)
{
@ -41,7 +65,7 @@ namespace BankYouBankruptBusinessLogic.OfficePackage
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Перевод №" + mt.Id,
Text = "Перевод №" + mt.Id,
StyleInfo = ExcelStyleInfoType.Text
});
@ -108,11 +132,347 @@ namespace BankYouBankruptBusinessLogic.OfficePackage
rowIndex++;
}
SaveExcel(info);
}
rowIndex++;
//Создание excel-файла
protected abstract void CreateExcel(ExcelInfo info);
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Суммарный объём переводов: ",
StyleInfo = ExcelStyleInfoType.Text
});
MergeCells(new ExcelMergeParameters
{
CellFromName = "A" + rowIndex.ToString(),
CellToName = "B" + rowIndex.ToString()
});
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = info.MoneyTransfer.Sum(x => x.Sum).ToString(),
StyleInfo = ExcelStyleInfoType.Text
});
SaveExcel(info);
}
private void CreateCreditingExcel(ExcelInfo info)
{
CreateExcel(info);
//вставляет заголовок
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = 1,
Text = info.Title,
StyleInfo = ExcelStyleInfoType.Title
});
//соединяет 3 ячейки для заголовка
MergeCells(new ExcelMergeParameters
{
CellFromName = "A1",
CellToName = "E2"
});
//номер строчки в докуметне
uint rowIndex = 3;
foreach (var cr in info.Crediting)
{
//вставляет номер перевода
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Пополнение №" + cr.Id,
StyleInfo = ExcelStyleInfoType.Text
});
rowIndex++;
//строчка с номером счёта отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "B",
RowIndex = rowIndex,
Text = "Номер карты: ",
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
//вставка номера отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = cr.CardNumber,
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
rowIndex++;
//строчка с номером счёта получателя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "B",
RowIndex = rowIndex,
Text = "Сумма пополнения: ",
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
//вставка номера отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = cr.Sum.ToString(),
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
rowIndex++;
}
rowIndex++;
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Суммарный объём пополнений: ",
StyleInfo = ExcelStyleInfoType.Text
});
MergeCells(new ExcelMergeParameters
{
CellFromName = "A" + rowIndex.ToString(),
CellToName = "B" + rowIndex.ToString()
});
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = info.Crediting.Sum(x => x.Sum).ToString(),
StyleInfo = ExcelStyleInfoType.Text
});
SaveExcel(info);
}
private void CreateDebitingExcel(ExcelInfo info)
{
CreateExcel(info);
//вставляет заголовок
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = 1,
Text = info.Title,
StyleInfo = ExcelStyleInfoType.Title
});
//соединяет 3 ячейки для заголовка
MergeCells(new ExcelMergeParameters
{
CellFromName = "A1",
CellToName = "E2"
});
//номер строчки в докуметне
uint rowIndex = 3;
foreach (var cr in info.Debiting)
{
//вставляет номер перевода
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Снятие №" + cr.Id,
StyleInfo = ExcelStyleInfoType.Text
});
rowIndex++;
//строчка с номером счёта отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "B",
RowIndex = rowIndex,
Text = "Номер карты: ",
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
//вставка номера отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = cr.CardNumber,
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
rowIndex++;
//строчка с номером счёта получателя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "B",
RowIndex = rowIndex,
Text = "Сумма снятия: ",
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
//вставка номера отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = cr.Sum.ToString(),
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
rowIndex++;
}
rowIndex++;
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Суммарный объём снятий: ",
StyleInfo = ExcelStyleInfoType.Text
});
MergeCells(new ExcelMergeParameters
{
CellFromName = "A" + rowIndex.ToString(),
CellToName = "B" + rowIndex.ToString()
});
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = info.Crediting.Sum(x => x.Sum).ToString(),
StyleInfo = ExcelStyleInfoType.Text
});
SaveExcel(info);
}
private void CreateCashierExcel(ExcelInfo info)
{
CreateExcel(info);
//вставляет заголовок
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = 1,
Text = info.Title,
StyleInfo = ExcelStyleInfoType.Title
});
//соединяет 3 ячейки для заголовка
MergeCells(new ExcelMergeParameters
{
CellFromName = "A1",
CellToName = "E2"
});
//номер строчки в докуметне
uint rowIndex = 3;
foreach (var cr in info.Debiting)
{
//вставляет номер перевода
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Снятие №" + cr.Id,
StyleInfo = ExcelStyleInfoType.Text
});
rowIndex++;
//строчка с номером счёта отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "B",
RowIndex = rowIndex,
Text = "Номер карты: ",
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
//вставка номера отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = cr.CardNumber,
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
rowIndex++;
//строчка с номером счёта получателя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "B",
RowIndex = rowIndex,
Text = "Сумма снятия: ",
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
//вставка номера отправителя
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = cr.Sum.ToString(),
StyleInfo = ExcelStyleInfoType.TextWithBorder
});
rowIndex++;
}
rowIndex++;
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = "Суммарный объём снятий: ",
StyleInfo = ExcelStyleInfoType.Text
});
MergeCells(new ExcelMergeParameters
{
CellFromName = "A" + rowIndex.ToString(),
CellToName = "B" + rowIndex.ToString()
});
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = info.Crediting.Sum(x => x.Sum).ToString(),
StyleInfo = ExcelStyleInfoType.Text
});
SaveExcel(info);
}
//Создание excel-файла
protected abstract void CreateExcel(ExcelInfo info);
//Добавляем новую ячейку в лист
protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams);

View File

@ -1,5 +1,6 @@
using BankYouBankruptContracts.ViewModels;
using BankYouBankruptContracts.ViewModels.Client.Default;
using BankYouBankruptDataModels.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
@ -17,10 +18,12 @@ namespace BankYouBankruptBusinessLogic.OfficePackage.HelperModels
//заголовок
public string Title { get; set; } = string.Empty;
//список для отчёта клиента
//списки для отчёта клиента
public List<MoneyTransferViewModel> MoneyTransfer { get; set; } = new();
//список для отчёта кассира
public List<DebitingViewModel> Debiting { get; set; } = new();
public List<CreditingViewModel> Crediting { get; set; } = new();
//список для отчёта кассира и клиента
public List<DebitingViewModel> Debiting { get; set; } = new();
}
}

View File

@ -273,7 +273,7 @@ namespace BankYouBankruptClientApp.Controllers
#region Excel отчёт
[HttpPost]
public void CreateExcelReport(List<CheckboxViewModel> cards)
public IActionResult CreateExcelReport(List<CheckboxViewModel> cards)
{
if (APIClient.Client == null)
{
@ -285,7 +285,23 @@ namespace BankYouBankruptClientApp.Controllers
CardList = cards.Where(x => x.IsChecked).Select(x => x.Id).ToList()
});
ViewBag.Cards = APIClient.GetRequest<List<CardViewModel>>($"api/Card/GetUsersCardsList?id={APIClient.Client.Id}");
return Redirect("~/Home/Enter");
}
[HttpPost]
public IActionResult CreateCreditingExcelReport(List<CheckboxViewModel> cards)
{
if (APIClient.Client == null)
{
throw new Exception("Не авторизованы");
}
APIClient.PostRequest("api/Report/CreateExcelCrediting", new ReportSupportBindingModel()
{
CardList = cards.Where(x => x.IsChecked).Select(x => x.Id).ToList()
});
return Redirect("~/Home/Enter");
}
#endregion

View File

@ -29,7 +29,10 @@
<input class="btn btn-primary mt-3" type="submit" value="Submit" />
</div>
<div>
<button class="btn btn-lg btn-primary btn-block" type="submit" asp-controller="Home" asp-action="CreateExcelReport">Создать отчёт Excel</button>
<button class="btn btn-lg btn-primary btn-block" type="submit" asp-controller="Home" asp-action="CreateExcelReport">Создать отчёт по переводам</button>
</div>
<div>
<button class="btn btn-lg btn-primary btn-block" type="submit" asp-controller="Home" asp-action="CreateCreditingExcelReport">Создать отчёт по пополнениям</button>
</div>
</form>
</div>

View File

@ -2,6 +2,7 @@
using BankYouBankruptContracts.SearchModels;
using BankYouBankruptContracts.ViewModels;
using BankYouBankruptContracts.ViewModels.Client.Reports;
using BankYouBankruptDataModels.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
@ -20,7 +21,7 @@ namespace BankYouBankruptContracts.BusinessLogicsContracts
void SaveToWordFile(ReportBindingModel model);
//Сохранение отчёта по картам в файл-Excel
void SaveToExcelFile(ReportBindingModel model);
void SaveToExcelFile(ReportBindingModel model, ExcelOperationEnum operationEnum);
//Сохранение отчёта по картам в файл-Pdf
ReportClientViewModelForHTML SaveClientReportToPdfFile(ReportBindingModel model);

View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BankYouBankruptDataModels.Enums
{
public enum ExcelOperationEnum
{
Между_cчетами = 0,
Пополнениеарт = 1,
Cнятие_сарты = 2,
Дляассира = 3
}
}

View File

@ -39,7 +39,6 @@ namespace BankYouBankruptDatabaseImplement.Implements
{
return result.Where(x => (x.AccountSenderId == model.AccountSenderId || x.AccountPayeeId == model.AccountPayeeId)
&& x.AccountSender != null)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}

View File

@ -3,6 +3,7 @@ using BankYouBankruptContracts.BindingModels;
using BankYouBankruptContracts.BusinessLogicsContracts;
using BankYouBankruptContracts.SearchModels;
using BankYouBankruptContracts.ViewModels;
using BankYouBankruptDataModels.Enums;
using BankYouBankruptRestApi.Controllers;
using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
using Microsoft.AspNetCore.Mvc;
@ -79,26 +80,7 @@ namespace BankYouBankruptRestAPI.Controllers
}
}
//передача данных из отчёта клиента
[HttpPost]
public void CreateExcelClient(ReportSupportBindingModel model)
{
try
{
_reportClientLogic.SaveToExcelFile(new ReportBindingModel
{
FileName = "Отчёт_по_переводам",
CardList = model.CardList
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
//передача данных из отчёта кассира
/*//передача данных из отчёта кассира
[HttpGet]
public ReportCashierViewModelForHTML GetDataOfCashierReport()
{
@ -111,21 +93,19 @@ namespace BankYouBankruptRestAPI.Controllers
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
}*/
/*
//метод генерации отчёта за период по картам клиента
//отчёт клиента Excel по переводу денег
[HttpPost]
public void CreateClientReport(ReportSupportBindingModel model)
public void CreateExcelClient(ReportSupportBindingModel model)
{
try
{
_reportClientViewModelForHTML = _reportClientLogic.SaveClientReportToPdfFile(new ReportBindingModel
_reportClientLogic.SaveToExcelFile(new ReportBindingModel
{
FileName = "Отчёт_поартам.pdf",
DateFrom = model.DateFrom,
DateTo = model.DateTo
});
FileName = "Отчёт по переводам.xls",
CardList = model.CardList
}, ExcelOperationEnum.Между_cчетами);
}
catch (Exception ex)
{
@ -134,19 +114,17 @@ namespace BankYouBankruptRestAPI.Controllers
}
}
//метод генерации отчёта по всем счетм клиентов
//отчёт клиента Excel по переводу денег
[HttpPost]
public void CreateCashierReport(ReportSupportBindingModel model)
public void CreateExcelCrediting(ReportSupportBindingModel model)
{
try
{
_reportCashierViewModelForHTML = _reportCashierLogic.SaveAccountsToPdfFile(new ReportBindingModel
_reportClientLogic.SaveToExcelFile(new ReportBindingModel
{
FileName = "Отчёт_по_счетам.pdf",
ClientId = model.ClientId,
DateFrom = model.DateFrom,
DateTo = model.DateTo
});
FileName = "Отчёт по пополнениям.xls",
CardList = model.CardList
}, ExcelOperationEnum.Пополнениеарт);
}
catch (Exception ex)
{
@ -154,6 +132,5 @@ namespace BankYouBankruptRestAPI.Controllers
throw;
}
}
*/
}
}