歷史(無柱狀圖及溫度)
This commit is contained in:
parent
6d6ddf6a98
commit
2236bc9717
@ -358,5 +358,48 @@ namespace SolarPower.Controllers
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<ApiResult<List<HistoryTable>>> GetTotalTableToHistory(HistorySent post)
|
||||
{
|
||||
var History = new List<HistoryTable>();
|
||||
ApiResult<List<HistoryTable>> apiResult = new ApiResult<List<HistoryTable>>();
|
||||
var powerStation = await powerStationRepository.GetOneAsync(post.PowerstationId);
|
||||
|
||||
try
|
||||
{
|
||||
History = await overviewRepository.GethistoryTable(post);
|
||||
foreach(var a in History)
|
||||
{
|
||||
switch (post.GroupType)
|
||||
{
|
||||
case 0:
|
||||
a.TOTALTIME = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy-MM-dd");
|
||||
a.TIMESTAMP = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy-MM-dd hh:mm:ss");
|
||||
break;
|
||||
case 1:
|
||||
a.TOTALTIME = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy-MM");
|
||||
a.TIMESTAMP = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy-MM-dd");
|
||||
break;
|
||||
case 2:
|
||||
a.TOTALTIME = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy");
|
||||
a.TIMESTAMP = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy-MM");
|
||||
break;
|
||||
case 3:
|
||||
a.TOTALTIME = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy");
|
||||
a.TIMESTAMP = Convert.ToDateTime(a.TIMESTAMP).ToString("yyyy");
|
||||
break;
|
||||
}
|
||||
}
|
||||
apiResult.Code = "0000";
|
||||
apiResult.Data = History;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
apiResult.Code = "9999";
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + post);
|
||||
Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
|
||||
}
|
||||
return apiResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,5 +125,22 @@ namespace SolarPower.Models
|
||||
public double Value { get; set; }
|
||||
}
|
||||
|
||||
public class HistorySent
|
||||
{
|
||||
public int GroupType { get; set; }
|
||||
public string HistoryRange { get; set; }
|
||||
public int PowerstationId { get; set; }
|
||||
}
|
||||
public class HistoryTable
|
||||
{
|
||||
public string TIMESTAMP { get; set; }
|
||||
public double KWH { get; set; }
|
||||
public double SOLARHOUR { get; set; }
|
||||
public double Irradiance { get; set; }
|
||||
public double PR { get; set; }
|
||||
public double Temp { get; set; }
|
||||
public double DiffSOLARHOUR { get; set; }
|
||||
public string TOTALTIME { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -110,12 +110,12 @@ namespace SolarPower.Quartz.Jobs
|
||||
pyrheliometerHistoryDays.Add(pyrheliometerHistorDay);
|
||||
}
|
||||
|
||||
//逆變器
|
||||
var inverterHistorDay = await powerStationRepository.CalcPyrheliometerHistoryDayDataByPowerStationId(dateNowDay, powerStation.Id);
|
||||
if (inverterHistorDay != null)
|
||||
{
|
||||
inverterHistorDays.Add(inverterHistorDay);
|
||||
}
|
||||
////逆變器
|
||||
//var inverterHistorDay = await powerStationRepository.CalcPyrheliometerHistoryDayDataByPowerStationId(dateNowDay, powerStation.Id);
|
||||
//if (inverterHistorDay != null)
|
||||
//{
|
||||
// inverterHistorDays.Add(inverterHistorDay);
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region step2-4. 計算這個月的所有值總和
|
||||
|
||||
@ -378,5 +378,81 @@ namespace SolarPower.Repository.Implement
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<HistoryTable>> GethistoryTable(HistorySent post)
|
||||
{
|
||||
List<HistoryTable> result;
|
||||
|
||||
using (IDbConnection conn = this._databaseHelper.GetConnection())
|
||||
{
|
||||
var kwh = "";
|
||||
var usedb = "";
|
||||
var pyrdb = "";
|
||||
var timeGroup = "";
|
||||
var range = "";
|
||||
switch(post.GroupType)
|
||||
{
|
||||
case 0:
|
||||
kwh = "C.KWH";
|
||||
usedb = "power_station_history_hour";
|
||||
pyrdb = "pyrheliometer_history_hour";
|
||||
timeGroup = "%Y-%m-%d %H:%M:%S";
|
||||
range = $" WHERE DATE_FORMAT(V.TIMESTAMP,'%Y-%m-%d') = '{post.HistoryRange}'";
|
||||
break;
|
||||
case 1:
|
||||
kwh = "C.TODAYKWH";
|
||||
usedb = "power_station_history_day";
|
||||
pyrdb = "pyrheliometer_history_day";
|
||||
timeGroup = "%Y-%m-%d";
|
||||
range = $" WHERE DATE_FORMAT(V.TIMESTAMP,'%Y-%m') = '{post.HistoryRange}'";
|
||||
break;
|
||||
case 2:
|
||||
kwh = "C.MONTHKWH";
|
||||
usedb = "power_station_history_month";
|
||||
pyrdb = "pyrheliometer_history_month";
|
||||
timeGroup = "%Y-%m";
|
||||
range = $" WHERE DATE_FORMAT(V.TIMESTAMP,'%Y') = '{post.HistoryRange}'";
|
||||
break;
|
||||
case 3:
|
||||
kwh = "C.TOTALKWH";
|
||||
usedb = "power_station_history_month";
|
||||
pyrdb = "pyrheliometer_history_month";
|
||||
timeGroup = "%Y-%m";
|
||||
range = "";
|
||||
break;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var sql = @$"SELECT *, SOLARHOUR-PSValue AS DiffSOLARHOUR
|
||||
FROM
|
||||
(
|
||||
SELECT B.*, IFNULL(A.SOLARHOUR,0) AS PSValue
|
||||
FROM
|
||||
(
|
||||
SELECT DENSE_RANK() OVER(ORDER BY C.TIMESTAMP) AS ROWID
|
||||
, (DENSE_RANK() OVER(ORDER BY C.TIMESTAMP)) - 1 AS PreROWID,
|
||||
C.TIMESTAMP,{kwh} AS KWH,C.SOLARHOUR,C.PR,P.Irradiance
|
||||
FROM {usedb} C
|
||||
LEFT JOIN {pyrdb} P ON DATE_FORMAT(P.TIMESTAMP,'{timeGroup}') = DATE_FORMAT(C.TIMESTAMP,'{timeGroup}') WHERE C.PowerStationId = {post.PowerstationId} GROUP BY C.TIMESTAMP
|
||||
) A
|
||||
RIGHT OUTER JOIN
|
||||
(
|
||||
SELECT DENSE_RANK() OVER(ORDER BY C.TIMESTAMP) AS ROWID
|
||||
, (DENSE_RANK() OVER(ORDER BY C.TIMESTAMP)) - 1 AS PreROWID,
|
||||
C.TIMESTAMP,{kwh} AS KWH,C.SOLARHOUR,C.PR,P.Irradiance
|
||||
FROM {usedb} C
|
||||
LEFT JOIN {pyrdb} P ON DATE_FORMAT(P.TIMESTAMP,'{timeGroup}') = DATE_FORMAT(C.TIMESTAMP,'{timeGroup}') WHERE C.PowerStationId = {post.PowerstationId} GROUP BY C.TIMESTAMP
|
||||
) B
|
||||
ON A.ROWID = B.PreROWID
|
||||
) V {range}" ;
|
||||
result = (await conn.QueryAsync<HistoryTable>(sql)).ToList();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
throw exception;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2203,6 +2203,32 @@ namespace SolarPower.Repository.Implement
|
||||
return result;
|
||||
}
|
||||
}
|
||||
public async Task<List<DeviceInfo>> GetListTempByPowerStationId(int powerStationId, string db_name)
|
||||
{
|
||||
List<DeviceInfo> result;
|
||||
using (IDbConnection conn = this._databaseHelper.GetConnection())
|
||||
{
|
||||
try
|
||||
{
|
||||
var sql = $@"SELECT *
|
||||
FROM {db_name}.device d
|
||||
WHERE d.PowerStationId = @PowerStationId AND d.`Type` = 'PYR' AND d.Deleted = 0
|
||||
UNION
|
||||
SELECT d.*
|
||||
FROM {db_name}.sharedevice sd
|
||||
LEFT JOIN {db_name}.device d ON sd.DeviceId = d.Id
|
||||
WHERE sd.PowerStationId = @PowerStationId AND d.`Type` = 'PYR' AND d.Deleted = 0
|
||||
";
|
||||
|
||||
result = (await conn.QueryAsync<DeviceInfo>(sql, new { PowerStationId = powerStationId })).ToList();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
throw exception;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<PyrheliometerHistory> GetPyrheliometerHistoryPerHour(string dateTime, List<DeviceInfo> deviceInfos)
|
||||
{
|
||||
|
||||
@ -22,7 +22,7 @@ namespace SolarPower.Repository.Interface
|
||||
Task<List<PowerIrradiance>> GetListPowerIrradianceYearByPowerStationId(int powerStationId, string nowDay);
|
||||
Task<List<ExceptionDataTable>> GetExceptionTable(ExceptionSent post);
|
||||
Task<List<CheckBox>> GetInvertCheckBoxByPowerStationId(int powerStationId, string db_name);
|
||||
|
||||
Task<List<InverterHistory>> GetListInverterByPowerStationIdAndDate(int powerStationId, string nowDay);
|
||||
Task<List<HistoryTable>> GethistoryTable(HistorySent post);
|
||||
}
|
||||
}
|
||||
|
||||
@ -742,7 +742,6 @@
|
||||
}, 'json');
|
||||
//#endregion
|
||||
//#endregion
|
||||
});
|
||||
|
||||
//#region 維修單運維人員(異常紀錄)
|
||||
var url_power_station_operation_personnel = "/PowerStation/GetOperationPersonnelSelectOptionList";
|
||||
@ -844,9 +843,12 @@
|
||||
});
|
||||
//#endregion
|
||||
|
||||
|
||||
//歷史第一個table
|
||||
getTable();
|
||||
});
|
||||
|
||||
|
||||
|
||||
//#region 產生檔案html
|
||||
function CreateRecodeFileBox(dom, value, show_del_btn) {
|
||||
var str = "";
|
||||
@ -1765,7 +1767,7 @@
|
||||
document.getElementById("DateGet").style.display = "";//隱藏
|
||||
document.getElementById("MonthGet").style.display = "none";//隱藏
|
||||
document.getElementById("YearGet").style.display = "none";//隱藏
|
||||
|
||||
$('#DateGet').val('');
|
||||
groupType = type;
|
||||
break;
|
||||
case 1:
|
||||
@ -1776,6 +1778,7 @@
|
||||
document.getElementById("DateGet").style.display = "none";//隱藏
|
||||
document.getElementById("MonthGet").style.display = "";//隱藏
|
||||
document.getElementById("YearGet").style.display = "none";//隱藏
|
||||
$('#MonthGet').val('');
|
||||
groupType = type;
|
||||
break;
|
||||
case 2:
|
||||
@ -1786,6 +1789,7 @@
|
||||
document.getElementById("DateGet").style.display = "none";//隱藏
|
||||
document.getElementById("MonthGet").style.display = "none";//隱藏
|
||||
document.getElementById("YearGet").style.display = "";//隱藏
|
||||
$('#YearGet').val('');
|
||||
groupType = type;
|
||||
break;
|
||||
case 3:
|
||||
@ -1797,6 +1801,8 @@
|
||||
document.getElementById("MonthGet").style.display = "none";//隱藏
|
||||
document.getElementById("YearGet").style.display = "none";//隱藏
|
||||
groupType = type;
|
||||
historyRange = '';
|
||||
getTable();
|
||||
break;
|
||||
default:
|
||||
console.log('壞掉了');
|
||||
@ -1860,10 +1866,86 @@
|
||||
}
|
||||
//#endregion
|
||||
|
||||
$('#DateGet').on('change', function () {
|
||||
historyRange = $('#DateGet').val();
|
||||
getTable();
|
||||
});
|
||||
|
||||
$('#MonthGet').on('change', function () {
|
||||
historyRange = $('#MonthGet').val();
|
||||
getTable();
|
||||
});
|
||||
|
||||
$('#YearGet').on('change', function () {
|
||||
$('#YearGet').val(today_format);
|
||||
getTable();
|
||||
});
|
||||
|
||||
function getTable()
|
||||
{
|
||||
console.log(groupType);
|
||||
console.log(historyRange);
|
||||
if (historyRange == "")
|
||||
{
|
||||
var today = new Date();
|
||||
var today_format = today.toISOString().slice(0, 10).replace(/-/g, "-");
|
||||
$('#DateGet').val(today_format);
|
||||
historyRange = $('#DateGet').val();
|
||||
}
|
||||
|
||||
|
||||
var send_data = {
|
||||
GroupType: groupType,
|
||||
HistoryRange: historyRange,
|
||||
PowerstationId: stationId
|
||||
}
|
||||
|
||||
var Nurl = "/StationOverview/GetTotalTableToHistory";
|
||||
$.post(Nurl, send_data, function (rel) {
|
||||
if (rel.code != "0000") {
|
||||
toast_error(rel.msg);
|
||||
return;
|
||||
}
|
||||
$('#HistoryTotalTable').empty();
|
||||
$('#HistoryDetailTable').empty();
|
||||
var TimestampALL;
|
||||
var kwhALL = 0;
|
||||
var diffSOLARHOURALL = 0;
|
||||
var irradianceALL = 0;
|
||||
var prALL;
|
||||
var tempALL;
|
||||
$.each(rel.data, function (index, val) {
|
||||
TimestampALL = val.totaltime;
|
||||
kwhALL += val.kwh;
|
||||
diffSOLARHOURALL += val.diffSOLARHOUR;
|
||||
irradianceALL += val.irradiance;
|
||||
prALL = val.pr;
|
||||
tempALL = val.temp;
|
||||
if (val.length != 0) {
|
||||
$('#HistoryDetailTable').append('<tr>' +
|
||||
'<td>' + val.timestamp + '</td>' +
|
||||
'<td>' + val.kwh + '</td>' +
|
||||
'<td>' + val.diffSOLARHOUR + '</td>' +
|
||||
'<td>' + val.irradiance + '</td>' +
|
||||
'<td>' + val.pr + '</td>' +
|
||||
'<td>' + val.temp + '</td>' +
|
||||
'</tr>');
|
||||
}
|
||||
})
|
||||
if (rel.data.length == 0) {
|
||||
$('#HistoryTotalTable').append('<tr>' + '<td colspan="6" style="text-align:center;">' + '無資料' + '</td>' + '</tr>');
|
||||
$('#HistoryDetailTable').append('<tr>' + '<td colspan="6" style="text-align:center;">' + '無資料' + '</td>' + '</tr>');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#HistoryTotalTable').append('<tr>' +
|
||||
'<td>' + TimestampALL + '</td>' +
|
||||
'<td>' + kwhALL + '</td>' +
|
||||
'<td>' + diffSOLARHOURALL + '</td>' +
|
||||
'<td>' + irradianceALL + '</td>' +
|
||||
'<td>' + prALL + '</td>' +
|
||||
'<td>' + tempALL + '</td>' +
|
||||
'</tr>');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -59,20 +59,13 @@
|
||||
<th>時間</th>
|
||||
<th>發電量(kWh)</th>
|
||||
<th>發電小時</th>
|
||||
<th>日射量(kWh/m2)</th>
|
||||
<th>日照度(kWh/m2)</th>
|
||||
<th>PR(%)</th>
|
||||
<th>溫度(℃)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">2021-05</th>
|
||||
<td>126,121.7</td>
|
||||
<td>119.04</td>
|
||||
<td>140.39</td>
|
||||
<td>84.8</td>
|
||||
<td>91.9</td>
|
||||
</tr>
|
||||
<tbody id="HistoryTotalTable">
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -80,8 +73,21 @@
|
||||
|
||||
<div class="row mb-5">
|
||||
<div class="card p-3 w-100">
|
||||
<div class="row mb-5 d-flex justify-content-end">
|
||||
</div>
|
||||
<p>放圖表</p>
|
||||
<h5 class="font-weight-bold mb-3 pl-5 pb-3">詳細資訊</h5>
|
||||
<table class="table m-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>時間</th>
|
||||
<th>發電量(kWh)</th>
|
||||
<th>發電小時</th>
|
||||
<th>日照度(kWh/m2)</th>
|
||||
<th>PR(%)</th>
|
||||
<th>溫度(℃)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="HistoryDetailTable">
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Reference in New Issue
Block a user