forked from amkovkov/GranuSightSoftware2
feat: add ResultsExporter
move results postprocessing to separate class fix few typos
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
using System.Text;
|
||||
using System.Globalization;
|
||||
|
||||
using GSS2.Core.Analysis.AmineContent.Database;
|
||||
|
||||
namespace GSS2.Core.Analysis.AmineContent;
|
||||
|
||||
public static class ResultExporter
|
||||
{
|
||||
public static void ExportCsv(string path, IEnumerable<ResultRecord> records)
|
||||
{
|
||||
NumberFormatInfo nfi = new NumberFormatInfo
|
||||
{
|
||||
NumberDecimalSeparator = ","
|
||||
};
|
||||
|
||||
var rows = new List<List<string>>();
|
||||
|
||||
rows.Add(new List<string>
|
||||
{
|
||||
"ИД",
|
||||
"Название пробы",
|
||||
"Дата и время отбора пробы",
|
||||
"Место отбора пробы",
|
||||
"Дополнительная информация о пробе",
|
||||
"Дата и время создания записи",
|
||||
"Дата и время редактирования записи",
|
||||
"Тип сепаратора",
|
||||
"Марка пробы",
|
||||
"Марка кондиционирующей смеси",
|
||||
"Норма расхода кондиционирующей смеси, кг/т",
|
||||
"Количество частиц",
|
||||
"Средняя нормированная обработанная площадь",
|
||||
"50-й процентиль",
|
||||
"10-й процентиль",
|
||||
"90-й процентиль",
|
||||
"Ширина центрального диапазона",
|
||||
"Межгранульное среднеквадратичное отклонение",
|
||||
"Межгранульная неоднородность",
|
||||
"Доля необработанных гранул",
|
||||
"Средняя внутригранульная неоднородность",
|
||||
"Средняя горячая площадь",
|
||||
"Средний интегральный оптический показатель"
|
||||
});
|
||||
|
||||
foreach (var record in records)
|
||||
{
|
||||
var results = ResultsPostProcessor.PostProcess(record);
|
||||
|
||||
var row = new List<string>
|
||||
{
|
||||
record.Id.ToString(),
|
||||
record.SampleName,
|
||||
record.SamplingDateTime.ToString("dd.MM.yyyy hh:mm:ss"),
|
||||
record.SamplingPlace,
|
||||
record.SampleComment,
|
||||
record.CreateDateTime.ToString("dd.MM.yyyy hh:mm:ss"),
|
||||
record.EditDateTime.ToString("dd.MM.yyyy hh:mm:ss"),
|
||||
record.SeparatorType,
|
||||
record.BrandName,
|
||||
record.MixtureName,
|
||||
record.MixtureNormalRate.ToString("F3", nfi),
|
||||
results.values.Count().ToString(),
|
||||
results.meanProcessedArea.ToString("F3", nfi),
|
||||
results.processedAreaP50.ToString("F3", nfi),
|
||||
results.processedAreaP10.ToString("F3", nfi),
|
||||
results.processedAreaP90.ToString("F3", nfi),
|
||||
results.processedAreaDeltaP90P10.ToString("F3", nfi),
|
||||
results.processedAreaStdDev.ToString("F3", nfi),
|
||||
results.interHeterogeneity.ToString("F3", nfi),
|
||||
results.unprocessedFraction.ToString("F3", nfi),
|
||||
results.meanInnerHeterogeneity.ToString("F3", nfi),
|
||||
results.meanHotspotArea.ToString("F3", nfi),
|
||||
results.meanOpticalIntegral.ToString("F3", nfi)
|
||||
};
|
||||
rows.Add(row);
|
||||
|
||||
row = new List<string>(23);
|
||||
row.Add("Нормированная обработанная площадь");
|
||||
foreach (var v in results.processedAreas)
|
||||
row.Add(v.ToString("F3", nfi));
|
||||
rows.Add(row);
|
||||
|
||||
row = new List<string>(23);
|
||||
row.Add("Горячая площадь");
|
||||
foreach (var v in results.hotspotAreas)
|
||||
row.Add(v.ToString("F3", nfi));
|
||||
rows.Add(row);
|
||||
|
||||
row = new List<string>(23);
|
||||
row.Add("Оптический интегральный показатель");
|
||||
foreach (var v in results.opticalIntegrals)
|
||||
row.Add(v.ToString("F3", nfi));
|
||||
rows.Add(row);
|
||||
|
||||
row = new List<string>(23);
|
||||
row.Add("Нормированная обработанная площадь");
|
||||
foreach (var v in results.innerStdDevs)
|
||||
row.Add(v.ToString("F3", nfi));
|
||||
rows.Add(row);
|
||||
|
||||
row = new List<string>(23);
|
||||
row.Add("Внутригранульная неоднородность");
|
||||
foreach (var v in results.innerHeterogeneities)
|
||||
row.Add(v.ToString("F3", nfi));
|
||||
rows.Add(row);
|
||||
}
|
||||
|
||||
var sb = new StringBuilder();
|
||||
foreach (var row in rows)
|
||||
{
|
||||
foreach (var cell in row)
|
||||
{
|
||||
sb.Append(cell);
|
||||
sb.Append(";");
|
||||
}
|
||||
sb.Append("\n");
|
||||
}
|
||||
|
||||
File.WriteAllText(path, sb.ToString());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user