[WebApi]修正水電報表匯出CSV欄位錯誤問題

This commit is contained in:
張家睿 2025-02-24 14:41:47 +08:00
parent bfe4c01caa
commit 9311e36c81

View File

@ -751,7 +751,6 @@ namespace FrontendWebApi.ApiControllers
var fileDateName = DateTime.Now.ToString("yyyy-MM-ddTHH-mm-ss"); var fileDateName = DateTime.Now.ToString("yyyy-MM-ddTHH-mm-ss");
var waterMeterFileName = $"水電報表_水錶_{fileDateName}.csv"; var waterMeterFileName = $"水電報表_水錶_{fileDateName}.csv";
var electricMeterFileName = $"水電報表_電錶_{fileDateName}.csv"; var electricMeterFileName = $"水電報表_電錶_{fileDateName}.csv";
var zipFileName = $"水電報表_{fileDateName}.zip";
try try
{ {
@ -790,7 +789,7 @@ namespace FrontendWebApi.ApiControllers
// 判斷是否有資料 // 判斷是否有資料
if (existMonth.Count == 0) if (existMonth.Count == 0)
{ {
var msg = new { Code = "0001", Msg = "還沒有選擇用戶,無法匯出檔案。" }; var msg = new { Code = "0001", Msg = "時間段無資料或無設置用戶。" };
return StatusCode(400, msg); return StatusCode(400, msg);
} }
else else
@ -862,12 +861,6 @@ namespace FrontendWebApi.ApiControllers
var waterMeterData = outputBillExcel.Where(x => x.device_name_tag == "W1" && x.building_tag == tb.building_tag).ToList(); var waterMeterData = outputBillExcel.Where(x => x.device_name_tag == "W1" && x.building_tag == tb.building_tag).ToList();
var electricMeterData = outputBillExcel.Where(x => x.device_name_tag == "E4" && x.building_tag == tb.building_tag).ToList(); var electricMeterData = outputBillExcel.Where(x => x.device_name_tag == "E4" && x.building_tag == tb.building_tag).ToList();
// 檢查是否有水錶或電錶數據
//if (waterMeterData.Count == 0 && electricMeterData.Count == 0)
//{
// var msg = new { Code = "0002", Msg = "該棟沒有可匯出的水錶或電錶數據。" };
// return StatusCode(400, msg);
//}
if (tb.tableType == "elec" && electricMeterData.Count == 0) if (tb.tableType == "elec" && electricMeterData.Count == 0)
{ {
@ -885,11 +878,11 @@ namespace FrontendWebApi.ApiControllers
string electricMeterCsv = null; string electricMeterCsv = null;
if (waterMeterData.Count > 0) if (waterMeterData.Count > 0)
{ {
waterMeterCsv = GenerateCsv(waterMeterData); waterMeterCsv = GenerateCsv(waterMeterData, "water");
} }
if (electricMeterData.Count > 0) if (electricMeterData.Count > 0)
{ {
electricMeterCsv = GenerateCsv(electricMeterData); electricMeterCsv = GenerateCsv(electricMeterData, "elec");
} }
// 返回CSV文件 // 返回CSV文件
@ -921,37 +914,6 @@ namespace FrontendWebApi.ApiControllers
return StatusCode(400, msg); return StatusCode(400, msg);
} }
//// 創建ZIP檔案
//using (var zipMemoryStream = new MemoryStream())
//{
// using (var archive = new ZipArchive(zipMemoryStream, ZipArchiveMode.Create, true))
// {
// if (waterMeterData.Count > 0)
// {
// var waterEntry = archive.CreateEntry(waterMeterFileName);
// using (var entryStream = waterEntry.Open())
// using (var streamWriter = new StreamWriter(entryStream, Encoding.UTF8))
// {
// streamWriter.Write(waterMeterCsv);
// }
// }
// if (electricMeterData.Count > 0)
// {
// var electricEntry = archive.CreateEntry(electricMeterFileName);
// using (var entryStream = electricEntry.Open())
// using (var streamWriter = new StreamWriter(entryStream, Encoding.UTF8))
// {
// streamWriter.Write(electricMeterCsv);
// }
// }
// }
// zipMemoryStream.Seek(0, SeekOrigin.Begin);
// return File(zipMemoryStream.ToArray(), "application/zip", zipFileName);
//}
} }
catch (Exception exception) catch (Exception exception)
{ {
@ -963,12 +925,19 @@ namespace FrontendWebApi.ApiControllers
} }
private string GenerateCsv(List<OutputBillExcel> data) private string GenerateCsv(List<OutputBillExcel> data, string type)
{ {
StringBuilder csv = new StringBuilder(); StringBuilder csv = new StringBuilder();
// 添加CSV標題行 // 添加CSV標題行
csv.AppendLine("用戶,設備代碼,設備名稱,日期,用電單價(元/度),當日用電(kWh),電費(元),起訖時間"); if (type == "elec")
{
csv.AppendLine("用戶,設備代碼,設備名稱,日期,用電單價(元/度),當日用電(kWh),電費(元),起訖時間");
}
else if (type == "water")
{
csv.AppendLine("用戶,設備代碼,設備名稱,日期,用水單價(元/度),當日用水(m³),水費(元),起訖時間");
}
// 添加數據行 // 添加數據行
foreach (var item in data) foreach (var item in data)