819 lines
33 KiB
C#
819 lines
33 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Net.Mail;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using solarApp.Service;
|
|
using solarApp.Model;
|
|
//using System.Text.RegularExpressions;
|
|
|
|
namespace solarApp
|
|
{
|
|
public partial class fmArchive : Form
|
|
{
|
|
getStationSvc stationSvc = new getStationSvc();
|
|
System.Timers.Timer _timer;
|
|
bool autoTask = false; //測試自動跑 irrDayHour 累計日照小時差異
|
|
procSyncError svc = new procSyncError(); // 異常資料同步
|
|
public fmArchive()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void bt_inv_proc_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void bt_Sensor_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
|
procSensorSvc sensorSvc = new procSensorSvc();
|
|
//invSvc._siteDB = lbSiteDB_sensor.Text;
|
|
//invSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
|
//invSvc._siteID01 = lbSiteID_sensor.Text;
|
|
//invSvc._date1 = date1;
|
|
//invSvc._date2 = date1;
|
|
sensorSvc.isFirst = true;
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
//string d1 = day.ToString("yyyy-MM-dd");
|
|
sensorSvc.archiveData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
sensorSvc.archiveSensorHistoryHourData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
sensorSvc.isFirst = false;
|
|
}
|
|
//sensorSvc._siteDB = lbSiteDB_sensor.Text;
|
|
//sensorSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
|
//sensorSvc._siteID01 = lbSiteID_sensor.Text;
|
|
//sensorSvc._date1 = date1;
|
|
//sensorSvc._date2 = date1;
|
|
|
|
//sensorSvc.archiveData();
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " sensor OK";
|
|
}
|
|
|
|
private void fmArchive_Load(object sender, EventArgs e)
|
|
{
|
|
// MessageBox.Show(" loading ");
|
|
#region 電站清單
|
|
int i = 0;
|
|
var site_list = stationSvc.get_station_list();
|
|
foreach (var item in site_list)
|
|
{
|
|
RadioButton rb = new RadioButton();
|
|
rb.Name = item.SiteID;
|
|
rb.Text = item.SiteName;
|
|
rb.Tag = item.SiteDB;
|
|
rb.Font = new Font(Font.FontFamily, 12);
|
|
rb.AutoSize = true;
|
|
rb.CheckedChanged += new EventHandler(rb_site_CheckedChanged);
|
|
fp_site.Controls.Add(rb);
|
|
if (i == 0) rb.Checked = true;
|
|
i++;
|
|
}
|
|
#endregion
|
|
|
|
#region 自動執行
|
|
_timer = new System.Timers.Timer();
|
|
_timer.Interval = 10000;
|
|
_timer.SynchronizingObject = this;
|
|
_timer.Elapsed += _timer_Elapsed;
|
|
_timer.Start();
|
|
#endregion
|
|
|
|
// dtselect_station1.Value = DateTime.Today.AddDays(-1);
|
|
dtSelect1.Value = System.DateTime.Today.AddDays(-1);
|
|
dtSelect2.Value = System.DateTime.Today.AddDays(-1);
|
|
|
|
//
|
|
// Run this procedure in an appropriate event.
|
|
//counter = 0;
|
|
//timer1.Interval = 600;
|
|
//timer1.Enabled = true;
|
|
// Hook up timer's tick event handler.
|
|
//
|
|
}
|
|
|
|
/// <summary>
|
|
/// timer 觸發
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
|
{
|
|
//每日歸檔
|
|
if (System.DateTime.Now.Hour == 00 && DateTime.Now.Minute == 15 && autoTask == false)
|
|
{
|
|
//MessageBox.Show("ok");
|
|
autoTask = true;
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " timer start";
|
|
dtSelect1.Value = System.DateTime.Now.AddDays(-1);
|
|
dtSelect2.Value = System.DateTime.Now.AddDays(-1);
|
|
bt_archive.PerformClick();
|
|
autoTask = false;
|
|
}
|
|
|
|
//異常處理 每 5分鐘跑一次
|
|
if ((DateTime.Now.Minute % 5) == 0 && autoTask == false)
|
|
{
|
|
autoTask = true;
|
|
lbMsgTitle.Text = "異常處理 " + DateTime.Now.ToString() + " timer start";
|
|
btSyncErr.PerformClick();
|
|
lbMsgTitle.Text = "異常處理 done" + DateTime.Now.ToString();
|
|
autoTask = false;
|
|
}
|
|
|
|
|
|
//臨時的 累計日照
|
|
//if (DateTime.Now.Minute == 30 && (DateTime.Now.Second >= 0 && DateTime.Now.Second <= 10) && autoTask == false)
|
|
//{
|
|
// //MessageBox.Show("ok");
|
|
// autoTask = true;
|
|
// lbMsgTitle.Text = DateTime.Now.ToString() + " 臨時的 累計日照 start";
|
|
|
|
// button2.PerformClick();
|
|
// //bt_archive_Click.PerformClick();
|
|
//}
|
|
|
|
|
|
//水位管理
|
|
//if (System.DateTime.Now.Hour == 03 && DateTime.Now.Minute == 30
|
|
// && (DateTime.Now.Second >= 0 && DateTime.Now.Second <= 10)
|
|
// && autoTask == false)
|
|
//{
|
|
// int i = 0;
|
|
// var site_list = stationSvc.get_station_list();
|
|
|
|
// archiveLowData archiveData = new archiveLowData();
|
|
// autoTask = true;
|
|
// foreach (var item in site_list)
|
|
// {
|
|
// archiveData.archiveData(item.SiteID.Substring(0, 9));
|
|
|
|
// i++;
|
|
// }
|
|
// autoTask = false;
|
|
// lbMsgTitle.Text = System.DateTime.Now.ToString() + " 水位管理 - 資料搬移完成!";
|
|
//}
|
|
}
|
|
|
|
private void rb_site_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
RadioButton rb = sender as RadioButton;
|
|
if (rb.Checked)
|
|
{
|
|
lbSiteName_sensor.Text = rb.Text;
|
|
lbSiteDB_sensor.Text = rb.Tag.ToString();
|
|
lbSiteID_sensor.Text = rb.Name;
|
|
|
|
//顯示 table name on label
|
|
//lbSiteRaw.Text = lbSiteName_inv.Text + " " + lbSiteDB_inv.Text + ".s" + lbSiteID_inv.Text + "_Station";
|
|
//lbInvRaw.Text = lbSiteName_inv.Text + " " + lbSiteDB_inv.Text + ".s" + lbSiteID_inv.Text + "_Inv";
|
|
//lbSensorRaw.Text = lbSiteName_inv.Text + " " + lbSiteDB_inv.Text + ".s" + lbSiteID_inv.Text + "_SensorAVG";
|
|
|
|
//add_inv_list(lbSiteDB_inv.Text, lbSiteID_inv.Text.Substring(0, 9));
|
|
}
|
|
}
|
|
|
|
private void btVerifyData_Click(object sender, EventArgs e)
|
|
{
|
|
fmMain fm = new fmMain();
|
|
fm.Show();
|
|
}
|
|
|
|
public IEnumerable<DateTime> EachDay(DateTime from, DateTime thru)
|
|
{
|
|
for (var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1))
|
|
yield return day;
|
|
}
|
|
|
|
public IEnumerable<DateTime> EachHour(DateTime from, DateTime thru)
|
|
{
|
|
for (var time = from.Date; time.Date <= thru.Date; time = time.AddHours(1))
|
|
yield return time;
|
|
}
|
|
|
|
private void bt_Inv_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
|
procInvSvc invSvc = new procInvSvc();
|
|
//invSvc._siteDB = lbSiteDB_sensor.Text;
|
|
//invSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
|
//invSvc._siteID01 = lbSiteID_sensor.Text;
|
|
//invSvc._date1 = date1;
|
|
//invSvc._date2 = date1;
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
//string d1 = day.ToString("yyyy-MM-dd");
|
|
invSvc.archiveData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
}
|
|
//sensorSvc.archiveData();
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " Inv OK";
|
|
}
|
|
|
|
private void dtSelect_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
bt_clear_inv.Enabled = true;
|
|
bt_clear_station.Enabled = true;
|
|
bt_clear_sensor.Enabled = true;
|
|
bt_clear_inv.Text = "clear " + dtSelect1.Value.ToString("MM-dd");
|
|
bt_clear_station.Text = "clear " + dtSelect1.Value.ToString("MM-dd");
|
|
bt_clear_sensor.Text = "clear " + dtSelect1.Value.ToString("MM-dd");
|
|
}
|
|
|
|
private void bt_clear_inv_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
|
procInvSvc invSvc = new procInvSvc();
|
|
invSvc._siteDB = lbSiteDB_sensor.Text;
|
|
invSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
|
invSvc._siteID01 = lbSiteID_sensor.Text;
|
|
invSvc._date1 = date1;
|
|
//invSvc._date2 = date1;
|
|
invSvc.clearData();
|
|
//sensorSvc.archiveData();
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " inv clear OK";
|
|
}
|
|
|
|
private void bt_clear_station_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
|
procStationSvc siteSvc = new procStationSvc();
|
|
siteSvc._siteDB = lbSiteDB_sensor.Text;
|
|
siteSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
|
siteSvc._siteID01 = lbSiteID_sensor.Text;
|
|
siteSvc._date1 = date1;
|
|
//siteSvc._date2 = date1;
|
|
siteSvc.clearData();
|
|
//sensorSvc.archiveData();
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " clear station OK";
|
|
}
|
|
|
|
private void bt_site_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
|
procStationSvc siteSvc = new procStationSvc();
|
|
//invSvc._siteDB = lbSiteDB_sensor.Text;
|
|
//invSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
|
//invSvc._siteID01 = lbSiteID_sensor.Text;
|
|
//invSvc._date1 = date1;
|
|
//invSvc._date2 = date1;
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
//string d1 = day.ToString("yyyy-MM-dd");
|
|
siteSvc.archiveData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
}
|
|
//sensorSvc.archiveData();
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " site OK";
|
|
}
|
|
|
|
private void bt_archive_Click(object sender, EventArgs e)
|
|
{
|
|
var site_list = stationSvc.get_station_list();
|
|
|
|
//bt_Sensor.PerformClick();
|
|
//bt_Inv.PerformClick();
|
|
//bt_site.PerformClick();
|
|
//bt_rpt_invDay.PerformClick();
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
procSensorSvc sensorSvc = new procSensorSvc();
|
|
procInvSvc invSvc = new procInvSvc();
|
|
procStationSvc siteSvc = new procStationSvc();
|
|
|
|
foreach (var item in site_list)
|
|
{
|
|
//RadioButton rb = new RadioButton();
|
|
//rb.Name = item.SiteID;
|
|
//rb.Text = item.SiteName;
|
|
//rb.Tag = item.SiteDB;
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
sensorSvc.archiveData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
invSvc.archiveData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
siteSvc.archiveData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
invSvc.report_invDay(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
}
|
|
}
|
|
|
|
#region 累計日照
|
|
sensorSvc.isFirst = true;
|
|
foreach (var item in site_list)
|
|
{
|
|
//for sensor_history_hour
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
sensorSvc.archiveSensorHistoryHourData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
sensorSvc.isFirst = false;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
lbMsgTitle.Text = System.DateTime.Now.ToString() + " 完成!";
|
|
}
|
|
|
|
private void bt_clear_sensor_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
|
procSensorSvc sensorSvc = new procSensorSvc();
|
|
sensorSvc._siteDB = lbSiteDB_sensor.Text;
|
|
sensorSvc._siteID = lbSiteID_sensor.Text.Substring(0, 9);
|
|
sensorSvc._siteID01 = lbSiteID_sensor.Text;
|
|
sensorSvc._date1 = date1;
|
|
//sensorSvc._date2 = date1;
|
|
sensorSvc.clearData();
|
|
//sensorSvc.archiveData();
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " clear_sensor OK";
|
|
}
|
|
|
|
private void lbSiteDB_sensor_Click(object sender, EventArgs e)
|
|
{
|
|
fmExcel fm = new fmExcel();
|
|
fm.Show();
|
|
|
|
}
|
|
|
|
private void bt_meter_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
procSensorSvc sensorSvc = new procSensorSvc();
|
|
|
|
sensorSvc.archiveMeterData(lbSiteID_sensor.Text.Substring(0, 9), date1);
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " meter OK";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 日報表 - 每日歸檔
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void bt_rpt_invDay_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
procInvSvc invSvc = new procInvSvc();
|
|
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
invSvc.report_invDay(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
}
|
|
|
|
//MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " 日報 OK";
|
|
}
|
|
|
|
private void bt_invDay_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
get_inv_svc invSvc = new get_inv_svc();
|
|
var ds = invSvc.get_ck_invDay_list(date1, date2);
|
|
gv_rpt_invDay.DataSource = ds;
|
|
gv_rpt_invDay.Columns[0].Width = 60;
|
|
gv_rpt_invDay.Columns[1].Width = 80;
|
|
gv_rpt_invDay.Columns[2].Width = 100;
|
|
gv_rpt_invDay.Columns[3].Width = 90;
|
|
gv_rpt_invDay.Columns[3].HeaderText = "資料量";
|
|
gv_rpt_invDay.Columns[4].Width = 90;
|
|
gv_rpt_invDay.Columns[4].HeaderText = "Inv建立";
|
|
//gv_rpt_invDay.Columns[5].Width = 90;
|
|
//gv_rpt_invDay.Columns[5].HeaderText = "日期間";
|
|
gv_rpt_invDay.Columns[5].Visible = false;
|
|
gv_rpt_invDay.Columns[6].Width = 80;
|
|
gv_rpt_invDay.Columns[6].HeaderText = "日區間";
|
|
gv_rpt_invDay.Columns[7].Width = 80;
|
|
gv_rpt_invDay.Columns[7].HeaderText = "差異量";
|
|
gv_rpt_invDay.Columns[8].Width = 80;
|
|
gv_rpt_invDay.Columns[8].HeaderText = "日報";
|
|
|
|
}
|
|
|
|
private void gv_rpt_invDay_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
|
|
{
|
|
if (gv_rpt_invDay.Rows[e.RowIndex].Cells["CsubstrctionB"].Value != null && !string.IsNullOrWhiteSpace(gv_rpt_invDay.Rows[e.RowIndex].Cells["CsubstrctionB"].Value.ToString()))
|
|
{
|
|
if (gv_rpt_invDay.Rows[e.RowIndex].Cells["CsubstrctionB"].Value.ToString() != "0")
|
|
{
|
|
gv_rpt_invDay.Rows[e.RowIndex].Cells["CsubstrctionB"].Style = new DataGridViewCellStyle { ForeColor = Color.Red, BackColor = Color.White };
|
|
}
|
|
}
|
|
}
|
|
|
|
private void gv_rpt_invDay_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
|
|
{
|
|
if (e.RowIndex > 0)
|
|
{
|
|
string powerStationID = gv_rpt_invDay.Rows[e.RowIndex].Cells[0].Value.ToString();
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
get_inv_svc invSvc = new get_inv_svc();
|
|
if (e.ColumnIndex != 8)
|
|
{
|
|
var ds = invSvc.get_ck_invDay_detail1(powerStationID, date1, date2);
|
|
gv_inv_detail.DataSource = ds;
|
|
gv_inv_detail.Columns[0].Width = 60;
|
|
gv_inv_detail.Columns[1].Width = 160; //invID
|
|
gv_inv_detail.Columns[2].Width = 80;
|
|
gv_inv_detail.Columns[3].Width = 90;
|
|
} else
|
|
{ // 日報
|
|
var ds = invSvc.get_reportDay(powerStationID, date1, date2);
|
|
gv_inv_detail.DataSource = ds;
|
|
gv_inv_detail.Columns[0].Width = 60;
|
|
gv_inv_detail.Columns[1].Width = 80; //report_date
|
|
gv_inv_detail.Columns[2].Width = 70;
|
|
gv_inv_detail.Columns[3].Width = 70;
|
|
gv_inv_detail.Columns[4].Width = 70;
|
|
gv_inv_detail.Columns[5].Width = 70;
|
|
gv_inv_detail.Columns[6].Width = 70;
|
|
}
|
|
}
|
|
//switch (e.ColumnIndex)
|
|
//{
|
|
// case 0:
|
|
// MessageBox.Show("这是第零列得");
|
|
// break;
|
|
// default:
|
|
// break;
|
|
//}
|
|
}
|
|
|
|
private void gv_inv_detail_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (gv_inv_detail.Columns.Count == 5 || e.RowIndex == -1) return;
|
|
|
|
string inverterID = gv_inv_detail.Rows[e.RowIndex].Cells[1].Value.ToString();
|
|
//MessageBox.Show(inverterID);
|
|
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
get_inv_svc invSvc = new get_inv_svc();
|
|
var ds = invSvc.get_ck_invDay_detail2(inverterID, date1, date2);
|
|
gv_inv_detail.DataSource = ds;
|
|
gv_inv_detail.Columns[0].Width = 60;
|
|
gv_inv_detail.Columns[1].Width = 150;
|
|
gv_inv_detail.Columns[2].Width = 80;
|
|
gv_inv_detail.Columns[3].Width = 100;
|
|
gv_inv_detail.Columns[4].Width = 80;
|
|
gv_inv_detail.Columns[5].Width = 80;
|
|
}
|
|
|
|
private void bt_sensor_lackData_Click(object sender, EventArgs e)
|
|
{
|
|
//procSensorSvc sensorSvc = new procSensorSvc();
|
|
//getSensorSvc GetSensor = new getSensorSvc();
|
|
//var ds = GetSensor.get_lack_sensorData(dtSelect1.Value.ToString("yyyy-MM-dd"));
|
|
////foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
//foreach (var item in ds)
|
|
//{
|
|
// sensorSvc.archiveData(item.SITEID, item.TIMESTAMP.ToString("yyyy-MM-dd"));
|
|
//}
|
|
|
|
var site_list = stationSvc.get_station_list();
|
|
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
procSensorSvc sensorSvc = new procSensorSvc();
|
|
procInvSvc invSvc = new procInvSvc();
|
|
//procStationSvc siteSvc = new procStationSvc();
|
|
int i = 0;
|
|
foreach (var item in site_list)
|
|
{
|
|
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
sensorSvc.archiveData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
//invSvc.archiveData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
//siteSvc.archiveData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
invSvc.report_invDay(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
}
|
|
i++;
|
|
}
|
|
|
|
sensorSvc.isFirst = true;
|
|
foreach (var item in site_list)
|
|
{
|
|
//for sensor_history_hour
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
sensorSvc.archiveSensorHistoryHourData(item.SiteID.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
sensorSvc.isFirst = false;
|
|
}
|
|
}
|
|
|
|
// MessageBox.Show("OK");
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " sensor_lackData OK";
|
|
}
|
|
|
|
private void bt_lackStation_Click(object sender, EventArgs e)
|
|
{
|
|
procStationSvc stationSvc = new procStationSvc();
|
|
getStationSvc GetStation = new getStationSvc();
|
|
var ds = GetStation.get_lack_stationData(dtSelect1.Value.ToString("yyyy-MM-dd"));
|
|
|
|
procInvSvc invSvc = new procInvSvc();
|
|
//foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
foreach (var item in ds)
|
|
{
|
|
stationSvc.archiveData(item.SITEID, item.TIMESTAMP.ToString("yyyy-MM-dd")); // 補 station
|
|
invSvc.report_invDay(item.SITEID, item.TIMESTAMP.ToString("yyyy-MM-dd")); // 補日報表
|
|
}
|
|
|
|
//MessageBox.Show("OK"); lackStation
|
|
lbMsgTitle.Text = DateTime.Now.ToString() + " lackStation OK";
|
|
}
|
|
|
|
|
|
private void bt_archive_One_Click(object sender, EventArgs e)
|
|
{
|
|
int i = 0;
|
|
//var site_list = stationSvc.get_station_list();
|
|
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
procSensorSvc sensorSvc = new procSensorSvc();
|
|
procInvSvc invSvc = new procInvSvc();
|
|
procStationSvc siteSvc = new procStationSvc();
|
|
|
|
//foreach (var item in site_list)
|
|
//{
|
|
sensorSvc.isFirst = true;
|
|
foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
sensorSvc.archiveData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
sensorSvc.archiveSensorHistoryHourData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
sensorSvc.isFirst = false;
|
|
invSvc.archiveData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
siteSvc.archiveData(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
invSvc.report_invDay(lbSiteID_sensor.Text.Substring(0, 9), day.ToString("yyyy-MM-dd"));
|
|
}
|
|
i++;
|
|
//}
|
|
lbMsgTitle.Text = System.DateTime.Now.ToString() + " 完成!";
|
|
}
|
|
|
|
private void bt_updateInstantValue_Click(object sender, EventArgs e)
|
|
{
|
|
procArchiveHourly svc = new procArchiveHourly();
|
|
var result = svc.proc_s1_site();
|
|
gv_inv_detail.DataSource = result;
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
List<string> user = new List<string>();
|
|
user.Add(tbReceiver.Text.Trim());
|
|
List<string> file = new List<string>();
|
|
|
|
var result = Send(user, tbTitle.Text, tbContent.Text, file);
|
|
|
|
if (result.CompareTo("成功") == 0)
|
|
{
|
|
MessageBox.Show("【SendEmailJob】 寄送成功! ");
|
|
}
|
|
}
|
|
private string Send(List<string> recipientEmails, string subject, string content, List<string> attachments)
|
|
{
|
|
var reason = string.Empty;
|
|
var CanDoSend = true;
|
|
MailMessage MyMail = new MailMessage();
|
|
|
|
MyMail.SubjectEncoding = System.Text.Encoding.UTF8;//郵件標題編碼
|
|
MyMail.BodyEncoding = System.Text.Encoding.UTF8; //郵件內容編碼
|
|
MyMail.IsBodyHtml = true; //是否使用html格式
|
|
if (tbUserName.Text.Trim().Length > 0)
|
|
{
|
|
var kkk = $"FIC 太陽能電站管理系統通知 <{tbUserName.Text.Trim()}>";
|
|
MyMail.From = new System.Net.Mail.MailAddress(tbUserName.Text.Trim()); //寄件人
|
|
}
|
|
|
|
foreach (var email in recipientEmails)
|
|
{
|
|
MyMail.To.Add(email); //設定收件者Email
|
|
}
|
|
|
|
MyMail.Subject = subject; //主題
|
|
MyMail.Body = content; //設定信件內容
|
|
|
|
foreach (var attachment in attachments)
|
|
{
|
|
var directoryBase = Directory.GetCurrentDirectory();
|
|
var filePath = @$"{directoryBase}\wwwroot{attachment}";
|
|
|
|
if (File.Exists(filePath))
|
|
{
|
|
var data = new Attachment(filePath);
|
|
MyMail.Attachments.Add(data);
|
|
}
|
|
else
|
|
{
|
|
CanDoSend = false;
|
|
reason = "失敗 - 檔案遺失";
|
|
break;
|
|
}
|
|
}
|
|
|
|
//讀取 SMTP Config
|
|
if (CanDoSend)
|
|
{
|
|
SMTPConfig smtp = new SMTPConfig(); ;
|
|
//smtp.Host = "smtp.gmail.com";
|
|
smtp.Host = "msa.hinet.net";
|
|
//smtp.UserName = "ficgreen01@gmail.com";
|
|
//smtp.Password = "qwe2015qwe";
|
|
//smtp.UserName = "ficgreen02@gmail.com";
|
|
//smtp.Password = "qwe20150504qwe";
|
|
//smtp.UserName = "shanghohui@gmail.com";
|
|
//smtp.Password = "wswgnluvoodfexrb";
|
|
//smtp.EnableSsl = true;
|
|
//smtp.Port = 587;
|
|
if (tbUserName.Text.Trim().Length > 0)
|
|
{
|
|
smtp.UserName = tbUserName.Text;
|
|
smtp.Password = tbPassword.Text;
|
|
}
|
|
//smtp.UserName = tbUserName.Text;
|
|
//smtp.Password = tbPassword.Text;
|
|
if (rbSSL.Checked)
|
|
{
|
|
smtp.EnableSsl = true;
|
|
smtp.Port = 587;
|
|
}
|
|
else
|
|
{
|
|
smtp.EnableSsl = false;
|
|
smtp.Port = 25;
|
|
}
|
|
|
|
SmtpClient MySMTP = new SmtpClient(smtp.Host, smtp.Port);
|
|
MySMTP.EnableSsl = smtp.EnableSsl;
|
|
|
|
MySMTP.Credentials = new System.Net.NetworkCredential(smtp.UserName, smtp.Password);
|
|
try
|
|
{
|
|
MySMTP.Send(MyMail);
|
|
MySMTP.Dispose();
|
|
MyMail.Dispose(); //釋放資源
|
|
//richTextBox1.Text.Insert(0, "成功");
|
|
return "成功";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string json = System.Text.Json.JsonSerializer.Serialize(recipientEmails);
|
|
|
|
//MessageBox.Show("【SendEmailJob】 " + "寄送信件失敗" + json + " Exception:" + ex.Message);
|
|
|
|
return "失敗 - " + ex.Message;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return reason;
|
|
}
|
|
}
|
|
public class SMTPConfig
|
|
{
|
|
public string Host { get; set; }
|
|
public int Port { get; set; }
|
|
public string UserName { get; set; }
|
|
public string Password { get; set; }
|
|
public bool EnableSsl { get; set; }
|
|
}
|
|
|
|
private void textBox1_TextChanged(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void btSendMail_Click(object sender, EventArgs e)
|
|
{
|
|
List<string> user = new List<string>();
|
|
user.Add(tbReceiver.Text.Trim());
|
|
List<string> file = new List<string>();
|
|
|
|
var result = Send(user, tbTitle.Text, tbContent.Text, file);
|
|
|
|
if (result.CompareTo("成功") == 0)
|
|
{
|
|
// MessageBox.Show("【SendEmailJob】 寄送成功! ");
|
|
richTextBox1.AppendText(Environment.NewLine + System.DateTime.Now.ToString() + " " + result.ToString());
|
|
|
|
}
|
|
else {
|
|
richTextBox1.AppendText(Environment.NewLine + System.DateTime.Now.ToShortTimeString() + " " + result.ToString());
|
|
}
|
|
}
|
|
|
|
|
|
private void button1_Click_1(object sender, EventArgs e)
|
|
{
|
|
int i = 0;
|
|
var site_list = stationSvc.get_station_list();
|
|
|
|
archiveLowData archiveData = new archiveLowData();
|
|
|
|
foreach (var item in site_list)
|
|
{
|
|
archiveData.archiveData(item.SiteID.Substring(0, 9));
|
|
|
|
i++;
|
|
}
|
|
lbMsgTitle.Text = System.DateTime.Now.ToString() + " 水位管理 - 資料搬移完成!";
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
// string date1 = dtSelect1.Value.ToString("yyyy-MM-dd") + " "+System.DateTime.Now.AddHours(-2) + ":00:00";
|
|
string date1 = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH") + ":00:00";
|
|
if (textBox1.Text.Trim().Length > 0)
|
|
{
|
|
date1 = dtSelect1.Value.ToString("yyyy-MM-dd ") + textBox1.Text + ":00:00";
|
|
}
|
|
|
|
var site_list = stationSvc.get_station_list();
|
|
|
|
procSensorSvc procSensor = new procSensorSvc();
|
|
foreach (var item in site_list)
|
|
{
|
|
procSensor.archiveData_test(item.SiteID.Substring(0, 9), date1);
|
|
}
|
|
autoTask = false;
|
|
lbMsgTitle.Text = System.DateTime.Now.ToString() + " invdayhour - 完成!";
|
|
}
|
|
|
|
private void button3_Click(object sender, EventArgs e)
|
|
{
|
|
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
|
string date2 = dtSelect2.Value.ToString("yyyy-MM-dd");
|
|
procArchiveSensorHourly sensorSvc = new procArchiveSensorHourly();
|
|
//單跑一次
|
|
//string t1 = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH");
|
|
//sensorSvc.insertData(lbSiteID_sensor.Text.Substring(0, 9), t1);
|
|
//執行期間內每個小時
|
|
foreach (DateTime time in EachHour(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
{
|
|
sensorSvc.insertData(lbSiteID_sensor.Text.Substring(0, 9), time.ToString("yyyy-MM-dd HH"));
|
|
}
|
|
lbMsgTitle.Text = System.DateTime.Now.ToString() + " 完成!";
|
|
|
|
|
|
//跑全站,期間內每個小時
|
|
//var site_list = stationSvc.get_station_list();
|
|
//foreach (var item in site_list)
|
|
//{
|
|
// foreach (DateTime time in EachHour(DateTime.Parse(date1), DateTime.Parse(date2)))
|
|
// {
|
|
// sensorSvc.insertData(lbSiteID_sensor.Text.Substring(0, 9), time.ToString("yyyy-MM-dd HH"));
|
|
// }
|
|
//}
|
|
}
|
|
|
|
private void btSyncErr_Click(object sender, EventArgs e)
|
|
{
|
|
autoTask = true;
|
|
svc.syncErrData();
|
|
autoTask = false;
|
|
}
|
|
|
|
//test for email format
|
|
//private void button3_Click(object sender, EventArgs e)
|
|
//{
|
|
// if(IsValidEmail(textBox2.Text))
|
|
// {
|
|
// label3.Text = "OK";
|
|
// }
|
|
// else
|
|
// {
|
|
// label3.Text = "X";
|
|
// }
|
|
//}
|
|
|
|
//bool IsValidEmail(string strIn)
|
|
//{
|
|
// // Return true if strIn is in valid e-mail format.
|
|
// return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
|
|
//}
|
|
}
|
|
}
|