Browse Source

1. add StartSOC and StopSOC
2. add NLog missing code

Robert 1 year ago
parent
commit
90c7ad1d42

+ 1 - 1
EVCB_OCPP.WEBAPI/Controllers/FileController.cs

@@ -139,7 +139,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers
         }
 
         [HttpGet("{FileName}")]
-        public IActionResult GetFile([FromRoute] string FileName)
+        public IActionResult GetFile([FromRoute]string FileName)
         {
             try
             {

+ 12 - 12
EVCB_OCPP.WEBAPI/Controllers/Version1/CPOController.cs

@@ -16,7 +16,6 @@ using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using System.Diagnostics;
-using EVCB_OCPP.Domain.Models.Database;
 using Azure.Core;
 
 namespace EVCB_OCPP.WEBAPI.Controllers.Version1
@@ -28,7 +27,10 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
     [Route("api/v1/cpo")]
     public class CPOController : ControllerBase
     {
-        public CPOController(IServiceProvider serviceProvider, IConfiguration configuration, ILogger<CPOController> logger)
+        public CPOController(
+            IServiceProvider serviceProvider, 
+            IConfiguration configuration, 
+            ILogger<CPOController> logger)
         {
             this.serviceProvider = serviceProvider;
             this.logger = logger;
@@ -83,10 +85,10 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
             [FromServices] ChargePointService _CPService,
             [FromServices] ChargingStationService _stationService,
             int? Limit = -1,
-            int StationId = -1,
+            int StationId = -1, 
             string ChargeBoxId = "",
-            DateTime? DateFrom = null,
-            DateTime? DateTo = null,
+            DateTime? DateFrom = null, 
+            DateTime? DateTo = null, 
             int? Offset = 0)
         {
 
@@ -130,12 +132,10 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
 
                     }
                 }
-                else
+                else 
                 {
                     _innerResponse = new { EVSEs = new List<EVSE>() };
                     _innerResponse.EVSEs.Add(await _CPService.GetEVSEsbyChargeBoxId(_customerId, ChargeBoxId, DateFrom, DateTo));
-
-
                 }
 
                 result.Data = JsonConvert.SerializeObject(_innerResponse, EVCBConfiguration.JSONSERIALIZER_FORMAT);
@@ -1276,7 +1276,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
         [Route("completedsession")]
         [Produces(typeof(CPOOuterResponse))]
         [HttpGet]
-        public IActionResult CompletedSession(string ChargeBoxId, int SessionId = -1, string IdTag = "", string StartTime = "", string StopTime = "")
+        public async Task<IActionResult> CompletedSession(string ChargeBoxId, int SessionId = -1, string IdTag = "", string StartTime = "", string StopTime = "")
         {
             var result = new CPOOuterResponse();
             //HttpStatusCode statusCode = HttpStatusCode.InternalServerError;
@@ -1284,9 +1284,9 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
 
             try
             {
-                string _CustomerId = string.Empty;
+                string _CustomerId = GetCustomerId();
 
-                if (!ContainsChargePoint(ChargeBoxId, out _CustomerId))
+                if (!await ContainsChargePointAsync(ChargeBoxId, _CustomerId))
                 {
                     // 沒槍~ 沒得充...                   
                     result.StatusMessage = CPO_StatusMessage.ERROR_MSG_CHARGEBOXID_DOESNT_EXIST;
@@ -1301,7 +1301,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                 DateTime stopDt = string.IsNullOrEmpty(StopTime) ? new DateTime(1991, 1, 1) : DateTime.Parse(StopTime);
                 // query meter value
                 ChargePointService _service = serviceProvider.GetRequiredService<ChargePointService>();
-                var _innerData = _service.GetSessionDetail(ChargeBoxId, SessionId, IdTag, startDt, stopDt);
+                var _innerData = await _service.GetSessionDetailAsync(ChargeBoxId, SessionId, IdTag, startDt, stopDt);
 
                 if (_innerData == null)
                 {

+ 9 - 0
EVCB_OCPP.WEBAPI/Models/SessionDetail.cs

@@ -51,5 +51,14 @@ namespace EVCB_OCPP.WEBAPI.Models
         public decimal TotalCost { set; get; }
 
         public string Currency { set; get; }
+
+        /// <summary>
+        /// Option Value
+        /// </summary>
+        public int StartSOC { get; set; }
+        /// <summary>
+        /// Option Value
+        /// </summary>
+        public int StopSOC { get; set; }
     }
 }

+ 2 - 0
EVCB_OCPP.WEBAPI/Models/TransactionRecordModel.cs

@@ -76,7 +76,9 @@ namespace EVCB_OCPP.WEBAPI.Models
 
         public string Fee { set; get; }
 
+        public string StartSOC { set; get; }
 
+        public string StopSOC { get; set; }
 
 
        

+ 2 - 0
EVCB_OCPP.WEBAPI/Program.cs

@@ -21,7 +21,9 @@ namespace EVCB_OCPP.WEBAPI
         public static IHostBuilder CreateHostBuilder(string[] args) =>
             Host.CreateDefaultBuilder(args)
                 .ConfigureLogging((context, logging) => {
+                    logging.ClearProviders();
                     NLog.LogManager.Configuration = new NLogLoggingConfiguration(context.Configuration.GetSection("NLog"));
+                    logging.AddNLog();
                 })
                 .ConfigureWebHostDefaults(webBuilder =>
                 {

+ 13 - 5
EVCB_OCPP.WEBAPI/Services/ChargePointService.cs

@@ -639,6 +639,11 @@ namespace EVCB_OCPP.WEBAPI.Services
 
 
         public List<SessionDetail> GetSessionDetail(string chargeBoxId, int sessionId, string idTag, DateTime startTime, DateTime stopTime)
+        {
+            return GetSessionDetailAsync(chargeBoxId, sessionId, idTag, startTime, stopTime).Result;
+        }
+
+        public async  Task<List<SessionDetail>> GetSessionDetailAsync(string chargeBoxId, int sessionId, string idTag, DateTime startTime, DateTime stopTime)
         {
             List<SessionDetail> detail = new List<SessionDetail>();
             List<TransactionRecordModel> transactionModel = null;
@@ -658,7 +663,7 @@ namespace EVCB_OCPP.WEBAPI.Services
                     parameters.Add("@stopTime", stopTime, DbType.DateTime, ParameterDirection.Input);
                 }
 
-                using (SqlConnection conn = mainDbConneciotnFactory.Create())
+                using (SqlConnection conn = await mainDbConneciotnFactory.CreateAsync())
                 {
                     string strSql = string.Empty;
                     if (sessionId >= 0 && string.IsNullOrEmpty(idTag))
@@ -687,8 +692,8 @@ namespace EVCB_OCPP.WEBAPI.Services
 
                     }
 
-                    transactionModel = conn.Query<TransactionRecordModel>(strSql, parameters, null, true, EVCBConfiguration.DB_DefaultConnectionTimeout).ToList();
-
+                    var queryResult = await conn.QueryAsync<TransactionRecordModel>(strSql, parameters, commandTimeout: EVCBConfiguration.DB_DefaultConnectionTimeout);
+                    transactionModel = queryResult.ToList();
 
                 }
 
@@ -704,7 +709,9 @@ namespace EVCB_OCPP.WEBAPI.Services
                         MeterStop = item.MeterStop,
                         StartTime = item.StartTime.ToString(EVCBConfiguration.UTC_DATETIMEFORMAT),
                         StopTime = item.StopTime.ToString(EVCBConfiguration.UTC_DATETIMEFORMAT),
-                        StopReason = item.StopReasonId < 1 ? Reason.Local.ToString() : ((Reason)item.StopReasonId).ToString()
+                        StopReason = item.StopReasonId < 1 ? Reason.Local.ToString() : ((Reason)item.StopReasonId).ToString(),
+                        StartSOC = int.TryParse(item.StartSOC, out var StartSOCint) ? StartSOCint : 0,
+                        StopSOC = int.TryParse(item.StopSOC, out var StopSOCint) ? StopSOCint : 0
                     });
 
                 }
@@ -712,7 +719,8 @@ namespace EVCB_OCPP.WEBAPI.Services
             }
             catch (Exception ex)
             {
-
+                logger.LogError(ex.Message);
+                logger.LogError(ex.StackTrace);
             }
 
 

+ 2 - 63
EVCB_OCPP.WEBAPI/Services/ChargingStationService.cs

@@ -249,27 +249,11 @@ namespace EVCB_OCPP.WEBAPI.Services
                     machine.LastUpdated = _machineUpdateOnPairs[pair.Key];
                     _chargePoints.Add(machine);
 
-                    if (_chargePoints.Count > quota)
+                    if (_chargePoints.Count >= quota)
                         break;
                 }
