衝突合併
This commit is contained in:
commit
eb06f971be
@ -1,4 +1,6 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using SolarPower.Models;
|
||||||
|
using SolarPower.Repository.Interface;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -6,11 +8,21 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace SolarPower.Controllers
|
namespace SolarPower.Controllers
|
||||||
{
|
{
|
||||||
public class AnalysisInverterController : MyBaseController<AnalysisInverterController>
|
public class AnalysisInverterController : MyBaseController<AnalysisInverterController>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private readonly IPowerStationRepository powerStationRepository;
|
||||||
|
|
||||||
|
public AnalysisInverterController(IPowerStationRepository powerStationRepository) : base()
|
||||||
|
{
|
||||||
|
this.powerStationRepository = powerStationRepository;
|
||||||
|
}
|
||||||
|
|
||||||
public IActionResult Index()
|
public IActionResult Index()
|
||||||
{
|
{
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,7 +88,7 @@ namespace SolarPower.Controllers
|
|||||||
HttpContext.Session.SetString("MyAccount", edFunction.AESEncrypt(user.Account)); //將帳號透過AES加密
|
HttpContext.Session.SetString("MyAccount", edFunction.AESEncrypt(user.Account)); //將帳號透過AES加密
|
||||||
HttpContext.Session.SetString("CompanyId", edFunction.AESEncrypt(user.CompanyId.ToString())); //將公司id透過AES加密
|
HttpContext.Session.SetString("CompanyId", edFunction.AESEncrypt(user.CompanyId.ToString())); //將公司id透過AES加密
|
||||||
|
|
||||||
return RedirectToAction("Index", "User");
|
return RedirectToAction("Index", "MapOverview");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -155,8 +155,8 @@ namespace SolarPower.Controllers
|
|||||||
stationOverview.Avg_PR = overview.Avg_PR;
|
stationOverview.Avg_PR = overview.Avg_PR;
|
||||||
stationOverview.Today_kwhkwp = overview.Today_kwhkwp;
|
stationOverview.Today_kwhkwp = overview.Today_kwhkwp;
|
||||||
stationOverview.Avg_kwhkwp = overview.Avg_kwhkwp;
|
stationOverview.Avg_kwhkwp = overview.Avg_kwhkwp;
|
||||||
stationOverview.Today_monery = overview.Today_monery;
|
stationOverview.Today_money = overview.Today_money;
|
||||||
stationOverview.Total_monery = overview.Total_monery;
|
stationOverview.Total_money = overview.Total_money;
|
||||||
stationOverview.Today_carbon = overview.Today_carbon;
|
stationOverview.Today_carbon = overview.Today_carbon;
|
||||||
stationOverview.Total_carbon = overview.Total_carbon;
|
stationOverview.Total_carbon = overview.Total_carbon;
|
||||||
|
|
||||||
@ -169,8 +169,8 @@ namespace SolarPower.Controllers
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
stationOverview.IsShowMoney = 0;
|
stationOverview.IsShowMoney = 0;
|
||||||
stationOverview.Today_monery = 0;
|
stationOverview.Today_money = 0;
|
||||||
stationOverview.Total_monery = 0;
|
stationOverview.Total_money = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
var powerStation = await powerStationRepository.GetOneAsync(post.Ids.First());
|
var powerStation = await powerStationRepository.GetOneAsync(post.Ids.First());
|
||||||
|
|||||||
@ -424,20 +424,21 @@ INSERT INTO `auth_page` (`AuthCode`, `MainName`, `SubName`, `TagName`, `ControlN
|
|||||||
('G', '總覽', '電站總覽', '異常記錄', 'StationOverview_Exception'),
|
('G', '總覽', '電站總覽', '異常記錄', 'StationOverview_Exception'),
|
||||||
('H', '總覽', '電站總覽', '運維記錄', 'StationOverview_OperationRecord'),
|
('H', '總覽', '電站總覽', '運維記錄', 'StationOverview_OperationRecord'),
|
||||||
('J', '總覽', '電站總覽', '顯示發電金額', 'ShowMoney'),
|
('J', '總覽', '電站總覽', '顯示發電金額', 'ShowMoney'),
|
||||||
('K', '電站資訊', '電站管理', NULL, 'PowerStation'),
|
('K', '電站資訊', '電站資訊', NULL, 'PowerStationInfo'),
|
||||||
('L', '交叉分析', '合併電站', NULL, 'Setting'),
|
('L', '交叉分析', '合併電站', NULL, 'AnalysisStationCombine'),
|
||||||
('M', '交叉分析', '電站交叉分析', NULL, 'ASDA'),
|
('M', '交叉分析', '電站交叉分析', NULL, 'AnalysisStationInfo'),
|
||||||
('N', '交叉分析', '逆變器交叉分析', NULL, 'BBB'),
|
('N', '交叉分析', '逆變器交叉分析', NULL, 'AnalysisInverter'),
|
||||||
('P', '報表查詢', '電站報表', NULL, 'CCC'),
|
('P', '報表查詢', '電站報表', NULL, 'CCC'),
|
||||||
('Q', '報表查詢', '電廠發電效能統計', NULL, 'HHH'),
|
('Q', '報表查詢', '電廠發電效能統計', NULL, 'HHH'),
|
||||||
('R', '報表查詢', '輸入台電售電紀錄', NULL, 'JJJ'),
|
('R', '報表查詢', '輸入台電售電紀錄', NULL, 'JJJ'),
|
||||||
('S', '報表查詢', '報告發送設定', NULL, 'JJJ'),
|
('S', '報表查詢', '報告發送設定', NULL, 'JJJ'),
|
||||||
('T', '即時告警', '異常事件查詢', NULL, 'KKK'),
|
('T', '即時告警', '異常事件查詢', NULL, 'KKK'),
|
||||||
('U', '運維管理', '定期計畫建立', NULL, 'Operation'),
|
('U', '運維管理', '電站管理', NULL, 'PowerStationManager'),
|
||||||
('V', '運維管理', '運維作業記錄', NULL, 'OperationRecord'),
|
('V', '運維管理', '定期計畫建立', NULL, 'Operation'),
|
||||||
('W', '系統管理', '公司管理', NULL, 'Company'),
|
('W', '運維管理', '運維作業記錄', NULL, 'OperationRecord'),
|
||||||
('X', '系統管理', '帳號管理', NULL, 'User,Role'),
|
('X', '系統管理', '公司管理', NULL, 'Company'),
|
||||||
('Y', '系統管理', '定時任務設定', NULL, 'LLL');
|
('Y', '系統管理', '帳號管理', NULL, 'User,Role'),
|
||||||
|
('Z', '系統管理', '定時任務設定', NULL, 'LLL');
|
||||||
/*!40000 ALTER TABLE `auth_page` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `auth_page` ENABLE KEYS */;
|
||||||
|
|
||||||
-- 傾印 資料表 solar_power.city 結構
|
-- 傾印 資料表 solar_power.city 結構
|
||||||
@ -1044,6 +1045,7 @@ CREATE TABLE `inverter_history_hour` (
|
|||||||
`PowerStationId` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
`PowerStationId` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`INVERTERID` VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
|
`INVERTERID` VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
|
||||||
`TIMESTAMP` TIMESTAMP NULL DEFAULT NULL,
|
`TIMESTAMP` TIMESTAMP NULL DEFAULT NULL,
|
||||||
|
`Irradiance` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1V` DOUBLE NULL DEFAULT NULL,
|
`AC1V` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1A` DOUBLE NULL DEFAULT NULL,
|
`AC1A` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1W` DOUBLE NULL DEFAULT NULL,
|
`AC1W` DOUBLE NULL DEFAULT NULL,
|
||||||
@ -1110,6 +1112,7 @@ CREATE TABLE `inverter_history_day` (
|
|||||||
`PowerStationId` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
`PowerStationId` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`INVERTERID` VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
|
`INVERTERID` VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
|
||||||
`TIMESTAMP` TIMESTAMP NULL DEFAULT NULL,
|
`TIMESTAMP` TIMESTAMP NULL DEFAULT NULL,
|
||||||
|
`Irradiance` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1V` DOUBLE NULL DEFAULT NULL,
|
`AC1V` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1A` DOUBLE NULL DEFAULT NULL,
|
`AC1A` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1W` DOUBLE NULL DEFAULT NULL,
|
`AC1W` DOUBLE NULL DEFAULT NULL,
|
||||||
@ -1176,6 +1179,7 @@ CREATE TABLE `inverter_history_month` (
|
|||||||
`PowerStationId` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
`PowerStationId` INT(10) UNSIGNED NOT NULL DEFAULT '0',
|
||||||
`INVERTERID` VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
|
`INVERTERID` VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
|
||||||
`TIMESTAMP` TIMESTAMP NULL DEFAULT NULL,
|
`TIMESTAMP` TIMESTAMP NULL DEFAULT NULL,
|
||||||
|
`Irradiance` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1V` DOUBLE NULL DEFAULT NULL,
|
`AC1V` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1A` DOUBLE NULL DEFAULT NULL,
|
`AC1A` DOUBLE NULL DEFAULT NULL,
|
||||||
`AC1W` DOUBLE NULL DEFAULT NULL,
|
`AC1W` DOUBLE NULL DEFAULT NULL,
|
||||||
@ -1770,6 +1774,11 @@ ALTER TABLE `power_station_history_month`
|
|||||||
ADD COLUMN `TOTALMONEY` DOUBLE NULL DEFAULT NULL AFTER `MONEY`,
|
ADD COLUMN `TOTALMONEY` DOUBLE NULL DEFAULT NULL AFTER `MONEY`,
|
||||||
ADD COLUMN `TOTALCARBON` DOUBLE NULL DEFAULT NULL AFTER `CARBON`;
|
ADD COLUMN `TOTALCARBON` DOUBLE NULL DEFAULT NULL AFTER `CARBON`;
|
||||||
|
|
||||||
|
-- 修正 欄位名稱 20210720
|
||||||
|
ALTER TABLE `power_station`
|
||||||
|
CHANGE COLUMN `today_monery` `today_money` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '今日金額' AFTER `avg_kwhkwp`,
|
||||||
|
CHANGE COLUMN `total_monery` `total_money` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '總金額' AFTER `today_money`;
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
|
/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
|||||||
23
SolarPower/Models/AnalysisInverter.cs
Normal file
23
SolarPower/Models/AnalysisInverter.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SolarPower.Models
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public class AnalysisInverter
|
||||||
|
{
|
||||||
|
public List<string> XAxis { get; set; } //時間
|
||||||
|
public List<string> MultipleYaxes { get; set; } //Y軸名稱
|
||||||
|
public Dictionary<string, List<InverterHistoryInfo>> Series { get; set; } //數組
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InverterHistoryInfo
|
||||||
|
{
|
||||||
|
public string Time { get; set; }
|
||||||
|
public string Yaxes { get; set; }
|
||||||
|
public double Value { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -16,8 +16,8 @@ namespace SolarPower.Models
|
|||||||
public double Avg_PR { get; set; } //平均 PR 值(30天)
|
public double Avg_PR { get; set; } //平均 PR 值(30天)
|
||||||
public double Today_kwhkwp { get; set; } //即時平均 kWh / kWp
|
public double Today_kwhkwp { get; set; } //即時平均 kWh / kWp
|
||||||
public double Avg_kwhkwp { get; set; } //平均 kWh / kWp (30天)
|
public double Avg_kwhkwp { get; set; } //平均 kWh / kWp (30天)
|
||||||
public double Today_monery { get; set; } //今日金額
|
public double Today_money { get; set; } //今日金額
|
||||||
public double Total_monery { get; set; } //今日金額
|
public double Total_money { get; set; } //今日金額
|
||||||
public double Today_carbon { get; set; } //今日減碳量
|
public double Today_carbon { get; set; } //今日減碳量
|
||||||
public double Total_carbon { get; set; } //累積減碳量
|
public double Total_carbon { get; set; } //累積減碳量
|
||||||
}
|
}
|
||||||
|
|||||||
@ -667,6 +667,7 @@ namespace SolarPower.Models.PowerStation
|
|||||||
public string TIMESTAMP { get; set; }
|
public string TIMESTAMP { get; set; }
|
||||||
public int PowerStationId { get; set; }
|
public int PowerStationId { get; set; }
|
||||||
public string INVERTERID { get; set; }
|
public string INVERTERID { get; set; }
|
||||||
|
public double Irradiance { get; set; }
|
||||||
public double AC1V { get; set; }
|
public double AC1V { get; set; }
|
||||||
public double AC1A { get; set; }
|
public double AC1A { get; set; }
|
||||||
public double AC1W { get; set; }
|
public double AC1W { get; set; }
|
||||||
|
|||||||
@ -48,8 +48,6 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
List<InverterHistory> updateInverterHistoryMonths = new List<InverterHistory>();
|
List<InverterHistory> updateInverterHistoryMonths = new List<InverterHistory>();
|
||||||
List<WeatherForecast> weatherForecasts = new List<WeatherForecast>();
|
List<WeatherForecast> weatherForecasts = new List<WeatherForecast>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var DateTimeNow = DateTime.Now;
|
var DateTimeNow = DateTime.Now;
|
||||||
|
|
||||||
var count = 0;
|
var count = 0;
|
||||||
@ -73,9 +71,6 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
|
|
||||||
foreach (var a in location.WeatherElement)
|
foreach (var a in location.WeatherElement)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (a.ElementName == "Wx")
|
if (a.ElementName == "Wx")
|
||||||
{
|
{
|
||||||
foreach (var time in a.Time)
|
foreach (var time in a.Time)
|
||||||
@ -139,8 +134,6 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
};
|
};
|
||||||
await powerStationRepository.AddWeatherForecast(weatherForecasts, weather_forecast_properties);
|
await powerStationRepository.AddWeatherForecast(weatherForecasts, weather_forecast_properties);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region step2. 從電站的DB及電站編號找出該電站的控制器
|
#region step2. 從電站的DB及電站編號找出該電站的控制器
|
||||||
foreach (var powerStation in powerStations)
|
foreach (var powerStation in powerStations)
|
||||||
{
|
{
|
||||||
@ -153,6 +146,8 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
calcPowerStation.Id = powerStation.Id;
|
calcPowerStation.Id = powerStation.Id;
|
||||||
var dateNowDay = DateTimeNow.AddDays(-1).ToString("yyyy-MM-dd");
|
var dateNowDay = DateTimeNow.AddDays(-1).ToString("yyyy-MM-dd");
|
||||||
|
|
||||||
|
dateNowDay = "2021-07-19";
|
||||||
|
|
||||||
#region step2-1. 計算該電站的30天平均資料
|
#region step2-1. 計算該電站的30天平均資料
|
||||||
var table_name = String.Format("`{0}`.`s{1}01_station`", powerStation.SiteDB, powerStation.Code);
|
var table_name = String.Format("`{0}`.`s{1}01_station`", powerStation.SiteDB, powerStation.Code);
|
||||||
logger.LogInformation("【CalcAvgPowerStationJob】【開始計算電站[{0}]在{1}的30天平均資料】", powerStation.Code, dateNowDay);
|
logger.LogInformation("【CalcAvgPowerStationJob】【開始計算電站[{0}]在{1}的30天平均資料】", powerStation.Code, dateNowDay);
|
||||||
@ -233,6 +228,15 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
{
|
{
|
||||||
foreach(var inverterHistoryDay in inverterHistoriesDay)
|
foreach(var inverterHistoryDay in inverterHistoriesDay)
|
||||||
{
|
{
|
||||||
|
inverterHistoryDay.DC1KW = inverterHistoryDay.DC1W / 1000;
|
||||||
|
inverterHistoryDay.DC2KW = inverterHistoryDay.DC2W / 1000;
|
||||||
|
inverterHistoryDay.DC3KW = inverterHistoryDay.DC3W / 1000;
|
||||||
|
inverterHistoryDay.DC4KW = inverterHistoryDay.DC4W / 1000;
|
||||||
|
inverterHistoryDay.DC5KW = inverterHistoryDay.DC5W / 1000;
|
||||||
|
|
||||||
|
inverterHistoryDay.DCKW = (inverterHistoryDay.DC1W + inverterHistoryDay.DC2W + inverterHistoryDay.DC3W + inverterHistoryDay.DC4W + inverterHistoryDay.DC5W) / 1000;
|
||||||
|
inverterHistoryDay.ACKW = (inverterHistoryDay.AC1W + inverterHistoryDay.AC2W + inverterHistoryDay.AC3W) / 1000;
|
||||||
|
|
||||||
allofInverterHistorDays.Add(inverterHistoryDay);
|
allofInverterHistorDays.Add(inverterHistoryDay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -314,6 +318,15 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
{
|
{
|
||||||
foreach(var inverterHistoryMonth in inverterHistoriesMonth)
|
foreach(var inverterHistoryMonth in inverterHistoriesMonth)
|
||||||
{
|
{
|
||||||
|
inverterHistoryMonth.DC1KW = inverterHistoryMonth.DC1W / 1000;
|
||||||
|
inverterHistoryMonth.DC2KW = inverterHistoryMonth.DC2W / 1000;
|
||||||
|
inverterHistoryMonth.DC3KW = inverterHistoryMonth.DC3W / 1000;
|
||||||
|
inverterHistoryMonth.DC4KW = inverterHistoryMonth.DC4W / 1000;
|
||||||
|
inverterHistoryMonth.DC5KW = inverterHistoryMonth.DC5W / 1000;
|
||||||
|
|
||||||
|
inverterHistoryMonth.DCKW = (inverterHistoryMonth.DC1W + inverterHistoryMonth.DC2W + inverterHistoryMonth.DC3W + inverterHistoryMonth.DC4W + inverterHistoryMonth.DC5W) / 1000;
|
||||||
|
inverterHistoryMonth.ACKW = (inverterHistoryMonth.AC1W + inverterHistoryMonth.AC2W + inverterHistoryMonth.AC3W) / 1000;
|
||||||
|
|
||||||
inverterHistoryMonth.TIMESTAMP = Convert.ToDateTime(inverterHistoryMonth.TIMESTAMP).ToString("yyyy-MM-dd");
|
inverterHistoryMonth.TIMESTAMP = Convert.ToDateTime(inverterHistoryMonth.TIMESTAMP).ToString("yyyy-MM-dd");
|
||||||
insertInverterHistoryMonths.Add(inverterHistoryMonth);
|
insertInverterHistoryMonths.Add(inverterHistoryMonth);
|
||||||
}
|
}
|
||||||
@ -327,6 +340,15 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
{
|
{
|
||||||
foreach (var inverterHistoryMonth in inverterHistoriesMonth)
|
foreach (var inverterHistoryMonth in inverterHistoriesMonth)
|
||||||
{
|
{
|
||||||
|
inverterHistoryMonth.DC1KW = inverterHistoryMonth.DC1W / 1000;
|
||||||
|
inverterHistoryMonth.DC2KW = inverterHistoryMonth.DC2W / 1000;
|
||||||
|
inverterHistoryMonth.DC3KW = inverterHistoryMonth.DC3W / 1000;
|
||||||
|
inverterHistoryMonth.DC4KW = inverterHistoryMonth.DC4W / 1000;
|
||||||
|
inverterHistoryMonth.DC5KW = inverterHistoryMonth.DC5W / 1000;
|
||||||
|
|
||||||
|
inverterHistoryMonth.DCKW = (inverterHistoryMonth.DC1W + inverterHistoryMonth.DC2W + inverterHistoryMonth.DC3W + inverterHistoryMonth.DC4W + inverterHistoryMonth.DC5W) / 1000;
|
||||||
|
inverterHistoryMonth.ACKW = (inverterHistoryMonth.AC1W + inverterHistoryMonth.AC2W + inverterHistoryMonth.AC3W) / 1000;
|
||||||
|
|
||||||
inverterHistoryMonth.TIMESTAMP = Convert.ToDateTime(inverterHistoryMonth.TIMESTAMP).ToString("yyyy-MM-dd");
|
inverterHistoryMonth.TIMESTAMP = Convert.ToDateTime(inverterHistoryMonth.TIMESTAMP).ToString("yyyy-MM-dd");
|
||||||
updateInverterHistoryMonths.Add(inverterHistoryMonth);
|
updateInverterHistoryMonths.Add(inverterHistoryMonth);
|
||||||
}
|
}
|
||||||
@ -432,6 +454,55 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
"PowerStationId",
|
"PowerStationId",
|
||||||
"TIMESTAMP",
|
"TIMESTAMP",
|
||||||
"INVERTERID",
|
"INVERTERID",
|
||||||
|
"Irradiance",
|
||||||
|
"AC1V",
|
||||||
|
"AC1A",
|
||||||
|
"AC1W",
|
||||||
|
"AC1F",
|
||||||
|
"AC1WH",
|
||||||
|
"AC2V",
|
||||||
|
"AC2A",
|
||||||
|
"AC2W",
|
||||||
|
"AC2F",
|
||||||
|
"AC2WH",
|
||||||
|
"AC3V",
|
||||||
|
"AC3A",
|
||||||
|
"AC3W",
|
||||||
|
"AC3F",
|
||||||
|
"AC3WH",
|
||||||
|
"DC1V",
|
||||||
|
"DC1A",
|
||||||
|
"DC1W",
|
||||||
|
"DC1KW",
|
||||||
|
"DC1WH",
|
||||||
|
"DC2V",
|
||||||
|
"DC2A",
|
||||||
|
"DC2W",
|
||||||
|
"DC2KW",
|
||||||
|
"DC2WH",
|
||||||
|
"DC3V",
|
||||||
|
"DC3A",
|
||||||
|
"DC3W",
|
||||||
|
"DC3KW",
|
||||||
|
"DC3WH",
|
||||||
|
"DC4V",
|
||||||
|
"DC4A",
|
||||||
|
"DC4W",
|
||||||
|
"DC4KW",
|
||||||
|
"DC4WH",
|
||||||
|
"DC5V",
|
||||||
|
"DC5A",
|
||||||
|
"DC5W",
|
||||||
|
"DC5KW",
|
||||||
|
"DC5WH",
|
||||||
|
"PR",
|
||||||
|
"RA1",
|
||||||
|
"RA2",
|
||||||
|
"RA3",
|
||||||
|
"RA4",
|
||||||
|
"RA5",
|
||||||
|
"DCKW",
|
||||||
|
"ACKW",
|
||||||
"KWH",
|
"KWH",
|
||||||
"TODAYKWH",
|
"TODAYKWH",
|
||||||
"KWHKWP",
|
"KWHKWP",
|
||||||
|
|||||||
@ -227,8 +227,12 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
|
|
||||||
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的逆變器的資訊】", powerStation.Code, dateTime);
|
logger.LogInformation("【CalcPowerStationJob】【開始計算電站[{0}]在{1}的逆變器的資訊】", powerStation.Code, dateTime);
|
||||||
inverterHistories = await powerStationRepository.CalcInverterHisyortHourData(dateTime, powerStation.SiteDB, inverter_table_name, inverterIds);
|
inverterHistories = await powerStationRepository.CalcInverterHisyortHourData(dateTime, powerStation.SiteDB, inverter_table_name, inverterIds);
|
||||||
|
//取得日照計要找的欄位資訊
|
||||||
|
var pyrheliometer = await powerStationRepository.GetFirstPyrheliometerInfo(powerStation.Id, powerStation.SiteDB);
|
||||||
|
var pyrheliometerValue = await powerStationRepository.GetFirstPyrheliometerValue(dateTime, pyrheliometer.DBName, pyrheliometer.TableName, pyrheliometer.ColName);
|
||||||
foreach (var inverterHistory in inverterHistories)
|
foreach (var inverterHistory in inverterHistories)
|
||||||
{
|
{
|
||||||
|
inverterHistory.Irradiance = pyrheliometerValue;
|
||||||
inverterHistory.DC1KW = inverterHistory.DC1W / 1000;
|
inverterHistory.DC1KW = inverterHistory.DC1W / 1000;
|
||||||
inverterHistory.DC2KW = inverterHistory.DC2W / 1000;
|
inverterHistory.DC2KW = inverterHistory.DC2W / 1000;
|
||||||
inverterHistory.DC3KW = inverterHistory.DC3W / 1000;
|
inverterHistory.DC3KW = inverterHistory.DC3W / 1000;
|
||||||
@ -372,6 +376,55 @@ namespace SolarPower.Quartz.Jobs
|
|||||||
"PowerStationId",
|
"PowerStationId",
|
||||||
"INVERTERID",
|
"INVERTERID",
|
||||||
"TIMESTAMP",
|
"TIMESTAMP",
|
||||||
|
"Irradiance",
|
||||||
|
"AC1V",
|
||||||
|
"AC1A",
|
||||||
|
"AC1W",
|
||||||
|
"AC1F",
|
||||||
|
"AC1WH",
|
||||||
|
"AC2V",
|
||||||
|
"AC2A",
|
||||||
|
"AC2W",
|
||||||
|
"AC2F",
|
||||||
|
"AC2WH",
|
||||||
|
"AC3V",
|
||||||
|
"AC3A",
|
||||||
|
"AC3W",
|
||||||
|
"AC3F",
|
||||||
|
"AC3WH",
|
||||||
|
"DC1V",
|
||||||
|
"DC1A",
|
||||||
|
"DC1W",
|
||||||
|
"DC1KW",
|
||||||
|
"DC1WH",
|
||||||
|
"DC2V",
|
||||||
|
"DC2A",
|
||||||
|
"DC2W",
|
||||||
|
"DC2KW",
|
||||||
|
"DC2WH",
|
||||||
|
"DC3V",
|
||||||
|
"DC3A",
|
||||||
|
"DC3W",
|
||||||
|
"DC3KW",
|
||||||
|
"DC3WH",
|
||||||
|
"DC4V",
|
||||||
|
"DC4A",
|
||||||
|
"DC4W",
|
||||||
|
"DC4KW",
|
||||||
|
"DC4WH",
|
||||||
|
"DC5V",
|
||||||
|
"DC5A",
|
||||||
|
"DC5W",
|
||||||
|
"DC5KW",
|
||||||
|
"DC5WH",
|
||||||
|
"PR",
|
||||||
|
"RA1",
|
||||||
|
"RA2",
|
||||||
|
"RA3",
|
||||||
|
"RA4",
|
||||||
|
"RA5",
|
||||||
|
"DCKW",
|
||||||
|
"ACKW",
|
||||||
"KWH",
|
"KWH",
|
||||||
"TODAYKWH",
|
"TODAYKWH",
|
||||||
"KWHKWP",
|
"KWHKWP",
|
||||||
|
|||||||
@ -198,7 +198,7 @@ namespace SolarPower.Repository.Implement
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var sql_power = @$"SELECT DATE_FORMAT(ps.timestamp, '%Y-%m-%d %H') AS Label, ps.KWH AS PowerData, pyr.Irradiance AS IrradianceData
|
var sql_power = @$"SELECT DATE_FORMAT(ps.timestamp,'%H %p') AS Label, ps.KWH AS PowerData, pyr.Irradiance AS IrradianceData
|
||||||
FROM power_station_history_hour ps
|
FROM power_station_history_hour ps
|
||||||
LEFT JOIN sensor_history_hour pyr ON ps.PowerStationId = pyr.PowerStationId AND DATE_FORMAT(ps.timestamp, '%Y-%m-%d %H') = DATE_FORMAT(pyr.timestamp, '%Y-%m-%d %H')
|
LEFT JOIN sensor_history_hour pyr ON ps.PowerStationId = pyr.PowerStationId AND DATE_FORMAT(ps.timestamp, '%Y-%m-%d %H') = DATE_FORMAT(pyr.timestamp, '%Y-%m-%d %H')
|
||||||
WHERE ps.PowerStationId = @PowerStationId
|
WHERE ps.PowerStationId = @PowerStationId
|
||||||
|
|||||||
@ -2703,7 +2703,6 @@ namespace SolarPower.Repository.Implement
|
|||||||
AVG(s.AC3W) AS AC3W,
|
AVG(s.AC3W) AS AC3W,
|
||||||
AVG(s.AC3F) AS AC3F,
|
AVG(s.AC3F) AS AC3F,
|
||||||
AVG(s.AC3WH) AS AC3WH,
|
AVG(s.AC3WH) AS AC3WH,
|
||||||
AVG(s.ACRUNTIME) AS ACRUNTIME,
|
|
||||||
AVG(s.DC1V) AS DC1V,
|
AVG(s.DC1V) AS DC1V,
|
||||||
AVG(s.DC1A) AS DC1A,
|
AVG(s.DC1A) AS DC1A,
|
||||||
AVG(s.DC1W) AS DC1W,
|
AVG(s.DC1W) AS DC1W,
|
||||||
@ -2761,6 +2760,51 @@ namespace SolarPower.Repository.Implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<DeviceInfo> GetFirstPyrheliometerInfo(int powerStationId, string db_name)
|
||||||
|
{
|
||||||
|
DeviceInfo result;
|
||||||
|
using (IDbConnection conn = this._databaseHelper.GetConnection())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sql = $@"SELECT d.*
|
||||||
|
FROM {db_name}.device d
|
||||||
|
LEFT JOIN {db_name}.controller c ON d.ControllerId = c.Id AND c.Deleted = 0
|
||||||
|
WHERE d.Enabled = 1 AND d.`Status` != 0 AND d.`Type` = 'PYR'
|
||||||
|
AND d.PowerStationId = @PowerStationId
|
||||||
|
ORDER BY d.ColName";
|
||||||
|
|
||||||
|
result = await conn.QueryFirstAsync<DeviceInfo>(sql, new { PowerStationId = powerStationId });
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<double> GetFirstPyrheliometerValue(string dateTime, string db_name, string table_name, string col_name)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
using (IDbConnection conn = this._databaseHelper.GetConnection())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sql = $@"SELECT AVG({col_name})
|
||||||
|
FROM {db_name}.{table_name}
|
||||||
|
WHERE FROM_UNIXTIME(TIMESTAMP/1000, '%Y-%m-%d %H') = @DateTime";
|
||||||
|
|
||||||
|
result = await conn.QueryFirstAsync<double>(sql, new { DateTime = dateTime });
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<List<InverterHistory>> CalcInverterHistoryDayDataByPowerStationId(string nowDay, string db_name, int powerStationId)
|
public async Task<List<InverterHistory>> CalcInverterHistoryDayDataByPowerStationId(string nowDay, string db_name, int powerStationId)
|
||||||
{
|
{
|
||||||
List<InverterHistory> result;
|
List<InverterHistory> result;
|
||||||
@ -2772,6 +2816,7 @@ namespace SolarPower.Repository.Implement
|
|||||||
inv.PowerStationId,
|
inv.PowerStationId,
|
||||||
DATE_FORMAT(inv.TIMESTAMP, '%Y-%m-%d') AS TIMESTAMP,
|
DATE_FORMAT(inv.TIMESTAMP, '%Y-%m-%d') AS TIMESTAMP,
|
||||||
inv.INVERTERID,
|
inv.INVERTERID,
|
||||||
|
AVG(inv.Irradiance) AS Irradiance,
|
||||||
AVG(inv.AC1V) AS AC1V,
|
AVG(inv.AC1V) AS AC1V,
|
||||||
AVG(inv.AC1A) AS AC1A,
|
AVG(inv.AC1A) AS AC1A,
|
||||||
AVG(inv.AC1W) AS AC1W,
|
AVG(inv.AC1W) AS AC1W,
|
||||||
@ -2787,7 +2832,6 @@ namespace SolarPower.Repository.Implement
|
|||||||
AVG(inv.AC3W) AS AC3W,
|
AVG(inv.AC3W) AS AC3W,
|
||||||
AVG(inv.AC3F) AS AC3F,
|
AVG(inv.AC3F) AS AC3F,
|
||||||
AVG(inv.AC3WH) AS AC3WH,
|
AVG(inv.AC3WH) AS AC3WH,
|
||||||
AVG(inv.ACRUNTIME) AS ACRUNTIME,
|
|
||||||
AVG(inv.DC1V) AS DC1V,
|
AVG(inv.DC1V) AS DC1V,
|
||||||
AVG(inv.DC1A) AS DC1A,
|
AVG(inv.DC1A) AS DC1A,
|
||||||
AVG(inv.DC1W) AS DC1W,
|
AVG(inv.DC1W) AS DC1W,
|
||||||
@ -2893,6 +2937,48 @@ namespace SolarPower.Repository.Implement
|
|||||||
inv.PowerStationId,
|
inv.PowerStationId,
|
||||||
DATE_FORMAT(inv.TIMESTAMP, '%Y-%m') AS TIMESTAMP,
|
DATE_FORMAT(inv.TIMESTAMP, '%Y-%m') AS TIMESTAMP,
|
||||||
inv.INVERTERID,
|
inv.INVERTERID,
|
||||||
|
AVG(inv.Irradiance) AS Irradiance,
|
||||||
|
AVG(inv.AC1V) AS AC1V,
|
||||||
|
AVG(inv.AC1A) AS AC1A,
|
||||||
|
AVG(inv.AC1W) AS AC1W,
|
||||||
|
AVG(inv.AC1F) AS AC1F,
|
||||||
|
AVG(inv.AC1WH) AS AC1WH,
|
||||||
|
AVG(inv.AC2V) AS AC2V,
|
||||||
|
AVG(inv.AC2A) AS AC2A,
|
||||||
|
AVG(inv.AC2W) AS AC2W,
|
||||||
|
AVG(inv.AC2F) AS AC2F,
|
||||||
|
AVG(inv.AC2WH) AS AC2WH,
|
||||||
|
AVG(inv.AC3V) AS AC3V,
|
||||||
|
AVG(inv.AC3A) AS AC3A,
|
||||||
|
AVG(inv.AC3W) AS AC3W,
|
||||||
|
AVG(inv.AC3F) AS AC3F,
|
||||||
|
AVG(inv.AC3WH) AS AC3WH,
|
||||||
|
AVG(inv.DC1V) AS DC1V,
|
||||||
|
AVG(inv.DC1A) AS DC1A,
|
||||||
|
AVG(inv.DC1W) AS DC1W,
|
||||||
|
AVG(inv.DC1WH) AS DC1WH,
|
||||||
|
AVG(inv.DC2V) AS DC2V,
|
||||||
|
AVG(inv.DC2A) AS DC2A,
|
||||||
|
AVG(inv.DC2W) AS DC2W,
|
||||||
|
AVG(inv.DC2WH) AS DC2WH,
|
||||||
|
AVG(inv.DC3V) AS DC3V,
|
||||||
|
AVG(inv.DC3A) AS DC3A,
|
||||||
|
AVG(inv.DC3W) AS DC3W,
|
||||||
|
AVG(inv.DC3WH) AS DC3WH,
|
||||||
|
AVG(inv.DC4V) AS DC4V,
|
||||||
|
AVG(inv.DC4A) AS DC4A,
|
||||||
|
AVG(inv.DC4W) AS DC4W,
|
||||||
|
AVG(inv.DC4WH) AS DC4WH,
|
||||||
|
AVG(inv.DC5V) AS DC5V,
|
||||||
|
AVG(inv.DC5A) AS DC5A,
|
||||||
|
AVG(inv.DC5W) AS DC5W,
|
||||||
|
AVG(inv.DC5WH) AS DC5WH,
|
||||||
|
AVG(inv.PR) AS PR,
|
||||||
|
AVG(inv.RA1) AS RA1,
|
||||||
|
AVG(inv.RA2) AS RA2,
|
||||||
|
AVG(inv.RA3) AS RA3,
|
||||||
|
AVG(inv.RA4) AS RA4,
|
||||||
|
AVG(inv.RA5) AS RA5,
|
||||||
SUM(inv.KWH) AS KWH,
|
SUM(inv.KWH) AS KWH,
|
||||||
SUM(inv.TODAYKWH) AS TODAYKWH,
|
SUM(inv.TODAYKWH) AS TODAYKWH,
|
||||||
SUM(inv.TODAYKWH) / i.Capacity AS KWHKWP
|
SUM(inv.TODAYKWH) / i.Capacity AS KWHKWP
|
||||||
@ -3142,7 +3228,7 @@ namespace SolarPower.Repository.Implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<MoneyAndCarbon> GetMoneyAndCarbonWithHistoryHour (int powerstationId , string dateTime ,int type)
|
public async Task<MoneyAndCarbon> GetMoneyAndCarbonWithHistoryHour(int powerstationId, string dateTime, int type)
|
||||||
{
|
{
|
||||||
MoneyAndCarbon result;
|
MoneyAndCarbon result;
|
||||||
using (IDbConnection conn = this._databaseHelper.GetConnection())
|
using (IDbConnection conn = this._databaseHelper.GetConnection())
|
||||||
|
|||||||
@ -521,6 +521,8 @@ namespace SolarPower.Repository.Interface
|
|||||||
Task<List<InverterHistory>> CalcInverterHisyort15minData(string dateTime, string db_name, string table_name, List<string> inverterIds);
|
Task<List<InverterHistory>> CalcInverterHisyort15minData(string dateTime, string db_name, string table_name, List<string> inverterIds);
|
||||||
Task<int> AddInverter15minHistory(List<InverterHistory> entity, List<string> properties);
|
Task<int> AddInverter15minHistory(List<InverterHistory> entity, List<string> properties);
|
||||||
Task<List<InverterHistory>> CalcInverterHisyortHourData(string dateTime, string db_name, string table_name, List<string> inverterIds);
|
Task<List<InverterHistory>> CalcInverterHisyortHourData(string dateTime, string db_name, string table_name, List<string> inverterIds);
|
||||||
|
Task<DeviceInfo> GetFirstPyrheliometerInfo(int powerStationId, string db_name);
|
||||||
|
Task<double> GetFirstPyrheliometerValue(string dateTime, string db_name, string table_name, string col_name);
|
||||||
Task<int> AddInverterHistory(List<InverterHistory> entity, List<string> properties);
|
Task<int> AddInverterHistory(List<InverterHistory> entity, List<string> properties);
|
||||||
Task<List<InverterHistory>> CalcInverterHistoryDayDataByPowerStationId(string nowDay, string db_name, int powerStationId);
|
Task<List<InverterHistory>> CalcInverterHistoryDayDataByPowerStationId(string nowDay, string db_name, int powerStationId);
|
||||||
Task<int> AddInverterHistoryDayList(List<InverterHistory> entity, List<string> properties);
|
Task<int> AddInverterHistoryDayList(List<InverterHistory> entity, List<string> properties);
|
||||||
|
|||||||
@ -252,7 +252,7 @@
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -341,7 +341,7 @@
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
|
|||||||
@ -198,7 +198,7 @@
|
|||||||
"data": "subTotalCapacity"
|
"data": "subTotalCapacity"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["MainNum"] = "6";
|
ViewData["MainNum"] = "6";
|
||||||
ViewData["SubNum"] = "1";
|
ViewData["SubNum"] = "2";
|
||||||
ViewData["Title"] = "運維管理";
|
ViewData["Title"] = "運維管理";
|
||||||
}
|
}
|
||||||
@using SolarPower.Models.Role
|
@using SolarPower.Models.Role
|
||||||
@ -330,7 +330,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["MainNum"] = "6";
|
ViewData["MainNum"] = "6";
|
||||||
ViewData["SubNum"] = "2";
|
ViewData["SubNum"] = "3";
|
||||||
ViewData["Title"] = "運維作業記錄";
|
ViewData["Title"] = "運維作業記錄";
|
||||||
}
|
}
|
||||||
@using SolarPower.Models.Role
|
@using SolarPower.Models.Role
|
||||||
@ -413,7 +413,7 @@
|
|||||||
'visible': @(ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.CompanyUser ? "false" : "true")
|
'visible': @(ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.CompanyUser ? "false" : "true")
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["MainNum"] = "2";
|
ViewData["MainNum"] = "6";
|
||||||
|
ViewData["SubNum"] = "1";
|
||||||
ViewData["Title"] = "電站管理";
|
ViewData["Title"] = "電站管理";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +195,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -281,7 +282,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -350,7 +351,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -438,7 +439,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -526,7 +527,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -602,7 +603,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
|
|||||||
@ -177,7 +177,7 @@
|
|||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
<!-- Example of open and active states -->
|
<!-- Example of open and active states -->
|
||||||
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("PowerStation"))
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("PowerStationInfo"))
|
||||||
{
|
{
|
||||||
<li class="@(ViewData["MainNum"] == "2" ? "active open" : "")">
|
<li class="@(ViewData["MainNum"] == "2" ? "active open" : "")">
|
||||||
<a href="javascript:void(0);" title="Category" data-filter-tags="category">
|
<a href="javascript:void(0);" title="Category" data-filter-tags="category">
|
||||||
@ -200,7 +200,7 @@
|
|||||||
<li class="@(ViewData["MainNum"].ToString() == "2" &&
|
<li class="@(ViewData["MainNum"].ToString() == "2" &&
|
||||||
ViewData["SubNum"].ToString() == ViewBag.myPowerStationSummaries.IndexOf(myPowerStationSummary).ToString() &&
|
ViewData["SubNum"].ToString() == ViewBag.myPowerStationSummaries.IndexOf(myPowerStationSummary).ToString() &&
|
||||||
ViewData["TagNum"].ToString() == myPowerStationSummary.MyPowerStations.IndexOf(myPowerStation).ToString() ? "active" : "")">
|
ViewData["TagNum"].ToString() == myPowerStationSummary.MyPowerStations.IndexOf(myPowerStation).ToString() ? "active" : "")">
|
||||||
<a asp-controller="PowerStation" asp-action="Edit" asp-route-stationId="@myPowerStation.PowerStationId" title="Sublevel Item" data-filter-tags="utilities menu child sublevel item">
|
<a asp-controller="StationOverview" asp-action="Info" asp-route-stationId="@myPowerStation.PowerStationId" title="Sublevel Item" data-filter-tags="utilities menu child sublevel item">
|
||||||
<span class="nav-link-text" data-i18n="nav.utilities_menu_child_sublevel_item">@myPowerStation.PowerStationName</span>
|
<span class="nav-link-text" data-i18n="nav.utilities_menu_child_sublevel_item">@myPowerStation.PowerStationName</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -209,15 +209,16 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
<li class="@(ViewData["MainNum"] == "2" && ViewData["SubNum"].ToString() == ViewBag.myPowerStationSummaries.Count.ToString() ? "active" : "")">
|
|
||||||
<a asp-controller="PowerStation" asp-action="Index" title="電站管理" data-filter-tags="utilities disabled item">
|
@*<li class="@(ViewData["MainNum"] == "2" && ViewData["SubNum"].ToString() == ViewBag.myPowerStationSummaries.Count.ToString() ? "active" : "")">
|
||||||
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">電站管理</span>
|
<a asp-controller="PowerStation" asp-action="Index" title="電站管理" data-filter-tags="utilities disabled item">
|
||||||
</a>
|
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">電站管理</span>
|
||||||
</li>
|
</a>
|
||||||
|
</li>*@
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("PowerStation"))@*TODO:修改成交叉分析的權限*@
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("AnalysisStationCombine") || ViewBag.auths.Contains("AnalysisStationInfo") || ViewBag.auths.Contains("AnalysisInverter"))
|
||||||
{
|
{
|
||||||
<li class="@(ViewData["MainNum"] == "3" ? "active open" : "")">
|
<li class="@(ViewData["MainNum"] == "3" ? "active open" : "")">
|
||||||
<a href="#" title="Category" data-filter-tags="category">
|
<a href="#" title="Category" data-filter-tags="category">
|
||||||
@ -225,21 +226,30 @@
|
|||||||
<span class="nav-link-text" data-i18n="nav.category">交叉分析</span>
|
<span class="nav-link-text" data-i18n="nav.category">交叉分析</span>
|
||||||
</a>
|
</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="@(ViewData["MainNum"] == "3" && ViewData["SubNum"] == "1" ? "active" : "")">
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("AnalysisStationCombine"))
|
||||||
<a asp-controller="AnalysisStationCombine" asp-action="Index" title="合併電站" data-filter-tags="utilities disabled item">
|
{
|
||||||
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">合併電站</span>
|
<li class="@(ViewData["MainNum"] == "3" && ViewData["SubNum"] == "1" ? "active" : "")">
|
||||||
</a>
|
<a asp-controller="AnalysisStationCombine" asp-action="Index" title="合併電站" data-filter-tags="utilities disabled item">
|
||||||
</li>
|
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">合併電站</span>
|
||||||
<li class="@(ViewData["MainNum"] == "3" && ViewData["SubNum"] == "2" ? "active" : "")">
|
</a>
|
||||||
<a asp-controller="AnalysisStationInfo" asp-action="Index" title="電站交叉分析" data-filter-tags="utilities disabled item">
|
</li>
|
||||||
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">電站交叉分析</span>
|
}
|
||||||
</a>
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("AnalysisStationInfo"))
|
||||||
</li>
|
{
|
||||||
<li class="@(ViewData["MainNum"] == "3" && ViewData["SubNum"] == "3" ? "active" : "")">
|
<li class="@(ViewData["MainNum"] == "3" && ViewData["SubNum"] == "2" ? "active" : "")">
|
||||||
<a asp-controller="AnalysisInverter" asp-action="Index" title="逆變器交叉分析" data-filter-tags="utilities disabled item">
|
<a asp-controller="AnalysisStationInfo" asp-action="Index" title="電站交叉分析" data-filter-tags="utilities disabled item">
|
||||||
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">逆變器交叉分析</span>
|
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">電站交叉分析</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
}
|
||||||
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("AnalysisInverter"))
|
||||||
|
{
|
||||||
|
<li class="@(ViewData["MainNum"] == "3" && ViewData["SubNum"] == "3" ? "active" : "")">
|
||||||
|
<a asp-controller="AnalysisInverter" asp-action="Index" title="逆變器交叉分析" data-filter-tags="utilities disabled item">
|
||||||
|
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">逆變器交叉分析</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
@ -287,7 +297,7 @@
|
|||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("Operation") || ViewBag.auths.Contains("OperationRecord"))
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("PowerStation") || ViewBag.auths.Contains("Operation") || ViewBag.auths.Contains("OperationRecord"))
|
||||||
{
|
{
|
||||||
<li class="@(ViewData["MainNum"] == "6" ? "active open" : "")">
|
<li class="@(ViewData["MainNum"] == "6" ? "active open" : "")">
|
||||||
<a href="#" title="Category" data-filter-tags="category">
|
<a href="#" title="Category" data-filter-tags="category">
|
||||||
@ -295,9 +305,17 @@
|
|||||||
<span class="nav-link-text" data-i18n="nav.category">運維管理</span>
|
<span class="nav-link-text" data-i18n="nav.category">運維管理</span>
|
||||||
</a>
|
</a>
|
||||||
<ul>
|
<ul>
|
||||||
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("PowerStationManager"))
|
||||||
|
{
|
||||||
|
<li class="@(ViewData["MainNum"] == "6" && ViewData["SubNum"].ToString() == "1" ? "active" : "")">
|
||||||
|
<a asp-controller="PowerStation" asp-action="Index" title="電站管理" data-filter-tags="utilities disabled item">
|
||||||
|
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">電站管理</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
}
|
||||||
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("Operation"))
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("Operation"))
|
||||||
{
|
{
|
||||||
<li class="@(ViewData["MainNum"] == "6" && ViewData["SubNum"] == "1" ? "active" : "")">
|
<li class="@(ViewData["MainNum"] == "6" && ViewData["SubNum"] == "2" ? "active" : "")">
|
||||||
<a asp-controller="Operation" asp-action="Index" title="定期計畫建立" data-filter-tags="utilities disabled item">
|
<a asp-controller="Operation" asp-action="Index" title="定期計畫建立" data-filter-tags="utilities disabled item">
|
||||||
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">定期計畫建立</span>
|
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">定期計畫建立</span>
|
||||||
</a>
|
</a>
|
||||||
@ -305,7 +323,7 @@
|
|||||||
}
|
}
|
||||||
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("OperationRecord"))
|
@if (ViewBag.myUser.Role.Layer == (int)RoleLayerEnum.PlatformAdmin || ViewBag.auths.Contains("OperationRecord"))
|
||||||
{
|
{
|
||||||
<li class="@(ViewData["MainNum"] == "6" && ViewData["SubNum"] == "2" ? "active" : "")">
|
<li class="@(ViewData["MainNum"] == "6" && ViewData["SubNum"] == "3" ? "active" : "")">
|
||||||
<a asp-controller="Operation" asp-action="Record" title="運維作業記錄" data-filter-tags="utilities disabled item">
|
<a asp-controller="Operation" asp-action="Record" title="運維作業記錄" data-filter-tags="utilities disabled item">
|
||||||
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">運維作業記錄</span>
|
<span class="nav-link-text" data-i18n="nav.utilities_disabled_item">運維作業記錄</span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@ -276,17 +276,16 @@
|
|||||||
type: 'bar',
|
type: 'bar',
|
||||||
label: '輸出功率',
|
label: '輸出功率',
|
||||||
yAxisID: 'A',
|
yAxisID: 'A',
|
||||||
backgroundColor: color.primary._300,
|
backgroundColor: 'rgb(103, 180, 172)',
|
||||||
borderColor: color.primary._500,
|
|
||||||
order: 2,
|
order: 2,
|
||||||
data: chartToday.powerDatas
|
data: chartToday.powerDatas
|
||||||
}, {
|
}, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
label: '日照度',
|
label: '日照度',
|
||||||
yAxisID: 'B',
|
yAxisID: 'B',
|
||||||
borderColor: color.danger._300,
|
borderColor: 'rgb(190, 45, 45)',
|
||||||
pointBackgroundColor: color.danger._500,
|
pointBackgroundColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderColor: color.danger._500,
|
pointBorderColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderWidth: 1,
|
pointBorderWidth: 1,
|
||||||
borderWidth: 2,
|
borderWidth: 2,
|
||||||
pointRadius: 4,
|
pointRadius: 4,
|
||||||
@ -344,16 +343,15 @@
|
|||||||
type: 'bar',
|
type: 'bar',
|
||||||
label: '輸出功率',
|
label: '輸出功率',
|
||||||
yAxisID: 'A',
|
yAxisID: 'A',
|
||||||
backgroundColor: color.primary._300,
|
backgroundColor: 'rgb(103, 180, 172)',
|
||||||
borderColor: color.primary._500,
|
|
||||||
data: chart7day.powerDatas
|
data: chart7day.powerDatas
|
||||||
}, {
|
}, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
label: '日照度',
|
label: '日照度',
|
||||||
yAxisID: 'B',
|
yAxisID: 'B',
|
||||||
borderColor: color.danger._300,
|
borderColor: 'rgb(190, 45, 45)',
|
||||||
pointBackgroundColor: color.danger._500,
|
pointBackgroundColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderColor: color.danger._500,
|
pointBorderColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderWidth: 1,
|
pointBorderWidth: 1,
|
||||||
borderWidth: 2,
|
borderWidth: 2,
|
||||||
pointRadius: 4,
|
pointRadius: 4,
|
||||||
@ -410,16 +408,15 @@
|
|||||||
type: 'bar',
|
type: 'bar',
|
||||||
label: '輸出功率',
|
label: '輸出功率',
|
||||||
yAxisID: 'A',
|
yAxisID: 'A',
|
||||||
backgroundColor: color.primary._300,
|
backgroundColor: 'rgb(103, 180, 172)',
|
||||||
borderColor: color.primary._500,
|
|
||||||
data: chartMonth.powerDatas
|
data: chartMonth.powerDatas
|
||||||
}, {
|
}, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
label: '日照度',
|
label: '日照度',
|
||||||
yAxisID: 'B',
|
yAxisID: 'B',
|
||||||
borderColor: color.danger._300,
|
borderColor: 'rgb(190, 45, 45)',
|
||||||
pointBackgroundColor: color.danger._500,
|
pointBackgroundColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderColor: color.danger._500,
|
pointBorderColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderWidth: 1,
|
pointBorderWidth: 1,
|
||||||
borderWidth: 2,
|
borderWidth: 2,
|
||||||
pointRadius: 4,
|
pointRadius: 4,
|
||||||
@ -476,16 +473,15 @@
|
|||||||
type: 'bar',
|
type: 'bar',
|
||||||
label: '輸出功率',
|
label: '輸出功率',
|
||||||
yAxisID: 'A',
|
yAxisID: 'A',
|
||||||
backgroundColor: color.primary._300,
|
backgroundColor: 'rgb(103, 180, 172)',
|
||||||
borderColor: color.primary._500,
|
|
||||||
data: chartYear.powerDatas
|
data: chartYear.powerDatas
|
||||||
}, {
|
}, {
|
||||||
type: 'line',
|
type: 'line',
|
||||||
label: '日照度',
|
label: '日照度',
|
||||||
yAxisID: 'B',
|
yAxisID: 'B',
|
||||||
borderColor: color.danger._300,
|
borderColor: 'rgb(190, 45, 45)',
|
||||||
pointBackgroundColor: color.danger._500,
|
pointBackgroundColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderColor: color.danger._500,
|
pointBorderColor: 'rgb(190, 45, 45)',
|
||||||
pointBorderWidth: 1,
|
pointBorderWidth: 1,
|
||||||
borderWidth: 2,
|
borderWidth: 2,
|
||||||
pointRadius: 4,
|
pointRadius: 4,
|
||||||
@ -719,7 +715,7 @@
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -891,7 +887,7 @@
|
|||||||
"data": "function"
|
"data": "function"
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
|
|||||||
@ -188,7 +188,7 @@
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -264,7 +264,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -352,7 +352,7 @@
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
@ -436,7 +436,7 @@
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"language": {
|
"language": {
|
||||||
"emptyTable": "無資料...",
|
"emptyTable": "查無資料",
|
||||||
"processing": "處理中...",
|
"processing": "處理中...",
|
||||||
"loadingRecords": "載入中...",
|
"loadingRecords": "載入中...",
|
||||||
"lengthMenu": "顯示 _MENU_ 項結果",
|
"lengthMenu": "顯示 _MENU_ 項結果",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user