diff --git a/SolarPower/Controllers/PowerGenerationController.cs b/SolarPower/Controllers/PowerGenerationController.cs index c14bc42..91b3500 100644 --- a/SolarPower/Controllers/PowerGenerationController.cs +++ b/SolarPower/Controllers/PowerGenerationController.cs @@ -7,6 +7,12 @@ using System.Threading.Tasks; using SolarPower.Models; using SolarPower.Models.PowerStation; using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using NPOI.XSSF.UserModel; +using NPOI.SS.UserModel; +using System.IO; +using NPOI.SS.Util; +using NPOI.SS.UserModel.Charts; namespace SolarPower.Controllers { @@ -46,7 +52,452 @@ namespace SolarPower.Controllers return apiResult; } + public FileResult ExportExcelAsync(string post) + { + var postObject = JsonConvert.DeserializeObject(post); + var workbook = new XSSFWorkbook(); + + #region excel設定 + IFont font12 = workbook.CreateFont(); + font12.FontName = "新細明體"; + font12.FontHeightInPoints = 12; + ICellStyle style12yellow = workbook.CreateCellStyle(); + style12yellow.SetFont(font12); + style12yellow.Alignment = HorizontalAlignment.Center; + style12yellow.VerticalAlignment = VerticalAlignment.Center; + style12yellow.BorderTop = BorderStyle.Thin; + style12yellow.BorderBottom = BorderStyle.Thin; + style12yellow.BorderLeft = BorderStyle.Thin; + style12yellow.BorderRight = BorderStyle.Thin; + style12yellow.FillForegroundColor = IndexedColors.Yellow.Index; + style12yellow.FillPattern = FillPattern.SolidForeground; + style12yellow.WrapText = true; + + ICellStyle style12lightgreen = workbook.CreateCellStyle(); + style12lightgreen.SetFont(font12); + style12lightgreen.Alignment = HorizontalAlignment.Center; + style12lightgreen.VerticalAlignment = VerticalAlignment.Center; + style12lightgreen.BorderTop = BorderStyle.Thin; + style12lightgreen.BorderBottom = BorderStyle.Thin; + style12lightgreen.BorderLeft = BorderStyle.Thin; + style12lightgreen.BorderRight = BorderStyle.Thin; + style12lightgreen.FillForegroundColor = IndexedColors.LightGreen.Index; + style12lightgreen.FillPattern = FillPattern.SolidForeground; + style12lightgreen.WrapText = true; + + ICellStyle style12green = workbook.CreateCellStyle(); + style12green.SetFont(font12); + style12green.Alignment = HorizontalAlignment.Center; + style12green.VerticalAlignment = VerticalAlignment.Center; + style12green.BorderTop = BorderStyle.Thin; + style12green.BorderBottom = BorderStyle.Thin; + style12green.BorderLeft = BorderStyle.Thin; + style12green.BorderRight = BorderStyle.Thin; + style12green.FillForegroundColor = IndexedColors.BrightGreen.Index; + style12green.FillPattern = FillPattern.SolidForeground; + style12green.WrapText = true; + + ICellStyle style12orange = workbook.CreateCellStyle(); + style12orange.SetFont(font12); + style12orange.Alignment = HorizontalAlignment.Center; + style12orange.VerticalAlignment = VerticalAlignment.Center; + style12orange.BorderTop = BorderStyle.Thin; + style12orange.BorderBottom = BorderStyle.Thin; + style12orange.BorderLeft = BorderStyle.Thin; + style12orange.BorderRight = BorderStyle.Thin; + style12orange.FillForegroundColor = IndexedColors.LightOrange.Index; + style12orange.FillPattern = FillPattern.SolidForeground; + style12orange.WrapText = true; + #endregion + + foreach (var objects in postObject.PowerStation) + { + var sheet = workbook.CreateSheet(objects.Name); + + SearchGeneration select_Table = new SearchGeneration + { + Date = postObject.Date, + PowerstationId = Convert.ToInt32(objects.Value), + DateType = postObject.DateType + }; + var result = GetGenerationList(select_Table); + CellRangeAddress region; + IRow row ; + ICell cell ; + for(var a = 0;a<15;a++) + { + sheet.SetColumnWidth(a, 6 * 160 * 4); + } + + row = sheet.CreateRow(0); + row.HeightInPoints = 40; + #region row-0 + cell = row.CreateCell(0); + cell.SetCellValue(objects.Name); + region = new CellRangeAddress(0, 0, 0, 2); + sheet.AddMergedRegion(region); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(2); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(3); + cell.SetCellValue("CBA"); + region = new CellRangeAddress(0, 0, 3, 5); + sheet.AddMergedRegion(region); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(5); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(6); + cell.SetCellValue("監控系統"); + region = new CellRangeAddress(0, 0, 6, 7); + sheet.AddMergedRegion(region); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(7); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(8); + cell.SetCellValue("Actual Rev."); + region = new CellRangeAddress(0, 0, 8, 9); + sheet.AddMergedRegion(region); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(9); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(10); + cell.SetCellValue("平均發電度數小計\r(/kW)"); + region = new CellRangeAddress(0, 0, 10, 14); + sheet.AddMergedRegion(region); + cell.CellStyle = style12yellow; + + cell = row.CreateCell(14); + cell.CellStyle = style12yellow; + #endregion + + row = sheet.CreateRow(1); + row.HeightInPoints = 40; + #region row-1 + cell = row.CreateCell(0); + cell.SetCellValue("計算區間"); + region = new CellRangeAddress(1, 2, 0, 2); + sheet.AddMergedRegion(region); + cell.CellStyle = style12green; + + cell = row.CreateCell(1); + cell.CellStyle = style12green; + cell = row.CreateCell(2); + cell.CellStyle = style12green; + + cell = row.CreateCell(3); + cell.SetCellValue("建置容量\r(kW)"); + cell.CellStyle = style12green; + + cell = row.CreateCell(4); + cell.SetCellValue("發電度數\r(/kW /日)"); + cell.CellStyle = style12green; + + cell = row.CreateCell(5); + cell.SetCellValue("售電單價\r(NT$/度)"); + cell.CellStyle = style12green; + + cell = row.CreateCell(6); + cell.SetCellValue("建置容量\r(kW)"); + cell.CellStyle = style12green; + + cell = row.CreateCell(7); + cell.SetCellValue("售電單價\r(NT$/度)"); + cell.CellStyle = style12green; + + cell = row.CreateCell(8); + cell.SetCellValue("建置容量\r(kW)"); + cell.CellStyle = style12green; + + cell = row.CreateCell(9); + cell.SetCellValue("建置容量\r(kW)"); + cell.CellStyle = style12green; + + cell = row.CreateCell(10); + cell.SetCellValue("CBA"); + cell.CellStyle = style12lightgreen; + cell = row.CreateCell(11); + cell.SetCellValue("監控系統"); + cell.CellStyle = style12lightgreen; + cell = row.CreateCell(12); + cell.SetCellValue("v.s CBA"); + cell.CellStyle = style12lightgreen; + cell = row.CreateCell(13); + cell.SetCellValue("Actual"); + cell.CellStyle = style12lightgreen; + cell = row.CreateCell(14); + cell.SetCellValue("v.s CBA"); + cell.CellStyle = style12lightgreen; + + #endregion + + row = sheet.CreateRow(3); + row.HeightInPoints = 40; + #region row-3 + cell = row.CreateCell(0); + cell.SetCellValue("起日"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(1); + cell.SetCellValue("訖日"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(2); + cell.SetCellValue("天數"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(3); + cell.SetCellValue("發電效能"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(4); + cell.SetCellValue("總發電量\r(度數)"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(5); + cell.SetCellValue("總售電收入\r(NT$)"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(6); + cell.SetCellValue("總發電量\r(度數)"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(7); + cell.SetCellValue("總售電收入\r(NT$)"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(8); + cell.SetCellValue("總發電量\r(度數)"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(9); + cell.SetCellValue("總售電收入\r(NT$)"); + cell.CellStyle = style12orange; + + cell = row.CreateCell(10); + cell.SetCellValue("平均發電度數明細\r(/kW/日)"); + region = new CellRangeAddress(3, 3, 10, 14); + sheet.AddMergedRegion(region); + cell.CellStyle = style12orange; + + cell = row.CreateCell(14); + cell.CellStyle = style12orange; + + #endregion + + int index = 4; + var totalday = 0; + var totalCBA = 0.0; + var totalReal = 0.0; + var totalAct = 0.0; + var cap = 0.0; + var rate = 0.0; + var cbAkwh = 0.0; + foreach (var day in result.Result.Data) + { + + totalReal += day.realKWH; + totalAct += day.actualkwh; + cap = day.capacity; + rate = day.rate; + cbAkwh = day.CBAkwh; + row = sheet.CreateRow(index); + row.HeightInPoints = 40; + #region row-4++ + cell = row.CreateCell(0); + cell.SetCellValue(day.StartAt); + cell.CellStyle = style12green; + + cell = row.CreateCell(1); + cell.SetCellValue(day.EndAt); + cell.CellStyle = style12green; + + var forday = Convert.ToDateTime(day.EndAt).Subtract(Convert.ToDateTime(day.StartAt)).Days + 1; + totalday += forday; + cell = row.CreateCell(2); + cell.SetCellValue(forday + "天"); + cell.CellStyle = style12green; + + cell = row.CreateCell(3); + cell.SetCellValue(To2(day.CBAeff) + "%"); + cell.CellStyle = style12green; + + var cbakwh = day.CBAkwh * day.CBAeff * forday * day.capacity * 0.01; + totalCBA += cbakwh; + cell = row.CreateCell(4); + cell.SetCellValue(To2(cbakwh)); + cell.CellStyle = style12green; + + cell = row.CreateCell(5); + cell.SetCellValue(To2(cbakwh * day.rate)); + cell.CellStyle = style12green; + + cell = row.CreateCell(6); + cell.SetCellValue(To2(day.realKWH)); + cell.CellStyle = style12green; + + cell = row.CreateCell(7); + cell.SetCellValue(To2(day.realMoney)); + cell.CellStyle = style12green; + + cell = row.CreateCell(8); + cell.SetCellValue(To2(day.actualkwh)); + cell.CellStyle = style12green; + + cell = row.CreateCell(9); + cell.SetCellValue(To2(day.actualMoney)); + cell.CellStyle = style12green; + + cell = row.CreateCell(10); + var cbak = (day.capacity == 0 || forday == 0) ? 0 :(cbakwh / day.capacity / forday); + cell.SetCellValue(To2(cbak)); + cell.CellStyle = style12lightgreen; + + cell = row.CreateCell(11); + var realk = (day.capacity == 0 || forday == 0) ? 0 : (day.realKWH / day.capacity / forday); + cell.SetCellValue(To2(realk)); + cell.CellStyle = style12lightgreen; + + cell = row.CreateCell(12); + cell.SetCellValue( ((cbak == 0) ? 0 : To2((realk / cbak - 1)*100)) + "%"); + cell.CellStyle = style12lightgreen; + + cell = row.CreateCell(13); + var actk = (day.capacity == 0 || forday == 0) ? 0 : (day.actualkwh / day.capacity / forday); + cell.SetCellValue(To2(actk)); + cell.CellStyle = style12lightgreen; + + cell = row.CreateCell(14); + cell.SetCellValue( ((cbak == 0) ? 0 : To2((actk / cbak - 1)*100)) + "%"); + cell.CellStyle = style12lightgreen; + #endregion + + index++; + } + + row = sheet.CreateRow(2); + row.HeightInPoints = 40; + #region row-2 + cell = row.CreateCell(3); + cell.SetCellValue(To2(cap)); + cell.CellStyle = style12green; + + cell = row.CreateCell(4); + cell.SetCellValue(cbAkwh); + cell.CellStyle = style12green; + + cell = row.CreateCell(5); + cell.SetCellValue(To2(rate)); + cell.CellStyle = style12green; + + cell = row.CreateCell(6); + cell.SetCellValue(To2(cap)); + cell.CellStyle = style12green; + + cell = row.CreateCell(7); + cell.SetCellValue(To2(rate)); + cell.CellStyle = style12green; + + cell = row.CreateCell(8); + cell.SetCellValue(To2(cap)); + cell.CellStyle = style12green; + + cell = row.CreateCell(9); + cell.SetCellValue(To2(rate)); + cell.CellStyle = style12green; + var CBAkwh = (cap == 0|| totalday == 0)? 0 : totalCBA / cap / totalday; + cell = row.CreateCell(10); + cell.SetCellValue(To2(CBAkwh)); + cell.CellStyle = style12lightgreen; + + var Realkwh = (cap == 0 || totalday == 0) ? 0 : totalReal / cap / totalday; + cell = row.CreateCell(11); + cell.SetCellValue(To2(Realkwh)); + cell.CellStyle = style12lightgreen; + + cell = row.CreateCell(12); + cell.SetCellValue(((CBAkwh == 0) ? 0 : To2((Realkwh / CBAkwh - 1) * 100)) + "%"); + cell.CellStyle = style12lightgreen; + + var Actkwh = (cap == 0 || totalday == 0) ? 0 : totalAct / cap / totalday; + cell = row.CreateCell(13); + cell.SetCellValue(To2(Actkwh)); + + cell.CellStyle = style12lightgreen; + cell = row.CreateCell(14); + cell.SetCellValue(((CBAkwh == 0) ? 0 : To2((Actkwh / CBAkwh -1) * 100))+"%"); + cell.CellStyle = style12lightgreen; + + #endregion + + + + if(result.Result.Data.Count >0) + { + var drawing = sheet.CreateDrawingPatriarch(); + IClientAnchor anchor = drawing.CreateAnchor(0, 0, 0, 0, 16, 1, 25, 9); + var chart = drawing.CreateChart(anchor); + IChartLegend legend = chart.GetOrCreateLegend(); + legend.Position = LegendPosition.Bottom; + ILineChartData data = chart.ChartDataFactory.CreateLineChartData(); + IBarChartData data2 = chart.ChartDataFactory.CreateBarChartData(); + IChartAxis bottomAxis = chart.ChartAxisFactory.CreateCategoryAxis(AxisPosition.Bottom); + IValueAxis leftAxis = chart.ChartAxisFactory.CreateValueAxis(AxisPosition.Left); + bottomAxis.Crosses = AxisCrosses.AutoZero; + //bottomAxis.MinorTickMark = AxisTickMark.In; + leftAxis.Crosses = AxisCrosses.AutoZero; + IChartDataSource xs = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(4, result.Result.Data.Count + 3, 0, 0)); + + IChartDataSource ys1 = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(4, result.Result.Data.Count + 3, 4, 4)); + IChartDataSource ys2 = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(4, result.Result.Data.Count + 3, 6, 6)); + IChartDataSource ys3 = DataSources.FromNumericCellRange(sheet, new CellRangeAddress(4, result.Result.Data.Count + 3, 8, 8)); + + var Cba = data2.AddSeries(xs, ys1); + Cba.SetTitle("CBA預估總發電量(度數)"); + var Real = data2.AddSeries(xs, ys2); + Real.SetTitle("監控系統總發電量(度數)"); + var Act = data2.AddSeries(xs, ys3); + Act.SetTitle("台電售電量(度數)"); + chart.Plot(data2, bottomAxis, leftAxis); + //chart.Plot(data, bottomAxis, leftAxis); + + } + + } + + + + + + var ms = new NpoiMemoryStream + { + AllowClose = false + }; + workbook.Write(ms); + ms.Flush(); + ms.Seek(0, SeekOrigin.Begin); + return File(ms, "application/vnd.ms-excel", "電廠發電效能統計.xlsx"); + } + + + + public double To2 (double a) + { + var b = Math.Round(a, 2); + return b; + } } + + + + } diff --git a/SolarPower/Models/ElectricitySoldRecord.cs b/SolarPower/Models/ElectricitySoldRecord.cs index 7dd1c68..b98851f 100644 --- a/SolarPower/Models/ElectricitySoldRecord.cs +++ b/SolarPower/Models/ElectricitySoldRecord.cs @@ -74,6 +74,13 @@ namespace SolarPower.Models public string Date { get; set; } public int PowerstationId { get; set; } } + + public class SearchGeneration2 + { + public int DateType { get; set; } + public string Date { get; set; } + public List PowerStation { get; set; } + } } diff --git a/SolarPower/Views/PowerGeneration/Index.cshtml b/SolarPower/Views/PowerGeneration/Index.cshtml index bbfe799..eb62c43 100644 --- a/SolarPower/Views/PowerGeneration/Index.cshtml +++ b/SolarPower/Views/PowerGeneration/Index.cshtml @@ -223,7 +223,12 @@
+
+ +
+ +
@@ -235,7 +240,7 @@ - + @@ -286,6 +291,7 @@ var nowpowerstation = null;//選擇電站 var selecterd_powerstationId = []; var searchType; + var chart; $(function () { $('#collapse').trigger("click"); $('#firstclick').trigger("click"); @@ -518,6 +524,11 @@ var totalcbAkwh = 0; var totalactualkwh = 0; var totalrealKWH = 0; + var cbAkwh = 0; + var listday = new Array(0); + var listcba = new Array(0); + var listactual = new Array(0); + var listreal = new Array(0); $('#totalbody').empty(); $('#asbody').empty(); @@ -536,27 +547,36 @@ var days = difference / (1000 * 3600 * 24) + 1; totaldays += days; capacity = val.capacity; - totalcbAkwh += val.cbAkwh; + totalcbAkwh += val.cbAkwh * val.cbAeff * days * val.capacity * 0.01; rate = val.rate; totalactualkwh += val.actualkwh; totalrealKWH += val.realKWH; + cbAkwh = val.cbAkwh; + + listday.push(val.startAt); + listcba.push((val.cbAkwh * val.cbAeff * days * val.capacity * 0.01).toFixed(2)); + listactual.push(val.actualkwh.toFixed(2)); + listreal.push(val.realKWH.toFixed(2)); str += ""; str += ""; str += ""; str += ""; str += ""; - str += ""; - str += ""; + str += ""; + str += ""; str += ""; str += ""; str += ""; str += ""; - str += ""; - str += ""; - str += ""; - str += ""; - str += ""; + var cba = val.cbAkwh * val.cbAeff * days * val.capacity * 0.01 / days / val.capacity; + str += ""; + var real = val.realKWH / days / val.capacity; + str += ""; + str += ""; + var act = val.actualkwh / days / val.capacity; + str += ""; + str += ""; str += ""; }) var checkvalue = false; @@ -566,30 +586,100 @@ } var stra = ""; stra += ""; - stra += ""; - stra += ""; - stra += ""; - stra += ""; - stra += ""; - stra += ""; - stra += ""; + stra += ""; + stra += ""; + stra += ""; + stra += ""; + stra += ""; + stra += ""; + stra += ""; stra += ""; stra += ""; - stra += ""; + stra += ""; stra += ""; - stra += ""; + stra += ""; stra += ""; - - $('#totalbody').append(stra); $('#asbody').append(str); - + $('#history-kWh-convas-div').empty(); + $('#history-kWh-convas-div').append(''); + var ctx_history_kWh = document.getElementById('history-kWh').getContext('2d'); + var myhistorykwh = new Chart(ctx_history_kWh, { + type: 'bar', + data: { + labels: listday, + datasets: [ + { + type: 'line', + label: 'CBA預估總發電量(度數)', + borderColor: 'rgb(0, 0, 0)', + pointBackgroundColor: 'rgb(0, 0, 0)', + pointBorderColor: 'rgb(0, 0, 0)', + pointBorderWidth: 1, + borderWidth: 1, + pointRadius: 1, + pointHoverRadius: 1, + fill: true, + backgroundColor: 'rgb(255, 192, 0)', + data: listcba + }, { + type: 'bar', + label: '監控系統總發電量(度數)', + backgroundColor: 'rgba(68, 114, 196)', + borderWidth: 1, + data: listreal + }, { + type: 'bar', + label: '台電售電量(度數)', + backgroundColor: 'rgba(165, 165, 165)', + borderWidth: 1, + data: listactual + }] + }, + options: { + title: { + display: true, + text: '電量比較' + }, + legend: { + display: true, + position: 'bottom' + }, + scales: { + yAxes: [{ + type: 'linear', + position: 'left', + ticks: { + min: 0 + }, + scaleLabel: { + display: true, + labelString: '度數' + } + }] + } + } + }); }); } + + function ExportExcel() { + var send_data = { + PowerStation: selecterd_powerstationId, + DateType: searchType, + Date: $('#DateGet').val() + } + if (send_data.PowerStation.length != 0) { + window.location = "/PowerGeneration/ExportExcel?post=" + JSON.stringify(send_data); + } + else { + toast_warning("請先選擇電站"); + } + } } \ No newline at end of file diff --git a/SolarPower/Views/PowerStation/_DeviceSetting.cshtml b/SolarPower/Views/PowerStation/_DeviceSetting.cshtml index af441d2..e277e97 100644 --- a/SolarPower/Views/PowerStation/_DeviceSetting.cshtml +++ b/SolarPower/Views/PowerStation/_DeviceSetting.cshtml @@ -201,7 +201,7 @@
- +
diff --git a/SolarPower/Views/Shared/_Layout.cshtml b/SolarPower/Views/Shared/_Layout.cshtml index 23fd37c..5ea45d4 100644 --- a/SolarPower/Views/Shared/_Layout.cshtml +++ b/SolarPower/Views/Shared/_Layout.cshtml @@ -468,14 +468,14 @@
- + diff --git a/SolarPower/Views/StationOverview/Index.cshtml b/SolarPower/Views/StationOverview/Index.cshtml index fe1cf88..2ac994d 100644 --- a/SolarPower/Views/StationOverview/Index.cshtml +++ b/SolarPower/Views/StationOverview/Index.cshtml @@ -398,7 +398,7 @@ } $('#card_' + val.id).find('#solarName').html(statusicon + val.name); $('#card_' + val.id).find('#weathericon')[0].setAttribute("class", 'fal fa-' + val.todayWeather + ' fa-2x'); - $('#card_' + val.id).find('#Temp').html(val.todayWeatherTemp + '°C'); + $('#card_' + val.id).find('#Temp').html((val.todayWeatherTemp == -99)? "": val.todayWeatherTemp + '°C'); var type = ""; switch (val.solarType) { case 0: type = "自建躉售"; break; diff --git a/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml b/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml index 7448f5a..5a774c9 100644 --- a/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml +++ b/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml @@ -2632,7 +2632,7 @@ } catch (e) { } if (!xmlhttp) { - window.alert("不能创建XMLHttpRequest对象"); + window.alert(""); } } @@ -2817,7 +2817,7 @@ var info = ""; info += ""; info += ""; - info += ""; + info += ""; info += ""; $('#inverterInfo-Detail').empty(); $('#inverterInfo-Detail').append(info); diff --git a/SolarPower/Views/StationOverview/_InverterInfo.cshtml b/SolarPower/Views/StationOverview/_InverterInfo.cshtml index 4b347b7..c76e767 100644 --- a/SolarPower/Views/StationOverview/_InverterInfo.cshtml +++ b/SolarPower/Views/StationOverview/_InverterInfo.cshtml @@ -32,292 +32,7 @@
    -
  • -
    -
    -

    逆變器 022020001010001 (96.6kWp)

    -

    4分鐘前

    -
    -
    -
    -
    -

    設備狀態

    -

    正常

    -

    詳細資料

    -
    -
    -
    -
    -

    輸出功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    -

    輸入功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    - PR - 36.3% -
    -
    -
    -
    -
    -
    -
    -

    日發電量

    -

    83.1

    -

    kWh

    -
    -
    -
    -
    -
      -
    • -
      -
      -

      逆變器 022020001010001 (96.6kWp)

      -

      4分鐘前

      -
      -
      -
      -
      -

      設備狀態

      -

      正常

      -

      詳細資料

      -
      -
      -
      -
      -

      輸出功率

      -

      1.7

      -

      kw

      -
      -
      -
      -
      -

      輸入功率

      -

      1.7

      -

      kw

      -
      -
      -
      -
      - PR - 36.3% -
      -
      -
      -
      -
      -
      -
      -

      日發電量

      -

      83.1

      -

      kWh

      -
      -
      -
      -
      -
    • -
    -
  • -
  • -
    -
    -

    逆變器 022020001010001 (96.6kWp)

    -

    4分鐘前

    -
    -
    -
    -
    -

    設備狀態

    -

    正常

    -

    詳細資料

    -
    -
    -
    -
    -

    輸出功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    -

    輸入功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    - PR - 36.3% -
    -
    -
    -
    -
    -
    -
    -

    日發電量

    -

    83.1

    -

    kWh

    -
    -
    -
    -
    -
      -
    • -
      -
      -

      逆變器 022020001010001 (96.6kWp)

      -

      4分鐘前

      -
      -
      -
      -
      -

      設備狀態

      -

      正常

      -

      詳細資料

      -
      -
      -
      -
      -

      輸出功率

      -

      1.7

      -

      kw

      -
      -
      -
      -
      -

      輸入功率

      -

      1.7

      -

      kw

      -
      -
      -
      -
      - PR - 36.3% -
      -
      -
      -
      -
      -
      -
      -

      日發電量

      -

      83.1

      -

      kWh

      -
      -
      -
      -
      -
    • -
    -
  • -
  • -
    -
    -

    逆變器 022020001010001 (96.6kWp)

    -

    4分鐘前

    -
    -
    -
    -
    -

    設備狀態

    -

    正常

    -

    詳細資料

    -
    -
    -
    -
    -

    輸出功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    -

    輸入功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    - PR - 36.3% -
    -
    -
    -
    -
    -
    -
    -

    日發電量

    -

    83.1

    -

    kWh

    -
    -
    -
    -
    -
  • -
  • -
    -
    -

    逆變器 022020001010001 (96.6kWp)

    -

    4分鐘前

    -
    -
    -
    -
    -

    設備狀態

    -

    正常

    -

    詳細資料

    -
    -
    -
    -
    -

    輸出功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    -

    輸入功率

    -

    1.7

    -

    kw

    -
    -
    -
    -
    - PR - 36.3% -
    -
    -
    -
    -
    -
    -
    -

    日發電量

    -

    83.1

    -

    kWh

    -
    -
    -
    -
    -
  • +
