WebDbService.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using Dapper;
  2. using EVCB_OCPP.Domain.ConnectionFactory;
  3. using EVCB_OCPP.WSServer.Dto;
  4. using EVCB_OCPP.WSServer.Helper;
  5. using EVCB_OCPP.WSServer.Service.WsService;
  6. using Microsoft.Data.SqlClient;
  7. using Microsoft.Extensions.Configuration;
  8. using Microsoft.Extensions.Logging;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Data;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace EVCB_OCPP.WSServer.Service.DbService;
  16. public class WebDbService
  17. {
  18. private readonly ISqlConnectionFactory<WebDBConetext> webDbConnectionFactory;
  19. private readonly ILogger<WebDbService> logger;
  20. public WebDbService(ISqlConnectionFactory<WebDBConetext> webDbConnectionFactory, ILogger<WebDbService> logger)
  21. {
  22. this.webDbConnectionFactory = webDbConnectionFactory;
  23. this.logger = logger;
  24. //this.webConnectionString = configuration.GetConnectionString("WebDBContext");
  25. }
  26. //private readonly string webConnectionString;
  27. public async Task<List<string>> GetDenyModelNames(CancellationToken token = default)
  28. {
  29. using SqlConnection conn = await webDbConnectionFactory.CreateAsync();
  30. string strSql = """
  31. SELECT [Value]
  32. FROM [dbo].[KernelConfig]
  33. where SystemKey = 'DenyModelNames';
  34. """;
  35. var result = await conn.QueryFirstOrDefaultAsync<string>(
  36. new CommandDefinition(strSql, cancellationToken: token)
  37. );
  38. return result.Split(',').ToList();
  39. }
  40. async public Task<string> SetDefaultFee(WsClientData client)
  41. {
  42. string displayPriceText = string.Empty;
  43. string charingPriceText = string.Empty;
  44. if (string.IsNullOrEmpty(client.ChargeBoxId)) return displayPriceText;
  45. try
  46. {
  47. using (SqlConnection conn = await webDbConnectionFactory.CreateAsync())
  48. {
  49. var parameters = new DynamicParameters();
  50. parameters.Add("@MachineId", client.MachineId, DbType.String, ParameterDirection.Input, 36);
  51. string displayPricestrSql = "";
  52. string strSql = "";
  53. if (client.IsAC)
  54. {
  55. displayPricestrSql = """
  56. SELECT [AC_BillingMethod] as BillingMethod,[AC_FeeName] as FeeName,[AC_Fee] as ChargingFeebyHour ,[AC_ParkingFee] as ParkingFee, [Currency]
  57. FROM[StationMachine] left join[dbo].[Station]
  58. on[StationMachine].StationId = Station.[Id]
  59. where StationMachine.MachineId=@MachineId and Station.IsBilling=1;
  60. """;
  61. strSql = """
  62. SELECT CAST( [StartTime] as varchar(5)) StartTime,CAST( [EndTime] as varchar(5)) EndTime,[Fee]
  63. FROM[StationMachine] left join [dbo].[StationFee]
  64. on[StationMachine].StationId = StationFee.StationId
  65. where StationMachine.MachineId =@MachineId and StationFee.IsAC=1;
  66. """;
  67. }
  68. else
  69. {
  70. displayPricestrSql = """
  71. SELECT [DC_BillingMethod] as BillingMethod,[DC_FeeName] as FeeName,[DC_Fee] as ChargingFeebyHour ,[DC_ParkingFee] as ParkingFee, [Currency]
  72. FROM[StationMachine] left join[dbo].[Station]
  73. on[StationMachine].StationId = Station.[Id]
  74. where StationMachine.MachineId=@MachineId and Station.IsBilling=1;
  75. """;
  76. strSql = """
  77. SELECT CAST( [StartTime] as varchar(5)) StartTime,CAST( [EndTime] as varchar(5)) EndTime,[Fee]
  78. FROM[StationMachine] left join [dbo].[StationFee]
  79. on[StationMachine].StationId = StationFee.StationId
  80. where StationMachine.MachineId =@MachineId and StationFee.IsAC=0;
  81. """;
  82. }
  83. var result = await conn.QueryAsync<StationFee>(displayPricestrSql, parameters);
  84. if (result.Count() == 0)
  85. {
  86. return string.Empty;
  87. }
  88. var stationPrice = result.First();
  89. if (stationPrice.BillingMethod == 1)
  90. {
  91. var chargingPriceResult = await conn.QueryAsync<ChargingPrice>(strSql, parameters);
  92. client.ChargingPrices = chargingPriceResult.ToList();
  93. if (string.IsNullOrEmpty(client.ChargingPrices[0].StartTime))
  94. {
  95. client.ChargingPrices = new List<ChargingPrice>();
  96. }
  97. }
  98. displayPriceText = stationPrice.FeeName;
  99. client.BillingMethod = stationPrice.BillingMethod;
  100. client.Currency = stationPrice.Currency;
  101. client.ChargingFeebyHour = stationPrice.ChargingFeebyHour;
  102. client.ParkingFee = stationPrice.ParkingFee;
  103. client.IsBilling = true;
  104. }
  105. }
  106. catch (Exception ex)
  107. {
  108. logger.LogError("SetDefaultFee", ex.ToString());
  109. }
  110. return displayPriceText;
  111. }
  112. internal async Task<List<KeyValuePair<string, string>>> GetCustomerStationEvseConfig(string chargeBoxId)
  113. {
  114. string getStationStrSql = """
  115. SELECT [StationId]
  116. FROM [dbo].[StationMachine]
  117. where [ChargeBoxId] = @ChargeBoxId;
  118. """;
  119. string getConfigStrSql = """
  120. SELECT [ConfigureName],[ConfigureSetting]
  121. FROM [dbo].[StationMachineConfig]
  122. where [StationId] = @StationId;
  123. """;
  124. using SqlConnection conn = await webDbConnectionFactory.CreateAsync();
  125. DynamicParameters parameters = new DynamicParameters();
  126. parameters.Add("@ChargeBoxId", chargeBoxId, DbType.String, ParameterDirection.Input, 25);
  127. int stationId = await conn.QueryFirstOrDefaultAsync<int>(getStationStrSql, parameters);
  128. if (stationId == default)
  129. {
  130. return null;
  131. }
  132. parameters = new DynamicParameters();
  133. parameters.Add("@StationId", stationId, DbType.Int32, ParameterDirection.Input);
  134. var configs = await conn.QueryAsync<StationMachineConfig>(getConfigStrSql, parameters);
  135. return configs.Select(x => new KeyValuePair<string, string>(x.ConfigureName, x.ConfigureSetting)).ToList();
  136. }
  137. }