單日歸檔 v1.0
This commit is contained in:
parent
8f6eac00bd
commit
8bc7d611c0
@ -1,9 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
|
||||
<connectionStrings>
|
||||
<!--<add name="mySql" connectionString="server=172.16.251.248;database=healthdep;user=idafenweb;password=P@ssw0rd;charset=utf8;" />-->
|
||||
<!--<add name="mySql" connectionString="server=127.0.0.1;database=healthdep;user=root;password=zxcvb123;charset=utf8;" />-->
|
||||
<connectionStrings>
|
||||
<add name="mySql" connectionString="server=60.251.164.103;user=webuser;Database=solar_master;Port=11306;password=FICadmin99;charset='utf8';pooling=true;sslmode=none;" providerName="MySql.Data.MySqlClient" />
|
||||
<!--<add name="mySql" connectionString="server=localhost;user=root;Database=solar_master;Port=3306;password=zxcvb123;charset='utf8';pooling=true;sslmode=none;" providerName="MySql.Data.MySqlClient" />-->
|
||||
</connectionStrings>
|
||||
</configuration>
|
||||
@ -87,6 +87,16 @@ namespace solarApp.Model
|
||||
public int count { get; set; }
|
||||
}
|
||||
|
||||
public class web_inv_15min
|
||||
{
|
||||
public string siteID { get; set; }
|
||||
public string INVERTERID { get; set; }
|
||||
public string reportdate { get; set; }
|
||||
public double KWH { get; set; }
|
||||
public double TODAYKWH { get; set; }
|
||||
public double kWhKWP { get; set; }
|
||||
}
|
||||
|
||||
public class web_inv_hour
|
||||
{
|
||||
public string INVERTERID { get; set; }
|
||||
|
||||
@ -40,10 +40,12 @@ namespace solarApp.Model
|
||||
public double PR { get; set; }
|
||||
public double SOLARHOUR { get; set; }
|
||||
public double kwhkwp { get; set; }
|
||||
//public double MONEY { get; set; }
|
||||
//public double TODAYMONEY { get; set; }
|
||||
//public double CARBON { get; set; }
|
||||
//public double TODAYCARBON { get; set; }
|
||||
public double MONEY { get; set; }
|
||||
public double todayMoney { get; set; }
|
||||
public double totalMoney { get; set; }
|
||||
public double CARBON { get; set; }
|
||||
public double todayCarbon { get; set; }
|
||||
public double totalCarbon { get; set; }
|
||||
}
|
||||
|
||||
public class web_station_day
|
||||
|
||||
@ -17,7 +17,8 @@ namespace solarApp
|
||||
Application.SetHighDpiMode(HighDpiMode.SystemAware);
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new fmMain());
|
||||
Application.Run(new fmArchive());
|
||||
//Application.Run(new fmMain());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,6 +67,21 @@ namespace solarApp.Service
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public List<web_inv_15min> get_web_Inv_15min(string reportDate, string invID, string siteID)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"select `code` siteID, DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d %H:%i') reportdate, inverterid, a.KWH, a.TODAYKWH, round(a.kwhkwp, 3) kwhkwp
|
||||
from inverter_history_15min a join power_station b on a.powerstationID = b.id
|
||||
where left(`TIMESTAMP`, 10) = '" + reportDate + "' and inverterid = '" + invID + @"' and `code` = @siteID
|
||||
order by cast(reportdate as datetime)";
|
||||
List<web_inv_15min> ds = conn.Query<web_inv_15min>(sql, new { siteID = siteID }).AsList<web_inv_15min>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// web 呈現值 每小時平均值 inverter - hour
|
||||
/// </summary>
|
||||
@ -91,7 +106,7 @@ namespace solarApp.Service
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') reportdate, inverterid, round(PR, 2) KWH, round(PR, 2) TODAYKWH, round(PR, 2) TOTALKWH, round(PR, 2) PR
|
||||
string sql = @"select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') reportdate, inverterid, round(KWH, 2) KWH, round(TODAYKWH, 2) TODAYKWH, round(TOTALKWH, 2) TOTALKWH, round(PR, 2) PR
|
||||
from inverter_history_day where left(`TIMESTAMP`, 10) between '" + date1 + "' and '"+ date2 +"' and inverterid = '" + invID + "' ";
|
||||
List<web_inv_hour> ds = conn.Query<web_inv_hour>(sql).AsList<web_inv_hour>();
|
||||
conn.Close();
|
||||
|
||||
@ -47,9 +47,9 @@ namespace solarApp.Service
|
||||
{
|
||||
ss += (ss == string.Empty) ? item.colname : "+" + item.colname; // 2 個以上欄位需要相加
|
||||
}
|
||||
if (lstData.Count >= 2) result = "(" + ss + ") / " + lstData.Count.ToString(); // 2個以上 需要除以個數 (平均值)
|
||||
if (lstData.Count >= 2 && lstData[0].type == "PYR") result = "round( avg( " + ss + ") / " + lstData.Count.ToString() + " , 2) "; //日照計 2個以上 需要除以個數 (平均值)
|
||||
else
|
||||
result = ss;
|
||||
result = "round( avg(" + ss + " ), 2) ";
|
||||
}
|
||||
else result = "0";
|
||||
return result;
|
||||
@ -61,6 +61,12 @@ namespace solarApp.Service
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
// init 關閉 group full column
|
||||
string ss = @"SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY,',''));";
|
||||
conn.Execute(ss);
|
||||
|
||||
|
||||
|
||||
#region 獲取 Sensor 類別
|
||||
string sql = @"select a.id, CONCAT( left(UID, 9) ,'01') SiteID, a.`name` sensorName, type, DBName, TableName, colname
|
||||
from " + siteDB + @".device a
|
||||
@ -103,15 +109,14 @@ namespace solarApp.Service
|
||||
#endregion 獲取 Sensor 類別
|
||||
sql = @"select a.siteID, a.reportdate, a.modelTempAvg, ifnull(b.irrAvg, 0) irrAvg, a.envTempAvg, humidityAvg, windAvg, dustAvg from
|
||||
(
|
||||
select @siteID siteID, FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') reportdate, round(avg("+ modelTempCol+ @"), 2) modelTempAvg,
|
||||
round(avg(" + evnTempCol + @"), 2) envTempAvg, round(avg(" + humCol + @"), 2) humidityAvg, round(avg(" + windCol + @"), 2) windAvg,
|
||||
round(avg(" + dustCol + @"), 2) dustAvg
|
||||
select @siteID siteID, FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') reportdate, "+ modelTempCol+ @" modelTempAvg
|
||||
," + evnTempCol + @" envTempAvg, " + humCol + @" humidityAvg, " + windCol + @" windAvg, " + dustCol + @" dustAvg
|
||||
from " + siteDB + ".s" + siteID + @"_sensorAvg
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @reportDate
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H')
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H')
|
||||
) a left join
|
||||
(
|
||||
select concat(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H'), ':00') reportdate, round(avg(" + irrCol + @"), 2) irrAvg
|
||||
select FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') reportdate , " + irrCol + @" irrAvg
|
||||
from " + siteDB + ".s" + siteID + @"_sensorAvg
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @reportDate "+ irrNot0 + @" #需要過濾 0 的數值
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H')
|
||||
@ -163,7 +168,50 @@ namespace solarApp.Service
|
||||
string sql = @" select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d %H') reportdate, b.`code` siteid, round(Irradiance, 2) irrAvg, round(Temperature, 2) modelTempAvg
|
||||
from sensor_history_month a join power_station b on a.PowerStationId = b.id
|
||||
where left(`TIMESTAMP`, 7) between '" + date1 + "' and '" + date2 + "' and b.`code` = @siteID";
|
||||
List<sensor_hour> ds = conn.Query<sensor_hour>(sql, new { siteID = siteID }).AsList<sensor_hour>();
|
||||
List<sensor_hour> ds = conn.Query<sensor_hour>(sql, new { siteID = siteID}).AsList<sensor_hour>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public List<sensor_raw> get_web_sensor50_hour(string reportDate, string siteID)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d %H') reportdate, b.`code` siteid, sensorAVG01, sensorAVG02, sensorAVG03, sensorAVG04, sensorAVG05, sensorAVG06
|
||||
from sensoravg_history_hour a join power_station b on a.PowerStationId = b.id
|
||||
where left(`TIMESTAMP`, 10) = '" + reportDate + "' and b.`code` = @siteID";
|
||||
List<sensor_raw> ds = conn.Query<sensor_raw>(sql, new { siteID = siteID }).AsList<sensor_raw>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
|
||||
public List<sensor_raw> get_web_sensor50_day(string date1, string date2, string siteID)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d %H') reportdate, b.`code` siteid, sensorAVG01, sensorAVG02, sensorAVG03, sensorAVG04, sensorAVG05, sensorAVG06
|
||||
from sensoravg_history_day a join power_station b on a.PowerStationId = b.id
|
||||
where left(`TIMESTAMP`, 10) between @date1 and @date2 and b.`code` = @siteID";
|
||||
List<sensor_raw> ds = conn.Query<sensor_raw>(sql, new { siteID = siteID, date1 = date1, date2 = date2 }).AsList<sensor_raw>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
|
||||
public List<sensor_raw> get_web_sensor50_month(string date1, string date2, string siteID)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d %H') reportdate, b.`code` siteid, sensorAVG01, sensorAVG02, sensorAVG03, sensorAVG04, sensorAVG05, sensorAVG06
|
||||
from sensoravg_history_month a join power_station b on a.PowerStationId = b.id
|
||||
where left(`TIMESTAMP`, 7) between @date1 and @date2 and b.`code` = @siteID";
|
||||
List<sensor_raw> ds = conn.Query<sensor_raw>(sql, new { siteID = siteID, date1 = date1, date2 = date2 }).AsList<sensor_raw>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ namespace solarApp.Service
|
||||
string sql = @"select id , FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') reportdate, siteid, round(KWH, 3) KWH, round(TODAYKWH, 3) TODAYKWH,
|
||||
round(TOTALKWH, 3)TOTALKWH, round(PR, 3) PR, round(TODAYKWH, 3)SOLARHOUR , round(kwhkwp, 3) kwhkwp
|
||||
from " + siteDB + ".s" + siteID + @"_station
|
||||
where left(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i'), 10) = @reportDate";
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @reportDate";
|
||||
List<raw_statino> ds = conn.Query<raw_statino>(sql, new { reportDate = reportDate }).AsList<raw_statino>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
@ -69,11 +69,11 @@ namespace solarApp.Service
|
||||
// from v_station_temp
|
||||
// where left(reportdate, 10) between @date1 and @date2
|
||||
// group by siteid, left(reportdate, 10)";
|
||||
string sql = @" select siteid, left(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i'), 10) reportdate, round((sum(KWH)), 2) KWH, round((max(TODAYKWH)), 2) TODAYKWH, round((max(TOTALKWH)), 2) TOTALKWH,
|
||||
string sql = @" select siteid, FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') reportdate, round((sum(KWH)), 2) KWH, round((max(TODAYKWH)), 2) TODAYKWH, round((max(TOTALKWH)), 2) TOTALKWH,
|
||||
round((max(PR)), 2) PR, round((max(SOLARHOUR)), 2) SOLARHOUR, round((max(KWHKWP)), 2) KWHKWP, count(*) count
|
||||
from " + siteDB+ ".s"+ siteID + @"_station
|
||||
where left(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i'), 10) between @date1 and @date2
|
||||
group by siteid, left(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i'), 10)";
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') between @date1 and @date2
|
||||
group by siteid, FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d')";
|
||||
List<raw_station_day> ds = conn.Query<raw_station_day>(sql, new { date1 = date1, date2 = date2 }).AsList<raw_station_day>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
@ -87,15 +87,17 @@ namespace solarApp.Service
|
||||
/// </summary>
|
||||
/// <param name="reportDate"></param>
|
||||
/// <returns></returns>
|
||||
public List<web_station_hour> get_web_station_hour(string reportDate)
|
||||
public List<web_station_hour> get_web_station_hour(string reportDate, string siteID)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d %H') reportdate, siteid, round(KWH, 2) KWH, round(TODAYKWH, 2) TODAYKWH, round(TOTALKWH, 2) TOTALKWH,
|
||||
round(PR, 3) PR, round(KWHKWP, 3) KWHKWP, money
|
||||
from power_station_history_hour where left(`TIMESTAMP`, 10) = '" + reportDate + "' ";
|
||||
List<web_station_hour> ds = conn.Query<web_station_hour>(sql).AsList<web_station_hour>();
|
||||
round(PR, 3) PR, round(KWHKWP, 3) KWHKWP, round(money, 3) money, round(todaymoney, 3) todaymoney, round(totalmoney, 3) totalmoney,
|
||||
round(carbon, 3) carbon, round(todayCarbon, 3) todayCarbon, round(totalCarbon, 3) totalCarbon
|
||||
from power_station_history_hour
|
||||
where siteID = @siteID and left(`TIMESTAMP`, 10) = '" + reportDate + "' ";
|
||||
List<web_station_hour> ds = conn.Query<web_station_hour>(sql, new { siteID = siteID.Substring(0, 9) }).AsList<web_station_hour>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
}
|
||||
@ -113,7 +115,7 @@ namespace solarApp.Service
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') reportdate, siteid, round(TODAYKWH, 2) TODAYKWH, round(TOTALKWH, 2) TOTALKWH,
|
||||
round(PR, 3) PR, round(KWHKWP, 3) KWHKWP, money
|
||||
round(PR, 3) PR, round(KWHKWP, 3) KWHKWP, money
|
||||
from power_station_history_day where left(`TIMESTAMP`, 10) between @date1 and @date2 and siteid = @siteID";
|
||||
List<web_station_hour> ds = conn.Query<web_station_hour>(sql, new { date1 = date1, date2 = date2 , siteID = siteID}).AsList<web_station_hour>();
|
||||
conn.Close();
|
||||
|
||||
@ -12,211 +12,240 @@ namespace solarApp.Service
|
||||
public class procInvSvc
|
||||
{
|
||||
string Connection1 = ConfigurationManager.ConnectionStrings["mySql"].ConnectionString;
|
||||
/// <summary>
|
||||
/// 每小時平均值 inverter 原始資料 - hour
|
||||
/// </summary>
|
||||
/// <param name="reportDate"></param>
|
||||
/// <param name="invID"></param>
|
||||
/// <returns></returns>
|
||||
public List<raw_inv_hour> proc_Inv_hour(string reportDate)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
//string sql = @" select a.reportdate, a.inverterid, a.KWH, b.TODAYKWH, b.TOTALKWH, b.PR, a.count from
|
||||
// (
|
||||
// select left(reportdate, 13)reportdate, inverterid
|
||||
// ,round((sum(WH)/1000), 2) KWH, count(*) count
|
||||
// from v_inv_temp
|
||||
// where left(reportdate, 10) = '" + reportDate + "' and inverterid = '" + invID + @"'
|
||||
|
||||
// group by left(reportdate, 13), inverterid
|
||||
// )a join (
|
||||
// select reportdate, round(TODAYKWH, 2) TODAYKWH, round(TOTALKWH, 2) TOTALKWH, inverterid, round(PR, 2) PR
|
||||
// from v_inv_temp
|
||||
// where left(reportdate, 10) = '" + reportDate + @"' and right(reportdate, 2) = '55' and inverterid = '" + invID + @"'
|
||||
// )b on a.reportdate = left(b.reportdate, 13) and a.inverterid = b.inverterid ";
|
||||
string sql = @"
|
||||
INSERT INTO `solar_master`.`inverter_history_hour`(`PowerStationId`, `INVERTERID`, `TIMESTAMP`, Irradiance, `AC1V`, `AC1A`, `AC1W`, `AC1F`, `AC1WH`, `AC2V`, `AC2A`, `AC2W`, `AC2F`, `AC2WH`,
|
||||
`AC3V`, `AC3A`, `AC3W`, `AC3F`, `AC3WH`, `DC1V`, `DC1A`, `DC1W`, `DC1WH`, `DC2V`, `DC2A`, `DC2W`, `DC2WH`, `DC3V`, `DC3A`, `DC3W`,
|
||||
`DC3WH`, `DC4V`, `DC4A`, `DC4W`, `DC4WH`, `DC5V`, `DC5A`, `DC5W`, `DC5WH`, `PR`, `RA1`, `RA2`, `RA3`, `RA4`, `RA5`, `ACKW`, `KWH`, `TODAYKWH`, `TOTALKWH`, `KWHKWP`)
|
||||
SELECT 1 powerStationID, a.INVERTERID, concat(a.reportDate,':00:00') reportDate, IFNULL(Irradiance, 0), a.AC1V, a.AC1A, a.AC1W, a.AC1F, a.AC1WH, a.AC2V, a.AC2A, a.AC2W, a.AC2F, a.AC2WH,
|
||||
a.AC3V, a.AC3A, a.AC3W, a.AC3F, a.AC3WH, a.DC1V, a.DC1A, a.DC1W, a.DC1WH, a.DC2V, a.DC2A, a.DC2W, a.DC2WH, a.DC3V, a.DC3A, a.DC3W,
|
||||
a.DC3WH, a.DC4V, a.DC4A, a.DC4W, a.DC4WH, a.DC5V, a.DC5A, a.DC5W, a.DC5WH, inv_pr.PR, a.RA1, a.RA2, a.RA3, a.RA4, a.RA5, a.KWH, a.TODAYKWH, a.TOTALKWH,
|
||||
i.Capacity, (a.KWH / i.Capacity) AS KWHKWP
|
||||
from
|
||||
( -- 取得該時間區間的KWH
|
||||
SELECT FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d %H') AS reportDate, a.INVERTERID,
|
||||
AVG(a.AC1V) AS AC1V, AVG(a.AC1A) AS AC1A, SUM(a.AC1W) AS AC1W,
|
||||
AVG(a.AC1F) AS AC1F, SUM(a.AC1WH) AS AC1WH, AVG(a.AC2V) AS AC2V,
|
||||
AVG(a.AC2A) AS AC2A, SUM(a.AC2W) AS AC2W, AVG(a.AC2F) AS AC2F,
|
||||
SUM(a.AC2WH) AS AC2WH,AVG(a.AC3V) AS AC3V, AVG(a.AC3A) AS AC3A,
|
||||
SUM(a.AC3W) AS AC3W, AVG(a.AC3F) AS AC3F, SUM(a.AC3WH) AS AC3WH,
|
||||
AVG(a.DC1V) AS DC1V, AVG(a.DC1A) AS DC1A, SUM(a.DC1W) AS DC1W,
|
||||
SUM(a.DC1WH) AS DC1WH, AVG(a.DC2V) AS DC2V, AVG(a.DC2A) AS DC2A,
|
||||
SUM(a.DC2W) AS DC2W, SUM(a.DC2WH) AS DC2WH, AVG(a.DC3V) AS DC3V,
|
||||
AVG(a.DC3A) AS DC3A, AVG(a.DC3W) AS DC3W, AVG(a.DC3WH) AS DC3WH,
|
||||
AVG(a.DC4V) AS DC4V, AVG(a.DC4A) AS DC4A, SUM(a.DC4W) AS DC4W,
|
||||
SUM(a.DC4WH) AS DC4WH,AVG(a.DC5V) AS DC5V, AVG(a.DC5A) AS DC5A,
|
||||
SUM(a.DC5W) AS DC5W, SUM(a.DC5WH) AS DC5WH, #inv_pr.PR AS PR,
|
||||
AVG(a.RA1) AS RA1, AVG(a.RA2) AS RA2, AVG(a.RA3) AS RA3,
|
||||
AVG(a.RA4) AS RA4, AVG(a.RA5) AS RA5, # a.KWH,
|
||||
MAX(a.TODAYKWH) AS TODAYKWH, MAX(a.TOTALKWH) AS TOTALKWH, (SUM(a.WH)/1000) AS KWH
|
||||
FROM s02202000101_inv a
|
||||
WHERE left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = '2021-08-04'
|
||||
GROUP BY left(FROM_UNIXTIME(a.TIMESTAMP/ 1000, '%Y-%m-%d %H'), 13), a.INVERTERID
|
||||
) a
|
||||
LEFT JOIN( -- 取得整點值PR
|
||||
SELECT FROM_UNIXTIME(inv.TIMESTAMP / 1000, '%Y-%m-%d %H') AS reportDate, inv.INVERTERID, inv.PR
|
||||
FROM s02202000101_inv inv
|
||||
WHERE left(DATE_FORMAT(FROM_UNIXTIME(inv.TIMESTAMP / 1000), '%Y-%m-%d %H:%i'), 10) = '2021-08-04'
|
||||
and right(DATE_FORMAT(FROM_UNIXTIME(inv.TIMESTAMP / 1000), '%Y-%m-%d %H:%i'), 2) = '55'
|
||||
GROUP BY FROM_UNIXTIME(inv.TIMESTAMP/ 1000, '%Y-%m-%d %H'), inv.INVERTERID
|
||||
) inv_pr
|
||||
ON a.reportDate = inv_pr.reportDate AND a.INVERTERID = inv_pr.INVERTERID
|
||||
-- 取得逆變器容量
|
||||
LEFT JOIN solar_com0002.inverter i ON a.INVERTERID = i.InverterId
|
||||
-- 取日照度 ----------------------臨時做法
|
||||
left join (
|
||||
select FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d %H') AS reportDate, round(avg(SENSORAVG01),3) Irradiance
|
||||
from s02202000101_sensoravg a
|
||||
where left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = '2021-08-04' and SENSORAVG01 <> 0
|
||||
group by FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d %H')
|
||||
)irr on a.reportDate = irr.reportDate ;";
|
||||
List<raw_inv_hour> ds = conn.Query<raw_inv_hour>(sql).AsList<raw_inv_hour>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
public string _siteID { get; set; }
|
||||
public string _siteDB { get; set; }
|
||||
public string _siteID01 { get; set; }
|
||||
public string _date1 { get; set; }
|
||||
public string _date2 { get; set; }
|
||||
public string _powerStationID { get; set; }
|
||||
|
||||
|
||||
public bool clearData()
|
||||
{
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
#region 取得 PowerStationID
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select id as PowerStationID from solar_master.power_station where `code` = @siteID";
|
||||
var ds = conn.Query<string>(sql, new { siteID = _siteID }).AsList<string>();
|
||||
_powerStationID = (ds.Count > 0) ? ds[0][0].ToString() : "0";
|
||||
conn.Close();
|
||||
}
|
||||
#endregion
|
||||
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"
|
||||
delete from inverter_history_15min where powerstationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = @date1;
|
||||
delete from inverter_history_hour where powerstationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = @date1;
|
||||
delete from inverter_history_day where powerstationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = @date1;
|
||||
delete from inverter_history_month where powerstationID = @powerStationID and left(`TIMESTAMP`, 7) = left(@date1, 7) ;";
|
||||
var ds = conn.Execute(sql, new { date1 = _date1, PowerStationID = _powerStationID });
|
||||
conn.Close();
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<raw_inv_hour> proc_Inv_day(string reportDate)
|
||||
public bool archiveData()
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"
|
||||
INSERT INTO `solar_master`.`inverter_history_day`(`PowerStationId`, `INVERTERID`, `TIMESTAMP`, Irradiance, `AC1V`, `AC1A`, `AC1W`, `AC1F`, `AC1WH`, `AC2V`, `AC2A`, `AC2W`, `AC2F`, `AC2WH`,
|
||||
`AC3V`, `AC3A`, `AC3W`, `AC3F`, `AC3WH`, `DC1V`, `DC1A`, `DC1W`, `DC1WH`, `DC2V`, `DC2A`, `DC2W`, `DC2WH`, `DC3V`, `DC3A`, `DC3W`,
|
||||
`DC3WH`, `DC4V`, `DC4A`, `DC4W`, `DC4WH`, `DC5V`, `DC5A`, `DC5W`, `DC5WH`, `PR`, `RA1`, `RA2`, `RA3`, `RA4`, `RA5`, `ACKW`, `KWH`, `TODAYKWH`, `TOTALKWH`, `KWHKWP`)
|
||||
|
||||
SELECT 1 powerStationID, a.INVERTERID, concat(a.reportDate,':00:00') reportDate, IFNULL(Irradiance, 0), a.AC1V, a.AC1A, a.AC1W, a.AC1F, a.AC1WH, a.AC2V, a.AC2A, a.AC2W, a.AC2F, a.AC2WH,
|
||||
a.AC3V, a.AC3A, a.AC3W, a.AC3F, a.AC3WH, a.DC1V, a.DC1A, a.DC1W, a.DC1WH, a.DC2V, a.DC2A, a.DC2W, a.DC2WH, a.DC3V, a.DC3A, a.DC3W,
|
||||
a.DC3WH, a.DC4V, a.DC4A, a.DC4W, a.DC4WH, a.DC5V, a.DC5A, a.DC5W, a.DC5WH, a.PR, a.RA1, a.RA2, a.RA3, a.RA4, a.RA5, a.KWH, a.TODAYKWH, a.TOTALKWH,
|
||||
i.Capacity, (a.KWH / i.Capacity) AS KWHKWP
|
||||
from
|
||||
( -- 取得該時間區間的KWH
|
||||
SELECT FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d') AS reportDate, a.INVERTERID,
|
||||
AVG(a.AC1V) AS AC1V, AVG(a.AC1A) AS AC1A, SUM(a.AC1W) AS AC1W,
|
||||
AVG(a.AC1F) AS AC1F, SUM(a.AC1WH) AS AC1WH, AVG(a.AC2V) AS AC2V,
|
||||
AVG(a.AC2A) AS AC2A, SUM(a.AC2W) AS AC2W, AVG(a.AC2F) AS AC2F,
|
||||
SUM(a.AC2WH) AS AC2WH,AVG(a.AC3V) AS AC3V, AVG(a.AC3A) AS AC3A,
|
||||
SUM(a.AC3W) AS AC3W, AVG(a.AC3F) AS AC3F, SUM(a.AC3WH) AS AC3WH,
|
||||
AVG(a.DC1V) AS DC1V, AVG(a.DC1A) AS DC1A, SUM(a.DC1W) AS DC1W,
|
||||
SUM(a.DC1WH) AS DC1WH, AVG(a.DC2V) AS DC2V, AVG(a.DC2A) AS DC2A,
|
||||
SUM(a.DC2W) AS DC2W, SUM(a.DC2WH) AS DC2WH, AVG(a.DC3V) AS DC3V,
|
||||
AVG(a.DC3A) AS DC3A, AVG(a.DC3W) AS DC3W, AVG(a.DC3WH) AS DC3WH,
|
||||
AVG(a.DC4V) AS DC4V, AVG(a.DC4A) AS DC4A, SUM(a.DC4W) AS DC4W,
|
||||
SUM(a.DC4WH) AS DC4WH,AVG(a.DC5V) AS DC5V, AVG(a.DC5A) AS DC5A,
|
||||
SUM(a.DC5W) AS DC5W, SUM(a.DC5WH) AS DC5WH, #inv_pr.PR AS PR,
|
||||
AVG(a.RA1) AS RA1, AVG(a.RA2) AS RA2, AVG(a.RA3) AS RA3,
|
||||
AVG(a.RA4) AS RA4, AVG(a.RA5) AS RA5, # a.KWH,
|
||||
AVG(a.PR) as PR,
|
||||
MAX(a.TODAYKWH) AS TODAYKWH, MAX(a.TOTALKWH) AS TOTALKWH, (SUM(a.WH)/1000) AS KWH
|
||||
FROM solar_com0002.s02202000101_inv a
|
||||
WHERE left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = '2021-08-04'
|
||||
GROUP BY left(FROM_UNIXTIME(a.TIMESTAMP/ 1000, '%Y-%m-%d'), 10), a.INVERTERID
|
||||
) a
|
||||
-- LEFT JOIN( -- 取得整點值PR
|
||||
-- SELECT FROM_UNIXTIME(inv.TIMESTAMP / 1000, '%Y-%m-%d') AS reportDate, inv.INVERTERID, inv.PR
|
||||
-- FROM s02202000101_inv inv
|
||||
-- WHERE left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = '2021-08-04'
|
||||
-- and right(DATE_FORMAT(FROM_UNIXTIME(inv.TIMESTAMP / 1000), '%Y-%m-%d %H:%i'), 2) = '55'
|
||||
-- GROUP BY FROM_UNIXTIME(inv.TIMESTAMP/ 1000, '%Y-%m-%d %H'), inv.INVERTERID
|
||||
-- ) inv_pr
|
||||
-- ON a.reportDate = inv_pr.reportDate AND a.INVERTERID = inv_pr.INVERTERID
|
||||
-- 取得逆變器容量
|
||||
LEFT JOIN solar_com0002.inverter i ON a.INVERTERID = i.InverterId
|
||||
-- 取日照度 ----------------------臨時做法
|
||||
left join (
|
||||
select FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d') AS reportDate, round(avg(SENSORAVG01),3) Irradiance
|
||||
from s02202000101_sensoravg a
|
||||
where left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = '2021-08-04' and SENSORAVG01 <> 0
|
||||
group by FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d')
|
||||
)irr on a.reportDate = irr.reportDate ;";
|
||||
List<raw_inv_hour> ds = conn.Query<raw_inv_hour>(sql).AsList<raw_inv_hour>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
clearData();
|
||||
insert_inv();
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<raw_inv_hour> proc_station_hour(string reportDate)
|
||||
bool insert_inv()
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"
|
||||
INSERT INTO `solar_master`.`power_station_history_hour`(`PowerStationId`, `TIMESTAMP`, `SITEID`, `SITETYPE`, `KWH`, `TODAYKWH`, `TOTALKWH`, `KWHKWP`, `PR`, `MP`, `SOLARHOUR`, `MONEY`, `TODAYMONEY`, `TOTALMONEY`, `CARBON`, `TODAYCARBON`, `TOTALCARBON`)
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string ss = @"SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY,',''));";
|
||||
conn.Execute(ss);
|
||||
|
||||
select 1 PowerStationId, concat(FROM_UNIXTIME(`TIMESTAMP`/1000, '%Y-%m-%d %H'), ':00:00') reportdate, siteid, 0 SITETYPE, round((sum(KWH)), 2) KWH, round((max(TODAYKWH)), 2) TODAYKWH, round((max(TOTALKWH)), 2) TOTALKWH, round((max(KWHKWP)), 2) KWHKWP, round((max(PR)), 2) PR, 0 as MP, round((max(SOLARHOUR)), 2) SOLARHOUR,
|
||||
0, 0 , 0, 0, 0 , 0
|
||||
from solar_com0002.s02202000101_station
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000, '%Y-%m-%d') = '2021-08-04'
|
||||
group by siteid, FROM_UNIXTIME(`TIMESTAMP`/1000, '%Y-%m-%d %H')";
|
||||
List<raw_inv_hour> ds = conn.Query<raw_inv_hour>(sql).AsList<raw_inv_hour>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
#region 15 min
|
||||
string sql = @"
|
||||
INSERT INTO solar_master.inverter_history_15min( PowerStationId, TIMESTAMP, INVERTERID, KWH, TODAYKWH, KWHKWP)
|
||||
select PowerStationId, reportdate, a.inverterid, KWH, TODAYKWH, round((kwh/capacity), 3) kwpkwp from
|
||||
(
|
||||
select @PowerStationId PowerStationId, CONCAT(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H'), ':00:00')reportdate, inverterid,
|
||||
round((sum(WH)/1000), 3) KWH, round(max(TODAYKWH), 3) TODAYKWH
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_inv
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @date1 and right(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') , 2) between '00' and '10'
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H') , inverterid
|
||||
union
|
||||
select @PowerStationId PowerStationId, CONCAT(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H'), ':15:00')reportdate, inverterid,
|
||||
round((sum(WH)/1000), 3) KWH, round(max(TODAYKWH), 3) TODAYKWH
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_inv
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @date1 and right(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') , 2) between '15' and '25'
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H') , inverterid
|
||||
union
|
||||
select @PowerStationId PowerStationId, CONCAT(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H'), ':30:00')reportdate, inverterid,
|
||||
round((sum(WH)/1000), 3) KWH, round(max(TODAYKWH), 3) TODAYKWH
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_inv
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @date1 and right(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') , 2) between '30' and '40'
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H') , inverterid
|
||||
union
|
||||
select @PowerStationId PowerStationId, CONCAT(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H'), ':45:00')reportdate, inverterid,
|
||||
round((sum(WH)/1000), 3) KWH, round(max(TODAYKWH), 3) TODAYKWH
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_inv
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @date1 and right(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') , 2) between '45' and '55'
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H') , inverterid
|
||||
) a join " + _siteDB + @".inverter b on a.inverterid = b.inverterid";
|
||||
var ds = conn.Execute(sql, new { date1 = _date1, PowerStationID = _powerStationID });
|
||||
#endregion
|
||||
|
||||
#region hour
|
||||
sql = @"
|
||||
insert into solar_master.inverter_history_hour (PowerStationId, INVERTERID, TIMESTAMP, Irradiance, AC1V, AC1A, AC1W, AC1F, AC1WH, AC2V, AC2A, AC2W, AC2F, AC2WH,
|
||||
AC3V, AC3A, AC3W, AC3F, AC3WH, DC1V, DC1A, DC1W, DC1WH, DC2V, DC2A, DC2W, DC2WH, DC3V, DC3A, DC3W, DC3WH, DC4V, DC4A, DC4W, DC4WH, DC5V, DC5A, DC5W, DC5WH,
|
||||
PR, RA1, RA2, RA3, RA4, RA5, DCKW, ACKW, KWH, TODAYKWH, TOTALKWH, KWHKWP)
|
||||
|
||||
SELECT @powerstationID powerStationID, a.INVERTERID, a.reportDate, IFNULL(Irradiance, 0), a.AC1V, a.AC1A, a.AC1W, a.AC1F, a.AC1WH, a.AC2V, a.AC2A, a.AC2W, a.AC2F, a.AC2WH,
|
||||
a.AC3V, a.AC3A, a.AC3W, a.AC3F, a.AC3WH, a.DC1V, a.DC1A, a.DC1W, a.DC1WH, a.DC2V, a.DC2A, a.DC2W, a.DC2WH, a.DC3V, a.DC3A, a.DC3W,
|
||||
a.DC3WH, a.DC4V, a.DC4A, a.DC4W, a.DC4WH, a.DC5V, a.DC5A, a.DC5W, a.DC5WH,
|
||||
inv_pr.PR, a.RA1, a.RA2, a.RA3, a.RA4, a.RA5, ((DC1W + DC2W + DC3W + DC4W+ DC5W) / 1000) DCKW,
|
||||
((AC1W + AC2W + AC3W) / 1000) ACKW, a.KWH, a.TODAYKWH, a.TOTALKWH, (a.KWH / i.Capacity) AS KWHKWP
|
||||
from
|
||||
( -- 取得該時間區間的KWH
|
||||
SELECT concat(FROM_UNIXTIME(a.TIMESTAMP/1000,'%Y-%m-%d %H'), ':00:00') reportDate, a.INVERTERID,
|
||||
AVG(a.AC1V) AS AC1V, AVG(a.AC1A) AS AC1A, SUM(a.AC1W) AS AC1W, AVG(a.AC1F) AS AC1F, SUM(a.AC1WH) AS AC1WH, AVG(a.AC2V) AS AC2V,
|
||||
AVG(a.AC2A) AS AC2A, SUM(a.AC2W) AS AC2W, AVG(a.AC2F) AS AC2F, SUM(a.AC2WH) AS AC2WH,AVG(a.AC3V) AS AC3V, AVG(a.AC3A) AS AC3A,
|
||||
SUM(a.AC3W) AS AC3W, AVG(a.AC3F) AS AC3F, SUM(a.AC3WH) AS AC3WH, AVG(a.DC1V) AS DC1V, AVG(a.DC1A) AS DC1A, SUM(a.DC1W) AS DC1W,
|
||||
SUM(a.DC1WH) AS DC1WH, AVG(a.DC2V) AS DC2V, AVG(a.DC2A) AS DC2A, SUM(a.DC2W) AS DC2W, SUM(a.DC2WH) AS DC2WH, AVG(a.DC3V) AS DC3V,
|
||||
AVG(a.DC3A) AS DC3A, AVG(a.DC3W) AS DC3W, AVG(a.DC3WH) AS DC3WH, AVG(a.DC4V) AS DC4V, AVG(a.DC4A) AS DC4A, SUM(a.DC4W) AS DC4W,
|
||||
SUM(a.DC4WH) AS DC4WH,AVG(a.DC5V) AS DC5V, AVG(a.DC5A) AS DC5A, SUM(a.DC5W) AS DC5W, SUM(a.DC5WH) AS DC5WH,
|
||||
AVG(a.RA1) AS RA1, AVG(a.RA2) AS RA2, AVG(a.RA3) AS RA3,
|
||||
AVG(a.RA4) AS RA4, AVG(a.RA5) AS RA5, MAX(a.TODAYKWH) AS TODAYKWH, MAX(a.TOTALKWH) AS TOTALKWH, (SUM(a.WH)/1000) AS KWH
|
||||
FROM " + _siteDB + ".s" + _siteID01 + @"_inv a
|
||||
WHERE left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = @date1
|
||||
GROUP BY left(FROM_UNIXTIME(a.TIMESTAMP/ 1000, '%Y-%m-%d %H'), 13), a.INVERTERID
|
||||
) a
|
||||
LEFT JOIN( -- 取得整點值PR
|
||||
SELECT concat(FROM_UNIXTIME(inv.TIMESTAMP/1000,'%Y-%m-%d %H'), ':00:00') AS reportDate, inv.INVERTERID, inv.PR
|
||||
FROM " + _siteDB + ".s" + _siteID01 + @"_inv inv
|
||||
WHERE left(DATE_FORMAT(FROM_UNIXTIME(inv.TIMESTAMP / 1000), '%Y-%m-%d %H:%i'), 10) = @date1
|
||||
and right(DATE_FORMAT(FROM_UNIXTIME(inv.TIMESTAMP / 1000), '%Y-%m-%d %H:%i'), 2) = '55'
|
||||
GROUP BY FROM_UNIXTIME(inv.TIMESTAMP/ 1000, '%Y-%m-%d %H'), inv.INVERTERID
|
||||
) inv_pr
|
||||
ON a.reportDate = inv_pr.reportDate AND a.INVERTERID = inv_pr.INVERTERID
|
||||
-- 取得逆變器容量
|
||||
LEFT JOIN " + _siteDB + @".inverter i ON a.INVERTERID = i.InverterId
|
||||
-- 取日照度 ---------------------
|
||||
left join (
|
||||
select concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d %H'), ':00:00') AS reportDate, Irradiance
|
||||
from sensor_history_hour a
|
||||
where powerstationID = @powerstationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = @date1
|
||||
)irr on a.reportDate = irr.reportDate
|
||||
order by a.INVERTERID, a.reportDate;";
|
||||
int ct = conn.Execute(sql, new { date1 = _date1, PowerStationID = _powerStationID });
|
||||
|
||||
#endregion hour
|
||||
|
||||
#region day
|
||||
sql = @"
|
||||
INSERT INTO solar_master.inverter_history_day(PowerStationId, INVERTERID, TIMESTAMP, Irradiance, AC1V, AC1A, AC1W, AC1F, AC1WH, AC2V, AC2A, AC2W, AC2F, AC2WH,
|
||||
AC3V, AC3A, AC3W, AC3F, AC3WH, DC1V, DC1A, DC1W, DC1WH, DC2V, DC2A, DC2W, DC2WH, DC3V, DC3A, DC3W,
|
||||
DC3WH, DC4V, DC4A, DC4W, DC4WH, DC5V, DC5A, DC5W, DC5WH, PR, RA1, RA2, RA3, RA4, RA5, `DCKW`, `ACKW`, KWH, TODAYKWH, TOTALKWH, KWHKWP)
|
||||
|
||||
SELECT @powerStationID powerStationID, a.INVERTERID, concat(a.reportDate,' 00:00:00') reportDate, IFNULL(Irradiance, 0), a.AC1V, a.AC1A, a.AC1W, a.AC1F, a.AC1WH, a.AC2V, a.AC2A, a.AC2W, a.AC2F, a.AC2WH,
|
||||
a.AC3V, a.AC3A, a.AC3W, a.AC3F, a.AC3WH, a.DC1V, a.DC1A, a.DC1W, a.DC1WH, a.DC2V, a.DC2A, a.DC2W, a.DC2WH, a.DC3V, a.DC3A, a.DC3W,
|
||||
a.DC3WH, a.DC4V, a.DC4A, a.DC4W, a.DC4WH, a.DC5V, a.DC5A, a.DC5W, a.DC5WH, a.PR, a.RA1, a.RA2, a.RA3, a.RA4, a.RA5,
|
||||
DCKW, ACKW, a.KWH, a.TODAYKWH, a.TOTALKWH, (a.KWH / i.Capacity) AS KWHKWP
|
||||
from
|
||||
( -- 取得該時間區間的KWH
|
||||
SELECT DATE_FORMAT(a.TIMESTAMP, '%Y-%m-%d') AS reportDate, a.INVERTERID,
|
||||
AVG(a.AC1V) AS AC1V, AVG(a.AC1A) AS AC1A, SUM(a.AC1W) AS AC1W, AVG(a.AC1F) AS AC1F, SUM(a.AC1WH) AS AC1WH, AVG(a.AC2V) AS AC2V,
|
||||
AVG(a.AC2A) AS AC2A, SUM(a.AC2W) AS AC2W, AVG(a.AC2F) AS AC2F, SUM(a.AC2WH) AS AC2WH,AVG(a.AC3V) AS AC3V, AVG(a.AC3A) AS AC3A,
|
||||
SUM(a.AC3W) AS AC3W, AVG(a.AC3F) AS AC3F, SUM(a.AC3WH) AS AC3WH, AVG(a.DC1V) AS DC1V, AVG(a.DC1A) AS DC1A, SUM(a.DC1W) AS DC1W,
|
||||
SUM(a.DC1WH) AS DC1WH, AVG(a.DC2V) AS DC2V, AVG(a.DC2A) AS DC2A, SUM(a.DC2W) AS DC2W, SUM(a.DC2WH) AS DC2WH, AVG(a.DC3V) AS DC3V,
|
||||
AVG(a.DC3A) AS DC3A, AVG(a.DC3W) AS DC3W, AVG(a.DC3WH) AS DC3WH, AVG(a.DC4V) AS DC4V, AVG(a.DC4A) AS DC4A, SUM(a.DC4W) AS DC4W,
|
||||
SUM(a.DC4WH) AS DC4WH,AVG(a.DC5V) AS DC5V, AVG(a.DC5A) AS DC5A, SUM(a.DC5W) AS DC5W, SUM(a.DC5WH) AS DC5WH, max(PR) AS PR,
|
||||
AVG(a.RA1) AS RA1, AVG(a.RA2) AS RA2, AVG(a.RA3) AS RA3, AVG(a.RA4) AS RA4, AVG(a.RA5) AS RA5, avg(DCKW) as DCKW, avg(ACKW) as ACKW,
|
||||
MAX(a.TODAYKWH) AS TODAYKWH, MAX(a.TOTALKWH) AS TOTALKWH, SUM(a.KWH) AS KWH
|
||||
FROM solar_master.inverter_history_hour a
|
||||
WHERE powerstationID = @powerstationID and DATE_FORMAT(a.TIMESTAMP, '%Y-%m-%d') = @date1
|
||||
GROUP BY DATE_FORMAT(a.TIMESTAMP, '%Y-%m-%d'), a.INVERTERID
|
||||
) a
|
||||
LEFT JOIN " + _siteDB + @".inverter i ON a.INVERTERID = i.InverterId
|
||||
-- 取日照度 ----------------------
|
||||
left join (
|
||||
select DATE_FORMAT(a.TIMESTAMP, '%Y-%m-%d') AS reportDate, Irradiance
|
||||
from sensor_history_day a
|
||||
where powerstationID = @powerstationID and DATE_FORMAT(a.TIMESTAMP, '%Y-%m-%d') = @date1 and Irradiance <> 0 limit 1
|
||||
)irr on a.reportDate = irr.reportDate ;";
|
||||
conn.Execute(sql, new { date1 = _date1, PowerStationID = _powerStationID });
|
||||
#endregion day
|
||||
|
||||
#region month
|
||||
sql = @"
|
||||
delete from inverter_history_month where powerstationID = @powerStationID and left(`TIMESTAMP`, 7) = left(@date1, 7) ;
|
||||
|
||||
INSERT INTO solar_master.inverter_history_month (PowerStationId, INVERTERID, TIMESTAMP, Irradiance, AC1V, AC1A, AC1W, AC1F, AC1WH, AC2V, AC2A, AC2W, AC2F, AC2WH,
|
||||
AC3V, AC3A, AC3W, AC3F, AC3WH, DC1V, DC1A, DC1W, DC1WH, DC2V, DC2A, DC2W, DC2WH, DC3V, DC3A, DC3W,
|
||||
DC3WH, DC4V, DC4A, DC4W, DC4WH, DC5V, DC5A, DC5W, DC5WH, PR, RA1, RA2, RA3, RA4, RA5, `DCKW`, `ACKW`, KWH, TODAYKWH, TOTALKWH, KWHKWP)
|
||||
|
||||
SELECT @powerStationID powerStationID, a.INVERTERID, concat(a.reportDate,'-01 00:00:00') reportDate, IFNULL(Irradiance, 0), a.AC1V, a.AC1A, a.AC1W, a.AC1F, a.AC1WH, a.AC2V, a.AC2A, a.AC2W, a.AC2F, a.AC2WH,
|
||||
a.AC3V, a.AC3A, a.AC3W, a.AC3F, a.AC3WH, a.DC1V, a.DC1A, a.DC1W, a.DC1WH, a.DC2V, a.DC2A, a.DC2W, a.DC2WH, a.DC3V, a.DC3A, a.DC3W,
|
||||
a.DC3WH, a.DC4V, a.DC4A, a.DC4W, a.DC4WH, a.DC5V, a.DC5A, a.DC5W, a.DC5WH, a.PR, a.RA1, a.RA2, a.RA3, a.RA4, a.RA5, DCKW, ACKW, a.KWH, a.TODAYKWH, a.TOTALKWH,
|
||||
(a.KWH / i.Capacity) AS KWHKWP
|
||||
from
|
||||
( -- 取得該時間區間的KWH
|
||||
SELECT DATE_FORMAT(a.TIMESTAMP, '%Y-%m') AS reportDate, a.INVERTERID,
|
||||
AVG(a.AC1V) AS AC1V, AVG(a.AC1A) AS AC1A, SUM(a.AC1W) AS AC1W, AVG(a.AC1F) AS AC1F, SUM(a.AC1WH) AS AC1WH, AVG(a.AC2V) AS AC2V,
|
||||
AVG(a.AC2A) AS AC2A, SUM(a.AC2W) AS AC2W, AVG(a.AC2F) AS AC2F, SUM(a.AC2WH) AS AC2WH,AVG(a.AC3V) AS AC3V, AVG(a.AC3A) AS AC3A,
|
||||
SUM(a.AC3W) AS AC3W, AVG(a.AC3F) AS AC3F, SUM(a.AC3WH) AS AC3WH, AVG(a.DC1V) AS DC1V, AVG(a.DC1A) AS DC1A, SUM(a.DC1W) AS DC1W,
|
||||
SUM(a.DC1WH) AS DC1WH, AVG(a.DC2V) AS DC2V, AVG(a.DC2A) AS DC2A, SUM(a.DC2W) AS DC2W, SUM(a.DC2WH) AS DC2WH, AVG(a.DC3V) AS DC3V,
|
||||
AVG(a.DC3A) AS DC3A, AVG(a.DC3W) AS DC3W, AVG(a.DC3WH) AS DC3WH, AVG(a.DC4V) AS DC4V, AVG(a.DC4A) AS DC4A, SUM(a.DC4W) AS DC4W,
|
||||
SUM(a.DC4WH) AS DC4WH,AVG(a.DC5V) AS DC5V, AVG(a.DC5A) AS DC5A, SUM(a.DC5W) AS DC5W, SUM(a.DC5WH) AS DC5WH, max(PR) AS PR,
|
||||
AVG(a.RA1) AS RA1, AVG(a.RA2) AS RA2, AVG(a.RA3) AS RA3, AVG(a.RA4) AS RA4, AVG(a.RA5) AS RA5, avg(DCKW) as DCKW, avg(ACKW) as ACKW,
|
||||
MAX(a.TODAYKWH) AS TODAYKWH, MAX(a.TOTALKWH) AS TOTALKWH, SUM(a.KWH) AS KWH
|
||||
FROM solar_master.inverter_history_day a
|
||||
WHERE powerstationID = @powerstationID and DATE_FORMAT(a.TIMESTAMP, '%Y-%m') = @date1
|
||||
GROUP BY DATE_FORMAT(a.TIMESTAMP, '%Y-%m'), a.INVERTERID
|
||||
) a
|
||||
LEFT JOIN " + _siteDB + @".inverter i ON a.INVERTERID = i.InverterId
|
||||
-- 取日照度 ----------------------
|
||||
left join (
|
||||
select DATE_FORMAT(a.TIMESTAMP, '%Y-%m') AS reportDate, Irradiance
|
||||
from sensor_history_month a
|
||||
where powerstationID = @powerstationID and DATE_FORMAT(a.TIMESTAMP, '%Y-%m') = @date1 and Irradiance <> 0
|
||||
)irr on a.reportDate = irr.reportDate ;";
|
||||
conn.Execute(sql, new { date1 = _date1.Substring(0, 7), PowerStationID = _powerStationID });
|
||||
#endregion month
|
||||
|
||||
conn.Close();
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
public List<raw_inv_hour> proc_station_day(string reportDate)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"
|
||||
insert into solar_master.power_station_history_day(`PowerStationId`, `TIMESTAMP`, `SITEID`, `SITETYPE`, `TODAYKWH`, `TOTALKWH`, `KWHKWP`, `PR`, `MP`, `SOLARHOUR`, `MONEY`, `TOTALMONEY`, `CARBON`, `TOTALCARBON`)
|
||||
|
||||
SELECT 1 as PowerStationId, FROM_UNIXTIME(s.TIMESTAMP/1000, '%Y-%m-%d %H') AS reportDate, s.SITEID, s.SITETYPE,
|
||||
s.TodayKWh, s.TotalKWH, s.KWHKWP, s.PR, s.MP, s.SolarHour, 0, 0, 0, 0
|
||||
FROM solar_com0002.s02202000101_station s
|
||||
WHERE DATE_FORMAT(FROM_UNIXTIME(s.TIMESTAMP/1000), '%Y-%m-%d') = '2021-08-04'
|
||||
ORDER BY TIMESTAMP DESC
|
||||
LIMIT 1 ";
|
||||
List<raw_inv_hour> ds = conn.Query<raw_inv_hour>(sql).AsList<raw_inv_hour>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public List<raw_inv_hour> proc_sensor_hour(string reportDate)
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"
|
||||
|
||||
INSERT INTO `solar_master`.`sensor_history_hour`(`PowerStationId`, `TIMESTAMP`, `Irradiance`, `Temperature`)
|
||||
|
||||
select a.PowerStationId, a.reportDate, ifnull(b.Irradiance, 0) Irradiance, a.temperature
|
||||
from
|
||||
(#溫度
|
||||
select 1 as PowerStationId, concat(FROM_UNIXTIME(`TIMESTAMP`/1000, '%Y-%m-%d %H'), ':00:00') AS reportDate,
|
||||
0 Irradiance, round(avg(SENSORAVG02),3) temperature
|
||||
from s02202000101_sensoravg a
|
||||
where left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = '2021-08-04'
|
||||
group by FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d %H')
|
||||
)a left join (
|
||||
#日照
|
||||
select 1 as PowerStationId, concat(FROM_UNIXTIME(`TIMESTAMP`/1000, '%Y-%m-%d %H'), ':00:00') AS reportDate,
|
||||
round(avg(SENSORAVG01),3) Irradiance, round(avg(SENSORAVG02),3) temperature
|
||||
from s02202000101_sensoravg a
|
||||
where left(FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d'), 10) = '2021-08-04' and SENSORAVG01 <> 0
|
||||
group by FROM_UNIXTIME(a.TIMESTAMP / 1000, '%Y-%m-%d %H')
|
||||
)b on a.reportDate = b.reportDate ;";
|
||||
List<raw_inv_hour> ds = conn.Query<raw_inv_hour>(sql).AsList<raw_inv_hour>();
|
||||
conn.Close();
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
362
solarApp/Service/procSensorSvc.cs
Normal file
362
solarApp/Service/procSensorSvc.cs
Normal file
@ -0,0 +1,362 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Dapper;
|
||||
using solarApp.Model;
|
||||
using System.Configuration;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace solarApp.Service
|
||||
{
|
||||
public class procSensorSvc
|
||||
{
|
||||
string Connection1 = ConfigurationManager.ConnectionStrings["mySql"].ConnectionString;
|
||||
|
||||
public string _siteID { get; set; }
|
||||
public string _siteDB { get; set; }
|
||||
public string _siteID01 { get; set; }
|
||||
public string _date1 { get; set; }
|
||||
public string _date2 { get; set; }
|
||||
public string _powerStationID { get; set; }
|
||||
|
||||
//public procSensorSvc(string siteDB, string siteID, string date1, string date2)
|
||||
//{
|
||||
// if (!string.IsNullOrEmpty(siteDB)) _siteDB = siteDB;
|
||||
// if (!string.IsNullOrEmpty(siteID)) _siteID = siteID.Substring(0, 9);
|
||||
// if (!string.IsNullOrEmpty(siteID)) _siteID01 = siteID;
|
||||
// if (!string.IsNullOrEmpty(_date1)) _date1 = date1;
|
||||
// if (!string.IsNullOrEmpty(_date2)) _date2 = date2;
|
||||
// #region 取得 PowerStationID
|
||||
// using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
// {
|
||||
// conn.Open();
|
||||
// string sql = @" select id as PowerStationID from solar_master.power_station where `code` = @siteID";
|
||||
// var ds = conn.Query<string>(sql, new { siteID = _siteID }).AsList<string>();
|
||||
// _powerStationID = (ds.Count > 0) ? ds[0][0].ToString() : "0";
|
||||
// conn.Close();
|
||||
// }
|
||||
// #endregion
|
||||
|
||||
// archiveData();
|
||||
//}
|
||||
|
||||
public bool archiveData() {
|
||||
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
clearData();
|
||||
insert_sensor();
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清除指定期間、指定電站的 Sensor hour、day、month 資料
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private bool clearData()
|
||||
{
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
#region 取得 PowerStationID
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select id as PowerStationID from solar_master.power_station where `code` = @siteID";
|
||||
var ds = conn.Query<string>(sql, new { siteID = _siteID }).AsList<string>();
|
||||
_powerStationID = (ds.Count > 0) ? ds[0][0].ToString() : "0";
|
||||
conn.Close();
|
||||
}
|
||||
#endregion
|
||||
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"delete from sensor_history_hour where left(`TIMESTAMP`, 10) between @date1 and @date2 and PowerStationID = @powerStationID;
|
||||
delete from sensor_history_day where left(`TIMESTAMP`, 10) between @date1 and @date2 and PowerStationID = @powerStationID;
|
||||
delete from sensor_history_month where left(`TIMESTAMP`, 7) between left(@date1, 7) and left(@date2, 7) and PowerStationID = @powerStationID;
|
||||
delete from sensoravg_history_hour where left(`TIMESTAMP`, 10) between @date1 and @date2 and PowerStationID = @powerStationID;
|
||||
delete from sensoravg_history_day where left(`TIMESTAMP`, 10) between @date1 and @date2 and PowerStationID = @powerStationID;
|
||||
delete from sensoravg_history_month where left(`TIMESTAMP`, 7) between left(@date1, 7) and left(@date2, 7) and PowerStationID = @powerStationID;";
|
||||
var ds = conn.Execute(sql, new { date1 = _date1, date2 = _date2, PowerStationID = _powerStationID });
|
||||
conn.Close();
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sensor 欄位需要平均時 欄位串接 (s1 + s2) / 2
|
||||
/// </summary>
|
||||
/// <param name="lstData"></param>
|
||||
/// <returns></returns>
|
||||
string ConcatColumn(List<sensor_model> lstData)
|
||||
{
|
||||
string ss = string.Empty; string result = string.Empty;
|
||||
if (lstData.Count > 0)
|
||||
{
|
||||
foreach (var item in lstData)
|
||||
{
|
||||
ss += (ss == string.Empty) ? item.colname : "+" + item.colname; // 2 個以上欄位需要相加
|
||||
}
|
||||
if (lstData.Count >= 2) result = "(" + ss + ") / " + lstData.Count.ToString(); // 2個以上 需要除以個數 (平均值)
|
||||
else
|
||||
result = ss;
|
||||
}
|
||||
else result = "0";
|
||||
return result;
|
||||
}
|
||||
bool insert_sensor()
|
||||
{
|
||||
bool result = false;
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
#region 取得 PowerStationID
|
||||
string sql = @" select id as PowerStationID from solar_master.power_station where `code` = @siteID";
|
||||
var ds = conn.Query<string>(sql, new { siteID = _siteID }).AsList<string>();
|
||||
_powerStationID = (ds.Count > 0) ? ds[0][0].ToString() : "0";
|
||||
|
||||
#endregion
|
||||
// init 關閉 group full column
|
||||
string ss = @"SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY,',''));";
|
||||
conn.Execute(ss);
|
||||
|
||||
#region 獲取 Sensor 類別
|
||||
//沒有被刪除、啟用中、狀態正常的 才可列入計算
|
||||
sql = @"select a.id, CONCAT( left(UID, 9) ,'01') SiteID, a.`name` sensorName, type, DBName, TableName, colname
|
||||
from " + _siteDB + @".device a
|
||||
where left(UID, 11) = @siteID and deleted = 0 and enabled = 1 and `status` = 1 ";
|
||||
List<sensor_model> ds_sensor = conn.Query<sensor_model>(sql, new { siteID = _siteID01 }).AsList<sensor_model>();
|
||||
|
||||
//欄位處理
|
||||
// { "Type":[
|
||||
// { "Name":"日照計","EName":"PYR"},
|
||||
// { "Name":"模組溫度計","EName":"MTR"},
|
||||
// { "Name":"環境溫度計","EName":"ETR"},
|
||||
// { "Name":"環境濕度計","EName":"EMM"},
|
||||
// { "Name":"風速計","EName":"VAN"},
|
||||
// { "Name":" 電表","EName":"PWR"}]}
|
||||
var irrlst = ds_sensor.FindAll(x => x.type.Contains("PYR"));
|
||||
var modelTemplst = ds_sensor.FindAll(x => x.type.Contains("MTR"));
|
||||
var envTemplst = ds_sensor.FindAll(x => x.type.Contains("ETR"));
|
||||
var humlst = ds_sensor.FindAll(x => x.type.Contains("EMM"));
|
||||
var windlst = ds_sensor.FindAll(x => x.type.Contains("VAN"));
|
||||
var dustlst = ds_sensor.FindAll(x => x.type.Contains("DST")); //需要新增於DB
|
||||
//var meterlst = ds_sensor.FindAll(x => x.type.Contains("PWR")); 電錶暫不處理
|
||||
string irrCol = string.Empty; string modelTempCol = string.Empty; string evnTempCol = string.Empty; string humCol = string.Empty; string windCol = string.Empty; string meterCol = string.Empty; string dustCol = string.Empty;
|
||||
irrCol = ConcatColumn(irrlst);//日照計
|
||||
modelTempCol = ConcatColumn(modelTemplst);
|
||||
evnTempCol = ConcatColumn(envTemplst);
|
||||
humCol = ConcatColumn(humlst);
|
||||
windCol = ConcatColumn(windlst);
|
||||
dustCol = ConcatColumn(dustlst);
|
||||
|
||||
string irrNot0 = string.Empty; // and 日照1 <> 0 and 日照2 <> 0
|
||||
# region 日照計需要過濾 0
|
||||
if (irrlst.Count > 0)
|
||||
{
|
||||
foreach (var item in irrlst)
|
||||
irrNot0 += " and " + item.colname + " <> 0 "; // and S1 <> 0 and S2 <> 0
|
||||
}
|
||||
#endregion
|
||||
|
||||
//電表
|
||||
|
||||
#endregion 獲取 Sensor 類別
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
#region hour
|
||||
sql = @"insert into sensor_history_hour( `PowerStationId`, `TIMESTAMP`, `Irradiance`, `Temperature`)
|
||||
select a.powerstationID, a.reportdate, ifnull(b.irrAvg, 0) irrAvg, a.modelTempAvg from
|
||||
(
|
||||
select @powerStationID powerstationID, FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') reportdate, round(avg(" + modelTempCol + @"), 2) modelTempAvg,
|
||||
round(avg(" + evnTempCol + @"), 2) envTempAvg, round(avg(" + humCol + @"), 2) humidityAvg, round(avg(" + windCol + @"), 2) windAvg,
|
||||
round(avg(" + dustCol + @"), 2) dustAvg
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_sensorAvg
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') between @date1 and @date2
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H')
|
||||
) a left join
|
||||
(
|
||||
select concat(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H'), ':00') reportdate, round(avg(" + irrCol + @"), 2) irrAvg
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_sensorAvg
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') between @date1 and @date2 " + irrNot0 + @" #需要過濾 0 的數值
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H')
|
||||
)b on a.reportdate = b.reportdate";
|
||||
//MySqlCommand cmd = new MySqlCommand(sql, conn);
|
||||
//cmd.Parameters()
|
||||
//cmd.ExecuteNonQuery();
|
||||
conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1, date2 = _date2 });
|
||||
#endregion hour
|
||||
|
||||
#region day
|
||||
sql = @"insert into sensor_history_day( `PowerStationId`, `TIMESTAMP`, `Irradiance`, `Temperature`)
|
||||
select a.powerstationID, a.reportdate, ifnull(b.Irradiance, 0) irrAvg, a.modelTempAvg from
|
||||
(
|
||||
select powerStationID , concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d'), ' 00:00') reportdate, round(avg(Temperature), 2) modelTempAvg
|
||||
from solar_master.sensor_history_hour
|
||||
where powerstationID = @powerstationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') between @date1 and @date2
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d')
|
||||
) a left join
|
||||
(
|
||||
select concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d'), ' 00:00') reportdate, round(avg(Irradiance), 2) Irradiance
|
||||
from solar_master.sensor_history_hour
|
||||
where powerstationID = @powerstationID
|
||||
and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') between @date1 and @date2 and Irradiance <> 0 #需要過濾 0 的數值
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d')
|
||||
)b on a.reportdate = b.reportdate";
|
||||
conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1, date2 = _date2 });
|
||||
#endregion day
|
||||
|
||||
#region month 如果跨月 會有2筆資料
|
||||
|
||||
sql = @"
|
||||
delete from sensor_history_month where left(`TIMESTAMP`, 7) between left(@date1, 7) and left(@date2, 7) and PowerStationID = @powerStationID;
|
||||
|
||||
insert into sensor_history_month( `PowerStationId`, `TIMESTAMP`, `Irradiance`, `Temperature`)
|
||||
select a.powerstationID, a.reportdate, ifnull(b.Irradiance, 0) irrAvg, a.modelTempAvg from
|
||||
(
|
||||
select powerStationID , concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m'), '-01 00:00') reportdate, round(avg(Temperature), 2) modelTempAvg
|
||||
from solar_master.sensor_history_day
|
||||
where powerstationID = @powerstationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m') between @date1 and @date2
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m')
|
||||
) a left join
|
||||
(
|
||||
select concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m'), '-01 00:00') reportdate, round(avg(Irradiance), 2) Irradiance
|
||||
from solar_master.sensor_history_day
|
||||
where powerstationID = @powerstationID
|
||||
and DATE_FORMAT(`TIMESTAMP`,'%Y-%m') between @date1 and @date2 and Irradiance <> 0 #需要過濾 0 的數值
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m')
|
||||
)b on a.reportdate = b.reportdate";
|
||||
conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1.Substring(0,7), date2 = _date2.Substring(0, 7) });
|
||||
#endregion month
|
||||
|
||||
#region Sensor 1~50 hour
|
||||
sql = @"
|
||||
INSERT INTO solar_master.sensoravg_history_hour(PowerStationId, `TIMESTAMP`, SENSORAVG01, SENSORAVG02, SENSORAVG03, SENSORAVG04, SENSORAVG05, SENSORAVG06, SENSORAVG07, SENSORAVG08, SENSORAVG09, SENSORAVG10, SENSORAVG11, SENSORAVG12, SENSORAVG13, SENSORAVG14, SENSORAVG15, SENSORAVG16, SENSORAVG17, SENSORAVG18, SENSORAVG19, SENSORAVG20, SENSORAVG21, SENSORAVG22, SENSORAVG23, SENSORAVG24, SENSORAVG25, SENSORAVG26, SENSORAVG27, SENSORAVG28, SENSORAVG29, SENSORAVG30, SENSORAVG31, SENSORAVG32, SENSORAVG33, SENSORAVG34, SENSORAVG35, SENSORAVG36, SENSORAVG37, SENSORAVG38, SENSORAVG39, SENSORAVG40, SENSORAVG41, SENSORAVG42, SENSORAVG43, SENSORAVG44, SENSORAVG45, SENSORAVG46, SENSORAVG47, SENSORAVG48, SENSORAVG49, SENSORAVG50)
|
||||
select @powerStationID powerstationID, FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H:%i') reportdate, avg(sensorAvg01), avg(sensorAvg02),
|
||||
avg(sensorAvg03), avg(sensorAvg04), avg(sensorAvg05), avg(sensorAvg06), avg(sensorAvg07), avg(sensorAvg08), avg(sensorAvg09),
|
||||
avg(sensorAvg10), avg(sensorAvg11), avg(sensorAvg12), avg(sensorAvg13), avg(sensorAvg14), avg(sensorAvg15), avg(sensorAvg16),
|
||||
avg(sensorAvg17), avg(sensorAvg18), avg(sensorAvg19), avg(sensorAvg20), avg(sensorAvg21), avg(sensorAvg22), avg(sensorAvg23),
|
||||
avg(sensorAvg24), avg(sensorAvg25), avg(sensorAvg26), avg(sensorAvg27), avg(sensorAvg28), avg(sensorAvg29), avg(sensorAvg30),
|
||||
avg(sensorAvg31), avg(sensorAvg32), avg(sensorAvg33), avg(sensorAvg34), avg(sensorAvg35), avg(sensorAvg36), avg(sensorAvg37),
|
||||
avg(sensorAvg38), avg(sensorAvg39), avg(sensorAvg40), avg(sensorAvg41), avg(sensorAvg42), avg(sensorAvg43), avg(sensorAvg44),
|
||||
avg(sensorAvg45), avg(sensorAvg46), avg(sensorAvg47), avg(sensorAvg48), avg(sensorAvg49), avg(sensorAvg50)
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_sensorAvg
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') between @date1 and @date2
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H');";
|
||||
conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1, date2 = _date2 });
|
||||
|
||||
//日照計 update
|
||||
sql = string.Empty;
|
||||
foreach (var item in irrlst)
|
||||
{
|
||||
sql += @" update sensoravg_history_hour a join
|
||||
(
|
||||
select @powerstationID powerstationID, concat(FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H'), ':00') reportdate, round(avg(" + item.colname + @"), 2) irrAvg
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_sensorAvg
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') between @date1 and @date2 and " + item.colname + @" <> 0 #需要過濾 0 的數值
|
||||
group by FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d %H')
|
||||
)b on a.powerStationID = b.powerStationID and DATE_FORMAT(a.`TIMESTAMP`,'%Y-%m-%d %H:%i') = b.reportdate
|
||||
set a." + item.colname + " = b.irrAvg;";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(sql)) conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1, date2 = _date2 });
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sensor 1~50 day
|
||||
sql = @"
|
||||
INSERT INTO solar_master.sensoravg_history_day(PowerStationId, `TIMESTAMP`, SENSORAVG01, SENSORAVG02, SENSORAVG03, SENSORAVG04, SENSORAVG05, SENSORAVG06, SENSORAVG07, SENSORAVG08, SENSORAVG09, SENSORAVG10, SENSORAVG11, SENSORAVG12, SENSORAVG13, SENSORAVG14, SENSORAVG15, SENSORAVG16, SENSORAVG17, SENSORAVG18, SENSORAVG19, SENSORAVG20, SENSORAVG21, SENSORAVG22, SENSORAVG23, SENSORAVG24, SENSORAVG25, SENSORAVG26, SENSORAVG27, SENSORAVG28, SENSORAVG29, SENSORAVG30, SENSORAVG31, SENSORAVG32, SENSORAVG33, SENSORAVG34, SENSORAVG35, SENSORAVG36, SENSORAVG37, SENSORAVG38, SENSORAVG39, SENSORAVG40, SENSORAVG41, SENSORAVG42, SENSORAVG43, SENSORAVG44, SENSORAVG45, SENSORAVG46, SENSORAVG47, SENSORAVG48, SENSORAVG49, SENSORAVG50)
|
||||
select @powerStationID powerstationID, DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') reportdate, avg(sensorAvg01), avg(sensorAvg02),
|
||||
avg(sensorAvg03), avg(sensorAvg04), avg(sensorAvg05), avg(sensorAvg06), avg(sensorAvg07), avg(sensorAvg08), avg(sensorAvg09),
|
||||
avg(sensorAvg10), avg(sensorAvg11), avg(sensorAvg12), avg(sensorAvg13), avg(sensorAvg14), avg(sensorAvg15), avg(sensorAvg16),
|
||||
avg(sensorAvg17), avg(sensorAvg18), avg(sensorAvg19), avg(sensorAvg20), avg(sensorAvg21), avg(sensorAvg22), avg(sensorAvg23),
|
||||
avg(sensorAvg24), avg(sensorAvg25), avg(sensorAvg26), avg(sensorAvg27), avg(sensorAvg28), avg(sensorAvg29), avg(sensorAvg30),
|
||||
avg(sensorAvg31), avg(sensorAvg32), avg(sensorAvg33), avg(sensorAvg34), avg(sensorAvg35), avg(sensorAvg36), avg(sensorAvg37),
|
||||
avg(sensorAvg38), avg(sensorAvg39), avg(sensorAvg40), avg(sensorAvg41), avg(sensorAvg42), avg(sensorAvg43), avg(sensorAvg44),
|
||||
avg(sensorAvg45), avg(sensorAvg46), avg(sensorAvg47), avg(sensorAvg48), avg(sensorAvg49), avg(sensorAvg50)
|
||||
from solar_master.sensoravg_history_hour
|
||||
where powerStationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') between @date1 and @date2
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d');";
|
||||
conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1, date2 = _date2 });
|
||||
|
||||
//日照計 update
|
||||
sql = string.Empty;
|
||||
foreach (var item in irrlst)
|
||||
{
|
||||
sql += @" update solar_master.sensoravg_history_day a join
|
||||
(
|
||||
select @powerstationID powerstationID, concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d'), ' 00:00') reportdate, round(avg(" + item.colname + @"), 2) irrAvg
|
||||
from solar_master.sensoravg_history_hour
|
||||
where powerStationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') between @date1 and @date2 and " + item.colname + @" <> 0 #需要過濾 0 的數值
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d')
|
||||
)b on a.powerStationID = b.powerStationID and DATE_FORMAT(a.`TIMESTAMP`,'%Y-%m-%d') = b.reportdate
|
||||
set a." + item.colname + " = b.irrAvg;";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(sql)) conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1, date2 = _date2 });
|
||||
|
||||
#endregion
|
||||
|
||||
#region Sensor 1~50 month
|
||||
sql = @"
|
||||
delete from sensoravg_history_month where left(`TIMESTAMP`, 7) between left(@date1, 7) and left(@date2, 7) and PowerStationID = @powerStationID;
|
||||
|
||||
INSERT INTO solar_master.sensoravg_history_month (PowerStationId, `TIMESTAMP`, SENSORAVG01, SENSORAVG02, SENSORAVG03, SENSORAVG04, SENSORAVG05, SENSORAVG06, SENSORAVG07, SENSORAVG08, SENSORAVG09, SENSORAVG10, SENSORAVG11, SENSORAVG12, SENSORAVG13, SENSORAVG14, SENSORAVG15, SENSORAVG16, SENSORAVG17, SENSORAVG18, SENSORAVG19, SENSORAVG20, SENSORAVG21, SENSORAVG22, SENSORAVG23, SENSORAVG24, SENSORAVG25, SENSORAVG26, SENSORAVG27, SENSORAVG28, SENSORAVG29, SENSORAVG30, SENSORAVG31, SENSORAVG32, SENSORAVG33, SENSORAVG34, SENSORAVG35, SENSORAVG36, SENSORAVG37, SENSORAVG38, SENSORAVG39, SENSORAVG40, SENSORAVG41, SENSORAVG42, SENSORAVG43, SENSORAVG44, SENSORAVG45, SENSORAVG46, SENSORAVG47, SENSORAVG48, SENSORAVG49, SENSORAVG50)
|
||||
select @powerStationID powerstationID, concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m'), '-01 00:00') reportdate, avg(sensorAvg01), avg(sensorAvg02),
|
||||
avg(sensorAvg03), avg(sensorAvg04), avg(sensorAvg05), avg(sensorAvg06), avg(sensorAvg07), avg(sensorAvg08), avg(sensorAvg09),
|
||||
avg(sensorAvg10), avg(sensorAvg11), avg(sensorAvg12), avg(sensorAvg13), avg(sensorAvg14), avg(sensorAvg15), avg(sensorAvg16),
|
||||
avg(sensorAvg17), avg(sensorAvg18), avg(sensorAvg19), avg(sensorAvg20), avg(sensorAvg21), avg(sensorAvg22), avg(sensorAvg23),
|
||||
avg(sensorAvg24), avg(sensorAvg25), avg(sensorAvg26), avg(sensorAvg27), avg(sensorAvg28), avg(sensorAvg29), avg(sensorAvg30),
|
||||
avg(sensorAvg31), avg(sensorAvg32), avg(sensorAvg33), avg(sensorAvg34), avg(sensorAvg35), avg(sensorAvg36), avg(sensorAvg37),
|
||||
avg(sensorAvg38), avg(sensorAvg39), avg(sensorAvg40), avg(sensorAvg41), avg(sensorAvg42), avg(sensorAvg43), avg(sensorAvg44),
|
||||
avg(sensorAvg45), avg(sensorAvg46), avg(sensorAvg47), avg(sensorAvg48), avg(sensorAvg49), avg(sensorAvg50)
|
||||
from solar_master.sensoravg_history_day
|
||||
where powerStationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m') between @date1 and @date2
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m');";
|
||||
conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1.Substring(0, 7), date2 = _date2.Substring(0, 7) });
|
||||
|
||||
//日照計 update
|
||||
sql = string.Empty;
|
||||
foreach (var item in irrlst)
|
||||
{
|
||||
sql += @" update solar_master.sensoravg_history_month a join
|
||||
(
|
||||
select @powerstationID powerstationID, concat( DATE_FORMAT(`TIMESTAMP`,'%Y-%m'), '-01 00:00') reportdate, round(avg(" + item.colname + @"), 2) irrAvg
|
||||
from solar_master.sensoravg_history_day
|
||||
where powerStationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m') between @date1 and @date2 and " + item.colname + @" <> 0 #需要過濾 0 的數值
|
||||
group by DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d')
|
||||
)b on a.powerStationID = b.powerStationID and DATE_FORMAT(a.`TIMESTAMP`,'%Y-%m') = b.reportdate
|
||||
set a." + item.colname + " = b.irrAvg;";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(sql)) conn.Execute(sql, new { powerStationID = _powerStationID, date1 = _date1.Substring(0, 7), date2 = _date2.Substring(0, 7) });
|
||||
|
||||
#endregion
|
||||
|
||||
conn.Close();
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
190
solarApp/Service/procStationSvc.cs
Normal file
190
solarApp/Service/procStationSvc.cs
Normal file
@ -0,0 +1,190 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Dapper;
|
||||
using solarApp.Model;
|
||||
using System.Configuration;
|
||||
|
||||
namespace solarApp.Service
|
||||
{
|
||||
public class procStationSvc
|
||||
{
|
||||
string Connection1 = ConfigurationManager.ConnectionStrings["mySql"].ConnectionString;
|
||||
|
||||
public string _siteID { get; set; }
|
||||
public string _siteDB { get; set; }
|
||||
public string _siteID01 { get; set; }
|
||||
public string _date1 { get; set; }
|
||||
public string _date2 { get; set; }
|
||||
public string _powerStationID { get; set; }
|
||||
|
||||
|
||||
public bool clearData()
|
||||
{
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
#region 取得 PowerStationID
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @" select id as PowerStationID from solar_master.power_station where `code` = @siteID";
|
||||
var ds = conn.Query<string>(sql, new { siteID = _siteID }).AsList<string>();
|
||||
_powerStationID = (ds.Count > 0) ? ds[0][0].ToString() : "0";
|
||||
conn.Close();
|
||||
}
|
||||
#endregion
|
||||
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string sql = @"
|
||||
delete from power_station_history_hour where powerstationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = @date1;
|
||||
delete from power_station_history_day where powerstationID = @powerStationID and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = @date1;
|
||||
delete from power_station_history_month where powerstationID = @powerStationID and left(`TIMESTAMP`, 7) = left(@date1, 7) ;";
|
||||
var ds = conn.Execute(sql, new { date1 = _date1, powerStationID = _powerStationID });
|
||||
conn.Close();
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool archiveData()
|
||||
{
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
clearData();
|
||||
insert_station();
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool insert_station()
|
||||
{
|
||||
bool result = false;
|
||||
try
|
||||
{
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
string ss = @"SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY,',''));";
|
||||
conn.Execute(ss);
|
||||
|
||||
string sql = @" select id as PowerStationID from solar_master.power_station where `code` = @siteID";
|
||||
var ds = conn.Query<string>(sql, new { siteID = _siteID }).AsList<string>();
|
||||
_powerStationID = (ds.Count > 0) ? ds[0][0].ToString() : "0";
|
||||
|
||||
#region hour -- solar_type 計費類別:0 自建、1 租建、2自建 ------------ 1 租建計算方式 後再再補上
|
||||
|
||||
//select b.id PowerStationId, a.reportdate, b.siteID, a.siteType, a.KWH, a.TODAYKWH, a.TOTALKWH, a.KWHKWP, a.PR, a.MP, a.SOLARHOUR,
|
||||
// (KWH * PowerRate) MONEY, (a.TODAYKWH * PowerRate) TODAYMONEY, (a.TOTALKWH * PowerRate) TOTALMONEY,
|
||||
// (KWH * CarbonRate) CARBON, (a.TODAYKWH * CarbonRate) TODAYCARBON, round((a.TOTALKWH * CarbonRate), 4) TOTALCARBON
|
||||
// from
|
||||
// (
|
||||
// select siteid, siteType, concat(FROM_UNIXTIME(`TIMESTAMP`/ 1000, '%Y-%m-%d %H'), ':00:00') reportdate,
|
||||
// round((sum(KWH)), 4) KWH, round((max(TODAYKWH)), 4) TODAYKWH, round((max(TOTALKWH)), 4) TOTALKWH, round((max(KWHKWP)), 4) KWHKWP,
|
||||
// round((max(PR)), 4) PR, 0 as MP, round((max(SOLARHOUR)), 4) SOLARHOUR
|
||||
|
||||
// from " + _siteDB + ".s" + _siteID01 + @"_station
|
||||
|
||||
// where FROM_UNIXTIME(`TIMESTAMP`/ 1000, '%Y-%m-%d') = @date1
|
||||
|
||||
// group by siteid, FROM_UNIXTIME(`TIMESTAMP`/ 1000, '%Y-%m-%d %H')
|
||||
// )a join
|
||||
// (
|
||||
// select id, `code` siteID, PowerRate, (select `value` from solar_master.`variable` where `name` = 'CarbonRate') as CarbonRate, SolarType
|
||||
// from solar_master.power_station
|
||||
// where `code` = @siteID
|
||||
// ) b on a.siteID = b.siteID
|
||||
|
||||
sql = @"insert into solar_master.power_station_history_hour(PowerStationId, `TIMESTAMP`, SITEID, SITETYPE, KWH, TODAYKWH, TOTALKWH, KWHKWP, PR, MP, SOLARHOUR, MONEY, TODAYMONEY, TOTALMONEY, CARBON, TODAYCARBON, TOTALCARBON)
|
||||
|
||||
select b.id PowerStationId, concat(FROM_UNIXTIME(`TIMESTAMP`/1000, '%Y-%m-%d %H'), ':00:00') reportdate, a.siteid, a.siteType,
|
||||
a.KWH, TODAYKWH, TOTALKWH, KWHKWP , PR, MP, a.SOLARHOUR ,
|
||||
(a.KWH * PowerRate) MONEY, (a.TODAYKWH * PowerRate) TODAYMONEY, (a.TOTALKWH * PowerRate) TOTALMONEY,
|
||||
(a.KWH * CarbonRate) CARBON, (a.TODAYKWH * CarbonRate) TODAYCARBON, round((a.TOTALKWH * CarbonRate), 3) TOTALCARBON
|
||||
from " + _siteDB + ".s" + _siteID01 + @"_station a join
|
||||
(select id, `code` siteID, PowerRate, (select `value` from solar_master.`variable` where `name` = 'CarbonRate') as CarbonRate, SolarType
|
||||
from solar_master.power_station where `code` = @siteID
|
||||
) b on a.siteID = b.siteID
|
||||
where FROM_UNIXTIME(`TIMESTAMP`/1000,'%Y-%m-%d') = @date1 and a.SITEID = @siteID ";
|
||||
int ct = conn.Execute(sql, new { date1 = _date1, siteID = _siteID });
|
||||
|
||||
#endregion hour
|
||||
|
||||
#region day
|
||||
sql = @" INSERT INTO solar_master.power_station_history_day( PowerStationId, `TIMESTAMP`, SITEID, SITETYPE, TODAYKWH, TOTALKWH, KWHKWP,
|
||||
PR, MP, SOLARHOUR, MONEY, TOTALMONEY, CARBON, TOTALCARBON)
|
||||
|
||||
select b.id PowerStationId, a.reportdate, b.siteID, a.siteType, a.TODAYKWH, a.TOTALKWH, a.KWHKWP, a.PR, a.MP, a.SOLARHOUR,
|
||||
(KWH * PowerRate) MONEY, (a.TOTALKWH * PowerRate) TOTALMONEY,
|
||||
(KWH * CarbonRate) CARBON, round((a.TOTALKWH * CarbonRate), 4) TOTALCARBON
|
||||
from
|
||||
(
|
||||
select concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d'), ' 00:00:00') reportdate, siteid, siteType, round((sum(KWH)), 4) KWH,
|
||||
round((max(TODAYKWH)), 4) TODAYKWH, round((max(TOTALKWH)), 4) TOTALKWH, round((max(KWHKWP)), 4) KWHKWP,
|
||||
round((max(PR)), 4) PR, round((max(MP)), 4) as MP, round((max(SOLARHOUR)), 4) SOLARHOUR
|
||||
from solar_master.power_station_history_hour a
|
||||
where SITEID = @siteID and DATE_FORMAT(a.`TIMESTAMP`,'%Y-%m-%d') = @date1
|
||||
group by a.siteid, DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d')
|
||||
)a join
|
||||
(
|
||||
select id, `code` siteID, PowerRate, (select `value` from solar_master.`variable` where `name` = 'CarbonRate') as CarbonRate, SolarType
|
||||
from solar_master.power_station
|
||||
where `code` = @siteID
|
||||
) b on a.siteID = b.siteID ";
|
||||
conn.Execute(sql, new { date1 = _date1, siteID = _siteID });
|
||||
#endregion day
|
||||
|
||||
#region month
|
||||
sql = @"
|
||||
delete from power_station_history_month where powerstationID = @powerStationID and left(`TIMESTAMP`, 7) = left(@date1, 7) ;
|
||||
|
||||
INSERT INTO solar_master.power_station_history_month(PowerStationId, `TIMESTAMP`, SITEID, SITETYPE, TOTALKWH, KWHKWP,
|
||||
PR, MP, SOLARHOUR, MONEY, TOTALMONEY, CARBON, TOTALCARBON)
|
||||
|
||||
select b.id PowerStationId, a.reportdate, b.siteID, a.siteType, a.TOTALKWH, a.KWHKWP, a.PR, a.MP, a.SOLARHOUR,
|
||||
(KWH * PowerRate) MONEY, (a.TOTALKWH * PowerRate) TOTALMONEY,
|
||||
(KWH * CarbonRate) CARBON, round((a.TOTALKWH * CarbonRate), 4) TOTALCARBON
|
||||
from
|
||||
(
|
||||
select concat(DATE_FORMAT(`TIMESTAMP`,'%Y-%m'), '-01 00:00:00') reportdate, siteid, siteType, round((sum(KWH)), 4) KWH,
|
||||
round((max(TODAYKWH)), 4) TODAYKWH, round((max(TOTALKWH)), 4) TOTALKWH, round((max(KWHKWP)), 4) KWHKWP,
|
||||
round((max(PR)), 4) PR, round((max(MP)), 4) as MP, round((max(SOLARHOUR)), 4) SOLARHOUR
|
||||
from solar_master.power_station_history_hour a
|
||||
where SITEID = @siteID and DATE_FORMAT(a.`TIMESTAMP`, '%Y-%m') = @date1
|
||||
group by a.siteid, DATE_FORMAT(`TIMESTAMP`, '%Y-%m')
|
||||
)a join
|
||||
(
|
||||
select id, `code` siteID, PowerRate, (select `value` from solar_master.`variable` where `name` = 'CarbonRate') as CarbonRate, SolarType
|
||||
from solar_master.power_station
|
||||
where `code` = @siteID
|
||||
) b on a.siteID = b.siteID ";
|
||||
conn.Execute(sql, new { date1 = _date1.Substring(0, 7), siteID = _siteID, powerStationID = _powerStationID });
|
||||
|
||||
#endregion month
|
||||
|
||||
conn.Close();
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
195
solarApp/fmArchive.Designer.cs
generated
195
solarApp/fmArchive.Designer.cs
generated
@ -31,16 +31,29 @@ namespace solarApp
|
||||
{
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.bt_clear_station = new System.Windows.Forms.Button();
|
||||
this.bt_clear_inv = new System.Windows.Forms.Button();
|
||||
this.fp_site = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.dtSelect = new System.Windows.Forms.DateTimePicker();
|
||||
this.bt_site = new System.Windows.Forms.Button();
|
||||
this.bt_Inv = new System.Windows.Forms.Button();
|
||||
this.bt_Sensor = new System.Windows.Forms.Button();
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.btVerifyData = new System.Windows.Forms.Button();
|
||||
this.lbSiteDB_sensor = new System.Windows.Forms.Label();
|
||||
this.lbSiteID_sensor = new System.Windows.Forms.Label();
|
||||
this.lbSiteName_sensor = new System.Windows.Forms.Label();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tabControl1
|
||||
@ -48,6 +61,7 @@ namespace solarApp
|
||||
this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons;
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
@ -65,16 +79,6 @@ namespace solarApp
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 31);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(1774, 918);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
@ -84,6 +88,13 @@ namespace solarApp
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_clear_station);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_clear_inv);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.fp_site);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.dtSelect);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_site);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_Inv);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_Sensor);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
@ -94,13 +105,78 @@ namespace solarApp
|
||||
this.splitContainer1.SplitterWidth = 10;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// panel1
|
||||
// bt_clear_station
|
||||
//
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(1458, 125);
|
||||
this.panel1.TabIndex = 0;
|
||||
this.bt_clear_station.Enabled = false;
|
||||
this.bt_clear_station.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_clear_station.Location = new System.Drawing.Point(3, 418);
|
||||
this.bt_clear_station.Name = "bt_clear_station";
|
||||
this.bt_clear_station.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_clear_station.TabIndex = 6;
|
||||
this.bt_clear_station.Text = "clear data";
|
||||
this.bt_clear_station.UseVisualStyleBackColor = true;
|
||||
this.bt_clear_station.Click += new System.EventHandler(this.bt_clear_station_Click);
|
||||
//
|
||||
// bt_clear_inv
|
||||
//
|
||||
this.bt_clear_inv.Enabled = false;
|
||||
this.bt_clear_inv.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_clear_inv.Location = new System.Drawing.Point(5, 335);
|
||||
this.bt_clear_inv.Name = "bt_clear_inv";
|
||||
this.bt_clear_inv.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_clear_inv.TabIndex = 5;
|
||||
this.bt_clear_inv.Text = "clear data";
|
||||
this.bt_clear_inv.UseVisualStyleBackColor = true;
|
||||
this.bt_clear_inv.Click += new System.EventHandler(this.bt_clear_inv_Click);
|
||||
//
|
||||
// fp_site
|
||||
//
|
||||
this.fp_site.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.fp_site.Location = new System.Drawing.Point(0, 0);
|
||||
this.fp_site.Name = "fp_site";
|
||||
this.fp_site.Size = new System.Drawing.Size(300, 150);
|
||||
this.fp_site.TabIndex = 4;
|
||||
//
|
||||
// dtSelect
|
||||
//
|
||||
this.dtSelect.Location = new System.Drawing.Point(37, 156);
|
||||
this.dtSelect.Name = "dtSelect";
|
||||
this.dtSelect.Size = new System.Drawing.Size(204, 27);
|
||||
this.dtSelect.TabIndex = 3;
|
||||
this.dtSelect.ValueChanged += new System.EventHandler(this.dtSelect_ValueChanged);
|
||||
//
|
||||
// bt_site
|
||||
//
|
||||
this.bt_site.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_site.Location = new System.Drawing.Point(152, 418);
|
||||
this.bt_site.Name = "bt_site";
|
||||
this.bt_site.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_site.TabIndex = 2;
|
||||
this.bt_site.Text = "Site 歸檔";
|
||||
this.bt_site.UseVisualStyleBackColor = true;
|
||||
this.bt_site.Click += new System.EventHandler(this.bt_site_Click);
|
||||
//
|
||||
// bt_Inv
|
||||
//
|
||||
this.bt_Inv.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_Inv.Location = new System.Drawing.Point(152, 335);
|
||||
this.bt_Inv.Name = "bt_Inv";
|
||||
this.bt_Inv.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_Inv.TabIndex = 1;
|
||||
this.bt_Inv.Text = "Inv 歸檔";
|
||||
this.bt_Inv.UseVisualStyleBackColor = true;
|
||||
this.bt_Inv.Click += new System.EventHandler(this.bt_Inv_Click);
|
||||
//
|
||||
// bt_Sensor
|
||||
//
|
||||
this.bt_Sensor.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_Sensor.Location = new System.Drawing.Point(152, 256);
|
||||
this.bt_Sensor.Name = "bt_Sensor";
|
||||
this.bt_Sensor.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_Sensor.TabIndex = 0;
|
||||
this.bt_Sensor.Text = "Sensor 歸檔";
|
||||
this.bt_Sensor.UseVisualStyleBackColor = true;
|
||||
this.bt_Sensor.Click += new System.EventHandler(this.bt_Sensor_Click);
|
||||
//
|
||||
// dataGridView1
|
||||
//
|
||||
@ -113,6 +189,73 @@ namespace solarApp
|
||||
this.dataGridView1.Size = new System.Drawing.Size(1458, 787);
|
||||
this.dataGridView1.TabIndex = 1;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
|
||||
this.panel1.Controls.Add(this.btVerifyData);
|
||||
this.panel1.Controls.Add(this.lbSiteDB_sensor);
|
||||
this.panel1.Controls.Add(this.lbSiteID_sensor);
|
||||
this.panel1.Controls.Add(this.lbSiteName_sensor);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(1458, 125);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// btVerifyData
|
||||
//
|
||||
this.btVerifyData.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.btVerifyData.Location = new System.Drawing.Point(635, 7);
|
||||
this.btVerifyData.Name = "btVerifyData";
|
||||
this.btVerifyData.Size = new System.Drawing.Size(158, 44);
|
||||
this.btVerifyData.TabIndex = 12;
|
||||
this.btVerifyData.Text = "檢核結果";
|
||||
this.btVerifyData.UseVisualStyleBackColor = true;
|
||||
this.btVerifyData.Click += new System.EventHandler(this.btVerifyData_Click);
|
||||
//
|
||||
// lbSiteDB_sensor
|
||||
//
|
||||
this.lbSiteDB_sensor.AutoSize = true;
|
||||
this.lbSiteDB_sensor.Font = new System.Drawing.Font("Microsoft JhengHei UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.lbSiteDB_sensor.Location = new System.Drawing.Point(41, 19);
|
||||
this.lbSiteDB_sensor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.lbSiteDB_sensor.Name = "lbSiteDB_sensor";
|
||||
this.lbSiteDB_sensor.Size = new System.Drawing.Size(79, 24);
|
||||
this.lbSiteDB_sensor.TabIndex = 11;
|
||||
this.lbSiteDB_sensor.Text = "Site_DB";
|
||||
//
|
||||
// lbSiteID_sensor
|
||||
//
|
||||
this.lbSiteID_sensor.AutoSize = true;
|
||||
this.lbSiteID_sensor.Font = new System.Drawing.Font("Microsoft JhengHei UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.lbSiteID_sensor.Location = new System.Drawing.Point(200, 19);
|
||||
this.lbSiteID_sensor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.lbSiteID_sensor.Name = "lbSiteID_sensor";
|
||||
this.lbSiteID_sensor.Size = new System.Drawing.Size(72, 24);
|
||||
this.lbSiteID_sensor.TabIndex = 10;
|
||||
this.lbSiteID_sensor.Text = "Site_ID";
|
||||
//
|
||||
// lbSiteName_sensor
|
||||
//
|
||||
this.lbSiteName_sensor.AutoSize = true;
|
||||
this.lbSiteName_sensor.Font = new System.Drawing.Font("Microsoft JhengHei UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.lbSiteName_sensor.Location = new System.Drawing.Point(360, 19);
|
||||
this.lbSiteName_sensor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.lbSiteName_sensor.Name = "lbSiteName_sensor";
|
||||
this.lbSiteName_sensor.Size = new System.Drawing.Size(107, 24);
|
||||
this.lbSiteName_sensor.TabIndex = 9;
|
||||
this.lbSiteName_sensor.Text = "Site_Name";
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 31);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(1774, 918);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// fmArchive
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 19F);
|
||||
@ -121,12 +264,16 @@ namespace solarApp
|
||||
this.Controls.Add(this.tabControl1);
|
||||
this.Name = "fmArchive";
|
||||
this.Text = "fmArchive";
|
||||
this.Load += new System.EventHandler(this.fmArchive_Load);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@ -139,5 +286,17 @@ namespace solarApp
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.DateTimePicker dtSelect;
|
||||
private System.Windows.Forms.Button bt_site;
|
||||
private System.Windows.Forms.Button bt_Inv;
|
||||
private System.Windows.Forms.Button bt_Sensor;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private System.Windows.Forms.Label lbSiteDB_sensor;
|
||||
private System.Windows.Forms.Label lbSiteID_sensor;
|
||||
private System.Windows.Forms.Label lbSiteName_sensor;
|
||||
private System.Windows.Forms.FlowLayoutPanel fp_site;
|
||||
private System.Windows.Forms.Button btVerifyData;
|
||||
private System.Windows.Forms.Button bt_clear_inv;
|
||||
private System.Windows.Forms.Button bt_clear_station;
|
||||
}
|
||||
}
|
||||
@ -5,11 +5,13 @@ using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using solarApp.Service;
|
||||
|
||||
namespace solarApp
|
||||
{
|
||||
public partial class fmArchive : Form
|
||||
{
|
||||
getStationSvc stationSvc = new getStationSvc();
|
||||
public fmArchive()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -19,5 +21,133 @@ namespace solarApp
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void bt_Sensor_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procSensorSvc sensorSvc = new procSensorSvc();
|
||||
sensorSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
sensorSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
||||
sensorSvc._siteID01 = lbSiteID_sensor.Text;
|
||||
sensorSvc._date1 = date1;
|
||||
sensorSvc._date2 = date1;
|
||||
sensorSvc.archiveData();
|
||||
//sensorSvc.archiveData();
|
||||
MessageBox.Show("OK");
|
||||
}
|
||||
|
||||
private void fmArchive_Load(object sender, EventArgs e)
|
||||
{
|
||||
#region 電站清單
|
||||
int i = 0;
|
||||
var site_list = stationSvc.get_station_list();
|
||||
foreach (var item in site_list)
|
||||
{
|
||||
RadioButton rb = new RadioButton();
|
||||
rb.Name = item.SiteID;
|
||||
rb.Text = item.SiteName;
|
||||
rb.Tag = item.SiteDB;
|
||||
rb.Font = new Font(Font.FontFamily, 22);
|
||||
rb.AutoSize = true;
|
||||
rb.CheckedChanged += new EventHandler(rb_site_CheckedChanged);
|
||||
fp_site.Controls.Add(rb);
|
||||
if (i == 0) rb.Checked = true;
|
||||
i++;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
private void rb_site_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
RadioButton rb = sender as RadioButton;
|
||||
if (rb.Checked)
|
||||
{
|
||||
lbSiteName_sensor.Text = rb.Text;
|
||||
lbSiteDB_sensor.Text = rb.Tag.ToString();
|
||||
lbSiteID_sensor.Text = rb.Name;
|
||||
|
||||
//顯示 table name on label
|
||||
//lbSiteRaw.Text = lbSiteName_inv.Text + " " + lbSiteDB_inv.Text + ".s" + lbSiteID_inv.Text + "_Station";
|
||||
//lbInvRaw.Text = lbSiteName_inv.Text + " " + lbSiteDB_inv.Text + ".s" + lbSiteID_inv.Text + "_Inv";
|
||||
//lbSensorRaw.Text = lbSiteName_inv.Text + " " + lbSiteDB_inv.Text + ".s" + lbSiteID_inv.Text + "_SensorAVG";
|
||||
|
||||
//add_inv_list(lbSiteDB_inv.Text, lbSiteID_inv.Text.Substring(0, 9));
|
||||
}
|
||||
}
|
||||
|
||||
private void btVerifyData_Click(object sender, EventArgs e)
|
||||
{
|
||||
fmMain fm = new fmMain();
|
||||
fm.Show();
|
||||
}
|
||||
|
||||
private void bt_Inv_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procInvSvc invSvc = new procInvSvc();
|
||||
invSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
invSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
||||
invSvc._siteID01 = lbSiteID_sensor.Text;
|
||||
invSvc._date1 = date1;
|
||||
invSvc._date2 = date1;
|
||||
invSvc.archiveData();
|
||||
//sensorSvc.archiveData();
|
||||
MessageBox.Show("OK");
|
||||
}
|
||||
|
||||
private void dtSelect_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
bt_clear_inv.Enabled = true;
|
||||
bt_clear_station.Enabled = true;
|
||||
bt_clear_inv.Text = "clear " + dtSelect.Value.ToString("MM-dd");
|
||||
bt_clear_station.Text = "clear " + dtSelect.Value.ToString("MM-dd");
|
||||
}
|
||||
|
||||
private void bt_clear_inv_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procInvSvc invSvc = new procInvSvc();
|
||||
invSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
invSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
||||
invSvc._siteID01 = lbSiteID_sensor.Text;
|
||||
invSvc._date1 = date1;
|
||||
invSvc._date2 = date1;
|
||||
invSvc.clearData();
|
||||
//sensorSvc.archiveData();
|
||||
MessageBox.Show("OK");
|
||||
}
|
||||
|
||||
private void bt_clear_station_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procStationSvc siteSvc = new procStationSvc();
|
||||
siteSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
siteSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
||||
siteSvc._siteID01 = lbSiteID_sensor.Text;
|
||||
siteSvc._date1 = date1;
|
||||
siteSvc._date2 = date1;
|
||||
siteSvc.clearData();
|
||||
//sensorSvc.archiveData();
|
||||
MessageBox.Show("OK");
|
||||
}
|
||||
|
||||
private void bt_site_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procStationSvc siteSvc = new procStationSvc();
|
||||
siteSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
siteSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
||||
siteSvc._siteID01 = lbSiteID_sensor.Text;
|
||||
siteSvc._date1 = date1;
|
||||
siteSvc._date2 = date1;
|
||||
siteSvc.archiveData();
|
||||
//sensorSvc.archiveData();
|
||||
MessageBox.Show("OK");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
26
solarApp/fmMain.Designer.cs
generated
26
solarApp/fmMain.Designer.cs
generated
@ -97,6 +97,7 @@ namespace solarApp
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.gv_web_inv_hour = new System.Windows.Forms.DataGridView();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.btInv_15min = new System.Windows.Forms.Button();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.lb_inv_hour = new System.Windows.Forms.Label();
|
||||
this.gv_fic_inv_hour = new System.Windows.Forms.DataGridView();
|
||||
@ -155,6 +156,7 @@ namespace solarApp
|
||||
this.label29 = new System.Windows.Forms.Label();
|
||||
this.gv_web_sensor_hour = new System.Windows.Forms.DataGridView();
|
||||
this.panel13 = new System.Windows.Forms.Panel();
|
||||
this.btSensor_switch = new System.Windows.Forms.Button();
|
||||
this.label30 = new System.Windows.Forms.Label();
|
||||
this.label31 = new System.Windows.Forms.Label();
|
||||
this.gv_fic_sensor_hour = new System.Windows.Forms.DataGridView();
|
||||
@ -566,6 +568,7 @@ namespace solarApp
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.btInv_15min);
|
||||
this.panel1.Controls.Add(this.label3);
|
||||
this.panel1.Controls.Add(this.lb_inv_hour);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
@ -575,6 +578,16 @@ namespace solarApp
|
||||
this.panel1.Size = new System.Drawing.Size(666, 38);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// btInv_15min
|
||||
//
|
||||
this.btInv_15min.Location = new System.Drawing.Point(559, 4);
|
||||
this.btInv_15min.Name = "btInv_15min";
|
||||
this.btInv_15min.Size = new System.Drawing.Size(94, 29);
|
||||
this.btInv_15min.TabIndex = 2;
|
||||
this.btInv_15min.Text = " 15 min";
|
||||
this.btInv_15min.UseVisualStyleBackColor = true;
|
||||
this.btInv_15min.Click += new System.EventHandler(this.btInv_15min_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
@ -1476,6 +1489,7 @@ namespace solarApp
|
||||
//
|
||||
// panel13
|
||||
//
|
||||
this.panel13.Controls.Add(this.btSensor_switch);
|
||||
this.panel13.Controls.Add(this.label30);
|
||||
this.panel13.Controls.Add(this.label31);
|
||||
this.panel13.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
@ -1485,6 +1499,16 @@ namespace solarApp
|
||||
this.panel13.Size = new System.Drawing.Size(666, 38);
|
||||
this.panel13.TabIndex = 0;
|
||||
//
|
||||
// btSensor_switch
|
||||
//
|
||||
this.btSensor_switch.Location = new System.Drawing.Point(563, 6);
|
||||
this.btSensor_switch.Name = "btSensor_switch";
|
||||
this.btSensor_switch.Size = new System.Drawing.Size(94, 29);
|
||||
this.btSensor_switch.TabIndex = 10;
|
||||
this.btSensor_switch.Text = "sensor50";
|
||||
this.btSensor_switch.UseVisualStyleBackColor = true;
|
||||
this.btSensor_switch.Click += new System.EventHandler(this.btSensor_switch_Click);
|
||||
//
|
||||
// label30
|
||||
//
|
||||
this.label30.AutoSize = true;
|
||||
@ -1821,5 +1845,7 @@ namespace solarApp
|
||||
private System.Windows.Forms.DataGridView gv_web_sensor_hour;
|
||||
private System.Windows.Forms.Label lbSiteDB_sensor;
|
||||
private System.Windows.Forms.Button btSearch_sensor;
|
||||
private System.Windows.Forms.Button btSensor_switch;
|
||||
private System.Windows.Forms.Button btInv_15min;
|
||||
}
|
||||
}
|
||||
@ -41,10 +41,21 @@ namespace solarApp
|
||||
|
||||
lbMsg_inv.Text = " done " + System.DateTime.Now.ToShortTimeString();
|
||||
}
|
||||
|
||||
|
||||
private void btInv_15min_Click(object sender, EventArgs e)
|
||||
{
|
||||
lbMsg_inv.Text = "loading ... ";
|
||||
string date2 = dtselect_inv.Value.ToString("yyyy-MM-dd");
|
||||
//string date2 = dtSelect_sensor2.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtselect_inv.Value.AddDays(-7).ToString("yyyy-MM-dd");
|
||||
|
||||
gv_web_inv_hour.DataSource = inv_svc.get_web_Inv_15min(date2, lbInverterID.Text , lbSiteID_inv.Text.Substring(0, 9));
|
||||
}
|
||||
|
||||
private void fmMain_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
|
||||
dtselect_station1.Value = DateTime.Today.AddDays(-1);
|
||||
|
||||
dtselect_inv.Value = DateTime.Today.AddDays(-1);
|
||||
@ -174,7 +185,7 @@ namespace solarApp
|
||||
|
||||
gv_fic_station_day.DataSource = stationSvc.get_station_rawAvg(date1, date2, lbSiteDB_inv.Text, lbSiteID_inv.Text);
|
||||
|
||||
gv_web_station_hour.DataSource = stationSvc.get_web_station_hour(date2);
|
||||
gv_web_station_hour.DataSource = stationSvc.get_web_station_hour(date2, lbSiteID_inv.Text);
|
||||
|
||||
gv_web_station_day.DataSource = stationSvc.get_web_station_day(date1, date2, lbSiteID_inv.Text.Substring(0, 9));
|
||||
|
||||
@ -199,5 +210,18 @@ namespace solarApp
|
||||
|
||||
gv_web_sensor_month.DataSource = sensorSvc.get_web_sensor_month(date1.Substring(0, 7), date2.Substring(0, 7), lbSiteID_inv.Text.Substring(0, 09));
|
||||
}
|
||||
|
||||
private void btSensor_switch_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date2 = dtSelect_sensor1.Value.ToString("yyyy-MM-dd");
|
||||
//string date2 = dtSelect_sensor2.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtSelect_sensor1.Value.AddDays(-7).ToString("yyyy-MM-dd");
|
||||
|
||||
gv_web_sensor_hour.DataSource = sensorSvc.get_web_sensor50_hour(date2, lbSiteID_inv.Text.Substring(0, 09));
|
||||
|
||||
gv_web_sensor_day.DataSource = sensorSvc.get_web_sensor50_day(date1, date2, lbSiteID_inv.Text.Substring(0, 09));
|
||||
|
||||
gv_web_sensor_month.DataSource = sensorSvc.get_web_sensor50_month(date1.Substring(0, 7), date2.Substring(0, 7), lbSiteID_inv.Text.Substring(0, 09));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user