SqlClientHelper.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Edge.Core.IndustryStandardInterface.Pump;
  2. using Microsoft.Data.SqlClient;
  3. using Microsoft.Extensions.Logging;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. namespace EagleStar_Pump
  8. {
  9. internal class SqlClientHelper
  10. {
  11. public static List<FdcTransaction> ReadTransactionData(PumpGroupConfiguration appConfig, ILogger logger, ref int fid)
  12. {
  13. string queryString = "select top 1 FID, FFuelTradeID, FFipID, FNozzleID, FPrice, FDueAmount, FDueVolume, FTotalAmount" +
  14. $", FTotalVolume, FTradeTime from TFuelTradeRecord where FNozzleID>0 and FID>{fid}";
  15. var dataList = new List<FdcTransaction>();
  16. try
  17. {
  18. using (var connection = new SqlConnection(appConfig.DatabaseConnectionString))
  19. {
  20. if (connection.State != ConnectionState.Open)
  21. connection.Open();
  22. using (var command = new SqlCommand(queryString, connection))
  23. {
  24. using (var reader = command.ExecuteReader())
  25. {
  26. while (reader.Read())
  27. {
  28. var nz = new LogicalNozzle(int.Parse(reader["FFipID"].ToString()), 0, byte.Parse(reader["FNozzleID"].ToString()), null);
  29. var trx = new FdcTransaction()
  30. {
  31. SequenceNumberGeneratedOnPhysicalPump = int.Parse(reader["FFuelTradeID"].ToString()),
  32. Nozzle = nz,
  33. Price = (int)(decimal.Parse(reader["FPrice"].ToString()) * (decimal)Math.Pow(10, appConfig.PriceDecimalDigits)),
  34. Amount = (int)(decimal.Parse(reader["FDueAmount"].ToString()) * (decimal)Math.Pow(10, appConfig.AmountDecimalDigits)),
  35. Volumn = (int)(decimal.Parse(reader["FDueVolume"].ToString()) * (decimal)Math.Pow(10, appConfig.VolumeDecimalDigits)),
  36. AmountTotalizer = (int)(decimal.Parse(reader["FTotalAmount"].ToString()) * (decimal)Math.Pow(10, appConfig.AmountDecimalDigits)),
  37. VolumeTotalizer = (int)(decimal.Parse(reader["FTotalVolume"].ToString()) * (decimal)Math.Pow(10, appConfig.VolumeTotalizerDecimalDigits)),
  38. SaleEndTime = DateTime.Parse(reader["FTradeTime"].ToString()),
  39. Finished = true
  40. };
  41. dataList.Add(trx);
  42. int flag = int.Parse(reader["FID"].ToString());
  43. if (flag > fid)
  44. fid = flag;
  45. logger.LogTrace($"FID {fid}, SequenceNumber {trx.SequenceNumberGeneratedOnPhysicalPump}, PumpId {trx.Nozzle.PumpId}, LogicalId {trx.Nozzle.LogicalId}" +
  46. $", Price {trx.Price}, Amount {trx.Amount}, Volumn {trx.Volumn}, AmountTotalizer {trx.AmountTotalizer}, VolumeTotalizer {trx.VolumeTotalizer}" +
  47. $", SaleEndTime {trx.SaleEndTime}");
  48. }
  49. }
  50. }
  51. }
  52. }
  53. catch (Exception ex)
  54. {
  55. logger.LogError($"ReadTransactionData error, exception detail: {ex}");
  56. }
  57. return dataList;
  58. }
  59. }
  60. }