From 61a830e4217fa16e61346ecfa3aebb000e72ac39 Mon Sep 17 00:00:00 2001 From: cesar liu Date: Mon, 5 Sep 2022 22:45:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=8F=96=E6=B6=88=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=88=A4=E6=96=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignTimeBuild/.dtbcache.v2 | Bin 169175 -> 0 bytes .../config/applicationhost.config | 995 ------------------ SolarPower/Quartz/Jobs/CalcPowerStationJob.cs | 6 +- .../Quartz/Jobs/CalcPowerStationJobV2.cs | 36 +- SolarPower/Quartz/Jobs/ExceptionSchedule.cs | 27 +- .../Implement/OverviewRepository.cs | 6 +- SolarPower/Startup.cs | 90 +- SolarPower/appsettings.json | 2 +- solarApp/fmArchive.Designer.cs | 26 +- solarApp/fmArchive.cs | 15 +- 10 files changed, 115 insertions(+), 1088 deletions(-) delete mode 100644 .vs2/slnSolarPower/DesignTimeBuild/.dtbcache.v2 delete mode 100644 .vs2/slnSolarPower/config/applicationhost.config diff --git a/.vs2/slnSolarPower/DesignTimeBuild/.dtbcache.v2 b/.vs2/slnSolarPower/DesignTimeBuild/.dtbcache.v2 deleted file mode 100644 index 7deac2218ed3ac7a43450e401122fd7fe804b5fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169175 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 diff --git a/.vs2/slnSolarPower/config/applicationhost.config b/.vs2/slnSolarPower/config/applicationhost.config deleted file mode 100644 index 3269632..0000000 --- a/.vs2/slnSolarPower/config/applicationhost.config +++ /dev/null @@ -1,995 +0,0 @@ - - - - - - -
-
-
-
-
-
-
-
- - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
- -
-
- -
-
-
- - -
-
-
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs b/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs index a7d8118..305b048 100644 --- a/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs +++ b/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs @@ -842,8 +842,8 @@ namespace SolarPower.Quartz.Jobs } #endregion - if (!this.environment.IsDevelopment()) - { + //if (!this.environment.IsDevelopment()) + //{ #region step3. 將historiers INSERT 到 power_station_history_hour 資料表 List history_properties = new List() { @@ -1076,7 +1076,7 @@ namespace SolarPower.Quartz.Jobs }; await powerStationRepository.AddWeatherObservation(weatherObservations, weather_observation_properties); #endregion - } + // } logger.LogInformation("【CalcPowerStationJob】【任務完成】"); } diff --git a/SolarPower/Quartz/Jobs/CalcPowerStationJobV2.cs b/SolarPower/Quartz/Jobs/CalcPowerStationJobV2.cs index f3c2c2b..e9cc908 100644 --- a/SolarPower/Quartz/Jobs/CalcPowerStationJobV2.cs +++ b/SolarPower/Quartz/Jobs/CalcPowerStationJobV2.cs @@ -142,8 +142,8 @@ namespace SolarPower.Quartz.Jobs } } } - if (!environment.IsDevelopment()) - { + //if (!environment.IsDevelopment()) + //{ #region step3. 將historiers INSERT 到 power_station_history_hour 資料表 List history_properties = new List() { @@ -169,7 +169,7 @@ namespace SolarPower.Quartz.Jobs await powerStationRepository.AddPowerStationHistory(powerStationHistoriesHour, history_properties); logger.LogInformation("【Insert PowerStationHistoryHour】【ArchiveStation】【完成寫入 PowerStationHistoryHour 資料】- {0}", dateTime); #endregion - } + //} } private async Task ArchiveStationForPowerStation(List powerStations, string dateTime) @@ -339,8 +339,8 @@ namespace SolarPower.Quartz.Jobs } } } - if (!environment.IsDevelopment()) - { + //if (!environment.IsDevelopment()) + //{ #region step5. calcPowerStations UPDATE 到 power_station 資料表 List power_station_properties = new List() { @@ -365,7 +365,7 @@ namespace SolarPower.Quartz.Jobs await powerStationRepository.UpdateList(calcPowerStations, power_station_properties); logger.LogInformation("【update Power_Station】【ArchiveStation】【完成更新 Power_Station 資料】- {0}", dateTime); #endregion - } + //} } private async Task ArchiveStationForPowerStationWithWinForm(List powerStations, string dateTime) @@ -476,8 +476,8 @@ namespace SolarPower.Quartz.Jobs } #endregion } - if (!environment.IsDevelopment()) - { + //if (!environment.IsDevelopment()) + //{ #region step6. 將 inverter INSERT 到 inverter_history_hour 資料表 List inverter_history_properties = new List() { @@ -542,7 +542,7 @@ namespace SolarPower.Quartz.Jobs await powerStationRepository.AddInverterHistory(inverterHistoriesHour, inverter_history_properties); logger.LogInformation("【Insert InverterHistoryHour】【ArchiveInverter】【完成寫入 inverter_history_hour 資料】- {0}", dateTime); #endregion - } + //} } private async Task ArchiveSensoravg(List powerStations, string dateTime) @@ -589,8 +589,8 @@ namespace SolarPower.Quartz.Jobs } } } - if (!environment.IsDevelopment()) - { + //if (!environment.IsDevelopment()) + //{ #region step7. 將 sensoravg INSERT 到 sensoravg_history_hour 資料表 List sensoravg_history_properties = new List() { @@ -651,7 +651,7 @@ namespace SolarPower.Quartz.Jobs await powerStationRepository.AddSensorAvgHistory(sensorAvgHistoryHour, sensoravg_history_properties); logger.LogInformation("【Insert SensoravgHistoryHour】【ArchiveSensoravg】【完成寫入 sensoravg_history_hour 資料】- {0}", dateTime); #endregion - } + //} } private async Task ArchiveMeter(List powerStations, string dateTime) @@ -702,8 +702,8 @@ namespace SolarPower.Quartz.Jobs } } } - if (!environment.IsDevelopment()) - { + //if (!environment.IsDevelopment()) + //{ #region step8. 將 meter INSERT 到 meter_history_hour 資料表 List memter_history_properties = new List() { @@ -726,7 +726,7 @@ namespace SolarPower.Quartz.Jobs await powerStationRepository.AddMeterHistory(meterHistoriesHour, memter_history_properties); logger.LogInformation("【Insert MeterHistoryHour】【ArchiveMeter】【完成寫入 meter_history_hour 資料】- {0}", dateTime); #endregion - } + //} } private async Task ArchiveWeather(List powerStations, string dateTime) @@ -832,8 +832,8 @@ namespace SolarPower.Quartz.Jobs } } } - if (!environment.IsDevelopment()) - { + //if (!environment.IsDevelopment()) + //{ #region step9. 新增天氣資訊 List weather_observation_properties = new List() { @@ -845,7 +845,7 @@ namespace SolarPower.Quartz.Jobs await powerStationRepository.AddWeatherObservation(weatherObservations, weather_observation_properties); logger.LogInformation("【Insert WeatherObservation】【ArchiveWeather】【完成寫入 weather_observation 資料】- {0}", dateTime); #endregion - } + //} } } diff --git a/SolarPower/Quartz/Jobs/ExceptionSchedule.cs b/SolarPower/Quartz/Jobs/ExceptionSchedule.cs index b19a634..4f84366 100644 --- a/SolarPower/Quartz/Jobs/ExceptionSchedule.cs +++ b/SolarPower/Quartz/Jobs/ExceptionSchedule.cs @@ -53,7 +53,7 @@ namespace SolarPower.Quartz.Jobs x.priority == 2 && (DateTime.Now.Subtract(DateTime.Parse(x.dev_time)).TotalSeconds / 60) >= ExceptionTimes_Priority2).ToList(); - var ExceptionListex3 = ExceptionList.Where(x => x.priority == 3 && + var ExceptionListex3 = ExceptionList.Where(x => x.sourceState == 1 && x.priority == 3 && (DateTime.Now.Subtract(DateTime.Parse(x.dev_time)).TotalSeconds / 60) >= ExceptionTimes_Priority3).ToList(); ExceptionListex.AddRange(ExceptionListex2); ExceptionListex.AddRange(ExceptionListex3); @@ -98,19 +98,18 @@ namespace SolarPower.Quartz.Jobs Type = 1, ExceptionId = Exception.id }; - List properties = new List() - { - "UserId", - "EmailType", - "RecipientEmail", - "Subject", - "Content", - "RecipientName", - "Type", - "ExceptionId" - }; - await noticeScheduleRepository.AddOneAsync(DaySchedule, properties); - + //List properties = new List() + //{ + // "UserId", + // "EmailType", + // "RecipientEmail", + // "Subject", + // "Content", + // "RecipientName", + // "Type", + // "ExceptionId" + //}; + //await noticeScheduleRepository.AddOneAsync(DaySchedule, properties); } diff --git a/SolarPower/Repository/Implement/OverviewRepository.cs b/SolarPower/Repository/Implement/OverviewRepository.cs index 96bfac3..9119df5 100644 --- a/SolarPower/Repository/Implement/OverviewRepository.cs +++ b/SolarPower/Repository/Implement/OverviewRepository.cs @@ -860,9 +860,9 @@ namespace SolarPower.Repository.Implement and a.errDeviceBrand = d.brend and a.errDeviceModel = d.model and a.errValue = d.errCode left join power_station ps on ps.`Code` = site_id left join operation_record pr on pr.ErrorCode = a.id - where ps.`Code` is not null + where sourceState = 1 and ps.`Code` is not null and priority < 20 ) a LEFT JOIN notice_schedule ns ON ns.ExceptionId = a.id - WHERE ns.Id IS NULL and a.dev_time >= '{ DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}' "; + WHERE ns.Id IS NULL "; exceptionEmailInfos = (await conn.QueryAsync(sql)).ToList(); } catch (Exception exception) @@ -882,7 +882,7 @@ namespace SolarPower.Repository.Implement { var sql = @$"SELECT u.Name,u.Email,u.Id FROM power_station_operation_personnel pss LEFT JOIN user u ON u.Id = pss.UserId - WHERE pss.Deleted = 0 AND pss.EmailException = 1 AND pss.PowerStationId = {id} AND u.Deleted = 0"; + WHERE pss.Deleted = 0 AND pss.EmailException = 1 AND pss.PowerStationId = {id} AND u.Deleted = 0 and Email is not null"; result = (await conn.QueryAsync(sql)).ToList(); } catch (Exception exception) diff --git a/SolarPower/Startup.cs b/SolarPower/Startup.cs index fcc705c..14c7a0d 100644 --- a/SolarPower/Startup.cs +++ b/SolarPower/Startup.cs @@ -96,66 +96,66 @@ namespace SolarPower #region [JI //services.AddHostedService(); //if (envName == "Production") - if (envName != "Production") - { + //if (envName != "Production") + //{ ////K[QuartzA services.AddSingleton(); services.AddSingleton(); - ////K[Job - //#region wpe / C email A - services.AddSingleton(); - services.AddSingleton( - new JobSchedule(jobType: typeof(OperationScheduleJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:OperationScheduleJob")) - ); - //#endregion + ////K[Job + //#region wpe / C email A + services.AddSingleton(); + services.AddSingleton( + new JobSchedule(jobType: typeof(OperationScheduleJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:OperationScheduleJob")) + ); + //#endregion - //#region pqfܾT(CI2}l15@Ӵ`) - services.AddSingleton(); - services.AddSingleton( - new JobSchedule(jobType: typeof(CalcInverter15minJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcInverter15minJob")) - ); - //#endregion + //#region pqfܾT(CI2}l15@Ӵ`) + services.AddSingleton(); + services.AddSingleton( + new JobSchedule(jobType: typeof(CalcInverter15minJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcInverter15minJob")) + ); + //#endregion - ////#region pqoqqT(CI5) - //services.AddSingleton(); - //services.AddSingleton( - //new JobSchedule(jobType: typeof(CalcPowerStationJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcPowerStationJob")) - ////new JobSchedule(jobType: typeof(CalcPowerStationJob), cronExpression: "0/10 * * * * ?") - //); - ////#endregion + ////#region pqoqqT(CI5) + //services.AddSingleton(); + //services.AddSingleton( + //new JobSchedule(jobType: typeof(CalcPowerStationJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcPowerStationJob")) + ////new JobSchedule(jobType: typeof(CalcPowerStationJob), cronExpression: "0/10 * * * * ?") + //); + ////#endregion - //#region pqoqqT(CI5) - services.AddSingleton(); - services.AddSingleton( - new JobSchedule(jobType: typeof(CalcPowerStationJobV2), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcPowerStationJobV2")) - //new JobSchedule(jobType: typeof(CalcPowerStationJobV2), cronExpression: "0/10 * * * * ?") - ); - //#endregion + //#region pqoqqT(CI5) + services.AddSingleton(); + services.AddSingleton( + new JobSchedule(jobType: typeof(CalcPowerStationJobV2), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcPowerStationJobV2")) + //new JobSchedule(jobType: typeof(CalcPowerStationJobV2), cronExpression: "0/10 * * * * ?") + ); + //#endregion - //#region pqӶqBPRBkWP 30饭B(Cѭ2I) - services.AddSingleton(); - services.AddSingleton( - new JobSchedule(jobType: typeof(CalcAvgPowerStationJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcAvgPowerStationJob")) - //new JobSchedule(jobType: typeof(CalcAvgPowerStationJob), cronExpression: "0 03 7 ? * * *") - ); - //#endregion + //#region pqӶqBPRBkWP 30饭B(Cѭ2I) + services.AddSingleton(); + services.AddSingleton( + new JobSchedule(jobType: typeof(CalcAvgPowerStationJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:CalcAvgPowerStationJob")) + //new JobSchedule(jobType: typeof(CalcAvgPowerStationJob), cronExpression: "0 03 7 ? * * *") + ); + //#endregion - //#region HeEmail(Cѭ2I) - services.AddSingleton(); - services.AddSingleton( - new JobSchedule(jobType: typeof(SendEmailJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:SendEmailJob")) - ); - //#endregion + //#region HeEmail(Cѭ2I) + services.AddSingleton(); + services.AddSingleton( + new JobSchedule(jobType: typeof(SendEmailJob), cronExpression: Configuration.GetValue("BackgroundServiceCron:SendEmailJob")) + ); + //#endregion - //#region d߲`sWEmail - services.AddSingleton(); + //#region d߲`sWEmail + services.AddSingleton(); services.AddSingleton( new JobSchedule(jobType: typeof(ExceptionSchedule), cronExpression: Configuration.GetValue("BackgroundServiceCron:ExceptionSchedule")) ); //#endregion services.AddHostedService(); - } + //} #endregion services.AddApplicationInsightsTelemetry(); diff --git a/SolarPower/appsettings.json b/SolarPower/appsettings.json index 3153171..28bb471 100644 --- a/SolarPower/appsettings.json +++ b/SolarPower/appsettings.json @@ -47,7 +47,7 @@ "Host": "smtp.gmail.com", "Port": 25, "UserName": "ficgreen01@gmail.com", - "Password": "qwe2015qwe", + "Password": "opuisjyxgyjbjtha", //2022-09-02 update by jiahao "EnableSsl": true }, "ExceptionTimes": 240, //`qɶA() diff --git a/solarApp/fmArchive.Designer.cs b/solarApp/fmArchive.Designer.cs index 19dd64c..ce9a685 100644 --- a/solarApp/fmArchive.Designer.cs +++ b/solarApp/fmArchive.Designer.cs @@ -30,8 +30,8 @@ namespace solarApp private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); @@ -89,6 +89,7 @@ namespace solarApp this.tabPage4 = new System.Windows.Forms.TabPage(); this.btSyncErr = new System.Windows.Forms.Button(); this.timer1 = new System.Windows.Forms.Timer(this.components); + this.lbMsgStatus = new System.Windows.Forms.Label(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); @@ -394,8 +395,8 @@ namespace solarApp // this.gv_inv_detail.AllowUserToAddRows = false; this.gv_inv_detail.AllowUserToDeleteRows = false; - dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.gv_inv_detail.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.gv_inv_detail.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle5; this.gv_inv_detail.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.gv_inv_detail.Dock = System.Windows.Forms.DockStyle.Fill; this.gv_inv_detail.Location = new System.Drawing.Point(768, 75); @@ -411,8 +412,8 @@ namespace solarApp // this.gv_rpt_invDay.AllowUserToAddRows = false; this.gv_rpt_invDay.AllowUserToDeleteRows = false; - dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.gv_rpt_invDay.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle2; + dataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.gv_rpt_invDay.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle6; this.gv_rpt_invDay.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.gv_rpt_invDay.Dock = System.Windows.Forms.DockStyle.Left; this.gv_rpt_invDay.Location = new System.Drawing.Point(0, 75); @@ -428,6 +429,7 @@ namespace solarApp // panel1 // this.panel1.BackColor = System.Drawing.SystemColors.GradientActiveCaption; + this.panel1.Controls.Add(this.lbMsgStatus); this.panel1.Controls.Add(this.lbMsgTitle); this.panel1.Controls.Add(this.bt_invDay); this.panel1.Controls.Add(this.btVerifyData); @@ -498,7 +500,7 @@ namespace solarApp // this.lbSiteName_sensor.AutoSize = true; this.lbSiteName_sensor.Font = new System.Drawing.Font("Microsoft JhengHei UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.lbSiteName_sensor.Location = new System.Drawing.Point(520, 20); + this.lbSiteName_sensor.Location = new System.Drawing.Point(520, 17); this.lbSiteName_sensor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbSiteName_sensor.Name = "lbSiteName_sensor"; this.lbSiteName_sensor.Size = new System.Drawing.Size(107, 24); @@ -755,6 +757,15 @@ namespace solarApp // this.timer1.Interval = 10000; // + // lbMsgStatus + // + this.lbMsgStatus.AutoSize = true; + this.lbMsgStatus.Location = new System.Drawing.Point(520, 49); + this.lbMsgStatus.Name = "lbMsgStatus"; + this.lbMsgStatus.Size = new System.Drawing.Size(18, 19); + this.lbMsgStatus.TabIndex = 16; + this.lbMsgStatus.Text = "..."; + // // fmArchive // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 19F); @@ -849,5 +860,6 @@ namespace solarApp private System.Windows.Forms.TabPage tabPage4; private System.Windows.Forms.Button btSyncErr; private System.Windows.Forms.Button button3; + private System.Windows.Forms.Label lbMsgStatus; } } \ No newline at end of file diff --git a/solarApp/fmArchive.cs b/solarApp/fmArchive.cs index 96ba532..36f1fda 100644 --- a/solarApp/fmArchive.cs +++ b/solarApp/fmArchive.cs @@ -20,6 +20,7 @@ namespace solarApp bool autoTask = false; //測試自動跑 irrDayHour 累計日照小時差異 procSyncError svc = new procSyncError(); // 異常資料同步 DateTime doTimerTaskTime = DateTime.Now; + TimeSpan doTaskDuratin; public fmArchive() { InitializeComponent(); @@ -105,8 +106,18 @@ namespace solarApp private void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { + lbMsgStatus.Text = (autoTask) ? "autoTask = true" : "autoTask = false"; + lbMsgStatus.Text += " timespan = " + (DateTime.Now - doTimerTaskTime).TotalMinutes.ToString(); + + // 凌晨 2點後,如果間隔30分鐘 沒有跑異常同步 就啟動啟動 + doTaskDuratin = DateTime.Now - doTimerTaskTime; // 1200 sec = 20 分鐘 + if (System.DateTime.Now.Hour >= 2 && doTaskDuratin.TotalSeconds > 1200 && (autoTask == true)) + { + doTimerTaskTime = DateTime.Now; + autoTask = false; + } //每日歸檔 - if (System.DateTime.Now.Hour == 00 && DateTime.Now.Minute == 15 && autoTask == false) + if (DateTime.Now.Hour == 00 && DateTime.Now.Minute == 15 ) { //MessageBox.Show("ok"); autoTask = true; @@ -119,7 +130,7 @@ namespace solarApp } //異常處理 每 5分鐘跑一次 - if ( DateTime.Now.Hour >= 05 && (DateTime.Now.Minute % 5) == 0 && (DateTime.Now.Second) < 30 && (autoTask == false || (DateTime.Now - doTimerTaskTime).TotalMinutes > 30)) + if ((DateTime.Now.Minute % 5) == 0 && (DateTime.Now.Second) < 30 && (autoTask == false)) { doTimerTaskTime = DateTime.Now; autoTask = true;