瀏覽代碼

調整 電樁上下線紀錄 邏輯

Jessica Tseng 1 年之前
父節點
當前提交
7b5c47a592

+ 37 - 82
EVCB_OCPP.TaskScheduler/App.config

@@ -10,89 +10,44 @@
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
   </startup>
   <connectionStrings>
-    <add name="OnlineLogDBContext" connectionString="data source=172.1.2.187;initial catalog=StandardOCPP_OnlineRecord;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
-    <add name="MainDBContext" connectionString="data source=172.1.2.187;initial catalog=StandardOCPP_Main;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
+    <add name="OnlineLogDBContext" connectionString="Server=tcp:zerova-evbackend.database.windows.net,1433;initial catalog=StandardOCPP_OnlineRecord;;persist security info=True;user id=ev_user;password=Thw2DEa2hZPdg;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
+    <add name="MainDBContext" connectionString="Server=tcp:zerova-evbackend.database.windows.net,1433;initial catalog=StandardOCPP_Main;;persist security info=True;user id=ev_user;password=Thw2DEa2hZPdg;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
   </connectionStrings>
-
-<!--<common>
-    <logging>
-      <factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog4000">
-        <arg key="level" value="INFO" />
-        <arg key="configType" value="FILE" />
-        <arg key="configFile" value="~/Config/NLog.config" />
-      </factoryAdapter>
-    </logging>
-  </common>-->
-  
-  <runtime>
-  
-       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
-  
-            </dependentAssembly>
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />
-  
-            </dependentAssembly>
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />
-  
-            </dependentAssembly>
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />
-  
-            </dependentAssembly>
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />
-  
-            </dependentAssembly>
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />
-  
-            </dependentAssembly>
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />
-  
-            </dependentAssembly>
-  
-            <dependentAssembly>
-  
-                 <assemblyIdentity name="Microsoft.Extensions.Logging" publicKeyToken="adb9793829ddae60" culture="neutral" />
-  
-                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />
-  
-            </dependentAssembly>
-  
-       </assemblyBinding>
   
+  <runtime>  
+       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
+            <dependentAssembly>  
+                 <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />  
+            </dependentAssembly>  
+            <dependentAssembly>  
+                 <assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />  
+            </dependentAssembly>  
+            <dependentAssembly>  
+                 <assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />  
+            </dependentAssembly>  
+            <dependentAssembly>  
+                 <assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />  
+            </dependentAssembly>  
+            <dependentAssembly>  
+                 <assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />  
+            </dependentAssembly>  
+            <dependentAssembly>  
+                 <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />  
+            </dependentAssembly>  
+            <dependentAssembly>  
+                 <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />  
+            </dependentAssembly>  
+            <dependentAssembly>  
+                 <assemblyIdentity name="Microsoft.Extensions.Logging" publicKeyToken="adb9793829ddae60" culture="neutral" />  
+                 <bindingRedirect oldVersion="0.0.0.0-3.1.2.0" newVersion="3.1.2.0" />  
+            </dependentAssembly>  
+       </assemblyBinding>  
   </runtime>
 </configuration>

+ 7 - 1
EVCB_OCPP.TaskScheduler/EVCB_OCPP.TaskScheduler.csproj

@@ -35,6 +35,12 @@
     <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Common.Logging, Version=3.4.1.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
+      <HintPath>..\packages\Common.Logging.3.4.1\lib\net40\Common.Logging.dll</HintPath>
+    </Reference>
+    <Reference Include="Common.Logging.Core, Version=3.4.1.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL">
+      <HintPath>..\packages\Common.Logging.Core.3.4.1\lib\net40\Common.Logging.Core.dll</HintPath>
+    </Reference>
     <Reference Include="Dapper, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <HintPath>..\packages\Dapper.2.0.30\lib\net461\Dapper.dll</HintPath>
     </Reference>
@@ -75,7 +81,7 @@
       <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
