diff --git a/FrontendWebApi/ApiControllers/HydroMeterController.cs b/FrontendWebApi/ApiControllers/HydroMeterController.cs index 50f94f5..d423055 100644 --- a/FrontendWebApi/ApiControllers/HydroMeterController.cs +++ b/FrontendWebApi/ApiControllers/HydroMeterController.cs @@ -833,24 +833,18 @@ namespace FrontendWebApi.ApiControllers [Route("api/ExportElectricEachTotalCompareList")] public FileResult OpeExportEachTotalCompareExcelElec([FromBody] HydroMeterInput input) { - List result = new List(); - List result_for_sum = new List(); - result = ElectricListEachTotal(input).Result.Value.Data.ToList(); - bool flag = true; bool total_flag = false; if (input.Mode == HydroMeterInputSearchMode.Custom) { - input.Mode = HydroMeterInputSearchMode.All; - result_for_sum = ElectricListEachTotal(input).Result.Value.Data.ToList(); - flag = false; + //flag = false; total_flag = true; - } - else - { - result_for_sum = new List(result); + input.Mode = HydroMeterInputSearchMode.All; } + List result = new List(); + result = ElectricListEachTotal(input).Result.Value.Data.ToList(); + List> docFile = new List>(); var workbook = new XSSFWorkbook(); @@ -976,11 +970,11 @@ namespace FrontendWebApi.ApiControllers "第一校區總盤", "圖資大樓總盤", "教學大樓總盤", - "教學大樓總盤", "電子館分盤", "機械館分盤", "電機館分盤", - "學5舍總盤", + "學1-4舍空調總盤", + "學五舍總盤", "8眷舍分盤", "企教分盤", "7眷舍分盤", @@ -992,10 +986,9 @@ namespace FrontendWebApi.ApiControllers string last_build = ""; string last_device = ""; - // ------------------ Dictionary> buildingSumData = new Dictionary>(); #region 特定棟別總計處理 - foreach (var item in result_for_sum) + foreach (var item in result) { if (!need_cal_total.Contains(item.building_name)) { @@ -1021,7 +1014,7 @@ namespace FrontendWebApi.ApiControllers buildingSumData[item.building_name][dataItem.timeStamp] += Math.Round(double.Parse(dataItem.avg_rawdata)); } } - #endregion + // 測試 //foreach (var building in buildingSumData) //{ @@ -1031,18 +1024,15 @@ namespace FrontendWebApi.ApiControllers // Console.WriteLine($" TimeStamp: {timeStampData.Key}, Total Avg RawData: {timeStampData.Value}"); // } //} - // ------------------ + #endregion foreach (var r in result) { - if (total_flag) - { - flag = false; - } - if (r.device_full_name == "綜合大樓總盤") - { - continue; - } + //if (total_flag) + //{ + // flag = false; + //} + string buildingName = r.building_name; string floorTag = r.floor_tag; string deviceFullName = r.device_full_name; @@ -1060,6 +1050,11 @@ namespace FrontendWebApi.ApiControllers cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); cell.SetCellValue(count_index.ToString()); count_index++; + if (total_flag) + { + cell = row.GetCell(columnIndex) ?? row.CreateCell(columnIndex); + cell.SetCellValue(buildingName + floorTag); + } columnIndex++; cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); @@ -1078,7 +1073,7 @@ namespace FrontendWebApi.ApiControllers columnIndex = 0; } - if ((total_flag && need_cal_total.Contains(last_build)) || (flag && buildingName != last_build && need_cal_total.Contains(last_build))) + if (flag && buildingName != last_build && need_cal_total.Contains(last_build)) { row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex); cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); @@ -1108,6 +1103,38 @@ namespace FrontendWebApi.ApiControllers // continue; } + if (total_flag) + { + if (need_green_device.Contains(deviceFullName)) + { + columnIndex = 0; + row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex); + cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); + cell.SetCellValue(count_index.ToString()); + count_index++; + + cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); + cell.SetCellValue(buildingName + floorTag); + + cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); + cell.SetCellValue(deviceFullName); + cell.CellStyle = greenCellStyle; + + foreach (var rawD in r.rawData) + { + cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); + cell.SetCellValue(rawD.avg_rawdata); + } + rowIndex++; + last_build = buildingName; + last_device = deviceFullName; + flag = true; + } + last_build = buildingName; + last_device = deviceFullName; + flag = true; + continue; + } columnIndex = 0; row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex); cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); @@ -1119,7 +1146,7 @@ namespace FrontendWebApi.ApiControllers cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); cell.SetCellValue(deviceFullName); - if (total_flag || need_green_device.Contains(deviceFullName)) + if (need_green_device.Contains(deviceFullName)) { cell.CellStyle = greenCellStyle; } @@ -1129,7 +1156,6 @@ namespace FrontendWebApi.ApiControllers cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++); cell.SetCellValue(rawD.avg_rawdata); } - rowIndex++; last_build = buildingName; last_device = deviceFullName; @@ -1184,19 +1210,20 @@ namespace FrontendWebApi.ApiControllers string sqlWhere = ""; string tag_quantity = await backendRepository.GetOneAsync("select system_value from variable where system_type = 'obixConfig' and system_key = 'tag_quantity' and deleted = 0"); - switch (input.Mode) - { - case HydroMeterInputSearchMode.All: - sqlWhere = @$" a.priority <> 0 "; - break; + //switch (input.Mode) + //{ + // case HydroMeterInputSearchMode.All: + // sqlWhere = @$" a.priority <> 0 "; + // break; - case HydroMeterInputSearchMode.Custom: - sqlWhere = @$" a.device_number in (SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(system_value, '/', -1), '_', 8) COLLATE utf8mb4_0900_ai_ci as val FROM variable where system_type = 'dashboard_total_elec')"; - break; + // case HydroMeterInputSearchMode.Custom: + // sqlWhere = @$" a.device_number in (SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(system_value, '/', -1), '_', 8) COLLATE utf8mb4_0900_ai_ci as val FROM variable where system_type = 'dashboard_total_elec')"; + // break; - default: - break; - } + // default: + // break; + //} + sqlWhere = @$" a.priority <> 0 "; var table = "archive_electric_meter_month"; var schema = await backendRepository.GetOneAsync($"select system_value from variable where system_type = 'project_name'"); @@ -1224,6 +1251,24 @@ order by e.report_priority, a.priority"; Logger.LogInformation("SQL = " + sql + " building=" + input.building_tag + " floor_tag = " + input.floor_tag); var rawData = await backendRepository.GetAllAsync(sql); + List need_green_device = new List + { + "第一校區總盤", + "圖資大樓總盤", + "教學大樓總盤", + "電子館分盤", + "機械館分盤", + "電機館分盤", + "學1-4舍空調總盤", + "學五舍總盤", + "8眷舍分盤", + "企教分盤", + "7眷舍分盤", + "第二校區總盤", + "薄膜一館分盤", + "薄膜二館分盤" + }; + List ResultData = new List(); ResultData = rawData @@ -1233,7 +1278,12 @@ order by e.report_priority, a.priority"; foreach (var l in ResultData) { - + var full_name = await backendRepository.GetOneAsync($"select full_name from device where device_number = '{l.device_number}'"); + if (input.Mode == HydroMeterInputSearchMode.Custom && !need_green_device.Contains(full_name)) + { + continue; + } + l.rawData = new List(); l.rawData.AddRange( @@ -1287,7 +1337,7 @@ order by e.report_priority, a.priority"; }) ); - l.device_full_name = await backendRepository.GetOneAsync($"select full_name from device where device_number = '{l.device_number}'"); + l.device_full_name = full_name; l.building_name = await backendRepository.GetOneAsync("select full_name from building where building_tag = @building_tag and deleted = 0", new { building_tag = l.building_tag }); l.total = l.rawData.Where(x => x.avg_rawdata != "NaN").Sum(x => decimal.Parse(x.avg_rawdata ?? "0", System.Globalization.NumberStyles.Float)).ToString(); @@ -1296,9 +1346,24 @@ order by e.report_priority, a.priority"; : 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))).ToString(); } + List ResultData_custom = new List(); + foreach (var l in ResultData) + { + if (l.device_full_name != null) + { + ResultData_custom.Add(l); + } + } apiResult.Code = "0000"; - apiResult.Data = ResultData; + if (input.Mode == HydroMeterInputSearchMode.All) + { + apiResult.Data = ResultData; + } + else + { + apiResult.Data = ResultData_custom; + } } catch (Exception exception) {