-                
-                //foreach (var pair in _machineUpdateOnPairs)
-                //{
 
-                //    var _machine = await _CPService.GetBasicInfobyIdAsync(pair.Key);
-
-                //    if (_machine != null)
-                //    {
-                //        _machine.LastUpdated = pair.Value;
-                //        //_machine.StationId = stationId;
-                //        _chargePoints.Add(_machine);
-                //    }
-
-                //    if (_chargePoints.Count > quota)
-                //        break;
-                //}
-
-                if (_chargePoints.Count > quota)
+                if (_chargePoints.Count >= quota)
                     break;
             }
 
@@ -280,51 +264,6 @@ namespace EVCB_OCPP.WEBAPI.Services
             }
 
             return _chargePoints;
-
-            while (startIndex < limit && startIndex < machineIds.Count)
-            {
-                DateTime _machineUpdateOn = await _CPService.GetLastUpdatedTimebyMachineIdAsync(machineIds[startIndex]);
-                //time.Add(watch.ElapsedMilliseconds);
-
-                if (dateFrom.HasValue && _machineUpdateOn < dateFrom.Value.ToUniversalTime())
-                {
-                    limit++;
-                    startIndex++;
-                    continue;
-                }
-
-                if (dateFrom.HasValue && dateTo.HasValue && (_machineUpdateOn < dateFrom.Value.ToUniversalTime() || _machineUpdateOn > dateTo.Value.ToUniversalTime()))
-                {
-                    limit++;
-                    startIndex++;
-                    continue;
-                }
-
-                var _machine = await _CPService.GetBasicInfobyIdAsync(machineIds[startIndex]);
-                //time.Add(watch.ElapsedMilliseconds);
-
-                if (_machine != null)
-                {
-                    _machine.LastUpdated = _machineUpdateOn;
-                    //_machine.StationId = stationId;
-                    _chargePoints.Add(_machine);
-                }
-                else
-                {
-                    limit++;
-                }
-
-                startIndex++;
-
-            }
-
-            watch.Stop();
-            if (watch.ElapsedMilliseconds > 1000)
-            {
-                logger.LogWarning($"GetEVSEsBytEVSEs {watch.ElapsedMilliseconds}");
-            }
-
-            return _chargePoints;
         }
 
         public async Task<Dictionary<int, List<string>>> GetStationMachinePairAsync(IEnumerable<int> stationIds)