-      <HintPath>..\packages\NLog.4.6.6\lib\net45\NLog.dll</HintPath>
+      <HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
     </Reference>
     <Reference Include="Quartz, Version=3.0.7.0, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4, processorArchitecture=MSIL">
       <HintPath>..\packages\Quartz.3.0.7\lib\net452\Quartz.dll</HintPath>

+ 52 - 234
EVCB_OCPP.TaskScheduler/Jobs/CheckEVSEOnlineJob.cs

@@ -27,14 +27,9 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
 
         public CheckEVSEOnlineJob()
         {
-            CreateEVSEOnlineRecordTable();
+           
         }
-        //測試方式
-
-        // A: 假裝更新心跳包
-        // B: 一直開著程式  / 一段時間關程式(關掉時間點 online/offline)
-
-
+       
         public async Task Execute(IJobExecutionContext context)
         {
             logger.Debug(this.ToString() + " :Starting........");
@@ -49,180 +44,37 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
                     latestHeartbeatTime = evse.HeartbeatUpdatedOn;
                     if (IsOnlineNow(evse))
                     {
-                        if (evse.Online)
-                        {
 
-                            if (latestHeartbeatTime.Minute % 10 == 0)
-                            {
-                                //on-on
-                                //現在是整點,找上一筆填入end time and insert start time 
-
-                                //  var _pickDate = currentTime.AddHours(-1);
-                                var _pickDate = latestHeartbeatTime;
-                                bool isCrossDay = false;
-                                int _startHour = _pickDate.AddHours(-6).Hour; //往回巡視六個小時前紀錄
-
-
-
-                                //跨日處理
-                                if (_startHour > _pickDate.Hour)
-                                {
-                                    isCrossDay = true;
-
-                                }
-
-                                var _picks = await GetOnlineRecords(_pickDate, evse.CustomerId.ToString(), evse.ChargeBoxId, isCrossDay ? 0 : _startHour, _pickDate.Hour);
-
-                                if (isCrossDay)
-                                {
-                                    var _picksCrossData = await GetOnlineRecords(_pickDate.AddHours(-6), evse.CustomerId.ToString(), evse.ChargeBoxId, _startHour, 23);
-                                    _picks.AddRange(_picksCrossData);
-                                }
-
-                                _picks = _picks.OrderBy(x => x.OnlineTime).ToList();
-
-                                bool _isIgnore = true;
-
-                                for (int i = 0; i < _picks.Count; i++)
-                                {
-                                    if (_picks[i].HourIndex != evse.HeartbeatUpdatedOn.Hour && _picks[i].OfflineTime == DefaultSetting.DefaultNullTime)
-                                    {
-                                        _picks[i].OfflineTime = new DateTime(_picks[i].OnlineTime.AddHours(1).Year,
-                                            _picks[i].OnlineTime.AddHours(1).Month, _picks[i].OnlineTime.AddHours(1).Day, _picks[i].OnlineTime.AddHours(1).Hour, 0, 0);
-
-                                        _picks[i].TotalMinute = (int)_picks[i].OfflineTime.Subtract(_picks[i].OnlineTime).TotalMinutes;
-                                        updateData.Add(_picks[i]);
-
-                                        var checkTime = _picks[i].OfflineTime;
-                                        while ((int)latestHeartbeatTime.Subtract(checkTime).TotalHours > 0)
-                                        {
-                                            var _existedCount = _picks.Where(x => x.HourIndex == checkTime.Hour).ToList().Count;
-
-                                            if (_existedCount == 0)
-                                            {
-                                                insertData.Add(new EVSEOnlineRecord()
-                                                {
-                                                    CustomerId = evse.CustomerId,
-                                                    StationId = "0",
-                                                    HourIndex = checkTime.Hour,
-                                                    ChargeBoxId = evse.ChargeBoxId,
-                                                    OnlineTime = new DateTime(checkTime.Year, checkTime.Month, checkTime.Day, checkTime.Hour, 0, 0),
-                                                    OfflineTime = new DateTime(checkTime.AddHours(1).Year, checkTime.AddHours(1).Month, checkTime.AddHours(1).Day, checkTime.AddHours(1).Hour, 0, 0),
-                                                    TotalMinute = 60
-
-                                                });
-                                                checkTime = checkTime.AddHours(1);
-                                            }
-                                        }
-                                    }
-
-                                }
-
-                                _isIgnore = _picks.Where(x => x.HourIndex == latestHeartbeatTime.Hour).ToList().Count == 0 ? false : true;
-
-                                if (!_isIgnore)
-                                {
-                                    insertData.Add(new EVSEOnlineRecord()
-                                    {
-                                        CustomerId = evse.CustomerId,
-                                        StationId = "0",
-                                        HourIndex = evse.HeartbeatUpdatedOn.Hour,
-                                        ChargeBoxId = evse.ChargeBoxId,
-                                        OnlineTime = new DateTime(latestHeartbeatTime.Year,
-                                                latestHeartbeatTime.Month, latestHeartbeatTime.Day, latestHeartbeatTime.Hour, 0, 0),
-                                        OfflineTime = DefaultSetting.DefaultNullTime
-
-                                    });
-                                }
-                            }
+                        if (!evse.Online)
+                        { //off - on 
+                            logger.Debug(evse.ChargeBoxId + " Off-On Started");
 
-                        }
-                        else
-                        {
-                            //off - on 
                             UpdateEVSECurrentStatus(evse.CustomerId.ToString(), evse.ChargeBoxId, true, DefaultSetting.DefaultNullTime);
 
-                            insertData.Add(new EVSEOnlineRecord()
-                            {
-                                CustomerId = evse.CustomerId,
-                                StationId = "0",
-                                HourIndex = evse.HeartbeatUpdatedOn.Hour,
-                                ChargeBoxId = evse.ChargeBoxId,
-                                OnlineTime = evse.HeartbeatUpdatedOn,
-
-                            });
-
+                            await UpdateOnlineRecords(evse.ChargeBoxId, true, evse.HeartbeatUpdatedOn, null);
 
+                            logger.Debug(evse.ChargeBoxId + " Off-On Finished");
                         }
+
                     }
                     else
                     {
 
                         if (evse.Online)
                         {
-
                             //on -off  
-                            UpdateEVSECurrentStatus(evse.CustomerId.ToString(), evse.ChargeBoxId, false, evse.HeartbeatUpdatedOn);
-
-                            var _pickDate = evse.HeartbeatUpdatedOn.Date;
-                            var _picks = await GetOnlineRecords(_pickDate, evse.CustomerId.ToString(), evse.ChargeBoxId, _pickDate.Hour, evse.HeartbeatUpdatedOn.Hour);
-                            _picks = _picks.Where(x => x.OfflineTime == DefaultSetting.DefaultNullTime).ToList();
-
-                            foreach (var item in _picks)
+                            logger.Debug(evse.ChargeBoxId + " On-Off Started");
+                            var online_row =  await GetOnlineRecord(evse.ChargeBoxId);
+                            if(online_row!=null)
                             {
-                                if (evse.HeartbeatUpdatedOn.Hour - item.OnlineTime.Hour > 0)
-                                {
-                                    item.OfflineTime = new DateTime(item.OnlineTime.AddHours(1).Year, item.OnlineTime.AddHours(1).Month, item.OnlineTime.AddHours(1).Day, item.OnlineTime.AddHours(1).Hour, 0, 0);
-                                    item.TotalMinute = (int)item.OfflineTime.Subtract(item.OnlineTime).TotalMinutes;
-                                    updateData.Add(item);
-
-                                    var checkTime = item.OfflineTime;
-                                    while (evse.HeartbeatUpdatedOn.Hour - checkTime.Hour >= 0)
-                                    {
-                                        insertData.Add(new EVSEOnlineRecord()
-                                        {
-                                            CustomerId = evse.CustomerId,
-                                            StationId = "0",
-                                            HourIndex = checkTime.Hour,
-                                            ChargeBoxId = evse.ChargeBoxId,
-                                            OnlineTime = checkTime,
-                                            OfflineTime = evse.HeartbeatUpdatedOn.Hour == checkTime.Hour ? evse.HeartbeatUpdatedOn : new DateTime(checkTime.AddHours(1).Year, checkTime.AddHours(1).Month, checkTime.AddHours(1).Day, checkTime.AddHours(1).Hour, 0, 0)
-
-                                        });
-                                        checkTime = evse.HeartbeatUpdatedOn.Hour == checkTime.Hour ? insertData.LastOrDefault().OfflineTime.AddHours(1) : insertData.LastOrDefault().OfflineTime;
-                                    }
-
-                                }
-                                else
-                                {
-                                    item.OfflineTime = evse.HeartbeatUpdatedOn;
-                                    item.TotalMinute = (int)item.OfflineTime.Subtract(item.OnlineTime).TotalMinutes;
-                                    updateData.Add(item);
-
-                                }
-
-                            }
+                                await UpdateOnlineRecords(evse.ChargeBoxId, false, evse.HeartbeatUpdatedOn, online_row.Id);
+                            }                         
 
+                            logger.Debug(evse.ChargeBoxId + " On-Off Finished");
                         }
-                        else
-                        {
-                            //off-off do nothing
-                        }
-                    }
 
-                    if ((insertData.Count + updateData.Count) % 100 == 0)
-                    {
-                        await UpdateOnlineRecords(updateData, insertData);
-                        ClearCache();
                     }
-
-
                 }