建置容量(kW)總發電量(度數)發電度數(kW/日) 售電單價(NT$/度) 建置容量(kW) 售電單價(NT$/度)
" + val.startAt + "" + val.endAt + "" + days + "天" + "" + val.cbAeff + "%" + "" + val.cbAkwh + "" + val.rate * val.cbAkwh + "" + (val.cbAkwh * val.cbAeff * days * val.capacity * 0.01).toFixed(2) + "" + (val.rate * (val.cbAkwh * val.cbAeff * days * val.capacity * 0.01)).toFixed(2) + "" + val.realKWH.toFixed(2) + "" + val.realMoney.toFixed(2) + "" + val.actualkwh.toFixed(2) + "" + val.actualMoney.toFixed(2) + "" + (val.cbAkwh / days / val.capacity).toFixed(2) + "" + (val.realKWH / days / val.capacity).toFixed(2) + "" + ((val.cbAkwh == 0) ? 0 :((val.realKWH / days / val.capacity) / (val.cbAkwh / days / val.capacity)).toFixed(2) - 1) + "%" + "" + (val.actualkwh / days / val.capacity).toFixed(2) + "" + ((val.cbAkwh == 0) ? 0 : ((val.actualkwh / days / val.capacity) / (val.cbAkwh / days / val.capacity)).toFixed(2) - 1) + "%" + "" + cba.toFixed(2) + "" + real.toFixed(2) + "" + ((cba == 0) ? 0 : ((real / cba - 1) * 100 ).toFixed(2)) + "%" + "" + act.toFixed(2) + "" + ((cba == 0) ? 0 : ((act / cba - 1) * 100 ).toFixed(2)) + "%" + "
" + capacity + "" + totalcbAkwh + "" + rate + "" + capacity + "" + rate + "" + capacity + "" + rate + "" + capacity.toFixed(2) + "" + cbAkwh.toFixed(2) + "" + rate.toFixed(2) + "" + capacity.toFixed(2) + "" + rate.toFixed(2) + "" + capacity.toFixed(2) + "" + rate.toFixed(2) + "" + (checkvalue ? 0 : (totalcbAkwh / totaldays / capacity).toFixed(2)) + "" + ((totaldays == 0) ? 0 : (totalrealKWH / totaldays / capacity).toFixed(2)) + "" + (checkvalue ? 0 : ((totalrealKWH / totaldays / capacity) / (totalcbAkwh / totaldays / capacity)).toFixed(2) - 1) + "%" + "" + (checkvalue ? 0 : ((( (totalrealKWH / totaldays / capacity) / (totalcbAkwh / totaldays / capacity)) - 1) * 100).toFixed(2) ) + "%" + "" + ((totaldays == 0) ? 0 : (totalactualkwh / totaldays / capacity).toFixed(2)) + "" + (checkvalue ? 0 : ((totalactualkwh / totaldays / capacity) / (totalcbAkwh / totaldays / capacity)).toFixed(2) - 1) + "%" + "" + (checkvalue ? 0 : ( (((totalactualkwh / totaldays / capacity) / (totalcbAkwh / totaldays / capacity)) - 1) * 100).toFixed(2) ) + "%" + "
" + rel.data.model + "" + rel.data.brand + "" + rel.data.brandNum + "" + ((rel.data.brandNum == null) ? '' : rel.data.brandNum) + "