Промежутка.

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 System.Threading.Tasks;
using BankYouBankruptContracts.ViewModels.Client.Reports; using BankYouBankruptContracts.ViewModels.Client.Reports;
using BankYouBankruptContracts.ViewModels; using BankYouBankruptContracts.ViewModels;
using BankYouBankruptDataModels.Enums;
using BankYouBankruptContracts.ViewModels.Client.Default;
namespace BankYouBankruptBusinessLogic.BusinessLogics namespace BankYouBankruptBusinessLogic.BusinessLogics
{ {
@ -69,6 +71,7 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics
}).ToList(); }).ToList();
} }
//для excel отчёта по переводам между счетов
public List<MoneyTransferViewModel>? GetMoneyTransfer(ReportBindingModel model) public List<MoneyTransferViewModel>? GetMoneyTransfer(ReportBindingModel model)
{ {
//список счетов по выбранным картам //список счетов по выбранным картам
@ -91,20 +94,79 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics
AccountPayeeId = index AccountPayeeId = index
}).OrderBy(x => x.AccountSenderId).ToList(); }).OrderBy(x => x.AccountSenderId).ToList();
totalList.Union(result); totalList.AddRange(result);
} }
return totalList; return totalList;
} }
public void SaveToExcelFile(ReportBindingModel model) //для excel отчёта по пополнениям карты
public List<CreditingViewModel> GetExcelCrediting(ReportBindingModel model)
{
List<CreditingViewModel> totalList = new();
foreach (var index in model.CardList)
{
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 _saveToExcel.CreateReport(new ExcelInfo
{ {
FileName = model.FileName, FileName = model.FileName,
Title = "Список переводов денег", Title = "Отчёт по переводам",
MoneyTransfer = GetMoneyTransfer(model) 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) public void SaveToWordFile(ReportBindingModel model)

View File

@ -1,5 +1,6 @@
using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums; using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums;
using BankYouBankruptBusinessLogic.OfficePackage.HelperModels; using BankYouBankruptBusinessLogic.OfficePackage.HelperModels;
using BankYouBankruptDataModels.Enums;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -11,7 +12,30 @@ namespace BankYouBankruptBusinessLogic.OfficePackage
public abstract class AbstractSaveToExcel public abstract class AbstractSaveToExcel
{ {
//Создание отчета. Описание методов ниже //Создание отчета. Описание методов ниже
public void CreateReport(ExcelInfo info) public void CreateReport(ExcelInfo info, ExcelOperationEnum operationEnum)
{
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); CreateExcel(info);
@ -108,6 +132,342 @@ namespace BankYouBankruptBusinessLogic.OfficePackage
rowIndex++; 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.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); SaveExcel(info);
} }

View File

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

View File

@ -273,7 +273,7 @@ namespace BankYouBankruptClientApp.Controllers
#region Excel отчёт #region Excel отчёт
[HttpPost] [HttpPost]
public void CreateExcelReport(List<CheckboxViewModel> cards) public IActionResult CreateExcelReport(List<CheckboxViewModel> cards)
{ {
if (APIClient.Client == null) if (APIClient.Client == null)
{ {
@ -285,7 +285,23 @@ namespace BankYouBankruptClientApp.Controllers
CardList = cards.Where(x => x.IsChecked).Select(x => x.Id).ToList() 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 #endregion

View File

@ -29,7 +29,10 @@
<input class="btn btn-primary mt-3" type="submit" value="Submit" /> <input class="btn btn-primary mt-3" type="submit" value="Submit" />
</div> </div>
<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> </div>
</form> </form>
</div> </div>

View File

@ -2,6 +2,7 @@
using BankYouBankruptContracts.SearchModels; using BankYouBankruptContracts.SearchModels;
using BankYouBankruptContracts.ViewModels; using BankYouBankruptContracts.ViewModels;
using BankYouBankruptContracts.ViewModels.Client.Reports; using BankYouBankruptContracts.ViewModels.Client.Reports;
using BankYouBankruptDataModels.Enums;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -20,7 +21,7 @@ namespace BankYouBankruptContracts.BusinessLogicsContracts
void SaveToWordFile(ReportBindingModel model); void SaveToWordFile(ReportBindingModel model);
//Сохранение отчёта по картам в файл-Excel //Сохранение отчёта по картам в файл-Excel
void SaveToExcelFile(ReportBindingModel model); void SaveToExcelFile(ReportBindingModel model, ExcelOperationEnum operationEnum);
//Сохранение отчёта по картам в файл-Pdf //Сохранение отчёта по картам в файл-Pdf
ReportClientViewModelForHTML SaveClientReportToPdfFile(ReportBindingModel model); 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) return result.Where(x => (x.AccountSenderId == model.AccountSenderId || x.AccountPayeeId == model.AccountPayeeId)
&& x.AccountSender != null) && x.AccountSender != null)
.ToList()
.Select(x => x.GetViewModel) .Select(x => x.GetViewModel)
.ToList(); .ToList();
} }

View File

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