CalcPowerStationJob: 每小時更新發電量、發電金額等資料
This commit is contained in:
parent
de8cde18e8
commit
da507694fa
@ -93,6 +93,7 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
{
|
{
|
||||||
var calcPowerStation = new PowerStation();
|
var calcPowerStation = new PowerStation();
|
||||||
calcPowerStation.Id = powerStation.Id;
|
calcPowerStation.Id = powerStation.Id;
|
||||||
|
string calcPowerStationTime = "";
|
||||||
|
|
||||||
#region step2-1. 取得該電站的當前這小時的歷史資料
|
#region step2-1. 取得該電站的當前這小時的歷史資料
|
||||||
var table_name = String.Format("s{1}01_station", powerStation.SiteDB, powerStation.Code);
|
var table_name = String.Format("s{1}01_station", powerStation.SiteDB, powerStation.Code);
|
||||||
@ -107,6 +108,8 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
{
|
{
|
||||||
logger.LogInformation("【CalcPowerStationJob】【開始取得電站[{0}]在{1}的每小時歷史資料】", powerStation.Code, dateTime);
|
logger.LogInformation("【CalcPowerStationJob】【開始取得電站[{0}]在{1}的每小時歷史資料】", powerStation.Code, dateTime);
|
||||||
var history = await powerStationRepository.GetPowerStationHistoryPerHour(dateTime, full_table_name);
|
var history = await powerStationRepository.GetPowerStationHistoryPerHour(dateTime, full_table_name);
|
||||||
|
//await setHistoryPerHourForPowerStation(dateTime, full_table_name, powerStation);
|
||||||
|
|
||||||
// 當前用不到
|
// 當前用不到
|
||||||
// var lastmoneyhistorybyhour = await powerStationRepository.GetLastMoneyAndCarbonInHour(powerStation.Id, 0, dateTime);
|
// var lastmoneyhistorybyhour = await powerStationRepository.GetLastMoneyAndCarbonInHour(powerStation.Id, 0, dateTime);
|
||||||
|
|
||||||
@ -126,12 +129,12 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
#region 計算單一電站每小時發電量、發電金額等資料
|
#region 計算單一電站每小時發電量、發電金額等資料
|
||||||
|
|
||||||
#region 發電量
|
#region 發電量
|
||||||
//每小時發電量(直接填寫
|
////每小時發電量(直接填寫
|
||||||
calcPowerStation.kwh = history.KWH;
|
//calcPowerStation.kwh = history.KWH;
|
||||||
//今日發電量(直接填寫
|
////今日發電量(直接填寫
|
||||||
calcPowerStation.Today_kWh = history.TodayKWh;
|
//calcPowerStation.Today_kWh = history.TodayKWh;
|
||||||
//總發電量(直接填寫
|
////總發電量(直接填寫
|
||||||
calcPowerStation.Total_kWh = history.TotalKWH;
|
//calcPowerStation.Total_kWh = history.TotalKWH;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 發電金額
|
#region 發電金額
|
||||||
@ -141,96 +144,96 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
history.TOTALMONEY = history.TotalKWH * powerStation.PowerRate;
|
history.TOTALMONEY = history.TotalKWH * powerStation.PowerRate;
|
||||||
|
|
||||||
//即時發電金額
|
//即時發電金額
|
||||||
switch (powerStation.SolarType)
|
//switch (powerStation.SolarType)
|
||||||
{
|
//{
|
||||||
case (int)SolarTypeEnum.SelfSold: //自建躉售
|
// case (int)SolarTypeEnum.SelfSold: //自建躉售
|
||||||
|
|
||||||
//if (lastmoneyhistorybyhour != null)
|
// //if (lastmoneyhistorybyhour != null)
|
||||||
//{
|
// //{
|
||||||
// history.TODAYMONEY = lastmoneyhistorybyhour.TODAYMONEY + history.KWH * powerStation.PowerRate;
|
// // history.TODAYMONEY = lastmoneyhistorybyhour.TODAYMONEY + history.KWH * powerStation.PowerRate;
|
||||||
// history.TOTALMONEY = lastmoneyhistorybyhour.TOTALMONEY + history.KWH * powerStation.PowerRate;
|
// // history.TOTALMONEY = lastmoneyhistorybyhour.TOTALMONEY + history.KWH * powerStation.PowerRate;
|
||||||
//}
|
// //}
|
||||||
//else
|
// //else
|
||||||
//{
|
// //{
|
||||||
// history.TODAYMONEY = history.KWH * powerStation.PowerRate;
|
// // history.TODAYMONEY = history.KWH * powerStation.PowerRate;
|
||||||
// history.TOTALMONEY = history.KWH * powerStation.PowerRate;
|
// // history.TOTALMONEY = history.KWH * powerStation.PowerRate;
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
//今日發電金額 計算方式:todaykWh * 授電費率
|
// //今日發電金額 計算方式:todaykWh * 授電費率
|
||||||
calcPowerStation.Today_Money = history.TodayKWh * powerStation.PowerRate;
|
// calcPowerStation.Today_Money = history.TodayKWh * powerStation.PowerRate;
|
||||||
//calcPowerStation.Today_Money = history.TODAYMONEY;
|
// //calcPowerStation.Today_Money = history.TODAYMONEY;
|
||||||
|
|
||||||
////總發電金額 計算方式:totalkWh * 授電費率
|
// ////總發電金額 計算方式:totalkWh * 授電費率
|
||||||
calcPowerStation.Total_Money = history.TotalKWH * powerStation.PowerRate;
|
// calcPowerStation.Total_Money = history.TotalKWH * powerStation.PowerRate;
|
||||||
//calcPowerStation.Total_Money = history.TOTALMONEY;
|
// //calcPowerStation.Total_Money = history.TOTALMONEY;
|
||||||
break;
|
// break;
|
||||||
case (int)SolarTypeEnum.HireSold: //租建躉售
|
// case (int)SolarTypeEnum.HireSold: //租建躉售
|
||||||
//找出該電站的所有土地房屋資訊
|
// //找出該電站的所有土地房屋資訊
|
||||||
var landBuildings = await powerStationRepository.GetAllLandBuildingInfoByPowerStationId(powerStation.Id, powerStation.SiteDB);
|
// var landBuildings = await powerStationRepository.GetAllLandBuildingInfoByPowerStationId(powerStation.Id, powerStation.SiteDB);
|
||||||
var sumLeaseRate = 0.00;
|
// var sumLeaseRate = 0.00;
|
||||||
var avgLeaseRate = 0.00;
|
// var avgLeaseRate = 0.00;
|
||||||
|
|
||||||
foreach (var landBuilding in landBuildings)
|
// foreach (var landBuilding in landBuildings)
|
||||||
{
|
// {
|
||||||
sumLeaseRate += landBuilding.LeaseRate;
|
// sumLeaseRate += landBuilding.LeaseRate;
|
||||||
}
|
// }
|
||||||
//avgLeaseRate = sumLeaseRate / landBuildings.Count();
|
// //avgLeaseRate = sumLeaseRate / landBuildings.Count();
|
||||||
|
|
||||||
//if (lastmoneyhistorybyhour != null)
|
// //if (lastmoneyhistorybyhour != null)
|
||||||
//{
|
// //{
|
||||||
// history.TODAYMONEY = lastmoneyhistorybyhour.TODAYMONEY + history.KWH * powerStation.PowerRate;
|
// // history.TODAYMONEY = lastmoneyhistorybyhour.TODAYMONEY + history.KWH * powerStation.PowerRate;
|
||||||
// history.TOTALMONEY = lastmoneyhistorybyhour.TOTALMONEY + history.KWH * powerStation.PowerRate;
|
// // history.TOTALMONEY = lastmoneyhistorybyhour.TOTALMONEY + history.KWH * powerStation.PowerRate;
|
||||||
|
|
||||||
// //今日發電金額計算方式:todaykWh * 出借費率(各個土地房屋租借比率平均)
|
// // //今日發電金額計算方式:todaykWh * 出借費率(各個土地房屋租借比率平均)
|
||||||
// calcPowerStation.Today_Money = lastmoneyhistorybyhour.TODAYMONEY + (history.KWH * powerStation.PowerRate * sumLeaseRate);
|
// // calcPowerStation.Today_Money = lastmoneyhistorybyhour.TODAYMONEY + (history.KWH * powerStation.PowerRate * sumLeaseRate);
|
||||||
// //總發電金額 計算方式:totalkWh * 授電費率
|
// // //總發電金額 計算方式:totalkWh * 授電費率
|
||||||
// calcPowerStation.Total_Money = lastmoneyhistorybyhour.TOTALMONEY + (history.KWH * powerStation.PowerRate * sumLeaseRate);
|
// // calcPowerStation.Total_Money = lastmoneyhistorybyhour.TOTALMONEY + (history.KWH * powerStation.PowerRate * sumLeaseRate);
|
||||||
//}
|
// //}
|
||||||
//else
|
// //else
|
||||||
//{
|
// //{
|
||||||
// history.TODAYMONEY = history.KWH * powerStation.PowerRate;
|
// // history.TODAYMONEY = history.KWH * powerStation.PowerRate;
|
||||||
// history.TOTALMONEY = history.KWH * powerStation.PowerRate;
|
// // history.TOTALMONEY = history.KWH * powerStation.PowerRate;
|
||||||
|
|
||||||
// calcPowerStation.Today_Money = history.KWH * powerStation.PowerRate * sumLeaseRate;
|
// // calcPowerStation.Today_Money = history.KWH * powerStation.PowerRate * sumLeaseRate;
|
||||||
// calcPowerStation.Total_Money = history.KWH * powerStation.PowerRate * sumLeaseRate;
|
// // calcPowerStation.Total_Money = history.KWH * powerStation.PowerRate * sumLeaseRate;
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
calcPowerStation.Today_Money = history.TodayKWh * powerStation.PowerRate * sumLeaseRate / 100;
|
// calcPowerStation.Today_Money = history.TodayKWh * powerStation.PowerRate * sumLeaseRate / 100;
|
||||||
calcPowerStation.Total_Money = history.TotalKWH * powerStation.PowerRate * sumLeaseRate / 100;
|
// calcPowerStation.Total_Money = history.TotalKWH * powerStation.PowerRate * sumLeaseRate / 100;
|
||||||
|
|
||||||
break;
|
// break;
|
||||||
case (int)SolarTypeEnum.SelfUse: //自建自用
|
// case (int)SolarTypeEnum.SelfUse: //自建自用
|
||||||
|
|
||||||
//if (lastmoneyhistorybyhour != null)
|
// //if (lastmoneyhistorybyhour != null)
|
||||||
//{
|
// //{
|
||||||
// history.TODAYMONEY = lastmoneyhistorybyhour.TODAYMONEY + history.KWH * powerStation.PowerRate;
|
// // history.TODAYMONEY = lastmoneyhistorybyhour.TODAYMONEY + history.KWH * powerStation.PowerRate;
|
||||||
// history.TOTALMONEY = lastmoneyhistorybyhour.TOTALMONEY + history.KWH * powerStation.PowerRate;
|
// // history.TOTALMONEY = lastmoneyhistorybyhour.TOTALMONEY + history.KWH * powerStation.PowerRate;
|
||||||
//}
|
// //}
|
||||||
//else
|
// //else
|
||||||
//{
|
// //{
|
||||||
// history.TODAYMONEY = history.KWH * powerStation.PowerRate;
|
// // history.TODAYMONEY = history.KWH * powerStation.PowerRate;
|
||||||
// history.TOTALMONEY = history.KWH * powerStation.PowerRate;
|
// // history.TOTALMONEY = history.KWH * powerStation.PowerRate;
|
||||||
//}
|
// //}
|
||||||
|
|
||||||
//今日發電金額 計算方式:todaykWh * 授電費率
|
// //今日發電金額 計算方式:todaykWh * 授電費率
|
||||||
//calcPowerStation.Today_Money = history.TODAYMONEY;
|
// //calcPowerStation.Today_Money = history.TODAYMONEY;
|
||||||
calcPowerStation.Today_Money = history.TodayKWh * powerStation.PowerRate;
|
// calcPowerStation.Today_Money = history.TodayKWh * powerStation.PowerRate;
|
||||||
|
|
||||||
//總發電金額 計算方式:totalkWh * 授電費率
|
// //總發電金額 計算方式:totalkWh * 授電費率
|
||||||
//calcPowerStation.Total_Money = history.TOTALMONEY;
|
// //calcPowerStation.Total_Money = history.TOTALMONEY;
|
||||||
calcPowerStation.Total_Money = history.TotalKWH * powerStation.PowerRate;
|
// calcPowerStation.Total_Money = history.TotalKWH * powerStation.PowerRate;
|
||||||
break;
|
// break;
|
||||||
}
|
//}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region kWh/kWp
|
#region kWh/kWp
|
||||||
//直接填寫
|
////直接填寫
|
||||||
calcPowerStation.Today_kwhkwp = history.KWHKWP;
|
//calcPowerStation.Today_kwhkwp = history.KWHKWP;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region PR
|
#region PR
|
||||||
//直接填寫
|
//直接填寫
|
||||||
calcPowerStation.Today_PR = history.PR;
|
//calcPowerStation.Today_PR = history.PR;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 減碳量
|
#region 減碳量
|
||||||
@ -252,19 +255,123 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
|
|
||||||
//今日減碳量( 今日發電量 * (0.554/1000)[抓資料庫值]
|
//今日減碳量( 今日發電量 * (0.554/1000)[抓資料庫值]
|
||||||
//calcPowerStation.Today_Carbon = history.TODAYCARBON;
|
//calcPowerStation.Today_Carbon = history.TODAYCARBON;
|
||||||
calcPowerStation.Today_Carbon = history.TodayKWh * carbonRate;
|
//calcPowerStation.Today_Carbon = history.TodayKWh * carbonRate;
|
||||||
|
|
||||||
//總減碳量(總發電量 * (0.554/1000)[抓資料庫值]
|
//總減碳量(總發電量 * (0.554/1000)[抓資料庫值]
|
||||||
//calcPowerStation.Total_Carbon = history.TotalKWH * carbonRate;
|
//calcPowerStation.Total_Carbon = history.TotalKWH * carbonRate;
|
||||||
calcPowerStation.Total_Carbon = history.TotalKWH * carbonRate;
|
//calcPowerStation.Total_Carbon = history.TotalKWH * carbonRate;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 發電時間
|
#region 發電時間
|
||||||
calcPowerStation.SolarHour = history.SolarHour;
|
//calcPowerStation.SolarHour = history.SolarHour;
|
||||||
#endregion
|
#endregion
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 計算單一電站每小時發電量、發電金額等資料 for calcPowerStation
|
||||||
|
var dateTimeforPowerStation = DateTime.Now.ToString("yyyy-MM-dd");//取當天
|
||||||
|
logger.LogInformation("【CalcPowerStationJob】【開始取得電站[{0}]在{1}的每小時歷史資料 for calcPowerStation】", powerStation.Code, dateTimeforPowerStation);
|
||||||
|
var history_for_powerStation = await powerStationRepository.GetPowerStationHistoryPerHourForPowerStation(dateTimeforPowerStation, full_table_name);
|
||||||
|
if (history_for_powerStation == null)
|
||||||
|
{
|
||||||
|
logger.LogWarning("【CalcPowerStationJob】【查無電站[{0}]在{1}的每小時歷史資料 for calcPowerStation;發電量、發電金額等資料設定為0】", powerStation.Code, dateTimeforPowerStation);
|
||||||
|
calcPowerStation.kwh = 0;
|
||||||
|
calcPowerStation.Today_kWh = 0;
|
||||||
|
calcPowerStation.Total_kWh = 0;
|
||||||
|
calcPowerStation.Today_Money = 0;
|
||||||
|
calcPowerStation.Total_Money = 0;
|
||||||
|
calcPowerStation.Today_kwhkwp = 0;
|
||||||
|
calcPowerStation.Today_PR = 0;
|
||||||
|
calcPowerStation.Today_Carbon = 0;
|
||||||
|
calcPowerStation.Total_Carbon = 0;
|
||||||
|
calcPowerStation.SolarHour = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的每小時歷史資料 for calcPowerStation】", powerStation.Code, dateTimeforPowerStation);
|
||||||
|
#region 發電量
|
||||||
|
//每小時發電量(直接填寫
|
||||||
|
calcPowerStation.kwh = history_for_powerStation.KWH;
|
||||||
|
//今日發電量(直接填寫
|
||||||
|
calcPowerStation.Today_kWh = history_for_powerStation.TodayKWh;
|
||||||
|
//總發電量(直接填寫
|
||||||
|
calcPowerStation.Total_kWh = history_for_powerStation.TotalKWH;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 發電金額
|
||||||
|
history_for_powerStation.MONEY = history_for_powerStation.KWH * powerStation.PowerRate;
|
||||||
|
history_for_powerStation.TODAYMONEY = history_for_powerStation.TodayKWh * powerStation.PowerRate;
|
||||||
|
history_for_powerStation.TOTALMONEY = history_for_powerStation.TotalKWH * powerStation.PowerRate;
|
||||||
|
|
||||||
|
//即時發電金額
|
||||||
|
switch (powerStation.SolarType)
|
||||||
|
{
|
||||||
|
case (int)SolarTypeEnum.SelfSold: //自建躉售
|
||||||
|
//今日發電金額 計算方式:todaykWh * 授電費率
|
||||||
|
calcPowerStation.Today_Money = history_for_powerStation.TodayKWh * powerStation.PowerRate;
|
||||||
|
|
||||||
|
////總發電金額 計算方式:totalkWh * 授電費率
|
||||||
|
calcPowerStation.Total_Money = history_for_powerStation.TotalKWH * powerStation.PowerRate;
|
||||||
|
break;
|
||||||
|
case (int)SolarTypeEnum.HireSold: //租建躉售
|
||||||
|
//找出該電站的所有土地房屋資訊
|
||||||
|
var landBuildings = await powerStationRepository.GetAllLandBuildingInfoByPowerStationId(powerStation.Id, powerStation.SiteDB);
|
||||||
|
var sumLeaseRate = 0.00;
|
||||||
|
var avgLeaseRate = 0.00;
|
||||||
|
|
||||||
|
foreach (var landBuilding in landBuildings)
|
||||||
|
{
|
||||||
|
sumLeaseRate += landBuilding.LeaseRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
calcPowerStation.Today_Money = history_for_powerStation.TodayKWh * powerStation.PowerRate * sumLeaseRate / 100;
|
||||||
|
calcPowerStation.Total_Money = history_for_powerStation.TotalKWH * powerStation.PowerRate * sumLeaseRate / 100;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case (int)SolarTypeEnum.SelfUse: //自建自用
|
||||||
|
|
||||||
|
//今日發電金額 計算方式:todaykWh * 授電費率
|
||||||
|
calcPowerStation.Today_Money = history_for_powerStation.TodayKWh * powerStation.PowerRate;
|
||||||
|
|
||||||
|
//總發電金額 計算方式:totalkWh * 授電費率
|
||||||
|
calcPowerStation.Total_Money = history_for_powerStation.TotalKWH * powerStation.PowerRate;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region kWh/kWp
|
||||||
|
////直接填寫
|
||||||
|
calcPowerStation.Today_kwhkwp = history_for_powerStation.KWHKWP;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region PR
|
||||||
|
//直接填寫
|
||||||
|
calcPowerStation.Today_PR = history_for_powerStation.PR;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 減碳量
|
||||||
|
carbonRate = Convert.ToDouble(await powerStationRepository.GetOneVariableByName("CarbonRate"));
|
||||||
|
history_for_powerStation.CARBON = history_for_powerStation.KWH * carbonRate;
|
||||||
|
history_for_powerStation.TODAYCARBON = history_for_powerStation.TodayKWh * carbonRate;
|
||||||
|
history_for_powerStation.TOTALCARBON = history_for_powerStation.TotalKWH * carbonRate;
|
||||||
|
|
||||||
|
//今日減碳量( 今日發電量 * (0.554/1000)[抓資料庫值]
|
||||||
|
calcPowerStation.Today_Carbon = history_for_powerStation.TodayKWh * carbonRate;
|
||||||
|
|
||||||
|
//總減碳量(總發電量 * (0.554/1000)[抓資料庫值]
|
||||||
|
calcPowerStation.Total_Carbon = history_for_powerStation.TotalKWH * carbonRate;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 發電時間
|
||||||
|
calcPowerStation.SolarHour = history_for_powerStation.SolarHour;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 取拿到資料的時間
|
||||||
|
calcPowerStationTime = history_for_powerStation.Timestamp;
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
powerStationHistoriesHour.Add(history);
|
powerStationHistoriesHour.Add(history);
|
||||||
|
|
||||||
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的每小時歷史資料】", powerStation.Code, dateTime);
|
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的每小時歷史資料】", powerStation.Code, dateTime);
|
||||||
@ -299,10 +406,19 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
{
|
{
|
||||||
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的日照計的平均值】", powerStation.Code, dateTime);
|
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的日照計的平均值】", powerStation.Code, dateTime);
|
||||||
var pyrheliometerHistory = await powerStationRepository.CalcSensorHistoryPerHour(dateTime, deviceInfos, Convert.ToInt32(SensorTypeEnum.PYR));
|
var pyrheliometerHistory = await powerStationRepository.CalcSensorHistoryPerHour(dateTime, deviceInfos, Convert.ToInt32(SensorTypeEnum.PYR));
|
||||||
|
string dateTimeForCalc;
|
||||||
|
if (calcPowerStationTime != "")
|
||||||
|
{
|
||||||
|
dateTimeForCalc = calcPowerStationTime;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dateTimeForCalc = dateTime;
|
||||||
|
}
|
||||||
|
var pyrheliometerHistory_for_calcPowerStation = await powerStationRepository.CalcSensorHistoryPerHour(dateTimeForCalc, deviceInfos, Convert.ToInt32(SensorTypeEnum.PYR));
|
||||||
if (pyrheliometerHistory != null)
|
if (pyrheliometerHistory != null)
|
||||||
{
|
{
|
||||||
calcPowerStation.Today_irradiance = pyrheliometerHistory.Irradiance;
|
calcPowerStation.Today_irradiance = pyrheliometerHistory_for_calcPowerStation.Irradiance;
|
||||||
|
|
||||||
sensorHistory.Irradiance = pyrheliometerHistory.Irradiance;
|
sensorHistory.Irradiance = pyrheliometerHistory.Irradiance;
|
||||||
|
|
||||||
@ -492,10 +608,10 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
sensorHistory.IrrDay = TPYHistory.IrrDay;
|
sensorHistory.IrrDay = TPYHistory.IrrDay;
|
||||||
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的累計日照量的平均值】", powerStation.Code, dateTime);
|
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的累計日照量的平均值】", powerStation.Code, dateTime);
|
||||||
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的相減的累計日照量】", powerStation.Code, dateTime);
|
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的相減的累計日照量】", powerStation.Code, dateTime);
|
||||||
var ss = await powerStationRepository.CalcIrrDayHourHistoryPerHour(dateTime, powerStation.Id);
|
var ss = await powerStationRepository.CalcIrrDayHourHistoryPerHour(dateTime, powerStation.Id);
|
||||||
if (ss != null)
|
if (ss != null)
|
||||||
{
|
{
|
||||||
sensorHistory.IrrDayHour = double.Parse( ss);
|
sensorHistory.IrrDayHour = double.Parse(ss);
|
||||||
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的相減的累計日照量】", powerStation.Code, dateTime);
|
logger.LogInformation("【CalcPowerStationJob】【計算完成電站[{0}]在{1}的相減的累計日照量】", powerStation.Code, dateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,30 +624,6 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
logger.LogError("【CalcPowerStationJob】【失敗原因】- {0}", ex.Message);
|
logger.LogError("【CalcPowerStationJob】【失敗原因】- {0}", ex.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
//9. 計算該電站 - 每小時累計日照量(IrrDayHour)
|
|
||||||
//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.CalcIrrDayHourHistoryPerHour(dateTime, powerStation.Id);
|
|
||||||
// if (TPYHistory != null)
|
|
||||||
// {
|
|
||||||
// sensorHistory.IrrDayHour = TPYHistory.IrrDayHour;
|
|
||||||
// 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);
|
sensorHistoriesHour.Add(sensorHistory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,9 +764,9 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
double p2 = Convert.ToDouble(powerLocation[1].Replace("°", string.Empty));
|
double p2 = Convert.ToDouble(powerLocation[1].Replace("°", string.Empty));
|
||||||
double dLat = Convert.ToDouble(Location.Lat);
|
double dLat = Convert.ToDouble(Location.Lat);
|
||||||
double dLon = Convert.ToDouble(Location.Lon);
|
double dLon = Convert.ToDouble(Location.Lon);
|
||||||
double x = Math.Pow(p1 - dLat, 2) ;
|
double x = Math.Pow(p1 - dLat, 2);
|
||||||
double y = Math.Pow(p2 - dLon, 2);
|
double y = Math.Pow(p2 - dLon, 2);
|
||||||
var nowLocation = Math.Sqrt(x + y);
|
var nowLocation = Math.Sqrt(x + y);
|
||||||
//var nowLocation = Math.Sqrt(Math.Pow(Convert.ToDouble(powerLocation[0])
|
//var nowLocation = Math.Sqrt(Math.Pow(Convert.ToDouble(powerLocation[0])
|
||||||
// - Convert.ToDouble(Location.Lat), 2)
|
// - Convert.ToDouble(Location.Lat), 2)
|
||||||
// + Math.Pow(Convert.ToDouble(powerLocation[1])
|
// + Math.Pow(Convert.ToDouble(powerLocation[1])
|
||||||
@ -980,5 +1072,99 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task setHistoryPerHourForPowerStation(string dateTime, string full_table_name, PowerStation powerStation)
|
||||||
|
{
|
||||||
|
var calcPowerStation = new PowerStation();
|
||||||
|
calcPowerStation.Id = powerStation.Id;
|
||||||
|
var history_for_powerStation = await powerStationRepository.GetPowerStationHistoryPerHourForPowerStation(dateTime, full_table_name);
|
||||||
|
if (history_for_powerStation == null)
|
||||||
|
{
|
||||||
|
//logger.LogWarning("【CalcPowerStationJob】【查無電站[{0}]在{1}的每小時歷史資料】", powerStation.Code, dateTime);
|
||||||
|
//每小時發電量(直接填寫
|
||||||
|
calcPowerStation.kwh = 0;
|
||||||
|
//今日發電量(直接填寫
|
||||||
|
calcPowerStation.Today_kWh = 0;
|
||||||
|
//總發電量(直接填寫
|
||||||
|
calcPowerStation.Total_kWh = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//每小時發電量(直接填寫
|
||||||
|
calcPowerStation.kwh = history_for_powerStation.KWH;
|
||||||
|
//今日發電量(直接填寫
|
||||||
|
calcPowerStation.Today_kWh = history_for_powerStation.TodayKWh;
|
||||||
|
//總發電量(直接填寫
|
||||||
|
calcPowerStation.Total_kWh = history_for_powerStation.TotalKWH;
|
||||||
|
|
||||||
|
#region 發電金額
|
||||||
|
|
||||||
|
history_for_powerStation.MONEY = history_for_powerStation.KWH * powerStation.PowerRate;
|
||||||
|
history_for_powerStation.TODAYMONEY = history_for_powerStation.TodayKWh * powerStation.PowerRate;
|
||||||
|
history_for_powerStation.TOTALMONEY = history_for_powerStation.TotalKWH * powerStation.PowerRate;
|
||||||
|
|
||||||
|
//即時發電金額
|
||||||
|
switch (powerStation.SolarType)
|
||||||
|
{
|
||||||
|
case (int)SolarTypeEnum.SelfSold: //自建躉售
|
||||||
|
|
||||||
|
//今日發電金額 計算方式:todaykWh * 授電費率
|
||||||
|
calcPowerStation.Today_Money = history_for_powerStation.TodayKWh * powerStation.PowerRate;
|
||||||
|
|
||||||
|
////總發電金額 計算方式:totalkWh * 授電費率
|
||||||
|
calcPowerStation.Total_Money = history_for_powerStation.TotalKWH * powerStation.PowerRate;
|
||||||
|
break;
|
||||||
|
case (int)SolarTypeEnum.HireSold: //租建躉售
|
||||||
|
//找出該電站的所有土地房屋資訊
|
||||||
|
var landBuildings = await powerStationRepository.GetAllLandBuildingInfoByPowerStationId(powerStation.Id, powerStation.SiteDB);
|
||||||
|
var sumLeaseRate = 0.00;
|
||||||
|
var avgLeaseRate = 0.00;
|
||||||
|
|
||||||
|
foreach (var landBuilding in landBuildings)
|
||||||
|
{
|
||||||
|
sumLeaseRate += landBuilding.LeaseRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
calcPowerStation.Today_Money = history_for_powerStation.TodayKWh * powerStation.PowerRate * sumLeaseRate / 100;
|
||||||
|
calcPowerStation.Total_Money = history_for_powerStation.TotalKWH * powerStation.PowerRate * sumLeaseRate / 100;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case (int)SolarTypeEnum.SelfUse: //自建自用
|
||||||
|
|
||||||
|
//今日發電金額 計算方式:todaykWh * 授電費率
|
||||||
|
calcPowerStation.Today_Money = history_for_powerStation.TodayKWh * powerStation.PowerRate;
|
||||||
|
|
||||||
|
//總發電金額 計算方式:totalkWh * 授電費率
|
||||||
|
calcPowerStation.Total_Money = history_for_powerStation.TotalKWH * powerStation.PowerRate;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region PR
|
||||||
|
//直接填寫
|
||||||
|
calcPowerStation.Today_PR = history_for_powerStation.PR;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 減碳量
|
||||||
|
carbonRate = Convert.ToDouble(await powerStationRepository.GetOneVariableByName("CarbonRate"));
|
||||||
|
|
||||||
|
history_for_powerStation.CARBON = history_for_powerStation.KWH * carbonRate;
|
||||||
|
history_for_powerStation.TODAYCARBON = history_for_powerStation.TodayKWh * carbonRate;
|
||||||
|
history_for_powerStation.TOTALCARBON = history_for_powerStation.TotalKWH * carbonRate;
|
||||||
|
|
||||||
|
//今日減碳量( 今日發電量 * (0.554/1000)[抓資料庫值]
|
||||||
|
calcPowerStation.Today_Carbon = history_for_powerStation.TodayKWh * carbonRate;
|
||||||
|
|
||||||
|
//總減碳量(總發電量 * (0.554/1000)[抓資料庫值]
|
||||||
|
calcPowerStation.Total_Carbon = history_for_powerStation.TotalKWH * carbonRate;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 發電時間
|
||||||
|
calcPowerStation.SolarHour = history_for_powerStation.SolarHour;
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2189,6 +2189,33 @@ namespace SolarPower.Repository.Implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<PowerStationHistory> GetPowerStationHistoryPerHourForPowerStation(string dateTime, string table_name)
|
||||||
|
{
|
||||||
|
PowerStationHistory result;
|
||||||
|
using (IDbConnection conn = this._databaseHelper.GetConnection())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sql = $@"
|
||||||
|
SELECT
|
||||||
|
DATE_FORMAT(FROM_UNIXTIME(timestamp / 1000), '%Y-%m-%d %H') AS TIMESTAMP,
|
||||||
|
SITEID, SiteType, KWH, TodayKWh, TotalKWH,
|
||||||
|
KWHKWP, PR, MP, SolarHour
|
||||||
|
FROM {table_name}
|
||||||
|
WHERE DATE_FORMAT(FROM_UNIXTIME(timestamp / 1000), '%Y-%m-%d') = @DateTime
|
||||||
|
AND kwh > 0
|
||||||
|
order by timestamp desc";
|
||||||
|
|
||||||
|
result = await conn.QueryFirstOrDefaultAsync<PowerStationHistory>(sql, new { DateTime = dateTime }, commandTimeout: 600);//加上時間
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<AvgPowerStationHistory> CalcAvgPowerStationHistory30day(string nowDay, string table_name)
|
public async Task<AvgPowerStationHistory> CalcAvgPowerStationHistory30day(string nowDay, string table_name)
|
||||||
{
|
{
|
||||||
AvgPowerStationHistory result;
|
AvgPowerStationHistory result;
|
||||||
|
|||||||
@ -633,5 +633,6 @@ namespace SolarPower.Repository.Interface
|
|||||||
|
|
||||||
Task<List<PowerStation>> GetAllNoStatusAsync();
|
Task<List<PowerStation>> GetAllNoStatusAsync();
|
||||||
Task<string> CalcIrrDayHourHistoryPerHour(string dateTime, int powerStationId);
|
Task<string> CalcIrrDayHourHistoryPerHour(string dateTime, int powerStationId);
|
||||||
|
Task<PowerStationHistory> GetPowerStationHistoryPerHourForPowerStation(string dateTime, string table_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user