Точно работает. Осталось только сдать
This commit is contained in:
parent
5cdff1d212
commit
73cd12f5f0
@ -99,6 +99,7 @@
|
||||
buttonMakeReport.TabIndex = 13;
|
||||
buttonMakeReport.Text = "Сформировать";
|
||||
buttonMakeReport.UseVisualStyleBackColor = true;
|
||||
buttonMakeReport.Click += buttonMakeReport_Click;
|
||||
//
|
||||
// buttonSelectFilePath
|
||||
//
|
||||
@ -108,6 +109,7 @@
|
||||
buttonSelectFilePath.TabIndex = 12;
|
||||
buttonSelectFilePath.Text = "..";
|
||||
buttonSelectFilePath.UseVisualStyleBackColor = true;
|
||||
buttonSelectFilePath.Click += buttonSelectFilePath_Click;
|
||||
//
|
||||
// dateTimePickerDateBegin
|
||||
//
|
||||
|
@ -17,7 +17,7 @@ namespace ProjectTourAgency.Forms;
|
||||
public partial class FormExcelReport : Form
|
||||
{
|
||||
private readonly IUnityContainer _container;
|
||||
public FormExcelReport(IUnityContainer container, ITourRepository tourRepository )
|
||||
public FormExcelReport(IUnityContainer container, ITourRepository tourRepository)
|
||||
{
|
||||
InitializeComponent();
|
||||
_container = container ??
|
||||
|
@ -30,7 +30,7 @@ namespace ProjectTourAgency.Reports
|
||||
try
|
||||
{
|
||||
new ExcelBuilder(filePath)
|
||||
.AddHeader("Сводка по движению корма", 0, 4)
|
||||
.AddHeader("Сводка по клиентам тура", 0, 4)
|
||||
.AddParagraph("за период", 0)
|
||||
.AddTable(new[] { 10, 10, 15, 15 }, GetData(tourId, startDate, endDate))
|
||||
.Build();
|
||||
@ -45,7 +45,6 @@ namespace ProjectTourAgency.Reports
|
||||
|
||||
private List<string[]> GetData(int tourId, DateTime startDate, DateTime endDate)
|
||||
{
|
||||
|
||||
var tourData = _tourRepository.ReadTours()
|
||||
.Where(x => x.DepartureDate >= startDate && x.DepartureDate <= endDate && x.ClientTours.Any(y => y.TourId == tourId))
|
||||
.SelectMany(x => x.ClientTours
|
||||
@ -57,10 +56,8 @@ namespace ProjectTourAgency.Reports
|
||||
CountOut = (int?)y.Cost
|
||||
}));
|
||||
|
||||
|
||||
var clientIds = tourData.Select(x => x.ClientId).Distinct().ToList();
|
||||
|
||||
|
||||
var addMoneyData = _addMoneyRepository.ReadAddMoneys()
|
||||
.Where(x => x.Date >= startDate && x.Date <= endDate && clientIds.Contains(x.ClientId))
|
||||
.Select(x => new {
|
||||
@ -70,24 +67,32 @@ namespace ProjectTourAgency.Reports
|
||||
CountOut = (int?)null
|
||||
});
|
||||
|
||||
|
||||
var data = tourData
|
||||
.Union(addMoneyData)
|
||||
.GroupBy(x => new { x.ClientId, x.Date }) // Группируем по ClientId и Date
|
||||
.Select(g => new {
|
||||
ClientId = g.Key.ClientId,
|
||||
Date = g.Key.Date,
|
||||
CountIn = g.Sum(x => x.CountIn ?? 0), // Суммируем пополнения
|
||||
CountOut = g.Sum(x => x.CountOut ?? 0) // Суммируем списания
|
||||
})
|
||||
.OrderBy(x => x.Date);
|
||||
|
||||
return new List<string[]>() { item }
|
||||
.Union(data.Select(x => new string[] {
|
||||
x.ClientId.ToString(),
|
||||
x.Date.ToString(),
|
||||
x.CountIn?.ToString() ?? string.Empty,
|
||||
x.CountOut?.ToString() ?? string.Empty }))
|
||||
x.ClientId.ToString(),
|
||||
x.Date.ToString("yyyy-MM-dd"), // Форматируем дату
|
||||
x.CountIn.ToString(),
|
||||
x.CountOut.ToString()
|
||||
}))
|
||||
.Union(new[] { new string[] {
|
||||
"Всего",
|
||||
"",
|
||||
data.Sum(x => x.CountIn ?? 0).ToString(),
|
||||
data.Sum(x => x.CountOut ?? 0).ToString()
|
||||
}})
|
||||
"Всего",
|
||||
"",
|
||||
data.Sum(x => x.CountIn).ToString(),
|
||||
data.Sum(x => x.CountOut).ToString()
|
||||
}})
|
||||
.ToList();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user