-
-
-                await UpdateOnlineRecords(updateData, insertData);
-
-
             }
             catch (Exception ex)
             {
@@ -290,94 +142,74 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
         }
 
 
-        async private Task UpdateOnlineRecords(List<EVSEOnlineRecord> updateItems, List<EVSEOnlineRecord> insertItems)
+        async private Task UpdateOnlineRecords(string chargeBoxId, bool online, DateTime hearbeatDt, Int64? rowId)
         {
-            List<EVSEOnlineRecord> records = new List<EVSEOnlineRecord>();
             try
             {
-                for (int i = 0; i < updateItems.Count; i++)
+                if (online)
                 {
-                    string sqlString = string.Format("UPDATE [dbo].[EVSEOnlineRecord_{0}] SET OfflineTime=@OfflineTime , TotalMinute=@TotalMinute  WHERE customerId=@customerId and chargeBoxId=@chargeBoxId and " +
-                       "OnlineTime=@OnlineTime", updateItems[i].OnlineTime.Date.ToString("yyMMdd"));
+                    string sqlString = "INSERT INTO [dbo].[EVSEOnlineRecord] (\"ChargeBoxId\",\"OnlineTime\",\"OfflineTime\")" +
+                       "VALUES( @ChargeBoxId,@OnlineTime,@OfflineTime); ";
                     using (var dbConn = new SqlConnection(onlineDBConnectString))
                     {
                         dbConn.Open();
-                        await dbConn.ExecuteAsync(sqlString, updateItems[i]);
-                    }
+                        var parameters = new DynamicParameters();
+                        parameters.Add("@ChargeBoxId", chargeBoxId, System.Data.DbType.String);
+                        parameters.Add("@OnlineTime", hearbeatDt, System.Data.DbType.DateTime);
+                        parameters.Add("@OfflineTime", DefaultSetting.DefaultNullTime, System.Data.DbType.DateTime);
 
+                        await dbConn.ExecuteAsync(sqlString, parameters);
+                    }
                 }
-
-                for (int i = 0; i < insertItems.Count; i++)
+                else
                 {
-                    string sqlString = string.Format("INSERT INTO [dbo].[EVSEOnlineRecord_{0}] (\"CustomerId\",\"StationId\",\"ChargeBoxId\",\"HourIndex\",\"TotalMinute\",\"OnlineTime\",\"OfflineTime\")" +
-                    "VALUES(@CustomerId,@StationId, @ChargeBoxId,@HourIndex,@TotalMinute,@OnlineTime,@OfflineTime); ", insertItems[i].OnlineTime.Date.ToString("yyMMdd"));
-                    using (var dbConn = new SqlConnection(onlineDBConnectString))
+                    if (rowId.HasValue)
                     {
-                        dbConn.Open();
-                        await dbConn.ExecuteAsync(sqlString, insertItems[i]);
+                        string sqlString = "UPDATE [dbo].[EVSEOnlineRecord] SET OfflineTime=@OfflineTime  WHERE Id=@Id";
+                        using (var dbConn = new SqlConnection(onlineDBConnectString))
+                        {
+                            dbConn.Open();
+                            var parameters = new DynamicParameters();
+                            parameters.Add("@OfflineTime", hearbeatDt, System.Data.DbType.DateTime);
+                            parameters.Add("@Id", rowId.Value, System.Data.DbType.Int64);
+
+                            await dbConn.ExecuteAsync(sqlString, parameters);
+                        }
+                    }
+                    else
+                    {
+                        logger.Error("Can't find update row id from " + chargeBoxId);
                     }
 
                 }
             }
             catch (Exception ex)
             {
-                logger.Error("Update Data Error " + ex.ToString());
+                logger.Error(string.Format("UpdateOnlineRecords Exception:{0}", ex.ToString()));
             }
