Merge branch 'master' of https://github.com/shanghohui-Company/SolarPower
This commit is contained in:
commit
7007e907aa
@ -266,7 +266,7 @@ namespace SolarPower.Controllers
|
||||
|
||||
#region 顯示body //RowPosition = 1
|
||||
RowPosition++;
|
||||
var thour = ""; var tpr = ""; var tkwh = ""; var kWhkwp = ""; var ntd = ""; var ntdone = "";
|
||||
var thour = ""; var tpr = ""; var tkwh = ""; var kWhkwp = ""; var ntd = ""; var ntdone = "";var GeneratingCapacity = "";
|
||||
foreach (dynamic body in Formbody.Result.Data)
|
||||
{
|
||||
index = 0;
|
||||
@ -276,13 +276,14 @@ namespace SolarPower.Controllers
|
||||
tkwh = Checknull(Math.Round(Convert.ToDouble(dbody["totKWH"]), 2).ToString());
|
||||
kWhkwp = Checknull(Math.Round(Convert.ToDouble(dbody["totKWHKWP"]), 2).ToString());
|
||||
ntd = Checknull(Math.Round(Convert.ToDouble(dbody["totmoney"]), 2).ToString());
|
||||
GeneratingCapacity = Checknull(Math.Round(Convert.ToDouble(dbody["GeneratingCapacity"]), 2).ToString());
|
||||
|
||||
double onemoney = Convert.ToDouble(ntd) / Convert.ToDouble(tkwh);
|
||||
if (double.IsNaN(onemoney))
|
||||
{
|
||||
onemoney = 0;
|
||||
}
|
||||
ntdone = Checknull(Math.Round(onemoney, 2).ToString());
|
||||
ntdone = Checknull(Math.Round(onemoney, 4).ToString());
|
||||
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(index);
|
||||
@ -328,20 +329,20 @@ namespace SolarPower.Controllers
|
||||
|
||||
#region 顯示總量//RowPosition = body + 2
|
||||
RowPosition += 2;//空兩行
|
||||
index = 0;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("日照小時:");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(1);
|
||||
cell.SetCellValue(Convert.ToDouble(thour));
|
||||
cell.CellStyle = styleLine12;
|
||||
RowPosition++;
|
||||
//index = 0;
|
||||
//row = sheet.CreateRow(RowPosition);
|
||||
//cell = row.CreateCell(index);
|
||||
//cell.SetCellValue("日照小時:");
|
||||
//cell.CellStyle = styleLine12;
|
||||
//cell = row.CreateCell(1);
|
||||
//cell.SetCellValue(Convert.ToDouble(thour));
|
||||
//cell.CellStyle = styleLine12;
|
||||
//RowPosition++;
|
||||
|
||||
index = 0;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("kWH/kWP:");
|
||||
cell.SetCellValue("有效發電小時:");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(1);
|
||||
cell.SetCellValue(Convert.ToDouble(kWhkwp));
|
||||
@ -369,6 +370,15 @@ namespace SolarPower.Controllers
|
||||
cell.CellStyle = styleLine12;
|
||||
RowPosition++;
|
||||
|
||||
index = 0;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("裝置容量:");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(1);
|
||||
cell.SetCellValue(Convert.ToDouble(GeneratingCapacity));
|
||||
cell.CellStyle = styleLine12;
|
||||
RowPosition++;
|
||||
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
{
|
||||
@ -422,7 +432,7 @@ namespace SolarPower.Controllers
|
||||
"日照小時(hr)",
|
||||
"有效發電小時",
|
||||
"PR%",
|
||||
"日平均日照度(W/㎡)",
|
||||
"累積日照量(kWh)",
|
||||
"日平均模組溫度(°C)"
|
||||
|
||||
};
|
||||
@ -443,6 +453,7 @@ namespace SolarPower.Controllers
|
||||
#region 顯示body //RowPosition = 1
|
||||
RowPosition++;
|
||||
var avghour = "0"; var avgKWHKWP = "0"; var avgdayKWH = "0"; var monthKWH = "0"; var monthmoney = "0"; var monthmoneyone = "0";
|
||||
var monthGeneratingCapacity = "";
|
||||
var check_hire = false;
|
||||
var sitedb = "";
|
||||
foreach (dynamic body in Formbody.Result.Data)
|
||||
@ -456,6 +467,7 @@ namespace SolarPower.Controllers
|
||||
monthKWH = dbody["monthKWH"] == null ? "0": dbody["monthKWH"].ToString();
|
||||
monthmoney = dbody["monthmoney"] == null ? "0" : dbody["monthmoney"].ToString();
|
||||
monthmoneyone = (Convert.ToDouble(dbody["monthmoneyone"].ToString()) + Convert.ToDouble(monthmoneyone)).ToString();
|
||||
monthGeneratingCapacity = Checknull(Math.Round(Convert.ToDouble(dbody["GeneratingCapacity"]), 2).ToString());
|
||||
if (dbody["SolarType"].ToString() == "1" && Formhead.Result.Data.ShowMoney == 1)//檢驗是否為租用
|
||||
{
|
||||
check_hire = true;
|
||||
@ -481,7 +493,7 @@ namespace SolarPower.Controllers
|
||||
"tothour",
|
||||
"KWHKWP",
|
||||
"PR",
|
||||
"irradiance",
|
||||
"IrrDay",
|
||||
"temperature"
|
||||
};
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
@ -513,12 +525,12 @@ namespace SolarPower.Controllers
|
||||
var Useday = Formbody.Result.Data.Count;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
|
||||
//cell = row.CreateCell(index);
|
||||
//cell.SetCellValue("日照平均(日)");
|
||||
//cell.CellStyle = styleLine12;
|
||||
//index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("日照平均(日)");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("平均有效發電小時(日)");
|
||||
cell.SetCellValue("有效發電小時(日)");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
@ -529,6 +541,14 @@ namespace SolarPower.Controllers
|
||||
cell.SetCellValue("發電量(kWh)(月)");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("裝置容量");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("每度獲利");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
{
|
||||
cell = row.CreateCell(index);
|
||||
@ -550,10 +570,10 @@ namespace SolarPower.Controllers
|
||||
RowPosition++;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(avghour)/Useday,2));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
//cell = row.CreateCell(index);
|
||||
//cell.SetCellValue(Math.Round(Convert.ToDouble(avghour)/Useday,2));
|
||||
//cell.CellStyle = styleLine12;
|
||||
//index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(avgKWHKWP) / Useday,2));
|
||||
cell.CellStyle = styleLine12;
|
||||
@ -566,6 +586,14 @@ namespace SolarPower.Controllers
|
||||
cell.SetCellValue(Convert.ToDouble(monthKWH));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Convert.ToDouble(monthGeneratingCapacity));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(monthKWH)/Convert.ToDouble(monthGeneratingCapacity),3) );
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
{
|
||||
cell = row.CreateCell(index);
|
||||
@ -573,7 +601,7 @@ namespace SolarPower.Controllers
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(monthmoneyone) / Useday, 2));
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(monthmoneyone) / Useday, 4));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
}
|
||||
@ -1066,7 +1094,7 @@ namespace SolarPower.Controllers
|
||||
|
||||
#region 顯示body //RowPosition = 1
|
||||
RowPosition++;
|
||||
var thour = ""; var tpr = ""; var tkwh = ""; var kWhkwp = ""; var ntd = ""; var ntdone = "";
|
||||
var thour = ""; var tpr = ""; var tkwh = ""; var kWhkwp = ""; var ntd = ""; var ntdone = ""; var GeneratingCapacity = "";
|
||||
foreach (dynamic body in Formbody.Result.Data)
|
||||
{
|
||||
index = 0;
|
||||
@ -1076,13 +1104,14 @@ namespace SolarPower.Controllers
|
||||
tkwh = Checknull(Math.Round(Convert.ToDouble(dbody["totKWH"]), 2).ToString());
|
||||
kWhkwp = Checknull(Math.Round(Convert.ToDouble(dbody["totKWHKWP"]), 2).ToString());
|
||||
ntd = Checknull(Math.Round(Convert.ToDouble(dbody["totmoney"]), 2).ToString());
|
||||
GeneratingCapacity = Checknull(Math.Round(Convert.ToDouble(dbody["GeneratingCapacity"]), 2).ToString());
|
||||
|
||||
double onemoney = Convert.ToDouble(ntd) / Convert.ToDouble(tkwh);
|
||||
if (double.IsNaN(onemoney))
|
||||
{
|
||||
onemoney = 0;
|
||||
}
|
||||
ntdone = Checknull(Math.Round(onemoney, 2).ToString());
|
||||
ntdone = Checknull(Math.Round(onemoney, 4).ToString());
|
||||
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(index);
|
||||
@ -1128,15 +1157,15 @@ namespace SolarPower.Controllers
|
||||
|
||||
#region 顯示總量//RowPosition = body + 2
|
||||
RowPosition += 2;//空兩行
|
||||
index = 0;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("日照小時:");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(1);
|
||||
cell.SetCellValue(!string.IsNullOrEmpty(thour)? Convert.ToDouble(thour) : 0);
|
||||
cell.CellStyle = styleLine12;
|
||||
RowPosition++;
|
||||
//index = 0;
|
||||
//row = sheet.CreateRow(RowPosition);
|
||||
//cell = row.CreateCell(index);
|
||||
//cell.SetCellValue("日照小時:");
|
||||
//cell.CellStyle = styleLine12;
|
||||
//cell = row.CreateCell(1);
|
||||
//cell.SetCellValue(!string.IsNullOrEmpty(thour)? Convert.ToDouble(thour) : 0);
|
||||
//cell.CellStyle = styleLine12;
|
||||
//RowPosition++;
|
||||
|
||||
index = 0;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
@ -1169,6 +1198,16 @@ namespace SolarPower.Controllers
|
||||
cell.CellStyle = styleLine12;
|
||||
RowPosition++;
|
||||
|
||||
index = 0;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("裝置容量:");
|
||||
cell.CellStyle = styleLine12;
|
||||
cell = row.CreateCell(1);
|
||||
cell.SetCellValue(Convert.ToDouble(GeneratingCapacity));
|
||||
cell.CellStyle = styleLine12;
|
||||
RowPosition++;
|
||||
|
||||
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
{
|
||||
@ -1222,7 +1261,7 @@ namespace SolarPower.Controllers
|
||||
"日照小時(hr)",
|
||||
"有效發電小時",
|
||||
"PR%",
|
||||
"日平均日照度(W/㎡)",
|
||||
"累積日照量(kWh)",
|
||||
"日平均模組溫度(°C)"
|
||||
|
||||
};
|
||||
@ -1243,6 +1282,7 @@ namespace SolarPower.Controllers
|
||||
#region 顯示body //RowPosition = 1
|
||||
RowPosition++;
|
||||
var avghour = "0"; var avgKWHKWP = "0"; var avgdayKWH = "0"; var monthKWH = "0"; var monthmoney = "0"; var monthmoneyone = "0";
|
||||
var monthGeneratingCapacity = "";
|
||||
var check_hire = false;
|
||||
var sitedb = "";
|
||||
foreach (dynamic body in Formbody.Result.Data)
|
||||
@ -1256,6 +1296,7 @@ namespace SolarPower.Controllers
|
||||
monthKWH = dbody["monthKWH"] == null ? "0" : dbody["monthKWH"].ToString();
|
||||
monthmoney = dbody["monthmoney"] == null ? "0" : dbody["monthmoney"].ToString();
|
||||
monthmoneyone = (Convert.ToDouble(dbody["monthmoneyone"].ToString()) + Convert.ToDouble(monthmoneyone)).ToString();
|
||||
monthGeneratingCapacity = Checknull(Math.Round(Convert.ToDouble(dbody["GeneratingCapacity"]), 2).ToString());
|
||||
if (dbody["SolarType"].ToString() == "1" && Formhead.Result.Data.ShowMoney == 1)//檢驗是否為租用
|
||||
{
|
||||
check_hire = true;
|
||||
@ -1281,7 +1322,7 @@ namespace SolarPower.Controllers
|
||||
"tothour",
|
||||
"KWHKWP",
|
||||
"PR",
|
||||
"irradiance",
|
||||
"IrrDay",
|
||||
"temperature"
|
||||
};
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
@ -1313,20 +1354,28 @@ namespace SolarPower.Controllers
|
||||
var Useday = Formbody.Result.Data.Count;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
|
||||
//cell = row.CreateCell(index);
|
||||
//cell.SetCellValue("日日照小時平均");
|
||||
//cell.CellStyle = styleLine12;
|
||||
//index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("日日照小時平均");
|
||||
cell.SetCellValue("有效發電小時(日)");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("日kWH/kWP平均");
|
||||
cell.SetCellValue("發電量平均(kWh)(日)");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("日發電量平均(kWh)");
|
||||
cell.SetCellValue("發電量(kWh)(月)");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("月發電量(kWh)");
|
||||
cell.SetCellValue("裝置容量");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue("每度獲利");
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
@ -1350,10 +1399,10 @@ namespace SolarPower.Controllers
|
||||
RowPosition++;
|
||||
row = sheet.CreateRow(RowPosition);
|
||||
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(avghour) / Useday, 2));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
//cell = row.CreateCell(index);
|
||||
//cell.SetCellValue(Math.Round(Convert.ToDouble(avghour) / Useday, 2));
|
||||
//cell.CellStyle = styleLine12;
|
||||
//index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(avgKWHKWP) / Useday, 2));
|
||||
cell.CellStyle = styleLine12;
|
||||
@ -1366,6 +1415,14 @@ namespace SolarPower.Controllers
|
||||
cell.SetCellValue(Convert.ToDouble(monthKWH));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Convert.ToDouble(monthGeneratingCapacity));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(monthKWH) / Convert.ToDouble(monthGeneratingCapacity), 3));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
if (Formhead.Result.Data.ShowMoney == 1)
|
||||
{
|
||||
cell = row.CreateCell(index);
|
||||
@ -1373,7 +1430,7 @@ namespace SolarPower.Controllers
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
cell = row.CreateCell(index);
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(monthmoneyone) / Useday, 2));
|
||||
cell.SetCellValue(Math.Round(Convert.ToDouble(monthmoneyone) / Useday, 4));
|
||||
cell.CellStyle = styleLine12;
|
||||
index++;
|
||||
}
|
||||
|
||||
@ -21,7 +21,9 @@ namespace SolarPower.Models.PowerStation
|
||||
EMM = 4, //環境濕度計
|
||||
VAN = 5, //風速計
|
||||
FOM = 6, //落塵計
|
||||
PWR = 7 //電錶
|
||||
PWR = 7, //電錶
|
||||
WIN = 8, //風向計
|
||||
TPY = 9 //累計日照量
|
||||
}
|
||||
|
||||
public class PowerStation : Created
|
||||
@ -729,6 +731,8 @@ namespace SolarPower.Models.PowerStation
|
||||
public double Humidity { get; set; } //濕度
|
||||
public double Vane { get; set; } //風速
|
||||
public double Dust { get; set; } //落塵計
|
||||
public double WingDirection { get; set; } //風向計
|
||||
public double IrrDay { get; set; } //累計日照量
|
||||
}
|
||||
|
||||
public class AvgPyrheliometerHistory
|
||||
|
||||
@ -428,7 +428,7 @@ namespace SolarPower.Quartz.Jobs
|
||||
logger.LogError("【CalcPowerStationJob】【失敗原因】- {0}", ex.Message);
|
||||
}
|
||||
|
||||
//5. 計算該電站 - 落塵計(FOM)
|
||||
//6. 計算該電站 - 落塵計(FOM)
|
||||
try
|
||||
{
|
||||
logger.LogInformation("【CalcPowerStationJob】【開始取得電站[{0}]在{1}的落塵計設備資訊】", powerStation.Code, dateTime);
|
||||
@ -452,6 +452,54 @@ namespace SolarPower.Quartz.Jobs
|
||||
logger.LogError("【CalcPowerStationJob】【失敗原因】- {0}", ex.Message);
|
||||
}
|
||||
|
||||
//7. 計算該電站 - 風向計(WIN)
|
||||
try
|
||||
{
|
||||
logger.LogInformation("【CalcPowerStationJob】【開始取得電站[{0}]在{1}的風向計設備資訊】", powerStation.Code, dateTime);
|
||||
var WINdeviceInfos = await powerStationRepository.GetDeviceListByPowerStationIdAndType(powerStation.Id, SensorTypeEnum.WIN.ToString(), powerStation.SiteDB);
|
||||
logger.LogInformation("【CalcPowerStationJob】【取得成功電站[{0}]在{1}的風向計設備資訊】", powerStation.Code, dateTime);
|
||||
logger.LogInformation("【CalcPowerStationJob】【電站[{0}]在{1}的風向計設備資訊】 - {2}", powerStation.Code, dateTime, System.Text.Json.JsonSerializer.Serialize(WINdeviceInfos));
|
||||
if (WINdeviceInfos != null && WINdeviceInfos.Count() > 0)
|
||||
{
|
||||
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的風向計的平均%】", powerStation.Code, dateTime);
|
||||
var WINHistory = await powerStationRepository.CalcSensorHistoryPerHour(dateTime, WINdeviceInfos, Convert.ToInt32(SensorTypeEnum.WIN));
|
||||
if (WINHistory != null)
|
||||
{
|
||||
sensorHistory.WingDirection = WINHistory.WingDirection;
|
||||
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的風向計的平均值】", powerStation.Code, dateTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError("【CalcPowerStationJob】【計算失敗電站[{0}]在{1}的風向計的平均值】", powerStation.Code, dateTime);
|
||||
logger.LogError("【CalcPowerStationJob】【失敗原因】- {0}", ex.Message);
|
||||
}
|
||||
|
||||
//8. 計算該電站 - 累計日照量(TPY)
|
||||
try
|
||||
{
|
||||
logger.LogInformation("【CalcPowerStationJob】【開始取得電站[{0}]在{1}的累計日照量設備資訊】", powerStation.Code, dateTime);
|
||||
var TPYdeviceInfos = await powerStationRepository.GetDeviceListByPowerStationIdAndType(powerStation.Id, SensorTypeEnum.TPY.ToString(), powerStation.SiteDB);
|
||||
logger.LogInformation("【CalcPowerStationJob】【取得成功電站[{0}]在{1}的累計日照量備資訊】", powerStation.Code, dateTime);
|
||||
logger.LogInformation("【CalcPowerStationJob】【電站[{0}]在{1}的累計日照量設備資訊】 - {2}", powerStation.Code, dateTime, System.Text.Json.JsonSerializer.Serialize(TPYdeviceInfos));
|
||||
if (TPYdeviceInfos != null && TPYdeviceInfos.Count() > 0)
|
||||
{
|
||||
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的累計日照量的平均%】", powerStation.Code, dateTime);
|
||||
var TPYHistory = await powerStationRepository.CalcSensorHistoryPerHour(dateTime, TPYdeviceInfos, Convert.ToInt32(SensorTypeEnum.TPY));
|
||||
if (TPYHistory != null)
|
||||
{
|
||||
sensorHistory.IrrDay = TPYHistory.IrrDay;
|
||||
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的累計日照量的平均值】", powerStation.Code, dateTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError("【CalcPowerStationJob】【計算失敗電站[{0}]在{1}的累計日照量的平均值】", powerStation.Code, dateTime);
|
||||
logger.LogError("【CalcPowerStationJob】【失敗原因】- {0}", ex.Message);
|
||||
}
|
||||
|
||||
sensorHistoriesHour.Add(sensorHistory);
|
||||
}
|
||||
|
||||
|
||||
@ -2523,26 +2523,41 @@ namespace SolarPower.Repository.Implement
|
||||
{
|
||||
SensorTypeEnum SensorTypeEnum = (SensorTypeEnum)type;
|
||||
var typename = "";
|
||||
var calc = "";
|
||||
switch (SensorTypeEnum)
|
||||
{
|
||||
case SensorTypeEnum.PYR: //日照計
|
||||
calc = "AVG";
|
||||
typename = "Irradiance";
|
||||
break;
|
||||
case SensorTypeEnum.MTR: //模組溫度計
|
||||
calc = "AVG";
|
||||
typename = "Temperature";
|
||||
break;
|
||||
case SensorTypeEnum.ETR: //環境溫度計
|
||||
calc = "AVG";
|
||||
typename = "EnvTemperature";
|
||||
break;
|
||||
case SensorTypeEnum.EMM: //環境濕度計
|
||||
calc = "AVG";
|
||||
typename = "Humidity";
|
||||
break;
|
||||
case SensorTypeEnum.VAN: //風速計
|
||||
calc = "AVG";
|
||||
typename = "Vane";
|
||||
break;
|
||||
case SensorTypeEnum.FOM: //落塵計
|
||||
calc = "AVG";
|
||||
typename = "Dust";
|
||||
break;
|
||||
case SensorTypeEnum.WIN: //風向計
|
||||
calc = "AVG";
|
||||
typename = "WingDirection";
|
||||
break;
|
||||
case SensorTypeEnum.TPY: //累計日照量
|
||||
calc = "MAX";
|
||||
typename = "IrrDay";
|
||||
break;
|
||||
}
|
||||
|
||||
PyrheliometerHistory result;
|
||||
@ -2563,7 +2578,7 @@ namespace SolarPower.Repository.Implement
|
||||
sql_per_device.Add(str);
|
||||
}
|
||||
|
||||
var sql = @$"SELECT a.TIMESTAMP, AVG(a.SENSOR) AS {typename} FROM(" + string.Join(" UNION ", sql_per_device) + @") a GROUP BY `TIMESTAMP`";
|
||||
var sql = @$"SELECT a.TIMESTAMP, {calc}(a.SENSOR) AS {typename} FROM(" + string.Join(" UNION ", sql_per_device) + @") a GROUP BY `TIMESTAMP`";
|
||||
|
||||
result = await conn.QueryFirstOrDefaultAsync<PyrheliometerHistory>(sql, new { DateTime = dateTime });
|
||||
}
|
||||
|
||||
@ -56,46 +56,35 @@ namespace SolarPower.Repository.Implement
|
||||
case 0:
|
||||
sql += @$"
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then a.KWH end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m-%d %H'') report_date, ', @sql,
|
||||
', b.KWH hourKWH, round((b.KWH / (SELECT MAX(TODAYKWH) FROM power_station_history_hour WHERE DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}'' and powerstationid = {post.PowerStation}))*100,2) ''hourKWHp'', d.irradiance ''irradiance'', d.Temperature ''temperature'',
|
||||
b.money ''hourmoney'', c.TODAYKWH ''totKWH'', c.KWHKWP ''totKWHKWP'', c.money ''totmoney'', stationName, powerRate daymoney, c.SOLARHOUR tothour,round(b.PR, 2) as pr
|
||||
FROM inverter_history_hour a left join
|
||||
( # 每小時加總 inv
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'') report_date, siteid, sitetype, round(KWH, 2) KWH,
|
||||
round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP, round(PR, 2) PR, round(money, 2) money
|
||||
from power_station_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) b on a.powerStationid = b.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d %H:%i'') = b.report_date
|
||||
left join
|
||||
( # day
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, sitetype, round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP
|
||||
, round(PR, 2) PR, round(money, 2) money , round(SOLARHOUR, 2) SOLARHOUR
|
||||
from power_station_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) c on a.powerStationid = c.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d'') = c.report_date
|
||||
left join
|
||||
(
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:00'')report_date, irradiance, Temperature
|
||||
from sensor_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:00'') = d.report_date
|
||||
join
|
||||
(
|
||||
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
||||
)z on a.powerstationid = z.id
|
||||
where DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
GROUP BY DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d %H:%i'')
|
||||
order by DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d %H:%i'') ');
|
||||
SELECT
|
||||
GROUP_CONCAT( 'a.inv_',RIGHT(v.InverterId, 2)) INTO @sql
|
||||
from v_company_inv v
|
||||
LEFT JOIN power_station p ON p.Code = left(inverterid, 9)
|
||||
WHERE p.Id = {post.PowerStation} AND v.enabled = 1 ;
|
||||
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.report_date,''%m-%d %H'') report_date, ', @SQL,
|
||||
', a.hourKWH hourKWH, a.hourKWHp ''hourKWHp'', a.irradiance ''irradiance'', a.Temperature ''temperature'',
|
||||
a.hourmoney ''hourmoney'', c.TODAYKWH ''totKWH'', c.KWHKWP ''totKWHKWP'', c.money ''totmoney'', stationName, powerRate daymoney, c.SOLARHOUR tothour,round(a.PR, 2) as pr,GeneratingCapacity
|
||||
FROM report_invday a
|
||||
left join
|
||||
( # day
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, sitetype, round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP
|
||||
, round(PR, 2) PR, round(money, 2) money , round(SOLARHOUR, 2) SOLARHOUR
|
||||
from power_station_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) c on a.PowerStationID = c.powerStationid and DATE_FORMAT(a.`report_date`,''%Y-%m-%d'') = c.report_date
|
||||
join
|
||||
(
|
||||
select id, name stationName, powerRate,GeneratingCapacity from power_station where id = {post.PowerStation}
|
||||
)z on a.PowerStationID = z.id
|
||||
where DATE_FORMAT(a.report_date,''%Y-%m-%d'') = ''{post.Time}'' and a.PowerStationID = {post.PowerStation}
|
||||
GROUP BY DATE_FORMAT(a.report_date,''%Y-%m-%d %H:%i'')
|
||||
order by DATE_FORMAT(a.report_date,''%Y-%m-%d %H:%i'') ');
|
||||
|
||||
#select @sql as 'mySelect'; #顯示動態語法
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;";
|
||||
#select @sql as 'mySelect'; #顯示動態語法
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;";
|
||||
break;
|
||||
case 1:
|
||||
if(post.SearchType == 2)
|
||||
@ -108,9 +97,9 @@ namespace SolarPower.Repository.Implement
|
||||
) INTO @sql
|
||||
FROM inverter_history_day where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,z.GeneratingCapacity,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone'',SolarType,SiteDB
|
||||
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone'',SolarType,SiteDB,d.IrrDay
|
||||
FROM inverter_history_day a left join
|
||||
( # 每日加總 inv
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, siteid, sitetype, #, round(KWH, 2) KWH,
|
||||
@ -127,13 +116,13 @@ namespace SolarPower.Repository.Implement
|
||||
) c on a.powerStationid = c.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m'') = c.report_date
|
||||
left join
|
||||
(
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'')report_date, irradiance, Temperature
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'')report_date, irradiance, Temperature ,IrrDay
|
||||
from sensor_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m'') = ''{post.Time}''
|
||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = d.report_date
|
||||
join
|
||||
(
|
||||
select id, name stationName, powerRate,SolarType,SiteDB from power_station where id = {post.PowerStation}
|
||||
select id, name stationName, powerRate,SolarType,SiteDB,GeneratingCapacity from power_station where id = {post.PowerStation}
|
||||
)z on a.powerstationid = z.id
|
||||
where DATE_FORMAT(a.TIMESTAMP,''%Y-%m'') = ''{post.Time}''
|
||||
GROUP BY DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'')
|
||||
@ -155,9 +144,9 @@ namespace SolarPower.Repository.Implement
|
||||
) INTO @sql
|
||||
FROM inverter_history_day where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') BETWEEN '{times[0]}' AND '{times[1]}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,GeneratingCapacity,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone'',SolarType,SiteDB
|
||||
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone'',SolarType,SiteDB ,d.IrrDay
|
||||
FROM inverter_history_day a left join
|
||||
( # 每日加總 inv
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, siteid, sitetype, #, round(KWH, 2) KWH,
|
||||
@ -176,13 +165,13 @@ namespace SolarPower.Repository.Implement
|
||||
) c on a.powerStationid = c.powerStationid
|
||||
left join
|
||||
(
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'')report_date, irradiance, Temperature
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'')report_date, irradiance, Temperature ,IrrDay
|
||||
from sensor_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') BETWEEN ''{times[0]}'' AND ''{times[1]}''
|
||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = d.report_date
|
||||
join
|
||||
(
|
||||
select id, name stationName, powerRate, SolarType, SiteDB from power_station where id = {post.PowerStation}
|
||||
select id, name stationName, powerRate, SolarType, SiteDB,GeneratingCapacity from power_station where id = {post.PowerStation}
|
||||
)z on a.powerstationid = z.id
|
||||
where DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') BETWEEN ''{times[0]}'' AND ''{times[1]}''
|
||||
GROUP BY DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'')
|
||||
@ -204,7 +193,7 @@ namespace SolarPower.Repository.Implement
|
||||
) INTO @sql
|
||||
FROM inverter_history_month where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%Y/%m'') report_date, ', @sql,
|
||||
',b.todayKWH ''dayKWH'', round((b.todayKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', c.PR,
|
||||
',b.todayKWH ''dayKWH'', round((b.todayKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
c.monthKWH ''monthKWH'', c.money ''monthmoney'', stationName, powerRate ''monthmoneyone'',SolarType,SiteDB
|
||||
FROM inverter_history_month a left join
|
||||
@ -431,47 +420,36 @@ namespace SolarPower.Repository.Implement
|
||||
{
|
||||
case 0:
|
||||
sql = @$"
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then a.KWH end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m-%d %H'') report_date, ', @sql,
|
||||
', b.KWH hourKWH, round((b.KWH / (SELECT MAX(TODAYKWH) FROM power_station_history_hour WHERE DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}'' and powerstationid = {post.PowerStation}))*100,2) ''hourKWHp'', d.irradiance ''irradiance'', d.Temperature ''temperature'',
|
||||
b.money ''hourmoney'', c.TODAYKWH ''totKWH'', c.KWHKWP ''totKWHKWP'', c.money ''totmoney'', stationName, powerRate daymoney, c.SOLARHOUR tothour,round(b.PR, 2) as pr
|
||||
FROM inverter_history_hour a left join
|
||||
( # 每小時加總 inv
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'') report_date, siteid, sitetype, round(KWH, 2) KWH,
|
||||
round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP, round(PR, 2) PR, round(money, 2) money
|
||||
from power_station_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) b on a.powerStationid = b.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d %H:%i'') = b.report_date
|
||||
left join
|
||||
( # day
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, sitetype, round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP
|
||||
, round(PR, 2) PR, round(money, 2) money , round(SOLARHOUR, 2) SOLARHOUR
|
||||
from power_station_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) c on a.powerStationid = c.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = c.report_date
|
||||
left join
|
||||
(
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'')report_date, irradiance, Temperature
|
||||
from sensor_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:%i'') = d.report_date
|
||||
join
|
||||
(
|
||||
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
||||
)z on a.powerstationid = z.id
|
||||
where DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
GROUP BY DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'')
|
||||
order by DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:%i'') ');
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT( 'a.inv_',RIGHT(v.InverterId, 2)) INTO @sql
|
||||
from v_company_inv v
|
||||
LEFT JOIN power_station p ON p.Code = left(inverterid, 9)
|
||||
WHERE p.Id = {post.PowerStation} AND v.enabled = 1 ;
|
||||
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.report_date,''%m-%d %H'') report_date, ', @SQL,
|
||||
', a.hourKWH hourKWH, a.hourKWHp ''hourKWHp'', a.irradiance ''irradiance'', a.Temperature ''temperature'',
|
||||
a.hourmoney ''hourmoney'', c.TODAYKWH ''totKWH'', c.KWHKWP ''totKWHKWP'', c.money ''totmoney'', stationName, powerRate daymoney, c.SOLARHOUR tothour,round(a.PR, 2) as pr,GeneratingCapacity
|
||||
FROM report_invday a
|
||||
left join
|
||||
( # day
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, sitetype, round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP
|
||||
, round(PR, 2) PR, round(money, 2) money , round(SOLARHOUR, 2) SOLARHOUR
|
||||
from power_station_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) c on a.PowerStationID = c.powerStationid and DATE_FORMAT(a.`report_date`,''%Y-%m-%d'') = c.report_date
|
||||
join
|
||||
(
|
||||
select id, name stationName, powerRate,GeneratingCapacity from power_station where id = {post.PowerStation}
|
||||
)z on a.PowerStationID = z.id
|
||||
where DATE_FORMAT(a.report_date,''%Y-%m-%d'') = ''{post.Time}'' and
|
||||
GROUP BY DATE_FORMAT(a.report_date,''%Y-%m-%d %H:%i'')
|
||||
order by DATE_FORMAT(a.report_date,''%Y-%m-%d %H:%i'') ');
|
||||
|
||||
select @sql as 'mySelect'; #顯示動態語法
|
||||
#PREPARE stmt FROM @sql;
|
||||
#EXECUTE stmt;
|
||||
#DEALLOCATE PREPARE stmt;";
|
||||
select @sql as 'mySelect'; #顯示動態語法
|
||||
#PREPARE stmt FROM @sql;
|
||||
#EXECUTE stmt;
|
||||
#DEALLOCATE PREPARE stmt;";
|
||||
break;
|
||||
case 1:
|
||||
if (post.SearchType == 2)
|
||||
|
||||
@ -228,67 +228,71 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100" id="overviewtable">
|
||||
<table class="table m-0">
|
||||
<thead id="tothead">
|
||||
</thead>
|
||||
<tbody id="totbody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100" id="hiretable" style="overflow-x:auto">
|
||||
<table class="table m-0">
|
||||
<thead id="HireTableHead">
|
||||
<tr>
|
||||
<th>出租人</th>
|
||||
<th>租金比例</th>
|
||||
<th>租金金額(未稅)</th>
|
||||
<th>租金金額(含稅)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="HireTableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100 " id="maxtable" style="overflow-x:auto">
|
||||
<table class="table m-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>縣市</th>
|
||||
<th>平均發電量(kWp)</th>
|
||||
<th>有效發電小時</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="maxtableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100" id="detailtable" style="overflow-x:auto">
|
||||
<table class="table m-0">
|
||||
<thead id="TableHead">
|
||||
</thead>
|
||||
<tbody id="TableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="all">
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100" id="overviewtable">
|
||||
<table class="table m-0">
|
||||
<thead id="tothead">
|
||||
</thead>
|
||||
<tbody id="totbody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100" id="hiretable" style="overflow-x:auto">
|
||||
<table class="table m-0">
|
||||
<thead id="HireTableHead">
|
||||
<tr>
|
||||
<th>出租人</th>
|
||||
<th>租金比例</th>
|
||||
<th>租金金額(未稅)</th>
|
||||
<th>租金金額(含稅)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="HireTableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100 " id="maxtable" style="overflow-x:auto">
|
||||
<table class="table m-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>縣市</th>
|
||||
<th>平均發電量(kWp)</th>
|
||||
<th>有效發電小時</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="maxtableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-5">
|
||||
<div class="col-xl-12">
|
||||
<div class="card p-3 w-100" id="detailtable" style="overflow-x:auto">
|
||||
<table class="table m-0">
|
||||
<thead id="TableHead">
|
||||
</thead>
|
||||
<tbody id="TableBody">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
@ -785,7 +789,7 @@
|
||||
str += "<th>日照小時(hr)</th>";
|
||||
str += "<th>有效發電小時</th>";
|
||||
str += "<th>PR%</th>";
|
||||
str += "<th>日<br />平均<br />日照度<br />(W/㎡)</th>";
|
||||
str += "<th>累積日照量(kWh)</th>";
|
||||
str += "<th>日<br />平均<br />模組溫度<br />(°C)</th>";
|
||||
if (rel.data.showMoney == 1) {
|
||||
str += "<th>日<br />售電金額<br />(NTD)</th>";
|
||||
@ -840,9 +844,11 @@
|
||||
$(e).removeClass("btn-primary").addClass("btn-success");
|
||||
button = e;
|
||||
|
||||
$('#all').hide();
|
||||
|
||||
$('#hiretable').hide();
|
||||
$('#maxtable').hide();
|
||||
|
||||
tablehand(form);
|
||||
}
|
||||
|
||||
@ -913,6 +919,7 @@
|
||||
var ntd = 0;
|
||||
var ntdone = 0;
|
||||
var sta = "";
|
||||
var GeneratingCapacity = 0;
|
||||
$.each(rel.data, function (index, inverter) {
|
||||
sta += "<tr>";
|
||||
sta += "<td>" + inverter.report_date + "</td>";
|
||||
@ -928,7 +935,7 @@
|
||||
sta += "<td>" + Number(inverter.irradiance) + "</td>";
|
||||
sta += "<td>" + Number(inverter.temperature) + "</td>";
|
||||
if (showmoney == 1) {
|
||||
sta += "<td>" + Math.round(Number(inverter.hourmoney)) + "</td>";
|
||||
sta += "<td>" + toThousands(Math.round(Number(inverter.hourmoney))) + "</td>";
|
||||
}
|
||||
sta += "</tr>";
|
||||
thour = inverter.tothour ? inverter.tothour.toFixed(2) : 0;
|
||||
@ -936,13 +943,15 @@
|
||||
tkwh = inverter.totKWH ? inverter.totKWH.toFixed(2) : 0;
|
||||
kWhkwp = inverter.totKWHKWP ? inverter.totKWHKWP.toFixed(2) : 0;
|
||||
ntd = inverter.totmoney ? Math.round(inverter.totmoney) : 0;
|
||||
ntdone = inverter.totmoney / inverter.totKWH ? Math.round(inverter.totmoney / inverter.totKWH) : 0;
|
||||
ntdone = inverter.totmoney / inverter.totKWH ? Math.round(inverter.totmoney / inverter.totKWH * 10000) / 10000 : 0;
|
||||
GeneratingCapacity = inverter.GeneratingCapacity;
|
||||
})
|
||||
var stc = "<tr>";
|
||||
stc += "<th>" + '日照小時' + "</th>";
|
||||
/* stc += "<th>" + '日照小時' + "</th>";*/
|
||||
stc += "<th>" + '有效發電小時' + "</th>";
|
||||
stc += "<th>" + 'PR%' + "</th>";
|
||||
stc += "<th>" + '日發電量(kWh)' + "</th>";
|
||||
stc += "<th>" + '裝置容量' + "</th>";
|
||||
if (showmoney == 1) {
|
||||
stc += "<th>" + '日售電金額(NTD)' + "</th>";
|
||||
stc += "<th>" + '日售電單價(NTD)' + "</th>";
|
||||
@ -951,13 +960,14 @@
|
||||
|
||||
|
||||
var stb = "<tr>";
|
||||
stb += "<td>" + thour + "</td>";
|
||||
/* stb += "<td>" + thour + "</td>";*/
|
||||
stb += "<td>" + kWhkwp + "</td>";
|
||||
stb += "<td>" + tpr + "</td>";
|
||||
stb += "<td>" + tkwh + "</td>";
|
||||
stb += "<td>" + GeneratingCapacity + "</td>";
|
||||
if (showmoney == 1) {
|
||||
stb += "<td>" + Math.round(ntd) + "</td>";
|
||||
stb += "<td>" + Math.round(ntdone) + "</td>";
|
||||
stb += "<td>" + toThousands(Math.round(ntd)) + "</td>";
|
||||
stb += "<td>" + Math.round(ntdone * 10000) / 10000 + "</td>";
|
||||
}
|
||||
stb += "</tr>";
|
||||
|
||||
@ -979,6 +989,7 @@
|
||||
var sta = "";
|
||||
var check_hire = false;
|
||||
var sitedb = "";
|
||||
var GeneratingCapacity = 0;
|
||||
$.each(rel.data, function (index, inverter) {
|
||||
sta += "<tr>";
|
||||
sta += "<td>" + inverter.report_date + "</td>";
|
||||
@ -994,10 +1005,10 @@
|
||||
sta += "<td>" + inverter.tothour + "</td>";
|
||||
sta += "<td>" + inverter.KWHKWP + "</td>";
|
||||
sta += "<td>" + ((inverter.PR == null) ? 0 : inverter.PR.toFixed(2)) + "</td>";
|
||||
sta += "<td>" + inverter.irradiance + "</td>";
|
||||
sta += "<td>" + ((inverter.IrrDay == null) ? 0 : inverter.IrrDay) + "</td>";
|
||||
sta += "<td>" + inverter.temperature + "</td>";
|
||||
if (showmoney == 1) {
|
||||
sta += "<td>" + Math.round(inverter.soldmoney) + "</td>";
|
||||
sta += "<td>" + toThousands(Math.round(inverter.soldmoney)) + "</td>";
|
||||
}
|
||||
sta += "</tr>";
|
||||
avghour += inverter.tothour ? inverter.tothour : 0;
|
||||
@ -1011,16 +1022,18 @@
|
||||
check_hire = true;
|
||||
sitedb = inverter.SiteDB
|
||||
}
|
||||
|
||||
GeneratingCapacity = inverter.GeneratingCapacity;
|
||||
})
|
||||
monthday = rel.data.length;
|
||||
|
||||
|
||||
var stc = "<tr>";
|
||||
stc += "<th>" + '日照平均(日)' + "</th>";
|
||||
/*stc += "<th>" + '日照平均(日)' + "</th>";*/
|
||||
stc += "<th>" + '有效發電小時(日)' + "</th>";
|
||||
stc += "<th>" + '發電量平均(kWh)(日)' + "</th>";
|
||||
stc += "<th>" + '發電量(kWh)(月)' + "</th>";
|
||||
stc += "<th>" + '裝置容量' + "</th>";
|
||||
stc += "<th>" + '每度獲利' + "</th>";
|
||||
if (showmoney == 1) {
|
||||
stc += "<th>" + '售電金額(NTD)(月)' + "</th>";
|
||||
stc += "<th>" + '售電單價(NTD)(月)' + "</th>";
|
||||
@ -1042,13 +1055,16 @@
|
||||
stb += "</tr>";
|
||||
}
|
||||
else {
|
||||
stb += "<td>" + (avghour / monthday).toFixed(2) + "</td>";
|
||||
/*stb += "<td>" + (avghour / monthday).toFixed(2) + "</td>";*/
|
||||
stb += "<td>" + (avgKWHKWP / monthday).toFixed(2) + "</td>";
|
||||
stb += "<td>" + (avgdayKWH / monthday).toFixed(2) + "</td>";
|
||||
stb += "<td>" + monthKWH + "</td>";
|
||||
stb += "<td>" + GeneratingCapacity + "</td>";
|
||||
stb += "<td>" + (monthKWH / GeneratingCapacity).toFixed(3) + "</td>";
|
||||
if (showmoney == 1) {
|
||||
stb += "<td>" + Math.round(monthmoney) + "</td>";
|
||||
stb += "<td>" + Math.round(monthmoneyone / monthday) + "</td>";
|
||||
|
||||
stb += "<td>" + toThousands(Math.round(monthmoney)) + "</td>";
|
||||
stb += "<td>" + Math.round(monthmoneyone / monthday*10000)/10000 + "</td>";
|
||||
}
|
||||
stb += "<td>" + monthday + "</td>";
|
||||
stb += "</tr>";
|
||||
@ -1071,8 +1087,8 @@
|
||||
std += "<tr>";
|
||||
std += "<td>" + value.landowner + "</td>";
|
||||
std += "<td>" + value.leaseRate + "%" + "</td>";
|
||||
std += "<td>" + Math.round(monthmoney * value.leaseRate / 100) + "</td>";
|
||||
std += "<td>" + Math.round(monthmoney * value.leaseRate / 100 * 1.05) + "</td>";
|
||||
std += "<td>" + toThousands(Math.round(monthmoney * value.leaseRate / 100)) + "</td>";
|
||||
std += "<td>" + toThousands(Math.round(monthmoney * value.leaseRate / 100 * 1.05)) + "</td>";
|
||||
std += "</tr>";
|
||||
})
|
||||
$('#HireTableBody').append(std);
|
||||
@ -1117,7 +1133,7 @@
|
||||
sta += "<td>" + inverter.irradiance + "</td>";
|
||||
sta += "<td>" + inverter.temperature + "</td>";
|
||||
if (showmoney == 1) {
|
||||
sta += "<td>" + Math.round(inverter.soldmoney) + "</td>";
|
||||
sta += "<td>" + toThousands(Math.round(inverter.soldmoney)) + "</td>";
|
||||
}
|
||||
sta += "</tr>";
|
||||
avghour += inverter.tothour ? inverter.tothour : 0;
|
||||
@ -1167,8 +1183,8 @@
|
||||
stb += "<td>" + (avgdayKWH / monthday).toFixed(2) + "</td>";
|
||||
stb += "<td>" + monthKWH + "</td>";
|
||||
if (showmoney == 1) {
|
||||
stb += "<td>" + Math.round(monthmoney) + "</td>";
|
||||
stb += "<td>" + Math.round(monthmoneyone / monthday) + "</td>";
|
||||
stb += "<td>" + toThousands(Math.round(monthmoney)) + "</td>";
|
||||
stb += "<td>" + Math.round(monthmoneyone / monthday*10000)/10000 + "</td>";
|
||||
}
|
||||
stb += "<td>" + monthday + "</td>";
|
||||
stb += "</tr>";
|
||||
@ -1191,8 +1207,8 @@
|
||||
std += "<tr>";
|
||||
std += "<td>" + value.landowner + "</td>";
|
||||
std += "<td>" + value.leaseRate + "%" + "</td>";
|
||||
std += "<td>" + Math.round(monthmoney * value.leaseRate / 100) + "</td>";
|
||||
std += "<td>" + Math.round(monthmoney * value.leaseRate / 100 * 1.05) + "</td>";
|
||||
std += "<td>" + toThousands(Math.round(monthmoney * value.leaseRate / 100)) + "</td>";
|
||||
std += "<td>" + toThousands(Math.round(monthmoney * value.leaseRate / 100 * 1.05)) + "</td>";
|
||||
std += "</tr>";
|
||||
})
|
||||
$('#HireTableBody').append(std);
|
||||
@ -1211,7 +1227,8 @@
|
||||
}
|
||||
$('#overviewtable').show();
|
||||
$('#detailtable').show();
|
||||
|
||||
|
||||
$('#all').show();
|
||||
nowform = form;
|
||||
}, 'json');
|
||||
}
|
||||
@ -1347,11 +1364,11 @@
|
||||
StrInfoBody += "<td>" + data.avgIrradiance.toFixed(2) + "</td>";
|
||||
StrInfoBody += "<td>" + data.avgPR.toFixed(2) + "</td>";
|
||||
if (showmoney == 1) {
|
||||
StrInfoBody += "<td>" + Math.round(data.todayMoney) + "</td>";
|
||||
StrInfoBody += "<td>" + toThousands(main_system_guid) + "</td>";
|
||||
|
||||
StrInfoBody += "<td>" + Math.round(data.todayMoney * hirerate * 0.01)+ "</td>";
|
||||
StrInfoBody += "<td>" + toThousands(Math.round(data.todayMoney * hirerate * 0.01))+ "</td>";
|
||||
|
||||
StrInfoBody += "<td>" + Math.round(data.todayMoney) + "</td>";
|
||||
StrInfoBody += "<td>" + toThousands(Math.round(data.todayMoney)) + "</td>";
|
||||
}
|
||||
|
||||
|
||||
@ -1436,5 +1453,22 @@
|
||||
return hirerate;
|
||||
}
|
||||
|
||||
function toThousands(num) {
|
||||
var num = (num || 0).toString(), result = '';
|
||||
var last = "";
|
||||
if (num.indexOf('.') != -1) {
|
||||
var nn = num.split('.');
|
||||
num = nn[0];
|
||||
last = "." + nn[1];
|
||||
}
|
||||
|
||||
while (num.length > 3) {
|
||||
result = ',' + num.slice(-3) + result;
|
||||
num = num.slice(0, num.length - 3);
|
||||
}
|
||||
if (num) { result = num + result + last; }
|
||||
|
||||
return result;
|
||||
}
|
||||
</script>
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user