Merge remote-tracking branch 'origin/MCUT' into MCUT
# Conflicts: # FrontendWebApi/appsettings.Development.json
This commit is contained in:
		
						commit
						7c9866d54e
					
				@ -14,15 +14,14 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "DBConfig": {
 | 
					  "DBConfig": {
 | 
				
			||||||
    "MySqlDBConfig": {
 | 
					    "MySqlDBConfig": {
 | 
				
			||||||
      "Server": "FYlY+w0XDIz+jmF2rlZWJw==", //0.201
 | 
					      "Server": "CYGthbCeGtAXT4s1NOSJHQ==", //0.132
 | 
				
			||||||
      "Port": "js2LutKe+rdjzdxMPQUrvQ==",
 | 
					      "Port": "mkF51jVbg40V5K5eTh2Ckw==",
 | 
				
			||||||
      //"Database": "VJB2XC+lAtzuHObDGMVOAA==", //30  
 | 
					      //"Database": "VJB2XC+lAtzuHObDGMVOAA==", //30  
 | 
				
			||||||
      //"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp
 | 
					      //"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp
 | 
				
			||||||
      //"Database": "7gWfmZ28HGIJZbxEbK+0yg==", //tpe_dome_dome
 | 
					      //"Database": "7gWfmZ28HGIJZbxEbK+0yg==", //tpe_dome_dome
 | 
				
			||||||
      //"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel
 | 
					      //"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel
 | 
				
			||||||
      //"Database": "iuaY0h0+TWkir44/eZLDqw==", //tpe_dome_office
 | 
					      //"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
 | 
				
			||||||
      "Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
 | 
					      "Database": "XZ2fOBnta9kdVGEb7y92cg==", //ibms_mcut
 | 
				
			||||||
      //"Database": "2U+9jYGy0dCbMzLaguBXow==", //tpe_dome_mall
 | 
					 | 
				
			||||||
      "Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
 | 
					      "Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
 | 
				
			||||||
      "Password": "FVAPxztxpY4gJJKQ/se4bQ=="
 | 
					      "Password": "FVAPxztxpY4gJJKQ/se4bQ=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
				
			|||||||
@ -799,6 +799,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var sql = $@"
 | 
					                                var sql = $@"
 | 
				
			||||||
                                            UPDATE archive_electric_meter_month SET 
 | 
					                                            UPDATE archive_electric_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -846,6 +848,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                                var mySql = $@"BEGIN TRANSACTION;
 | 
					                                var mySql = $@"BEGIN TRANSACTION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                            UPDATE archive_electric_meter_month SET 
 | 
					                                            UPDATE archive_electric_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -906,6 +910,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var sql = $@"
 | 
					                                var sql = $@"
 | 
				
			||||||
                                            UPDATE archive_water_meter_month SET 
 | 
					                                            UPDATE archive_water_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -952,6 +958,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                                var mySql = $@"BEGIN TRANSACTION;
 | 
					                                var mySql = $@"BEGIN TRANSACTION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                            UPDATE archive_water_meter_month SET 
 | 
					                                            UPDATE archive_water_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -1231,7 +1239,7 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                     update device set archive_lastDate = @start_timestamp, archive_lastActionDate = @updated_at 
 | 
					                     update device set archive_lastDate = @start_timestamp, archive_lastActionDate = @updated_at 
 | 
				
			||||||
                     where device_number = @device_number;";  //archive_lastDate 前次完成時間 ,archive_lastActionDate 本次作業時間 
 | 
					                     where device_number = @device_number;";  //archive_lastDate 前次完成時間 ,archive_lastActionDate 本次作業時間 
 | 
				
			||||||
                    await backgroundServiceRepository.ExecuteSql(mySql, electericArchiveDayRawDatas);
 | 
					                    await backgroundServiceRepository.ExecuteSql(mySql, row);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                #region 明志 沒有mssql 
 | 
					                #region 明志 沒有mssql 
 | 
				
			||||||
                //if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
 | 
					                //if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
 | 
				
			||||||
@ -1330,6 +1338,10 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            if (waterArchiveDayRawDatas.Count() > 0)
 | 
					            if (waterArchiveDayRawDatas.Count() > 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                foreach (var row in waterArchiveDayRawDatas)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    row.TryGetValue("@start_timestamp", out var yyyymmData);
 | 
				
			||||||
 | 
					                    dbDateName = System.DateTime.Parse(yyyymmData.ToString()).ToString("yyyyMM");
 | 
				
			||||||
                    var sql = $@"  UPDATE archive_water_meter_day_{dbDateName} SET 
 | 
					                    var sql = $@"  UPDATE archive_water_meter_day_{dbDateName} SET 
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
@ -1464,10 +1476,11 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                                            END
 | 
					                                            END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                        COMMIT TRANSACTION;";
 | 
					                                        COMMIT TRANSACTION;";
 | 
				
			||||||
                    await backgroundServiceRepository.ExecuteSql(sql, waterArchiveDayRawDatas);
 | 
					                    await backgroundServiceRepository.ExecuteSql(sql, row);
 | 
				
			||||||
                    if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
 | 
					                    if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        await backgroundServiceMsSqlRepository.ExecuteSql(mySql, waterArchiveDayRawDatas);
 | 
					                        await backgroundServiceMsSqlRepository.ExecuteSql(mySql, row);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -23,6 +23,7 @@ using BackendWorkerService.Quartz.Jobs;
 | 
				
			|||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
using Org.BouncyCastle.Asn1.Pkcs;
 | 
					using Org.BouncyCastle.Asn1.Pkcs;
 | 
				
			||||||
using NPOI.SS.Formula.Functions;
 | 
					using NPOI.SS.Formula.Functions;
 | 
				
			||||||
 | 
					using MySqlX.XDevAPI.Relational;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace BackendWorkerService.Services.Implement
 | 
					namespace BackendWorkerService.Services.Implement
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -965,9 +966,9 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
            logger.LogInformation($@"s0 DeviceNumberPoints.Count() = {DeviceNumberPoints.Count().ToString()}");
 | 
					            logger.LogInformation($@"s0 DeviceNumberPoints.Count() = {DeviceNumberPoints.Count().ToString()}");
 | 
				
			||||||
            foreach (var deviceNumberPoint in DeviceNumberPoints)
 | 
					            foreach (var deviceNumberPoint in DeviceNumberPoints)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (deviceNumberPoint.DeviceNumber == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1")
 | 
					                if (deviceNumberPoint.DeviceNumber == "NTPC_G6_EE_E4_B1F_CB1_WHT_N1") //NTPC_G6_EE_E4_B1F_CB2_WHT_N1  NTPC_G6_EE_E4_B1F_MVCB_WHT_N1
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    logger.LogInformation($@"s1 devie_number = NTPC_G6_EE_E4_B1F_CB3_WHT_N1  archive_lastDate={deviceNumberPoint.archive_lastDate}");
 | 
					                    logger.LogInformation($@"s1 devie_number = NTPC_G6_EE_E4_B1F_CB1_WHT_N1  archive_lastDate={deviceNumberPoint.archive_lastDate}");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
 | 
					                if (deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@ -975,9 +976,13 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                    continue;  //如果是今天 就不要用歸檔了
 | 
					                    continue;  //如果是今天 就不要用歸檔了
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var startDay = string.Format("{0}T00:00:00.000+08:00", deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
					                //var startDay = string.Format("{0}T00:00:00.000+08:00", deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
				
			||||||
 | 
					                var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
 | 
				
			||||||
                var endDay = System.DateTime.Now.ToString("yyyy-MM-dd");
 | 
					                var endDay = System.DateTime.Now.ToString("yyyy-MM-dd");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //var startDay = string.Format("{0}T00:00:00.000+08:00", deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
				
			||||||
 | 
					                //var endDay = System.DateTime.Now.AddDays(-29).ToString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //logger.LogInformation($@"before startDay = {startDay}  endDay={endDay}"); // ----------- log 
 | 
					                //logger.LogInformation($@"before startDay = {startDay}  endDay={endDay}"); // ----------- log 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                #region 
 | 
					                #region 
 | 
				
			||||||
@ -986,13 +991,12 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                    if (day.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
 | 
					                    if (day.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        //logger.LogInformation($@"s2 foreach (DateTime day in EachDay(startDay, endDay)) 判斷為今天 不用跑 day = {day} "); // ----------- log 
 | 
					                        //logger.LogInformation($@"s2 foreach (DateTime day in EachDay(startDay, endDay)) 判斷為今天 不用跑 day = {day} "); // ----------- log 
 | 
				
			||||||
                        continue;  //如果是今天 就不要用歸檔了
 | 
					                        break;  //如果是今天 就不要用歸檔了
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    //logger.LogInformation(@$"obix query for {deviceNumberPoint.DeviceNumber}  day = {day.ToString("yyyy-MM-dd")}");
 | 
					                    //logger.LogInformation(@$"obix query for {deviceNumberPoint.DeviceNumber}  day = {day.ToString("yyyy-MM-dd")}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    var sDay = string.Format("{0}T00:00:00.000+08:00", day.ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
					                    var sDay = string.Format("{0}T00:00:00.000+08:00", day.ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
				
			||||||
                    var eDay = string.Format("{0}T00:00:10.000+08:00", day.AddDays(1).ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
					                    var eDay = string.Format("{0}T00:01:00.000+08:00", day.AddDays(1).ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    string historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
					                    string historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
				
			||||||
@ -1120,27 +1124,37 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                //}
 | 
					                //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
 | 
					                var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
 | 
				
			||||||
                var endDay = DateTime.Now.ToString("yyyy-MM-dd");
 | 
					                var endDay = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                logger.LogInformation($@"before startDay = {startDay}  endDay={endDay}"); // ----------- log 
 | 
					                logger.LogInformation($@"before startDay = {startDay}  endDay={endDay}"); // ----------- log 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                #region 
 | 
					                #region 
 | 
				
			||||||
                foreach (DateTime day in EachMonth(startDay , endDay))
 | 
					                //foreach (DateTime day in EachMonth(startDay , endDay))
 | 
				
			||||||
                {
 | 
					                //{
 | 
				
			||||||
                // 需要比原定日期增加 1天:因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16
 | 
					                // 需要比原定日期增加 1天:因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16
 | 
				
			||||||
                //var dayInMonth = DateTime.DaysInMonth(day.Year, day.Month) +1;  、、(DateTime.Now - DateTime.Parse(startDay)).Days
 | 
					                //var dayInMonth = DateTime.DaysInMonth(day.Year, day.Month) +1;  、、(DateTime.Now - DateTime.Parse(startDay)).Days
 | 
				
			||||||
                    var dayInMonth = (DateTime.Now - DateTime.Parse(day.ToString("yyyy-MM-") + "01")).Days + 1;
 | 
					                DateTime today = DateTime.Now;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var preDay = today.AddDays(-1); //取得前一天
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var dayInMonth = DateTime.DaysInMonth(preDay.Year, preDay.Month);
 | 
				
			||||||
 | 
					                var FirstDay = new DateTime(preDay.Year, preDay.Month, 1);
 | 
				
			||||||
 | 
					                var LastDay = today;
 | 
				
			||||||
 | 
					                var startTimestamp = string.Format("{0}T00:00:00.000+08:00", FirstDay.ToString("yyyy-MM-dd"));
 | 
				
			||||||
 | 
					                var endTimestamp = string.Format("{0}T00:01:00.000+08:00", LastDay.ToString("yyyy-MM-dd")); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //var dayInMonth = (DateTime.Now - DateTime.Parse(today.ToString("yyyy-MM-") + "01")).Days + 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    var startTimestamp = string.Format("{0}T00:00:00.000+08:00", day.ToString("yyyy-MM-") + "01");
 | 
					                //var startTimestamp = string.Format("{0}T00:00:00.000+08:00", today.ToString("yyyy-MM-") + "01");
 | 
				
			||||||
                    //var endTimestamp = string.Format("{0}T23:59:59.000+08:00", LastDay.ToString("yyyy-MM-dd"));
 | 
					                ////var endTimestamp = string.Format("{0}T23:59:59.000+08:00", LastDay.ToString("yyyy-MM-dd"));
 | 
				
			||||||
                    //var endTimestamp = string.Format("{0}T00:00:10.000+08:00", day.AddMonths(1).ToString("yyyy-MM-") + "01"); // by jiahao @2023-09-26
 | 
					                ////var endTimestamp = string.Format("{0}T00:00:10.000+08:00", day.AddMonths(1).ToString("yyyy-MM-") + "01"); // by jiahao @2023-09-26
 | 
				
			||||||
                    var endTimestamp = string.Format("{0}T00:00:10.000+08:00", DateTime.Now.ToString("yyyy-MM-dd")); // by jiahao @2023-10-03
 | 
					                //var endTimestamp = string.Format("{0}T00:00:10.000+08:00", DateTime.Now.ToString("yyyy-MM-dd")); // by jiahao @2023-10-03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
					                var historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
				
			||||||
                                                    <abstime name='start' val='{startTimestamp}' />
 | 
					                                                    <abstime name='start' val='{startTimestamp}' />
 | 
				
			||||||
                                                    <abstime name='end' val='{endTimestamp}' />
 | 
					                                                    <abstime name='end' val='{endTimestamp}' />
 | 
				
			||||||
                                                    <reltime name='interval' val = 'PT{dayInMonth.ToString()}D' />
 | 
					                                                    <reltime name='interval' val = 'PT{(dayInMonth+1).ToString()}D' />
 | 
				
			||||||
                                                </obj>";
 | 
					                                                </obj>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1168,7 +1182,7 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                archiveResponse.Dispose();
 | 
					                archiveResponse.Dispose();
 | 
				
			||||||
                archiveResponse.Close();
 | 
					                archiveResponse.Close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    logger.LogInformation(@$"【ArchiveElectricMeterMonth】{device_number} startTimestamp={startTimestamp} endTimestamp= {endTimestamp}  interval = PT{dayInMonth.ToString()}D  url = {$"{obixApiConfig.ApiBase}obix/histories/{station}/{deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "")}/~historyRollup/"}");
 | 
					                //logger.LogInformation(@$"【ArchiveElectricMeterMonth】{device_number} startTimestamp={startTimestamp} endTimestamp= {endTimestamp}  interval = PT{dayInMonth.ToString()}D  url = {$"{obixApiConfig.ApiBase}obix/histories/{station}/{deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "")}/~historyRollup/"}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                xmlDocument.LoadXml(archiveResponseContent);
 | 
					                xmlDocument.LoadXml(archiveResponseContent);
 | 
				
			||||||
@ -1212,7 +1226,7 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                        resultArchiveDayRawDatas.AddRange(ArrangeRawDatas);
 | 
					                        resultArchiveDayRawDatas.AddRange(ArrangeRawDatas);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                }
 | 
					                //}
 | 
				
			||||||
                #endregion 
 | 
					                #endregion 
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1414,7 +1428,7 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var strtday = DateTime.Parse(from);
 | 
					            var strtday = DateTime.Parse(from);
 | 
				
			||||||
            var endday = DateTime.Parse(thru);
 | 
					            var endday = DateTime.Parse(thru);
 | 
				
			||||||
            for (var _month = strtday.Date; _month.Month <= endday.Month; _month = _month.AddMonths(1))
 | 
					            for (var _month = strtday.Date; _month.Month <= endday.Month; _month = _month.AddDays(1))
 | 
				
			||||||
                yield return _month;
 | 
					                yield return _month;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -880,7 +880,11 @@
 | 
				
			|||||||
    const ElecEachTotal =
 | 
					    const ElecEachTotal =
 | 
				
			||||||
      $("li.active [name=reportTypeRadio]").data("type") === "compare";
 | 
					      $("li.active [name=reportTypeRadio]").data("type") === "compare";
 | 
				
			||||||
      if (ElecEachTotal) {
 | 
					      if (ElecEachTotal) {
 | 
				
			||||||
 | 
					        let preDate = new Date($("#elecMonthDate").val().split("-") + "-01");
 | 
				
			||||||
 | 
					        preDate.setMonth(preDate.getMonth() - 1);
 | 
				
			||||||
        const [year, month] = $("#elecMonthDate").val().split("-");
 | 
					        const [year, month] = $("#elecMonthDate").val().split("-");
 | 
				
			||||||
 | 
					        const preYear = preDate.getFullYear();
 | 
				
			||||||
 | 
					        const preMonth = (preDate.getMonth() + 1).toString().padStart(2, '0');
 | 
				
			||||||
      datesColumns = [
 | 
					      datesColumns = [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          label: "選擇月份 <br>" + `${year}${month}` + "(A)",
 | 
					          label: "選擇月份 <br>" + `${year}${month}` + "(A)",
 | 
				
			||||||
@ -889,15 +893,14 @@
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
          label:
 | 
					          label:
 | 
				
			||||||
                "前一月份 <br>" +
 | 
					                "前一月份 <br>" +
 | 
				
			||||||
            `${year}${month - 1 > 10 ? month - 1 : `0${month - 1}`}` +
 | 
					                `${preYear}${preMonth}` +
 | 
				
			||||||
            "(B)",
 | 
					            "(B)",
 | 
				
			||||||
          value: `${year}-${month - 1 > 10 ? month - 1 : `0${month - 1}`}`,
 | 
								value: `${preYear}-${preMonth}`,
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          label:
 | 
					          label:
 | 
				
			||||||
            "差異比較 <br>" +
 | 
					            "差異比較 <br>" +
 | 
				
			||||||
            `${year}${month}(A)-${year}${month - 1 > 10 ? month - 1 : `0${month - 1}`
 | 
									`${year}${month}(A)-${preYear}${preMonth}(B)`,
 | 
				
			||||||
            }(B)`,
 | 
					 | 
				
			||||||
          value: "last month different",
 | 
					          value: "last month different",
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
				
			|||||||
@ -80,8 +80,14 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
                                ? input.startTime + "-01"
 | 
					                                ? input.startTime + "-01"
 | 
				
			||||||
                                : input.tableType == "month" || input.tableType == "year" ? input.startTime + "-01-01"
 | 
					                                : input.tableType == "month" || input.tableType == "year" ? input.startTime + "-01-01"
 | 
				
			||||||
                                : null;
 | 
					                                : null;
 | 
				
			||||||
 | 
					                var yyyymmdd = System.DateTime.Parse(input.startTime + "-01").AddMonths(1);
 | 
				
			||||||
 | 
					                //var endTime = input.tableType == "day" || input.tableType == "week" 
 | 
				
			||||||
 | 
					                //                ? input.startTime.Split("-")[0] + "-" + (Int32.Parse(input.startTime.Split("-")[1]) + 1).ToString().PadLeft(2, '0') + "-01"
 | 
				
			||||||
 | 
					                //                : input.tableType == "month" ? (Int32.Parse(input.startTime.Split("-")[0]) + 1) + "-01-01"
 | 
				
			||||||
 | 
					                //                : input.tableType == "year" ? (Int32.Parse(input.endTime) + 1).ToString() + "-01-01"
 | 
				
			||||||
 | 
					                //                : null;
 | 
				
			||||||
                var endTime = input.tableType == "day" || input.tableType == "week"
 | 
					                var endTime = input.tableType == "day" || input.tableType == "week"
 | 
				
			||||||
                                ? input.startTime.Split("-")[0] + "-" + (Int32.Parse(input.startTime.Split("-")[1]) + 1).ToString().PadLeft(2, '0') + "-01"
 | 
					                               ? yyyymmdd.ToString("yyyy-MM-dd")
 | 
				
			||||||
                               : input.tableType == "month" ? (Int32.Parse(input.startTime.Split("-")[0]) + 1) + "-01-01"
 | 
					                               : input.tableType == "month" ? (Int32.Parse(input.startTime.Split("-")[0]) + 1) + "-01-01"
 | 
				
			||||||
                               : input.tableType == "year" ? (Int32.Parse(input.endTime) + 1).ToString() + "-01-01"
 | 
					                               : input.tableType == "year" ? (Int32.Parse(input.endTime) + 1).ToString() + "-01-01"
 | 
				
			||||||
                               : null;
 | 
					                               : null;
 | 
				
			||||||
@ -1293,6 +1299,7 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
                var start_month = date.ToString("MM"); // 查詢月
 | 
					                var start_month = date.ToString("MM"); // 查詢月
 | 
				
			||||||
                var last_year = previousYear.ToString("yyyy"); // 上個查詢年
 | 
					                var last_year = previousYear.ToString("yyyy"); // 上個查詢年
 | 
				
			||||||
                var last_month = previousMonth.ToString("MM"); // 上個查詢月
 | 
					                var last_month = previousMonth.ToString("MM"); // 上個查詢月
 | 
				
			||||||
 | 
					                var pre_year = previousMonth.ToString("yyyy"); // 上個查詢月(年份)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                string sqlWhere = "";
 | 
					                string sqlWhere = "";
 | 
				
			||||||
                string tag_quantity = await backendRepository.GetOneAsync<string>("select system_value from variable where system_type = 'obixConfig' and system_key = 'tag_quantity' and deleted = 0");
 | 
					                string tag_quantity = await backendRepository.GetOneAsync<string>("select system_value from variable where system_type = 'obixConfig' and system_key = 'tag_quantity' and deleted = 0");
 | 
				
			||||||
@ -1323,14 +1330,14 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                string header_now = start_year + "-" + start_month;
 | 
					                string header_now = start_year + "-" + start_month;
 | 
				
			||||||
                string header_lastM = start_year + "-" + last_month;
 | 
					                string header_lastM = pre_year + "-" + last_month;
 | 
				
			||||||
                string header_lastY = last_year + "-" + start_month;
 | 
					                string header_lastY = last_year + "-" + start_month;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var sql = $@"
 | 
					                var sql = $@"
 | 
				
			||||||
select e.full_name building_name, a.device_number, '{header_now}' searchMT, ifnull(b.kwh_sum, 0) searchM, '{header_lastM}' lastMT, ifnull(c.kwh_sum, 0) lastM, '{header_lastY}' lastYT, ifnull(d.kwh_sum, 0) lastY
 | 
					select e.full_name building_name, a.device_number, '{header_now}' searchMT, ifnull(b.kwh_sum, 0) searchM, '{header_lastM}' lastMT, ifnull(c.kwh_sum, 0) lastM, '{header_lastY}' lastYT, ifnull(d.kwh_sum, 0) lastY
 | 
				
			||||||
from device a 
 | 
					from device a 
 | 
				
			||||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {start_month} group by device_number) b on a.device_number COLLATE utf8mb4_0900_ai_ci = b.device_number -- month1
 | 
					left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {start_month} group by device_number) b on a.device_number COLLATE utf8mb4_0900_ai_ci = b.device_number -- month1
 | 
				
			||||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {last_month} group by device_number) c on a.device_number COLLATE utf8mb4_0900_ai_ci = c.device_number -- month2
 | 
					left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {pre_year} and month(start_timestamp) = {last_month} group by device_number) c on a.device_number COLLATE utf8mb4_0900_ai_ci = c.device_number -- month2
 | 
				
			||||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {last_year} and month(start_timestamp) = {start_month} group by device_number) d on a.device_number COLLATE utf8mb4_0900_ai_ci = d.device_number -- last Month
 | 
					left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {last_year} and month(start_timestamp) = {start_month} group by device_number) d on a.device_number COLLATE utf8mb4_0900_ai_ci = d.device_number -- last Month
 | 
				
			||||||
join building e on a.device_building_tag = e.building_tag
 | 
					join building e on a.device_building_tag = e.building_tag
 | 
				
			||||||
where {sqlWhere}
 | 
					where {sqlWhere}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,13 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "DBConfig": {
 | 
					  "DBConfig": {
 | 
				
			||||||
    "MySqlDBConfig": {
 | 
					    "MySqlDBConfig": {
 | 
				
			||||||
      "Server": "CYGthbCeGtAXT4s1NOSJHQ==", //0.201"
 | 
					      "Server": "CYGthbCeGtAXT4s1NOSJHQ==", //0.132
 | 
				
			||||||
      "Port": "mkF51jVbg40V5K5eTh2Ckw==", //306"
 | 
					      "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": "XZ2fOBnta9kdVGEb7y92cg==", //ibms_mcut
 | 
					      "Database": "XZ2fOBnta9kdVGEb7y92cg==", //ibms_mcut
 | 
				
			||||||
      "Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
 | 
					      "Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
 | 
				
			||||||
      "Password": "FVAPxztxpY4gJJKQ/se4bQ=="
 | 
					      "Password": "FVAPxztxpY4gJJKQ/se4bQ=="
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user