Merge branch 'master' of https://github.com/shanghohui-Company/SolarPower
This commit is contained in:
commit
ce541f8df1
@ -114,6 +114,10 @@ namespace SolarPower.Controllers
|
|||||||
Dictionary<int, List<Device>> deviceDic = new Dictionary<int, List<Device>>();
|
Dictionary<int, List<Device>> deviceDic = new Dictionary<int, List<Device>>();
|
||||||
List<StationIdWithMeterIds> meterDic = new List<StationIdWithMeterIds>();
|
List<StationIdWithMeterIds> meterDic = new List<StationIdWithMeterIds>();
|
||||||
List<int> selected_powerStationIds = new List<int>();
|
List<int> selected_powerStationIds = new List<int>();
|
||||||
|
|
||||||
|
List<PowerStationHistory> powerStationHistories = new List<PowerStationHistory>();
|
||||||
|
List<MeterHistory> meterHistories = new List<MeterHistory>();
|
||||||
|
|
||||||
foreach (var psId_Group in device_powerStationId_Group)
|
foreach (var psId_Group in device_powerStationId_Group)
|
||||||
{
|
{
|
||||||
var powerStation = await powerStationRepository.GetOneAsync(psId_Group.Key);
|
var powerStation = await powerStationRepository.GetOneAsync(psId_Group.Key);
|
||||||
@ -170,13 +174,41 @@ namespace SolarPower.Controllers
|
|||||||
|
|
||||||
var XAxis = new List<string>();
|
var XAxis = new List<string>();
|
||||||
|
|
||||||
#region 電站資料
|
//針對x軸先進行處理,並同時抓取資料
|
||||||
if (selected_powerStationIds.Count() > 0)
|
if (selected_powerStationIds.Count() > 0)
|
||||||
{
|
{
|
||||||
var powerStationHistories = await powerStationRepository.GetPowerStationHistory(post.SelectedDate, post.SearchType, selected_powerStationIds);
|
powerStationHistories = await powerStationRepository.GetPowerStationHistory(post.SelectedDate, post.SearchType, selected_powerStationIds);
|
||||||
|
|
||||||
XAxis.AddRange(powerStationHistories.Select(x => x.Timestamp).Distinct().ToList());
|
XAxis.AddRange(powerStationHistories.Select(x => x.Timestamp).Distinct().ToList());
|
||||||
|
}
|
||||||
|
if (meterDic.Count() > 0)
|
||||||
|
{
|
||||||
|
meterHistories = await powerStationRepository.GetMeterHistory(post.SelectedDate, post.SearchType, meterDic);
|
||||||
|
|
||||||
|
XAxis.AddRange(meterHistories.Select(x => x.TIMESTAMP).Distinct().ToList());
|
||||||
|
}
|
||||||
|
if (deviceDic.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var devices in deviceDic)
|
||||||
|
{
|
||||||
|
var result = await powerStationRepository.GetSensorAvgByDevices(post.SelectedDate, post.SearchType, devices.Value);
|
||||||
|
|
||||||
|
foreach (var rows in result)
|
||||||
|
{
|
||||||
|
var fields = rows as IDictionary<string, object>;
|
||||||
|
XAxis.Add(fields["TIMESTAMP"].ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
XAxis = XAxis.Distinct().ToList();
|
||||||
|
}
|
||||||
|
XAxis.Sort();
|
||||||
|
|
||||||
|
analysisDevice.XAxis = XAxis;
|
||||||
|
|
||||||
|
#region 電站資料
|
||||||
|
if (powerStationHistories.Count() > 0)
|
||||||
|
{
|
||||||
var powerStationHistories_Id_Group = powerStationHistories.GroupBy(x => x.PowerStationId).ToList();
|
var powerStationHistories_Id_Group = powerStationHistories.GroupBy(x => x.PowerStationId).ToList();
|
||||||
|
|
||||||
foreach (var item in powerStationHistories_Id_Group)
|
foreach (var item in powerStationHistories_Id_Group)
|
||||||
@ -185,32 +217,36 @@ namespace SolarPower.Controllers
|
|||||||
|
|
||||||
var temp_item = item.OrderBy(x => x.Timestamp).ToList();
|
var temp_item = item.OrderBy(x => x.Timestamp).ToList();
|
||||||
|
|
||||||
DeviceHistoryInfo Irradiance = new DeviceHistoryInfo();
|
//DeviceHistoryInfo Irradiance = new DeviceHistoryInfo();
|
||||||
Irradiance.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["Irradiance"]);
|
//Irradiance.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["Irradiance"]);
|
||||||
Irradiance.YaxesKey = "Irradiance";
|
//Irradiance.YaxesKey = "Irradiance";
|
||||||
Irradiance.Values = new List<double>();
|
//Irradiance.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
//foreach (var xa in XAxis)
|
||||||
{
|
//{
|
||||||
if (XAxis.IndexOf(history.Timestamp) > -1)
|
// var history = temp_item.Where(x => xa == x.Timestamp).FirstOrDefault();
|
||||||
{
|
|
||||||
Irradiance.Values.Add(history.Irradiance);
|
// if (history != null)
|
||||||
}
|
// {
|
||||||
else
|
// Irradiance.Values.Add(history.Irradiance);
|
||||||
{
|
// }
|
||||||
Irradiance.Values.Add(0);
|
// else
|
||||||
}
|
// {
|
||||||
}
|
// Irradiance.Values.Add(0);
|
||||||
analysisDevice.Series.Add(Irradiance);
|
// }
|
||||||
|
//}
|
||||||
|
//analysisDevice.Series.Add(Irradiance);
|
||||||
|
|
||||||
DeviceHistoryInfo KWH = new DeviceHistoryInfo();
|
DeviceHistoryInfo KWH = new DeviceHistoryInfo();
|
||||||
KWH.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["KWH"]);
|
KWH.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["KWH"]);
|
||||||
KWH.YaxesKey = "KWH";
|
KWH.YaxesKey = "KWH";
|
||||||
KWH.Values = new List<double>();
|
KWH.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.Timestamp) > -1)
|
var history = temp_item.Where(x => xa == x.Timestamp).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
KWH.Values.Add(Math.Round(history.KWH, 2));
|
KWH.Values.Add(history.KWH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -223,9 +259,11 @@ namespace SolarPower.Controllers
|
|||||||
solarHour.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["SolarHour"]);
|
solarHour.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["SolarHour"]);
|
||||||
solarHour.YaxesKey = "SolarHour";
|
solarHour.YaxesKey = "SolarHour";
|
||||||
solarHour.Values = new List<double>();
|
solarHour.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.Timestamp) > -1)
|
var history = temp_item.Where(x => xa == x.Timestamp).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
solarHour.Values.Add(Math.Round(history.SolarHour, 2));
|
solarHour.Values.Add(Math.Round(history.SolarHour, 2));
|
||||||
}
|
}
|
||||||
@ -240,9 +278,11 @@ namespace SolarPower.Controllers
|
|||||||
KWHKWP.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["KWHKWP"]);
|
KWHKWP.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["KWHKWP"]);
|
||||||
KWHKWP.YaxesKey = "KWHKWP";
|
KWHKWP.YaxesKey = "KWHKWP";
|
||||||
KWHKWP.Values = new List<double>();
|
KWHKWP.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.Timestamp) > -1)
|
var history = temp_item.Where(x => xa == x.Timestamp).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
KWHKWP.Values.Add(Math.Round(history.KWHKWP, 2));
|
KWHKWP.Values.Add(Math.Round(history.KWHKWP, 2));
|
||||||
}
|
}
|
||||||
@ -257,9 +297,11 @@ namespace SolarPower.Controllers
|
|||||||
PR.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["PR"]);
|
PR.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["PR"]);
|
||||||
PR.YaxesKey = "PR";
|
PR.YaxesKey = "PR";
|
||||||
PR.Values = new List<double>();
|
PR.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.Timestamp) > -1)
|
var history = temp_item.Where(x => xa == x.Timestamp).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
PR.Values.Add(Math.Round(history.PR, 2));
|
PR.Values.Add(Math.Round(history.PR, 2));
|
||||||
}
|
}
|
||||||
@ -270,33 +312,31 @@ namespace SolarPower.Controllers
|
|||||||
}
|
}
|
||||||
analysisDevice.Series.Add(PR);
|
analysisDevice.Series.Add(PR);
|
||||||
|
|
||||||
DeviceHistoryInfo modelTemperature = new DeviceHistoryInfo();
|
//DeviceHistoryInfo modelTemperature = new DeviceHistoryInfo();
|
||||||
modelTemperature.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["Temperature"]);
|
//modelTemperature.Name = string.Format("{0}:{1}", powerStation.Name, analysisDevice.MultipleYaxes["Temperature"]);
|
||||||
modelTemperature.YaxesKey = "Temperature";
|
//modelTemperature.YaxesKey = "Temperature";
|
||||||
modelTemperature.Values = new List<double>();
|
//modelTemperature.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
//foreach (var xa in XAxis)
|
||||||
{
|
//{
|
||||||
if (XAxis.IndexOf(history.Timestamp) > -1)
|
// var history = temp_item.Where(x => xa == x.Timestamp).FirstOrDefault();
|
||||||
{
|
|
||||||
modelTemperature.Values.Add(Math.Round(history.Temperature, 2));
|
// if (history != null)
|
||||||
}
|
// {
|
||||||
else
|
// modelTemperature.Values.Add(Math.Round(history.Temperature, 2));
|
||||||
{
|
// }
|
||||||
modelTemperature.Values.Add(0);
|
// else
|
||||||
}
|
// {
|
||||||
}
|
// modelTemperature.Values.Add(0);
|
||||||
analysisDevice.Series.Add(modelTemperature);
|
// }
|
||||||
|
//}
|
||||||
|
//analysisDevice.Series.Add(modelTemperature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 電錶資料
|
#region 電錶資料
|
||||||
if (meterDic.Count() > 0)
|
if (meterHistories.Count() > 0)
|
||||||
{
|
{
|
||||||
var meterHistories = await powerStationRepository.GetMeterHistory(post.SelectedDate, post.SearchType, meterDic);
|
|
||||||
|
|
||||||
XAxis.AddRange(meterHistories.Select(x => x.TIMESTAMP).Distinct().ToList());
|
|
||||||
|
|
||||||
var meterHistories_Id_Group = meterHistories.GroupBy(x => x.METERID).ToList();
|
var meterHistories_Id_Group = meterHistories.GroupBy(x => x.METERID).ToList();
|
||||||
|
|
||||||
foreach (var item in meterHistories_Id_Group)
|
foreach (var item in meterHistories_Id_Group)
|
||||||
@ -307,9 +347,11 @@ namespace SolarPower.Controllers
|
|||||||
OUTPUT_KWH.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["OUTPUT_KWH"]);
|
OUTPUT_KWH.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["OUTPUT_KWH"]);
|
||||||
OUTPUT_KWH.YaxesKey = "OUTPUT_KWH";
|
OUTPUT_KWH.YaxesKey = "OUTPUT_KWH";
|
||||||
OUTPUT_KWH.Values = new List<double>();
|
OUTPUT_KWH.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
OUTPUT_KWH.Values.Add(Math.Round(history.OUTPUT_KWH, 2));
|
OUTPUT_KWH.Values.Add(Math.Round(history.OUTPUT_KWH, 2));
|
||||||
}
|
}
|
||||||
@ -324,9 +366,11 @@ namespace SolarPower.Controllers
|
|||||||
INPUT_KWH.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["INPUT_KWH"]);
|
INPUT_KWH.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["INPUT_KWH"]);
|
||||||
INPUT_KWH.YaxesKey = "INPUT_KWH";
|
INPUT_KWH.YaxesKey = "INPUT_KWH";
|
||||||
INPUT_KWH.Values = new List<double>();
|
INPUT_KWH.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
INPUT_KWH.Values.Add(Math.Round(history.INPUT_KWH, 2));
|
INPUT_KWH.Values.Add(Math.Round(history.INPUT_KWH, 2));
|
||||||
}
|
}
|
||||||
@ -341,9 +385,11 @@ namespace SolarPower.Controllers
|
|||||||
V_AB.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["V_AB"]);
|
V_AB.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["V_AB"]);
|
||||||
V_AB.YaxesKey = "V_AB";
|
V_AB.YaxesKey = "V_AB";
|
||||||
V_AB.Values = new List<double>();
|
V_AB.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
V_AB.Values.Add(Math.Round(history.V_AB, 2));
|
V_AB.Values.Add(Math.Round(history.V_AB, 2));
|
||||||
}
|
}
|
||||||
@ -358,9 +404,11 @@ namespace SolarPower.Controllers
|
|||||||
V_BC.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["V_BC"]);
|
V_BC.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["V_BC"]);
|
||||||
V_BC.YaxesKey = "V_BC";
|
V_BC.YaxesKey = "V_BC";
|
||||||
V_BC.Values = new List<double>();
|
V_BC.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
V_BC.Values.Add(Math.Round(history.V_BC, 2));
|
V_BC.Values.Add(Math.Round(history.V_BC, 2));
|
||||||
}
|
}
|
||||||
@ -375,9 +423,11 @@ namespace SolarPower.Controllers
|
|||||||
V_CA.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["V_BC"]);
|
V_CA.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["V_BC"]);
|
||||||
V_CA.YaxesKey = "V_CA";
|
V_CA.YaxesKey = "V_CA";
|
||||||
V_CA.Values = new List<double>();
|
V_CA.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
V_CA.Values.Add(Math.Round(history.V_CA, 2));
|
V_CA.Values.Add(Math.Round(history.V_CA, 2));
|
||||||
}
|
}
|
||||||
@ -392,9 +442,11 @@ namespace SolarPower.Controllers
|
|||||||
I_A.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["I_A"]);
|
I_A.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["I_A"]);
|
||||||
I_A.YaxesKey = "I_A";
|
I_A.YaxesKey = "I_A";
|
||||||
I_A.Values = new List<double>();
|
I_A.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
I_A.Values.Add(Math.Round(history.I_A, 2));
|
I_A.Values.Add(Math.Round(history.I_A, 2));
|
||||||
}
|
}
|
||||||
@ -409,9 +461,11 @@ namespace SolarPower.Controllers
|
|||||||
I_B.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["I_B"]);
|
I_B.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["I_B"]);
|
||||||
I_B.YaxesKey = "I_B";
|
I_B.YaxesKey = "I_B";
|
||||||
I_B.Values = new List<double>();
|
I_B.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
I_B.Values.Add(Math.Round(history.I_B, 2));
|
I_B.Values.Add(Math.Round(history.I_B, 2));
|
||||||
}
|
}
|
||||||
@ -426,9 +480,11 @@ namespace SolarPower.Controllers
|
|||||||
I_C.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["I_C"]);
|
I_C.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["I_C"]);
|
||||||
I_C.YaxesKey = "I_C";
|
I_C.YaxesKey = "I_C";
|
||||||
I_C.Values = new List<double>();
|
I_C.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
I_C.Values.Add(Math.Round(history.I_C, 2));
|
I_C.Values.Add(Math.Round(history.I_C, 2));
|
||||||
}
|
}
|
||||||
@ -443,9 +499,11 @@ namespace SolarPower.Controllers
|
|||||||
P.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["P"]);
|
P.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["P"]);
|
||||||
P.YaxesKey = "P";
|
P.YaxesKey = "P";
|
||||||
P.Values = new List<double>();
|
P.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
P.Values.Add(Math.Round(history.P, 2));
|
P.Values.Add(Math.Round(history.P, 2));
|
||||||
}
|
}
|
||||||
@ -460,9 +518,11 @@ namespace SolarPower.Controllers
|
|||||||
F.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["F"]);
|
F.Name = string.Format("{0}:{1}", item.Key, analysisDevice.MultipleYaxes["F"]);
|
||||||
F.YaxesKey = "F";
|
F.YaxesKey = "F";
|
||||||
F.Values = new List<double>();
|
F.Values = new List<double>();
|
||||||
foreach (var history in temp_item)
|
foreach (var xa in XAxis)
|
||||||
{
|
{
|
||||||
if (XAxis.IndexOf(history.TIMESTAMP) > -1)
|
var history = temp_item.Where(x => xa == x.TIMESTAMP).FirstOrDefault();
|
||||||
|
|
||||||
|
if (history != null)
|
||||||
{
|
{
|
||||||
F.Values.Add(Math.Round(history.F, 2));
|
F.Values.Add(Math.Round(history.F, 2));
|
||||||
}
|
}
|
||||||
@ -483,13 +543,7 @@ namespace SolarPower.Controllers
|
|||||||
{
|
{
|
||||||
var result = await powerStationRepository.GetSensorAvgByDevices(post.SelectedDate, post.SearchType, devices.Value);
|
var result = await powerStationRepository.GetSensorAvgByDevices(post.SelectedDate, post.SearchType, devices.Value);
|
||||||
|
|
||||||
foreach (var rows in result)
|
var powerStation = await powerStationRepository.GetOneAsync(devices.Key);
|
||||||
{
|
|
||||||
var fields = rows as IDictionary<string, object>;
|
|
||||||
XAxis.Add(fields["TIMESTAMP"].ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
foreach (var device in devices.Value)
|
foreach (var device in devices.Value)
|
||||||
{
|
{
|
||||||
DeviceHistoryInfo deviceHistoryInfo = new DeviceHistoryInfo();
|
DeviceHistoryInfo deviceHistoryInfo = new DeviceHistoryInfo();
|
||||||
@ -525,7 +579,7 @@ namespace SolarPower.Controllers
|
|||||||
suffix = string.Empty;
|
suffix = string.Empty;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
deviceHistoryInfo.Name = string.Format("{0}:{1}", device.Name, suffix);
|
deviceHistoryInfo.Name = string.Format("{0}:{1}({2})", powerStation.Name, device.Name, suffix);
|
||||||
deviceHistoryInfo.YaxesKey = YaxesKey;
|
deviceHistoryInfo.YaxesKey = YaxesKey;
|
||||||
deviceHistoryInfo.Values = new List<double>();
|
deviceHistoryInfo.Values = new List<double>();
|
||||||
foreach (var rows in result)
|
foreach (var rows in result)
|
||||||
@ -546,10 +600,7 @@ namespace SolarPower.Controllers
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
analysisDevice.XAxis = XAxis.Distinct().ToList();
|
|
||||||
|
|
||||||
apiResult.Code = "0000";
|
apiResult.Code = "0000";
|
||||||
|
|
||||||
apiResult.Data = analysisDevice;
|
apiResult.Data = analysisDevice;
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
|
|||||||
@ -869,196 +869,7 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
logger.LogInformation("【CalcAvgPowerStationJob】【執行完成補償機制】");
|
logger.LogInformation("【CalcAvgPowerStationJob】【執行完成補償機制】");
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 寄送日月報
|
|
||||||
var users = userRepository.GetAllAsync();
|
|
||||||
var ttt = new List<string>() {
|
|
||||||
"s506488@gmail.com",
|
|
||||||
"cesarliuc@gmail.com"
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach (var user in users.Result)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
logger.LogInformation("【CalcAvgPowerStationJob】【開始產生使用者[{0}({1})]的日月報】", user.Account, user.Name);
|
|
||||||
|
|
||||||
List<OperationPersonnel> powerstations = new List<OperationPersonnel>();
|
|
||||||
powerstations = await noticeScheduleRepository.GetPowerStationOperationPersonnel(user.Id);
|
|
||||||
if (powerstations.Count == 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
List<Excelpowerstation> sentdaypowerstations = powerstations.Where(x => x.EmailDayReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList();
|
|
||||||
List<Excelpowerstation> sentMaxpowerstations = powerstations.Where(x => x.EmailComplexReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList();
|
|
||||||
|
|
||||||
Controllers.StationReportController stationReportController = new Controllers.StationReportController(powerStationRepository, stationReportRepository);
|
|
||||||
//日報表
|
|
||||||
if (sentdaypowerstations.Count != 0)
|
|
||||||
{
|
|
||||||
Excel dayexcel = new Excel()
|
|
||||||
{
|
|
||||||
FormType = 0,
|
|
||||||
PowerStation = sentdaypowerstations,
|
|
||||||
SearchType = 0,
|
|
||||||
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"),
|
|
||||||
Userid = user.Id
|
|
||||||
};
|
|
||||||
var stationReportName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(dayexcel, Formatting.Indented));
|
|
||||||
if (stationReportName != "")
|
|
||||||
{
|
|
||||||
NoticeSchedule DaySchedule = new NoticeSchedule()
|
|
||||||
{
|
|
||||||
UserId = user.Id,
|
|
||||||
EmailType = 0,
|
|
||||||
RecipientEmail = user.Email,
|
|
||||||
Subject = "日報表",
|
|
||||||
Attachment = stationReportName,
|
|
||||||
RecipientName = user.Name,
|
|
||||||
Type = 1
|
|
||||||
};
|
|
||||||
List<string> properties = new List<string>()
|
|
||||||
{
|
|
||||||
"UserId",
|
|
||||||
"EmailType",
|
|
||||||
"RecipientEmail",
|
|
||||||
"Subject",
|
|
||||||
"Attachment",
|
|
||||||
"RecipientName",
|
|
||||||
"Type"
|
|
||||||
};
|
|
||||||
await noticeScheduleRepository.AddOneAsync(DaySchedule, properties);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//綜合報表 每日
|
|
||||||
if (sentMaxpowerstations.Count != 0)
|
|
||||||
{
|
|
||||||
Select_table2 maxdayexcel = new Select_table2()
|
|
||||||
{
|
|
||||||
FormType = 0,
|
|
||||||
PowerStation = sentMaxpowerstations,
|
|
||||||
SearchType = 0,
|
|
||||||
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"),
|
|
||||||
Userid = user.Id
|
|
||||||
};
|
|
||||||
var stationMaxReportName = stationReportController.ExportExcelmaxtableBackDownload(JsonConvert.SerializeObject(maxdayexcel, Formatting.Indented));
|
|
||||||
NoticeSchedule MaxSchedule = new NoticeSchedule()
|
|
||||||
{
|
|
||||||
UserId = user.Id,
|
|
||||||
EmailType = 2,
|
|
||||||
RecipientEmail = user.Email,
|
|
||||||
Subject = "綜合報表",
|
|
||||||
Attachment = stationMaxReportName,
|
|
||||||
RecipientName = user.Name,
|
|
||||||
Type = 1
|
|
||||||
};
|
|
||||||
List<string> properties = new List<string>()
|
|
||||||
{
|
|
||||||
"UserId",
|
|
||||||
"EmailType",
|
|
||||||
"RecipientEmail",
|
|
||||||
"Subject",
|
|
||||||
"Attachment",
|
|
||||||
"RecipientName",
|
|
||||||
"Type"
|
|
||||||
};
|
|
||||||
await noticeScheduleRepository.AddOneAsync(MaxSchedule, properties);
|
|
||||||
|
|
||||||
if (DateTime.Now.ToString("dd") == "01")
|
|
||||||
{
|
|
||||||
Select_table2 maxmonthexcel = new Select_table2()
|
|
||||||
{
|
|
||||||
FormType = 0,
|
|
||||||
PowerStation = sentMaxpowerstations,
|
|
||||||
SearchType = 0,
|
|
||||||
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM"),
|
|
||||||
Userid = user.Id
|
|
||||||
};
|
|
||||||
var stationReportmaxmonthName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(maxmonthexcel, Formatting.Indented));
|
|
||||||
NoticeSchedule MaxmonthSchedule = new NoticeSchedule()
|
|
||||||
{
|
|
||||||
RecipientEmail = user.Email,
|
|
||||||
Subject = "綜合報表",
|
|
||||||
Attachment = stationReportmaxmonthName,
|
|
||||||
RecipientName = user.Name,
|
|
||||||
Type = 1,
|
|
||||||
UserId = user.Id,
|
|
||||||
EmailType = 2
|
|
||||||
};
|
|
||||||
List<string> properties2 = new List<string>()
|
|
||||||
{
|
|
||||||
"UserId",
|
|
||||||
"EmailType",
|
|
||||||
"RecipientEmail",
|
|
||||||
"Subject",
|
|
||||||
"Attachment",
|
|
||||||
"RecipientName",
|
|
||||||
"Type"
|
|
||||||
};
|
|
||||||
await noticeScheduleRepository.AddOneAsync(MaxmonthSchedule, properties2);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (DateTime.Now.ToString("dd") == "01")
|
|
||||||
{
|
|
||||||
List<Excelpowerstation> sentmonthpowerstations = powerstations.Where(x => x.EmailMonthReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList();
|
|
||||||
if (sentmonthpowerstations.Count == 0)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Excel monthexcel = new Excel()
|
|
||||||
{
|
|
||||||
FormType = 1,
|
|
||||||
PowerStation = sentmonthpowerstations,
|
|
||||||
SearchType = 2,
|
|
||||||
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM"),
|
|
||||||
Userid = user.Id
|
|
||||||
};
|
|
||||||
var stationReportmonthName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(monthexcel, Formatting.Indented));
|
|
||||||
if (stationReportmonthName != "")
|
|
||||||
{
|
|
||||||
NoticeSchedule MonthSchedule = new NoticeSchedule()
|
|
||||||
{
|
|
||||||
RecipientEmail = user.Email,
|
|
||||||
Subject = "月報表",
|
|
||||||
Attachment = stationReportmonthName,
|
|
||||||
RecipientName = user.Name,
|
|
||||||
Type = 1,
|
|
||||||
UserId = user.Id,
|
|
||||||
EmailType = 1
|
|
||||||
};
|
|
||||||
List<string> properties2 = new List<string>()
|
|
||||||
{
|
|
||||||
"UserId",
|
|
||||||
"EmailType",
|
|
||||||
"RecipientEmail",
|
|
||||||
"Subject",
|
|
||||||
"Attachment",
|
|
||||||
"RecipientName",
|
|
||||||
"Type"
|
|
||||||
};
|
|
||||||
await noticeScheduleRepository.AddOneAsync(MonthSchedule, properties2);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.LogInformation("【CalcAvgPowerStationJob】【產生完成使用者[{0}({1})]的日月報】", user.Account, user.Name);
|
|
||||||
}
|
|
||||||
catch (Exception exception)
|
|
||||||
{
|
|
||||||
logger.LogError("【CalcAvgPowerStationJob】【產生失敗使用者[{0}({1})]的日月報】", user.Account, user.Name);
|
|
||||||
logger.LogError("【CalcAvgPowerStationJob】[Exception] - {0}", exception.Message);
|
|
||||||
if (exception.InnerException != null)
|
|
||||||
{
|
|
||||||
logger.LogError("【CalcAvgPowerStationJob】[InnerException] - {0}", exception.InnerException.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
var line = new StackTrace(exception, true).GetFrame(0).GetFileLineNumber();
|
|
||||||
logger.LogError("【CalcAvgPowerStationJob】[錯誤行數] - {0}", line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
logger.LogInformation("【CalcAvgPowerStationJob】【任務完成】");
|
logger.LogInformation("【CalcAvgPowerStationJob】【任務完成】");
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using Quartz;
|
using Quartz;
|
||||||
using SolarPower.Models;
|
using SolarPower.Models;
|
||||||
using SolarPower.Repository.Interface;
|
using SolarPower.Repository.Interface;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -15,11 +17,24 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
{
|
{
|
||||||
private readonly ILogger<OperationScheduleJob> logger;
|
private readonly ILogger<OperationScheduleJob> logger;
|
||||||
private IOperationRepository operationRepository;
|
private IOperationRepository operationRepository;
|
||||||
|
private readonly IPowerStationRepository powerStationRepository;
|
||||||
|
private readonly IUserRepository userRepository;
|
||||||
|
private readonly INoticeScheduleRepository noticeScheduleRepository;
|
||||||
|
private readonly IStationReportRepository stationReportRepository;
|
||||||
|
|
||||||
public OperationScheduleJob(ILogger<OperationScheduleJob> logger, IOperationRepository operationRepository)
|
public OperationScheduleJob(ILogger<OperationScheduleJob> logger,
|
||||||
|
IOperationRepository operationRepository,
|
||||||
|
IPowerStationRepository powerStationRepository,
|
||||||
|
IUserRepository userRepository,
|
||||||
|
INoticeScheduleRepository noticeScheduleRepository,
|
||||||
|
IStationReportRepository stationReportRepository)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.operationRepository = operationRepository;
|
this.operationRepository = operationRepository;
|
||||||
|
this.powerStationRepository = powerStationRepository;
|
||||||
|
this.userRepository = userRepository;
|
||||||
|
this.noticeScheduleRepository = noticeScheduleRepository;
|
||||||
|
this.stationReportRepository = stationReportRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Execute(IJobExecutionContext context)
|
public async Task Execute(IJobExecutionContext context)
|
||||||
@ -180,6 +195,197 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region 寄送日月報
|
||||||
|
var users = userRepository.GetAllAsync();
|
||||||
|
var ttt = new List<string>() {
|
||||||
|
"s506488@gmail.com",
|
||||||
|
"cesarliuc@gmail.com"
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var user in users.Result)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
logger.LogInformation("【OperationScheduleJob】【開始產生使用者[{0}({1})]的日月報】", user.Account, user.Name);
|
||||||
|
|
||||||
|
List<OperationPersonnel> powerstations = new List<OperationPersonnel>();
|
||||||
|
powerstations = await noticeScheduleRepository.GetPowerStationOperationPersonnel(user.Id);
|
||||||
|
if (powerstations.Count == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<Excelpowerstation> sentdaypowerstations = powerstations.Where(x => x.EmailDayReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList();
|
||||||
|
List<Excelpowerstation> sentMaxpowerstations = powerstations.Where(x => x.EmailComplexReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList();
|
||||||
|
|
||||||
|
Controllers.StationReportController stationReportController = new Controllers.StationReportController(powerStationRepository, stationReportRepository);
|
||||||
|
//日報表
|
||||||
|
if (sentdaypowerstations.Count != 0)
|
||||||
|
{
|
||||||
|
Excel dayexcel = new Excel()
|
||||||
|
{
|
||||||
|
FormType = 0,
|
||||||
|
PowerStation = sentdaypowerstations,
|
||||||
|
SearchType = 0,
|
||||||
|
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"),
|
||||||
|
Userid = user.Id
|
||||||
|
};
|
||||||
|
var stationReportName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(dayexcel, Formatting.Indented));
|
||||||
|
if (stationReportName != "")
|
||||||
|
{
|
||||||
|
NoticeSchedule DaySchedule = new NoticeSchedule()
|
||||||
|
{
|
||||||
|
UserId = user.Id,
|
||||||
|
EmailType = 0,
|
||||||
|
RecipientEmail = user.Email,
|
||||||
|
Subject = "日報表",
|
||||||
|
Attachment = stationReportName,
|
||||||
|
RecipientName = user.Name,
|
||||||
|
Type = 1
|
||||||
|
};
|
||||||
|
List<string> properties = new List<string>()
|
||||||
|
{
|
||||||
|
"UserId",
|
||||||
|
"EmailType",
|
||||||
|
"RecipientEmail",
|
||||||
|
"Subject",
|
||||||
|
"Attachment",
|
||||||
|
"RecipientName",
|
||||||
|
"Type"
|
||||||
|
};
|
||||||
|
await noticeScheduleRepository.AddOneAsync(DaySchedule, properties);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//綜合報表 每日
|
||||||
|
if (sentMaxpowerstations.Count != 0)
|
||||||
|
{
|
||||||
|
Select_table2 maxdayexcel = new Select_table2()
|
||||||
|
{
|
||||||
|
FormType = 0,
|
||||||
|
PowerStation = sentMaxpowerstations,
|
||||||
|
SearchType = 0,
|
||||||
|
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"),
|
||||||
|
Userid = user.Id
|
||||||
|
};
|
||||||
|
var stationMaxReportName = stationReportController.ExportExcelmaxtableBackDownload(JsonConvert.SerializeObject(maxdayexcel, Formatting.Indented));
|
||||||
|
NoticeSchedule MaxSchedule = new NoticeSchedule()
|
||||||
|
{
|
||||||
|
UserId = user.Id,
|
||||||
|
EmailType = 2,
|
||||||
|
RecipientEmail = user.Email,
|
||||||
|
Subject = "綜合報表",
|
||||||
|
Attachment = stationMaxReportName,
|
||||||
|
RecipientName = user.Name,
|
||||||
|
Type = 1
|
||||||
|
};
|
||||||
|
List<string> properties = new List<string>()
|
||||||
|
{
|
||||||
|
"UserId",
|
||||||
|
"EmailType",
|
||||||
|
"RecipientEmail",
|
||||||
|
"Subject",
|
||||||
|
"Attachment",
|
||||||
|
"RecipientName",
|
||||||
|
"Type"
|
||||||
|
};
|
||||||
|
await noticeScheduleRepository.AddOneAsync(MaxSchedule, properties);
|
||||||
|
|
||||||
|
if (DateTime.Now.ToString("dd") == "01")
|
||||||
|
{
|
||||||
|
Select_table2 maxmonthexcel = new Select_table2()
|
||||||
|
{
|
||||||
|
FormType = 0,
|
||||||
|
PowerStation = sentMaxpowerstations,
|
||||||
|
SearchType = 0,
|
||||||
|
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM"),
|
||||||
|
Userid = user.Id
|
||||||
|
};
|
||||||
|
var stationReportmaxmonthName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(maxmonthexcel, Formatting.Indented));
|
||||||
|
NoticeSchedule MaxmonthSchedule = new NoticeSchedule()
|
||||||
|
{
|
||||||
|
RecipientEmail = user.Email,
|
||||||
|
Subject = "綜合報表",
|
||||||
|
Attachment = stationReportmaxmonthName,
|
||||||
|
RecipientName = user.Name,
|
||||||
|
Type = 1,
|
||||||
|
UserId = user.Id,
|
||||||
|
EmailType = 2
|
||||||
|
};
|
||||||
|
List<string> properties2 = new List<string>()
|
||||||
|
{
|
||||||
|
"UserId",
|
||||||
|
"EmailType",
|
||||||
|
"RecipientEmail",
|
||||||
|
"Subject",
|
||||||
|
"Attachment",
|
||||||
|
"RecipientName",
|
||||||
|
"Type"
|
||||||
|
};
|
||||||
|
await noticeScheduleRepository.AddOneAsync(MaxmonthSchedule, properties2);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DateTime.Now.ToString("dd") == "01")
|
||||||
|
{
|
||||||
|
List<Excelpowerstation> sentmonthpowerstations = powerstations.Where(x => x.EmailMonthReport == 1).Select(a => new Excelpowerstation { Name = a.Name, Value = a.PowerStationId.ToString() }).ToList();
|
||||||
|
if (sentmonthpowerstations.Count == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Excel monthexcel = new Excel()
|
||||||
|
{
|
||||||
|
FormType = 1,
|
||||||
|
PowerStation = sentmonthpowerstations,
|
||||||
|
SearchType = 2,
|
||||||
|
Time = DateTime.Now.AddDays(-1).ToString("yyyy-MM"),
|
||||||
|
Userid = user.Id
|
||||||
|
};
|
||||||
|
var stationReportmonthName = stationReportController.ExportExcelBackDownload(JsonConvert.SerializeObject(monthexcel, Formatting.Indented));
|
||||||
|
if (stationReportmonthName != "")
|
||||||
|
{
|
||||||
|
NoticeSchedule MonthSchedule = new NoticeSchedule()
|
||||||
|
{
|
||||||
|
RecipientEmail = user.Email,
|
||||||
|
Subject = "月報表",
|
||||||
|
Attachment = stationReportmonthName,
|
||||||
|
RecipientName = user.Name,
|
||||||
|
Type = 1,
|
||||||
|
UserId = user.Id,
|
||||||
|
EmailType = 1
|
||||||
|
};
|
||||||
|
List<string> properties2 = new List<string>()
|
||||||
|
{
|
||||||
|
"UserId",
|
||||||
|
"EmailType",
|
||||||
|
"RecipientEmail",
|
||||||
|
"Subject",
|
||||||
|
"Attachment",
|
||||||
|
"RecipientName",
|
||||||
|
"Type"
|
||||||
|
};
|
||||||
|
await noticeScheduleRepository.AddOneAsync(MonthSchedule, properties2);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.LogInformation("【OperationScheduleJob】【產生完成使用者[{0}({1})]的日月報】", user.Account, user.Name);
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
logger.LogError("【OperationScheduleJob】【產生失敗使用者[{0}({1})]的日月報】", user.Account, user.Name);
|
||||||
|
logger.LogError("【OperationScheduleJob】[Exception] - {0}", exception.Message);
|
||||||
|
if (exception.InnerException != null)
|
||||||
|
{
|
||||||
|
logger.LogError("【OperationScheduleJob】[InnerException] - {0}", exception.InnerException.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
var line = new StackTrace(exception, true).GetFrame(0).GetFileLineNumber();
|
||||||
|
logger.LogError("【OperationScheduleJob】[錯誤行數] - {0}", line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -80,10 +80,10 @@ namespace SolarPower.Repository.Implement
|
|||||||
) c on a.powerStationid = c.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d'') = c.report_date
|
) c on a.powerStationid = c.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d'') = c.report_date
|
||||||
left join
|
left join
|
||||||
(
|
(
|
||||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'')report_date, irradiance, Temperature
|
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:00'')report_date, irradiance, Temperature
|
||||||
from sensor_history_hour
|
from sensor_history_hour
|
||||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:%i'') = d.report_date
|
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:00'') = d.report_date
|
||||||
join
|
join
|
||||||
(
|
(
|
||||||
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
||||||
|
|||||||
@ -388,15 +388,16 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('#js_list_accordion').on("change", 'input[name="selectedInverterId[]"]', function (event) {
|
$('#js_list_accordion').on("change", 'input[name="selectedInverterId[]"]', function (event) {
|
||||||
if (this.checked) {
|
|
||||||
if ($.inArray(this.value, selected_inverter) < 0) {
|
|
||||||
var powerStationId = $(this).attr('data-power-station-id');
|
var powerStationId = $(this).attr('data-power-station-id');
|
||||||
selected_inverter.push({ powerStationId: powerStationId, InverterId: this.value });
|
|
||||||
|
if (this.checked) {
|
||||||
|
if ($.map(selected_inverter, function (item, index) { return item.InverterId }).indexOf(this.value) < 0) {
|
||||||
|
selected_inverter.push({ 'powerStationId': powerStationId, 'InverterId': this.value });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($.inArray(this.value, selected_inverter) > -1) {
|
var result = $.map(selected_inverter, function (item, index) { return item.InverterId }).indexOf(this.value)
|
||||||
var powerStationId = $(this).attr('data-power-station-id');
|
if (result > -1) {
|
||||||
selected_inverter.splice($.inArray({ powerStationId: powerStationId, InverterId: this.value }, selected_inverter), 1);
|
selected_inverter.splice(result, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -67,7 +67,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pr-3">
|
<div class="pr-3">
|
||||||
<button type="button" class="btn btn-secondary waves-effect waves-themed" onclick="GetAnalysisStationInfo()">查詢</button>
|
<button type="button" class="btn btn-secondary waves-effect waves-themed" id="btn-analysis-stationinfo" onclick="GetAnalysisStationInfo()">查詢</button>
|
||||||
@*<button type="button" class="btn btn-secondary waves-effect waves-themed" onclick="DataBackFill()">回填</button>*@
|
@*<button type="button" class="btn btn-secondary waves-effect waves-themed" onclick="DataBackFill()">回填</button>*@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -123,10 +123,10 @@
|
|||||||
var selected_device = [];
|
var selected_device = [];
|
||||||
var PWS_compare_col = [
|
var PWS_compare_col = [
|
||||||
{ key: "KWH", title: "發電量", default: true },
|
{ key: "KWH", title: "發電量", default: true },
|
||||||
{ key: "Irradiance", title: "日照度", default: false },
|
@*{ key: "Irradiance", title: "日照度", default: false },*@
|
||||||
{ key: "KWHKWP", title: "有效日照時數", default: false },
|
{ key: "KWHKWP", title: "有效日照時數", default: false },
|
||||||
{ key: "PR", title: "PR %", default: false },
|
{ key: "PR", title: "PR %", default: false },
|
||||||
{ key: "Temperature", title: "模組溫度", default: false },
|
@*{ key: "Temperature", title: "模組溫度", default: false },*@
|
||||||
{ key: "SolarHour", title: "日照小時", default: false },
|
{ key: "SolarHour", title: "日照小時", default: false },
|
||||||
]
|
]
|
||||||
var PWR_compare_col = [
|
var PWR_compare_col = [
|
||||||
@ -625,6 +625,13 @@
|
|||||||
DeviceIdInfos: selected_device
|
DeviceIdInfos: selected_device
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selected_device.length <= 0) {
|
||||||
|
toast_warning("請至少選擇一設備");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#btn-analysis-stationinfo").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);
|
||||||
|
|
||||||
$.post(url, send_data, function (rel) {
|
$.post(url, send_data, function (rel) {
|
||||||
if (rel.code != "0000") {
|
if (rel.code != "0000") {
|
||||||
toast_error(rel.msg);
|
toast_error(rel.msg);
|
||||||
@ -641,6 +648,9 @@
|
|||||||
|
|
||||||
$('input[name="compare_col[]"]').trigger('change');
|
$('input[name="compare_col[]"]').trigger('change');
|
||||||
|
|
||||||
|
ReloadHighCharts()
|
||||||
|
$("#btn-analysis-stationinfo").html('查詢').attr("disabled", false);
|
||||||
|
|
||||||
}, 'json');
|
}, 'json');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -710,9 +720,7 @@
|
|||||||
height: 600,
|
height: 600,
|
||||||
animation: false
|
animation: false
|
||||||
},
|
},
|
||||||
title: {
|
title: false,
|
||||||
text: '交叉分析圖表'
|
|
||||||
},
|
|
||||||
tooltip: {
|
tooltip: {
|
||||||
formatter: function () {
|
formatter: function () {
|
||||||
return '<b>' + this.series.name + '</b><br>' +
|
return '<b>' + this.series.name + '</b><br>' +
|
||||||
|
|||||||
@ -97,7 +97,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto" style="width: 60%;">
|
<div class="col-md-8 col-sm-12">
|
||||||
<div id="panel-1" class="panel">
|
<div id="panel-1" class="panel">
|
||||||
<div class="panel-hdr">
|
<div class="panel-hdr">
|
||||||
<h2>電站分佈圖</h2>
|
<h2>電站分佈圖</h2>
|
||||||
@ -111,9 +111,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto" style="width: 40%;">
|
<div class="col-md-4 col-sm-12">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-6">
|
<div class="col-xl-6 mb-4">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header bg-fusion-25 py-2 pr-3 d-flex align-items-center flex-wrap">
|
<div class="card-header bg-fusion-25 py-2 pr-3 d-flex align-items-center flex-wrap">
|
||||||
<h4 class="mb-0 font-weight-bold"><span class="fal fa-bolt mr-1"></span> 電站總數</h4>
|
<h4 class="mb-0 font-weight-bold"><span class="fal fa-bolt mr-1"></span> 電站總數</h4>
|
||||||
@ -125,7 +125,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-xl-6">
|
<div class="col-xl-6 mb-4">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header bg-fusion-25 py-2 pr-3 d-flex align-items-center flex-wrap">
|
<div class="card-header bg-fusion-25 py-2 pr-3 d-flex align-items-center flex-wrap">
|
||||||
<h4 class="mb-0 font-weight-bold"><span class="fal fa-bolt mr-1"></span> 總裝置容量</h4>
|
<h4 class="mb-0 font-weight-bold"><span class="fal fa-bolt mr-1"></span> 總裝置容量</h4>
|
||||||
@ -136,7 +136,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xl-12 mt-4">
|
<div class="col-xl-12">
|
||||||
<div id="panel-1" class="panel">
|
<div id="panel-1" class="panel">
|
||||||
<div class="panel-hdr">
|
<div class="panel-hdr">
|
||||||
<h2>電站分佈小計</h2>
|
<h2>電站分佈小計</h2>
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
"BackgroundServiceCron": {
|
"BackgroundServiceCron": {
|
||||||
"CalcPowerStationJob": "0 5 * * * ?",
|
"CalcPowerStationJob": "0 5 * * * ?",
|
||||||
"CalcAvgPowerStationJob": "0 0 2 * * ?",
|
"CalcAvgPowerStationJob": "0 0 2 * * ?",
|
||||||
"OperationScheduleJob": "0 0 2 * * ?",
|
"OperationScheduleJob": "0 0 8 * * ?",
|
||||||
"CalcInverter15minJob": "0 2/15 * * * ?",
|
"CalcInverter15minJob": "0 2/15 * * * ?",
|
||||||
"SendEmailJob": "0 0/5 * * * ?",
|
"SendEmailJob": "0 0/5 * * * ?",
|
||||||
"ExceptionSchedule": "0 0/5 * * * ?"
|
"ExceptionSchedule": "0 0/5 * * * ?"
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
"BackgroundServiceCron": {
|
"BackgroundServiceCron": {
|
||||||
"CalcPowerStationJob": "0 5 * * * ?",
|
"CalcPowerStationJob": "0 5 * * * ?",
|
||||||
"CalcAvgPowerStationJob": "0 0 2 * * ?",
|
"CalcAvgPowerStationJob": "0 0 2 * * ?",
|
||||||
"OperationScheduleJob": "0 0 2 * * ?",
|
"OperationScheduleJob": "0 0 8 * * ?",
|
||||||
"CalcInverter15minJob": "0 2/15 * * * ?",
|
"CalcInverter15minJob": "0 2/15 * * * ?",
|
||||||
"SendEmailJob": "0 0/5 * * * ?",
|
"SendEmailJob": "0 0/5 * * * ?",
|
||||||
"ExceptionSchedule": "0 0/5 * * * ?"
|
"ExceptionSchedule": "0 0/5 * * * ?"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user