From 2ef31fc7eac2c76b16f06d84badef49963b492a6 Mon Sep 17 00:00:00 2001 From: jiahao Date: Tue, 28 Nov 2023 23:48:37 +0800 Subject: [PATCH] =?UTF-8?q?debug:=20=E8=B7=A8=E6=9C=88=E8=A8=88=E7=AE=97?= =?UTF-8?q?=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Quartz/Jobs/ArchiveElectricMeterDayJob.cs | 263 +++++++++--------- .../Implement/ProcEletricMeterService.cs | 6 +- .../appsettings.Development.json | 6 +- z01_WinAPP/App.config | 2 +- 4 files changed, 141 insertions(+), 136 deletions(-) diff --git a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs index a49d9f2..e76d204 100644 --- a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs +++ b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using MySqlX.XDevAPI.Relational; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NPOI.SS.Formula.Functions; @@ -1165,7 +1166,34 @@ namespace BackendWorkerService.Quartz.Jobs if (electericArchiveDayRawDatas.Count() > 0) { - var sql = $@" SET FOREIGN_KEY_CHECKS = 1; + object vv = null; + electericArchiveDayRawDatas.Where(x => x.TryGetValue("@start_timestamp", out vv)).ToString(); + + // var lastMonth = electericArchiveDayRawDatas.Where( x => x.Where(z => z.)) + + + // logger.LogInformation($@"putint value NTPC_G6_EE_E4_B1F_CB3_WHT_N1 ={electricMeter.archive_lastDate} archive_lastActionDate={electricMeter.archive_lastActionDate}"); + + + //異常設備 update + string sql2 = string.Empty; + foreach (var kv in dicError) + { + sql2 += $@"update device set archive_lastDate = '{kv.Value}', archive_lastActionDate = now() where device_number = '{kv.Key}' ;"; + } + if (!string.IsNullOrEmpty(sql2)) + { + await backgroundServiceRepository.ExecuteSql(sql2); + } + + logger.LogInformation("run sql electericArchiveDayRawDatas.Count() = " + electericArchiveDayRawDatas.Count()); + + + foreach (var row in electericArchiveDayRawDatas) + { + row.TryGetValue("@start_timestamp", out var yyyymmData); + dbDateName = System.DateTime.Parse(yyyymmData.ToString()).ToString("yyyyMM"); + var mySql = $@" SET FOREIGN_KEY_CHECKS = 1; UPDATE archive_electric_meter_day_{dbDateName} SET count_rawdata = @count_rawdata, min_rawdata = round(@min_rawdata, 2), @@ -1182,150 +1210,123 @@ namespace BackendWorkerService.Quartz.Jobs AND start_timestamp = @start_timestamp; INSERT INTO archive_electric_meter_day_{dbDateName} ( - device_number, - point, - start_timestamp, - end_timestamp, - count_rawdata, - min_rawdata, - max_rawdata, - kwh_result, - avg_rawdata, - sum_rawdata, - is_complete, - repeat_times, + device_number, point, + start_timestamp, end_timestamp, + count_rawdata, min_rawdata, + max_rawdata, kwh_result, + avg_rawdata, sum_rawdata, + is_complete, repeat_times, fail_reason, updated_at) SELECT - @device_number, - @point, - @start_timestamp, - @end_timestamp, - @count_rawdata, + @device_number, @point, + @start_timestamp, @end_timestamp, + @count_rawdata, round(@min_rawdata, 2), round(@max_rawdata, 2) , round(@max_rawdata, 2) - round(@min_rawdata, 2), - @avg_rawdata, - @sum_rawdata, - @is_complete, - @repeat_times, - @fail_reason, - @updated_at + @avg_rawdata, @sum_rawdata, + @is_complete, @repeat_times, + @fail_reason, @updated_at WHERE ROW_COUNT() = 0; update device set archive_lastDate = @start_timestamp, archive_lastActionDate = @updated_at - where device_number = @device_number;"; //archive_lastDate 前次完成時間 ,archive_lastActionDate 本次作業時間 - - var mySql = $@"BEGIN TRANSACTION; - IF OBJECT_ID(N'dbo.archive_electric_meter_day_{dbDateName}', N'U') is null - BEGIN - CREATE TABLE [dbo].[archive_electric_meter_day_{dbDateName}]( - [device_number] [varchar](50) NOT NULL, - [point] [varchar](20) NOT NULL, - [start_timestamp] [datetime] NOT NULL, - [end_timestamp] [datetime] NULL, - [count_rawdata] [int] NULL, - [min_rawdata] [decimal](15, 3) NULL, - [max_rawdata] [decimal](15, 3) NULL, - [kwh_result] [decimal](15, 3) NULL, - [avg_rawdata] [decimal](15, 3) NULL, - [sum_rawdata] [decimal](15, 3) NULL, - [is_complete] [tinyint] NULL, - [repeat_times] [int] NULL, - [fail_reason] [nvarchar](max) NULL, - [created_at] [datetime] NULL, - [updated_at] [datetime] NULL, - CONSTRAINT [PK_archive_electric_meter_day_{dbDateName}] PRIMARY KEY CLUSTERED - ( - [device_number] ASC, - [point] ASC, - [start_timestamp] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] - ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] - - ALTER TABLE [dbo].[archive_electric_meter_day_{dbDateName}] ADD CONSTRAINT [DF_archive_electric_meter_day_{dbDateName}_repeat_times] DEFAULT ((0)) FOR [repeat_times] - - ALTER TABLE [dbo].[archive_electric_meter_day_{dbDateName}] ADD CONSTRAINT [DF_archive_electric_meter_day_{dbDateName}_created_at] DEFAULT (getdate()) FOR [created_at] - - ALTER TABLE [dbo].[archive_electric_meter_day_{dbDateName}] ADD CONSTRAINT [DF_archive_electric_meter_day_{dbDateName}_updated_at] DEFAULT (NULL) FOR [updated_at] - - EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否完成,0:未完成 1:完成' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'archive_electric_meter_day_{dbDateName}', @level2type=N'COLUMN',@level2name=N'is_complete' - - EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'重複次數' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'archive_electric_meter_day_{dbDateName}', @level2type=N'COLUMN',@level2name=N'repeat_times' - - EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'失敗原因' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'archive_electric_meter_day_{dbDateName}', @level2type=N'COLUMN',@level2name=N'fail_reason' - END - - UPDATE archive_electric_meter_day_{dbDateName} SET - count_rawdata = @count_rawdata, - min_rawdata = round(@min_rawdata, 2), - max_rawdata = round(@max_rawdata, 2) , - kwh_result = round(@max_rawdata, 2) - round(@min_rawdata, 2), - avg_rawdata = @avg_rawdata, - sum_rawdata = @sum_rawdata, - is_complete = @is_complete, - repeat_times = @repeat_times, - fail_reason = @fail_reason, - updated_at = @updated_at - WHERE device_number = @device_number - AND point = @point - AND start_timestamp = @start_timestamp; - - IF @@ROWCOUNT = 0 - BEGIN - INSERT INTO archive_electric_meter_day_{dbDateName} ( - device_number, - point, - start_timestamp, - end_timestamp, - count_rawdata, - min_rawdata, - max_rawdata, - kwh_result, - avg_rawdata, - sum_rawdata, - is_complete, - repeat_times, - fail_reason) - VALUES ( - @device_number, - @point, - @start_timestamp, - @end_timestamp, - @count_rawdata, - round(@min_rawdata, 2), - round(@max_rawdata, 2) , - round(@max_rawdata, 2) - round(@min_rawdata, 2), - @avg_rawdata, - @sum_rawdata, - @is_complete, - @repeat_times, - @fail_reason) - END - - COMMIT TRANSACTION;"; - - // logger.LogInformation($@"putint value NTPC_G6_EE_E4_B1F_CB3_WHT_N1 ={electricMeter.archive_lastDate} archive_lastActionDate={electricMeter.archive_lastActionDate}"); - - - //異常設備 update - string sql2 = string.Empty; - foreach (var kv in dicError) - { - sql2 += $@"update device set archive_lastDate = '{kv.Value}', archive_lastActionDate = now() where device_number = '{kv.Key}' ;"; + where device_number = @device_number;"; //archive_lastDate 前次完成時間 ,archive_lastActionDate 本次作業時間 + await backgroundServiceRepository.ExecuteSql(mySql, electericArchiveDayRawDatas); } - if (!string.IsNullOrEmpty(sql2)) - { - await backgroundServiceRepository.ExecuteSql(sql2); - } - - logger.LogInformation("run sql electericArchiveDayRawDatas.Count() = " + electericArchiveDayRawDatas.Count()); - await backgroundServiceRepository.ExecuteSql(sql, electericArchiveDayRawDatas); - //明志 沒有mssql + #region 明志 沒有mssql //if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1") //{ // await backgroundServiceMsSqlRepository.ExecuteSql(mySql, electericArchiveDayRawDatas); //} + //var msSql = $@"BEGIN TRANSACTION; + // IF OBJECT_ID(N'dbo.archive_electric_meter_day_{dbDateName}', N'U') is null + // BEGIN + // CREATE TABLE [dbo].[archive_electric_meter_day_{dbDateName}]( + // [device_number] [varchar](50) NOT NULL, + // [point] [varchar](20) NOT NULL, + // [start_timestamp] [datetime] NOT NULL, + // [end_timestamp] [datetime] NULL, + // [count_rawdata] [int] NULL, + // [min_rawdata] [decimal](15, 3) NULL, + // [max_rawdata] [decimal](15, 3) NULL, + // [kwh_result] [decimal](15, 3) NULL, + // [avg_rawdata] [decimal](15, 3) NULL, + // [sum_rawdata] [decimal](15, 3) NULL, + // [is_complete] [tinyint] NULL, + // [repeat_times] [int] NULL, + // [fail_reason] [nvarchar](max) NULL, + // [created_at] [datetime] NULL, + // [updated_at] [datetime] NULL, + // CONSTRAINT [PK_archive_electric_meter_day_{dbDateName}] PRIMARY KEY CLUSTERED + // ( + // [device_number] ASC, + // [point] ASC, + // [start_timestamp] ASC + // )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] + // ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] + // ALTER TABLE [dbo].[archive_electric_meter_day_{dbDateName}] ADD CONSTRAINT [DF_archive_electric_meter_day_{dbDateName}_repeat_times] DEFAULT ((0)) FOR [repeat_times] + + // ALTER TABLE [dbo].[archive_electric_meter_day_{dbDateName}] ADD CONSTRAINT [DF_archive_electric_meter_day_{dbDateName}_created_at] DEFAULT (getdate()) FOR [created_at] + + // ALTER TABLE [dbo].[archive_electric_meter_day_{dbDateName}] ADD CONSTRAINT [DF_archive_electric_meter_day_{dbDateName}_updated_at] DEFAULT (NULL) FOR [updated_at] + + // EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'是否完成,0:未完成 1:完成' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'archive_electric_meter_day_{dbDateName}', @level2type=N'COLUMN',@level2name=N'is_complete' + + // EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'重複次數' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'archive_electric_meter_day_{dbDateName}', @level2type=N'COLUMN',@level2name=N'repeat_times' + + // EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'失敗原因' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'archive_electric_meter_day_{dbDateName}', @level2type=N'COLUMN',@level2name=N'fail_reason' + // END + + // UPDATE archive_electric_meter_day_{dbDateName} SET + // count_rawdata = @count_rawdata, + // min_rawdata = round(@min_rawdata, 2), + // max_rawdata = round(@max_rawdata, 2) , + // kwh_result = round(@max_rawdata, 2) - round(@min_rawdata, 2), + // avg_rawdata = @avg_rawdata, + // sum_rawdata = @sum_rawdata, + // is_complete = @is_complete, + // repeat_times = @repeat_times, + // fail_reason = @fail_reason, + // updated_at = @updated_at + // WHERE device_number = @device_number + // AND point = @point + // AND start_timestamp = @start_timestamp; + + // IF @@ROWCOUNT = 0 + // BEGIN + // INSERT INTO archive_electric_meter_day_{dbDateName} ( + // device_number, + // point, + // start_timestamp, + // end_timestamp, + // count_rawdata, + // min_rawdata, + // max_rawdata, + // kwh_result, + // avg_rawdata, + // sum_rawdata, + // is_complete, + // repeat_times, + // fail_reason) + // VALUES ( + // @device_number, + // @point, + // @start_timestamp, + // @end_timestamp, + // @count_rawdata, + // round(@min_rawdata, 2), + // round(@max_rawdata, 2) , + // round(@max_rawdata, 2) - round(@min_rawdata, 2), + // @avg_rawdata, + // @sum_rawdata, + // @is_complete, + // @repeat_times, + // @fail_reason) + // END + + // COMMIT TRANSACTION;"; + #endregion } if (waterArchiveDayRawDatas.Count() > 0) { diff --git a/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs b/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs index aa43534..9971416 100644 --- a/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs +++ b/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs @@ -1057,11 +1057,15 @@ namespace BackendWorkerService.Services.Implement archiveDayRawData.Add("@sum_rawdata", 0); archiveDayRawData.Add("@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + //object vv = null; + //archiveDayRawData.TryGetValue("@start_timestamp",out vv).ToString(); + //var cc = vv.ToString(); + resultArchiveDayRawDatas.Add(archiveDayRawData); if (!dicError.ContainsKey(deviceNumberPoint.DeviceNumber)) { dicError.Add(deviceNumberPoint.DeviceNumber, day.ToString("yyyy-MM-dd")); //記錄異常設備與日期 - } + } } if (archiveJsonResult.ContainsKey("obj")) //表示可以讀取到內容 diff --git a/BackendWorkerService/appsettings.Development.json b/BackendWorkerService/appsettings.Development.json index 8f5c0e0..398625c 100644 --- a/BackendWorkerService/appsettings.Development.json +++ b/BackendWorkerService/appsettings.Development.json @@ -21,14 +21,14 @@ }, "DBConfig": { "MySqlDBConfig": { - "Server": "FYlY+w0XDIz+jmF2rlZWJw==", //0.201 - "Port": "js2LutKe+rdjzdxMPQUrvQ==", + "Server": "CYGthbCeGtAXT4s1NOSJHQ==", //0.132 + "Port": "mkF51jVbg40V5K5eTh2Ckw==", //"Database": "VJB2XC+lAtzuHObDGMVOAA==", //30 //"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp //"Database": "7gWfmZ28HGIJZbxEbK+0yg==", //tpe_dome_dome //"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel //"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut - "Database": "j9LOmjFh2/9PpuwnVB8ugqnKdBDJHx1AAT7aTWeh37E=", //ibms_mcut_online + "Database": "XZ2fOBnta9kdVGEb7y92cg==", //ibms_mcut "Root": "SzdxEgaJJ7tcTCrUl2zKsA==", "Password": "FVAPxztxpY4gJJKQ/se4bQ==" }, diff --git a/z01_WinAPP/App.config b/z01_WinAPP/App.config index 0d579f1..825cc94 100644 --- a/z01_WinAPP/App.config +++ b/z01_WinAPP/App.config @@ -9,7 +9,7 @@ connectionString="Data Source=192.168.0.201:33306;Initial Catalog=bims_mitsubishi;Persist Security Info=True;User ID=bims;Password=mjmdev_BIMS2022" providerName="MySql.Data.MySqlClient" />--> - + \ No newline at end of file