From 2e7a7eed419618ccfa79a16fadf8787e38eaae55 Mon Sep 17 00:00:00 2001 From: keke Date: Wed, 30 Aug 2023 09:00:18 +0800 Subject: [PATCH] =?UTF-8?q?[FE=20API]=20=E6=9C=AA=E5=AE=8C=E6=88=90=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=A0=B1=E8=A1=A8=E6=A8=99=E9=A0=AD=E6=99=82?= =?UTF-8?q?=E9=96=93=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiControllers/HydroMeterController.cs | 131 ++++++------------ 1 file changed, 40 insertions(+), 91 deletions(-) diff --git a/FrontendWebApi/ApiControllers/HydroMeterController.cs b/FrontendWebApi/ApiControllers/HydroMeterController.cs index 044914b..7038ff7 100644 --- a/FrontendWebApi/ApiControllers/HydroMeterController.cs +++ b/FrontendWebApi/ApiControllers/HydroMeterController.cs @@ -883,6 +883,44 @@ namespace FrontendWebApi.ApiControllers workbook = new XSSFWorkbook(templateStream); var sheet = workbook.GetSheetAt(0); // 這裡假設您要使用第一個工作表 + // 初始先填表格時間 + int rowInit = 0; + int colInit = 0; + IRow row = sheet.GetRow(rowInit++) ?? sheet.CreateRow(rowInit++); + ICell cell = row.GetCell(colInit++) ?? row.CreateCell(colInit++); + DateTime date = DateTime.ParseExact(input.startTime + "-01", "yyyy-MM-dd", null); // 2023-08 + date = date.AddYears(-1911); + var start_year = date.ToString("yyy"); // 查詢年 + var start_month = date.ToString("MM"); // 查詢月 + cell.SetCellValue("明志科技大學" + start_year + "年" + start_month + "月份用電差異比較表"); + + row = sheet.GetRow(rowInit++) ?? sheet.CreateRow(rowInit++); + cell = row.GetCell(colInit++) ?? row.CreateCell(colInit++); + DateTime timeDay = date.AddMonths(1).AddDays(-1); // 用來記錄每個月的最後一天是幾月幾號 + string timeRange = start_year + "." + start_month + ".01~" + timeDay.ToString("yyy.MM.dd"); + cell.SetCellValue("電錶週期:" + timeRange); + + row = sheet.GetRow(rowInit++) ?? sheet.CreateRow(rowInit++); + colInit = 3; + cell = row.GetCell(colInit++) ?? row.CreateCell(colInit++); + cell.SetCellValue("本月(A)\n" + start_year + "." + start_month); + + cell = row.GetCell(colInit++) ?? row.CreateCell(colInit++); + DateTime previousMonth = date.AddMonths(-1); + string lastMonth = previousMonth.ToString("MM"); + cell.SetCellValue("上月(B)\n" + start_year + "." + lastMonth); + + cell = row.GetCell(colInit++) ?? row.CreateCell(colInit++); + cell.SetCellValue("上月差異(C)\n"); + + cell = row.GetCell(colInit++) ?? row.CreateCell(colInit++); + DateTime previousYear = date.AddYears(-1); + string lastYear = previousYear.ToString("yyy"); + cell.SetCellValue("去年同期(D)\n" + lastYear + "." + start_month); + + cell = row.GetCell(colInit++) ?? row.CreateCell(colInit++); + cell.SetCellValue("上年差異(E)\n"); + // 設定要填入資料的位置(rowIndex 和 columnIndex) int rowIndex = 4; // 假設要從第二列開始填入 int columnIndex = 1; // 假設第一欄是要填入的位置 @@ -890,11 +928,11 @@ namespace FrontendWebApi.ApiControllers foreach (var r in result) { columnIndex = 1; - IRow row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex); + row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex); string buildingName = r.building_name; string floorTag = r.floor_tag; - ICell cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); + cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); cell.SetCellValue(buildingName + floorTag); cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); @@ -909,24 +947,6 @@ namespace FrontendWebApi.ApiControllers rowIndex++; } - - // // 設定欲填入的值 - // string buildingName = "Building A"; - // string floorTag = "1F"; - // string deviceFullName = "Device X"; - // string unit = "kWh"; - - // // 填入資料 - // IRow row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex); - // ICell cell = row.GetCell(columnIndex) ?? row.CreateCell(columnIndex); - // cell.SetCellValue(buildingName); - - // // 同樣方式填入其他資料 - // cell = row.GetCell(columnIndex + 1) ?? row.CreateCell(columnIndex + 1); - // cell.SetCellValue(floorTag); - - // ... - } // --- 8/24 修改到這裡囉 --- @@ -1080,12 +1100,6 @@ order by e.priority, a.priority"; avg_rawdata = (double.Parse(x.searchM) - double.Parse(x.lastY)).ToString() }) ); - //HydroMeterRawDataOutput newData1 = new HydroMeterRawDataOutput - //{ - // timeStamp = rawData.FirstOrDefault(x => x.timeStamp == searchTime), - // device_number = l.device_number, - // avg_rawdata - //}; l.device_full_name = await backendRepository.GetOneAsync($"select full_name from device where device_number = '{l.device_number}'"); l.building_name = await backendRepository.GetOneAsync("select full_name from building where building_tag = @building_tag and deleted = 0", @@ -1095,71 +1109,6 @@ order by e.priority, a.priority"; ? (Math.Round(input.price.Value, 2)).ToString() : Math.Round((await backendRepository.GetOneAsync("select system_value from variable where system_type = 'ElectricPrice' and deleted = 0")), 2).ToString(); l.total_price = Math.Round((Decimal.Parse(l.total) * Decimal.Parse(l.price)), 2).ToString(); - - - - - - - //l.building_name = l.building_name; - //l.total = l.rawData.Where(x => x.avg_rawdata != "NaN").Sum(x => decimal.Parse(x.avg_rawdata ?? "0", System.Globalization.NumberStyles.Float)).ToString(); - - //HydroMeterRawDataEachTotalOutput newData1 = new HydroMeterRawDataEachTotalOutput - //{ - // building_name = l.building_name, - // device_number = l.device_number, - // searchMT = header_now, - // searchM = l.searchM, - // lastM = l.lastM, - // lastY = l.lastY, - // lastMT= header_lastM, - // lastYT = header_lastY - //}; - - - - //ResultData.Add(newData1); - //var lastYear = previousYear.ToString("yyyy-MM"); - //var lastMonth = previousMonth.ToString("yyyy-MM"); - //var searchTime = input.startTime; // 欲查詢的月份 - - // 找到符合 searchTime 和 lastMonth 條件的資料 - //var searchTimeData = l.rawData.FirstOrDefault(x => x.timeStamp == searchTime); - //var lastMonthData = l.rawData.FirstOrDefault(x => x.timeStamp == lastMonth); - //var lastYearData = l.rawData.FirstOrDefault(x => x.timeStamp == lastYear); - - //if (searchTimeData != null && lastMonthData != null && lastYearData != null) - //{ - // // 將 avg_rawdata 字串轉換為 double 型別 - // double searchTimeValue = Convert.ToDouble(searchTimeData.avg_rawdata); - // double lastMonthValue = Convert.ToDouble(lastMonthData.avg_rawdata); - // double lastYearValue = Convert.ToDouble(lastYearData.avg_rawdata); - - // // 計算差值 - // double month_diff = searchTimeValue - lastMonthValue; - // double year_diff = searchTimeValue - lastYearValue; - - // // 創建新的 HydroMeterRawDataOutput - // HydroMeterRawDataOutput newData1 = new HydroMeterRawDataOutput - // { - // timeStamp = "last month different", - // device_number = searchTimeData.device_number, - // avg_rawdata = month_diff.ToString() - // }; - - // HydroMeterRawDataOutput newData2 = new HydroMeterRawDataOutput - // { - // timeStamp = "last year different", - // device_number = searchTimeData.device_number, - // avg_rawdata = year_diff.ToString() - // }; - - // // 將新資料加入到 l.rawData 中 - // l.rawData.Add(newData1); - // l.rawData.Add(newData2); - //} - - } apiResult.Code = "0000";