+
+
+
+
         }
 
 
 
-        async private Task<List<EVSEOnlineRecord>> GetOnlineRecords(DateTime pickDate, string customerId, string chargeBoxId, int startHourCondition, int stopHourCondition)
+        async private Task<EVSEOnlineRecord> GetOnlineRecord(string chargeBoxId)
         {
-            List<EVSEOnlineRecord> records = new List<EVSEOnlineRecord>();
+            EVSEOnlineRecord lastrow = new EVSEOnlineRecord();
             try
             {
-                string sqlString = string.Format("SELECT * FROM [dbo].[EVSEOnlineRecord_{0}] WHERE customerId=@customerId and chargeBoxId=@chargeBoxId and " +
-                    "HourIndex >= @startHourCondition and HourIndex <= @stopHourCondition and OfflineTime=@OfflineTime", pickDate.ToString("yyMMdd"));
+                string sqlString = string.Format("SELECT Id FROM [dbo].[EVSEOnlineRecord] WHERE chargeBoxId=@chargeBoxId Order by OnlineTime desc");
                 using (var dbConn = new SqlConnection(onlineDBConnectString))
                 {
                     dbConn.Open();
                     var parameters = new DynamicParameters();
-                    parameters.Add("@customerId", new Guid(customerId), System.Data.DbType.Guid);
                     parameters.Add("@chargeBoxId", chargeBoxId, System.Data.DbType.String);
-                    parameters.Add("@startHourCondition", startHourCondition, System.Data.DbType.Int32);
-                    parameters.Add("@stopHourCondition", stopHourCondition, System.Data.DbType.Int32);
-                    parameters.Add("@OfflineTime", DefaultSetting.DefaultNullTime, System.Data.DbType.Date);
 
-                    var result = await dbConn.QueryAsync<EVSEOnlineRecord>(sqlString, parameters);
-                    records = result.ToList();
-                }
 
-            }
-            catch (Exception ex)
-            {
-                logger.Error("Query Data Error " + ex.ToString());
-            }
-            return records;
-        }
-
-        private void CreateEVSEOnlineRecordTable()
-        {
-            try
-            {
-                string sqlString = string.Format("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME ='EVSEOnlineRecord_{0}'", latestHeartbeatTime.ToString("yyMMdd"));
-                using (var dbConn = new SqlConnection(onlineDBConnectString))
-                {
-                    bool exists = dbConn.ExecuteScalar<bool>(sqlString);
-                    if (!exists)
-                    {
-                        dbConn.Execute(string.Format(@"
-                            CREATE TABLE [dbo].[EVSEOnlineRecord_{0}] (
-                            [CustomerId] [UNIQUEIDENTIFIER] NOT NULL,
-	                        [StationId] [nvarchar](36) NOT NULL,
-	                        [ChargeBoxId] [nvarchar](36) NOT NULL,
-	                        [HourIndex] [int] NOT NULL,
-	                        [TotalMinute] [int] NOT NULL,
-	                        [OnlineTime] [datetime] NOT NULL,
-	                        [OfflineTime] [datetime] NOT NULL
-                        ) ON [PRIMARY]
-                            ", latestHeartbeatTime.ToString("yyMMdd")));
-                    }
+                    var result = await dbConn.QueryAsync<EVSEOnlineRecord>(sqlString, parameters);
+                    lastrow = result.FirstOrDefault();
                 }
 
             }
@@ -385,22 +217,8 @@ namespace EVCB_OCPP.TaskScheduler.Jobs
             {
                 logger.Error("Query Data Error " + ex.ToString());
             }
-        }
-
-
-        private void ClearCache()
-        {
-            if (updateData != null)
-            {
-                updateData.Clear();
-            }
-
-            if (insertData != null)
-            {
-                insertData.Clear();
-            }
-        }
-
+            return lastrow;
+        }     
 
 
         private bool IsOnlineNow(EVSECurrentStatus currentEVSE)

+ 5 - 9
EVCB_OCPP.TaskScheduler/Models/EVSEOnlineRecord.cs

@@ -12,19 +12,15 @@ namespace EVCB_OCPP.TaskScheduler.Models
 
         public EVSEOnlineRecord()
         {
-            TotalMinute = 0;
+         
             OfflineTime= new DateTime(1991, 1, 1);
-            StationId = "0";
+            OnlineTime = new DateTime(1991, 1, 1);
         }
-        public Guid CustomerId { set; get; }
 
-        public string StationId { set; get; }
+        public Int64 Id { set; get; }
+        public Guid CustomerId { set; get; }       
 
-        public string ChargeBoxId { set; get; }
-
-        public int HourIndex { set; get; }
-
-        public int TotalMinute { set; get; }
+        public string ChargeBoxId { set; get; }       
 
         public DateTime OnlineTime { set; get; }
 

+ 1 - 6
EVCB_OCPP.TaskScheduler/Program.cs

@@ -19,14 +19,9 @@ namespace EVCB_OCPP.TaskScheduler
         {
             try
             {
-
-
-                logger.Info("running....");
-                DatabaseService service = new DatabaseService();
-                service.GetCallParterAPICustomers();
+                logger.Info("running....");            
 
                 DoHardWork().GetAwaiter().GetResult();
-
               
             }
             catch (Exception ex)

+ 1 - 1
EVCB_OCPP.TaskScheduler/Properties/AssemblyInfo.cs

@@ -34,4 +34,4 @@ using System.Runtime.InteropServices;
 // [assembly: AssemblyVersion("0.1.0.0")]
 [assembly: AssemblyVersion("0.1.0.0")]
 [assembly: AssemblyFileVersion("0.1.0.0")]
-[assembly: AssemblyInformationalVersion("0ca3611")]
+[assembly: AssemblyInformationalVersion("88e62c5")]

+ 4 - 1
EVCB_OCPP.TaskScheduler/packages.config

@@ -1,7 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
+  <package id="Common.Logging" version="3.4.1" targetFramework="net471" />
+  <package id="Common.Logging.Core" version="3.4.1" targetFramework="net471" />
   <package id="Dapper" version="2.0.30" targetFramework="net471" />
   <package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.0" targetFramework="net471" />
+  <package id="Microsoft.CSharp" version="4.0.1" targetFramework="net471" />
   <package id="Microsoft.Extensions.Configuration" version="3.1.2" targetFramework="net471" />
   <package id="Microsoft.Extensions.Configuration.Abstractions" version="3.1.2" targetFramework="net471" />
   <package id="Microsoft.Extensions.Configuration.Binder" version="3.1.2" targetFramework="net471" />
@@ -13,7 +16,7 @@
   <package id="Microsoft.Extensions.Options" version="3.1.2" targetFramework="net471" />
   <package id="Microsoft.Extensions.Primitives" version="3.1.2" targetFramework="net471" />
   <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net471" />
-  <package id="NLog" version="4.6.6" targetFramework="net471" />
+  <package id="NLog" version="4.7.10" targetFramework="net471" />
   <package id="NLog.Config" version="4.6.6" targetFramework="net471" />
   <package id="NLog.Schema" version="4.6.6" targetFramework="net471" />
   <package id="Quartz" version="3.0.7" targetFramework="net471" />