Browse Source

对接协会接口

Your Name 2 months ago
parent
commit
67f74bd6f4
54 changed files with 3588 additions and 154 deletions
  1. 72 5
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Handlers/HttpHelper.cs
  2. 193 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Utility/HMAC_SM3.cs
  3. 23 2
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/AlarmHistoryEntity.cs
  4. 78 2
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/BlackBoxEntity.cs
  5. 116 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/CalculatorMainboardEntity.cs
  6. 124 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/DisplayControlEntity.cs
  7. 0 3
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/AlarmRootobject.cs
  8. 108 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/DispenserDto.cs
  9. 26 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/FuelDispenserDto.cs
  10. 0 4
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/LifecycleContentDto.cs
  11. 321 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/NozzleDetails.cs
  12. 20 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/ObjectData.cs
  13. 16 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/Pageable.cs
  14. 1 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/Rootobject.cs
  15. 15 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/Sort.cs
  16. 54 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/StationDto.cs
  17. 1 36
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/StationRootobject.cs
  18. 0 7
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/SupplierDto.cs
  19. 40 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/supervision.cs
  20. 73 10
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/EncoderControlsEntity.cs
  21. 21 1
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/FuelDispenserEntity.cs
  22. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IBlackBoxRepository.cs
  23. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ICalculatorMainboardRepository.cs
  24. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ICompanyRepository.cs
  25. 14 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IDisplayControlRepository.cs
  26. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IEncoderControlsRepository.cs
  27. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IMaintenanceRepository.cs
  28. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IMeterRepository.cs
  29. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ISupplierRepository.cs
  30. 14 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ITaxControlRepository.cs
  31. 14 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IValveControlRepository.cs
  32. 14 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IVaporRecoveryControlRepository.cs
  33. 61 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/MaintenanceEntity.cs
  34. 92 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/MeterEntity.cs
  35. 26 10
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/NozzlecontrolEntity.cs
  36. 29 1
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/StationEntity.cs
  37. 1 1
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/SupplierEntity.cs
  38. 66 6
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/TaxControlEntity.cs
  39. 111 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ValveControlEntity.cs
  40. 133 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/VaporRecoveryControlEntity.cs
  41. 1 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.csproj
  42. 721 55
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.xml
  43. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/BlackBoxRepository.cs
  44. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/CalculatorMainboardRepository.cs
  45. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/CompanyRepository.cs
  46. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/DisplayControlRepository.cs
  47. 20 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/EncoderControlsRepository.cs
  48. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/MaintenanceRepository.cs
  49. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/MeterRepository.cs
  50. 20 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/SupplierRepository.cs
  51. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/TaxControlRepository.cs
  52. 20 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/ValveControlRepository.cs
  53. 20 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/VaporRecoveryControlRepository.cs
  54. 685 11
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Association/AssociationService.cs

+ 72 - 5
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Handlers/HttpHelper.cs

@@ -19,22 +19,88 @@ namespace IMES_Middleware_Platform.Api.Core.Handlers
         public HttpHelper()
         {
             _httpClient = new HttpClient();
+            // 配置超时(HttpClient 默认 100s,此处设为 10 分钟)
+            _httpClient.Timeout = TimeSpan.FromMinutes(10);
         }
 
-        public async Task<string> GetAsync(string url)
+        public async Task<string> GetAsync(string url, string nonce, string timestamp, string signature)
         {
             try
             {
-                HttpResponseMessage response = await _httpClient.GetAsync(url);
-                response.EnsureSuccessStatusCode();
-                string responseBody = await response.Content.ReadAsStringAsync();
-                return responseBody;
+
+
+                // 设置 UserAgent
+               // _httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Apifox/1.0.0 (https://apifox.com)");
+
+                // 请求 URL(含查询参数)
+                var requestUrl = "https://cma-fds.org.cn/api/open/v1/station/list?page=0&size=20";
+
+                // 创建请求对象
+                var request = new HttpRequestMessage(HttpMethod.Get, url);
+
+                // 添加自定义请求头
+                request.Headers.Add("sign_method", "HMAC-SM3");
+                request.Headers.Add("secret_id", "AwTHQMpzVvsCe7qx");
+                request.Headers.Add("nonce", nonce);
+                request.Headers.Add("timestamp", timestamp);
+                request.Headers.Add("signature", signature);
+
+                try
+                {
+                    // 发送请求
+                    var response = await _httpClient.SendAsync(request);
+
+                    // 确保响应成功
+                    response.EnsureSuccessStatusCode();
+
+                    // 读取响应内容
+                    var content = await response.Content.ReadAsStringAsync();
+                    return content;
+                }
+                catch (HttpRequestException ex)
+                {
+                    Console.WriteLine($"HTTP 请求失败: {ex.Message}");
+                }
+                catch (TaskCanceledException ex)
+                {
+                    Console.WriteLine($"请求超时: {ex.Message}");
+                }
+                return null;
             }
             catch (HttpRequestException e)
             {
                 return null;
             }
         }
+        static async Task<string> GetAsync(string url, System.Collections.Generic.Dictionary<string, string> headers)
+        {
+            try 
+            {
+                using (HttpClient client = new HttpClient())
+                {
+                    // 添加请求头
+                    foreach (var header in headers)
+                    {
+                        client.DefaultRequestHeaders.Add(header.Key, header.Value);
+                    }
+
+                    // 发送 GET 请求
+                    HttpResponseMessage response = await client.GetAsync(url);
+
+                    // 确保请求成功
+                    response.EnsureSuccessStatusCode();
+
+                    // 读取响应内容
+                    string responseData = await response.Content.ReadAsStringAsync();
+                    return responseData;
+                }
+            }
+            catch(HttpRequestException e)
+            {
+                return null;
+            }
+          
+        }
         public async Task<string> GetDispensersDataAsync(string baseUrl, string accessToken, string cookie, string expand1, string expand2, string search = "", int size = 20, int page = 0)
         {
             using (HttpClient httpClient = new HttpClient())
@@ -145,6 +211,7 @@ namespace IMES_Middleware_Platform.Api.Core.Handlers
                 return null;
             }
         }
+
         public async Task<string> GetTaxcontrolsAsync(string baseUrl, string accessToken, int size = 20, int page = 0)
         {
             using (HttpClient httpClient = new HttpClient())

+ 193 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Utility/HMAC_SM3.cs

@@ -0,0 +1,193 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Core.Utility
+{
+    public static class SM3
+    {
+        private static readonly uint[] IV = {
+        0x7380166F, 0x4914B2B9, 0x172442D7, 0xDA8A0600,
+        0xA96F30BC, 0x163138AA, 0xE38DEE4D, 0xB0FB0E4E
+    };
+
+        private static uint[] T = new uint[64];
+        private static uint[] W = new uint[68];
+        private static uint[] W_ = new uint[64];
+
+        static SM3()
+        {
+            for (int i = 0; i < 16; i++)
+            {
+                T[i] = 0x79CC4519;
+            }
+            for (int i = 16; i < 64; i++)
+            {
+                T[i] = 0x7A879D8A;
+            }
+        }
+
+        public static byte[] ComputeHash(byte[] data)
+        {
+            uint[] v = (uint[])IV.Clone();
+            byte[] padded = Pad(data);
+            int blocks = padded.Length / 64;
+
+            for (int i = 0; i < blocks; i++)
+            {
+                byte[] block = new byte[64];
+                Array.Copy(padded, i * 64, block, 0, 64);
+                ProcessBlock(block, ref v);
+            }
+
+            return UInt32ArrayToByteArray(v);
+        }
+
+        private static byte[] Pad(byte[] data)
+        {
+            int len = data.Length;
+            int k = (56 - (len + 1) % 64) % 64;
+            byte[] padded = new byte[len + 1 + k + 8];
+            Array.Copy(data, padded, len);
+            padded[len] = 0x80;
+            ulong bitLength = (ulong)len * 8;
+            byte[] lenBytes = BitConverter.GetBytes(bitLength);
+            if (BitConverter.IsLittleEndian)
+                Array.Reverse(lenBytes);
+            Array.Copy(lenBytes, 0, padded, padded.Length - 8, 8);
+            return padded;
+        }
+
+        private static void ProcessBlock(byte[] block, ref uint[] v)
+        {
+            uint[] w = new uint[68];
+            uint[] w_ = new uint[64];
+            uint a = v[0], b = v[1], c = v[2], d = v[3];
+            uint e = v[4], f = v[5], g = v[6], h = v[7];
+
+            for (int i = 0; i < 16; i++)
+            {
+                w[i] = BytesToUInt32(block, i * 4);
+            }
+            for (int i = 16; i < 68; i++)
+            {
+                w[i] = P1(w[i - 16] ^ w[i - 9] ^ RotateLeft(w[i - 3], 15))
+                     ^ RotateLeft(w[i - 13], 7) ^ w[i - 6];
+            }
+            for (int i = 0; i < 64; i++)
+            {
+                w_[i] = w[i] ^ w[i + 4];
+            }
+
+            for (int i = 0; i < 64; i++)
+            {
+                uint ss1 = RotateLeft(RotateLeft(a, 12) + e + RotateLeft(T[i], i), 7);
+                uint ss2 = ss1 ^ RotateLeft(a, 12);
+                uint tt1 = FF(a, b, c, i) + d + ss2 + w_[i];
+                uint tt2 = GG(e, f, g, i) + h + ss1 + w[i];
+                d = c;
+                c = RotateLeft(b, 9);
+                b = a;
+                a = tt1;
+                h = g;
+                g = RotateLeft(f, 19);
+                f = e;
+                e = P0(tt2);
+            }
+
+            v[0] ^= a;
+            v[1] ^= b;
+            v[2] ^= c;
+            v[3] ^= d;
+            v[4] ^= e;
+            v[5] ^= f;
+            v[6] ^= g;
+            v[7] ^= h;
+        }
+
+        private static uint FF(uint x, uint y, uint z, int j)
+        {
+            return j < 16 ? x ^ y ^ z : (x & y) | (x & z) | (y & z);
+        }
+
+        private static uint GG(uint x, uint y, uint z, int j)
+        {
+            return j < 16 ? x ^ y ^ z : (x & y) | (~x & z);
+        }
+
+        private static uint P0(uint x) => x ^ RotateLeft(x, 9) ^ RotateLeft(x, 17);
+        private static uint P1(uint x) => x ^ RotateLeft(x, 15) ^ RotateLeft(x, 23);
+
+        private static uint RotateLeft(uint x, int n) => (x << n) | (x >> (32 - n));
+
+        private static uint BytesToUInt32(byte[] bytes, int offset)
+        {
+            return (uint)(bytes[offset] << 24 | bytes[offset + 1] << 16
+                         | bytes[offset + 2] << 8 | bytes[offset + 3]);
+        }
+
+        private static byte[] UInt32ArrayToByteArray(uint[] array)
+        {
+            byte[] result = new byte[array.Length * 4];
+            for (int i = 0; i < array.Length; i++)
+            {
+                byte[] bytes = BitConverter.GetBytes(array[i]);
+                if (BitConverter.IsLittleEndian)
+                    Array.Reverse(bytes);
+                Array.Copy(bytes, 0, result, i * 4, 4);
+            }
+            return result;
+        }
+    }
+
+    public static class HMAC_SM3
+    {
+        private const int BlockSize = 64; // SM3的块大小是64字节
+
+        public static byte[] ComputeHash(byte[] key, byte[] message)
+        {
+            // 处理密钥
+            if (key.Length > BlockSize)
+            {
+                key = SM3.ComputeHash(key);
+            }
+            if (key.Length < BlockSize)
+            {
+                byte[] paddedKey = new byte[BlockSize];
+                Array.Copy(key, paddedKey, key.Length);
+                key = paddedKey;
+            }
+
+            byte[] ipad = new byte[BlockSize];
+            byte[] opad = new byte[BlockSize];
+            for (int i = 0; i < BlockSize; i++)
+            {
+                ipad[i] = (byte)(key[i] ^ 0x36);
+                opad[i] = (byte)(key[i] ^ 0x5C);
+            }
+
+            // 计算内部哈希
+            byte[] innerData = new byte[ipad.Length + message.Length];
+            Buffer.BlockCopy(ipad, 0, innerData, 0, ipad.Length);
+            Buffer.BlockCopy(message, 0, innerData, ipad.Length, message.Length);
+            byte[] innerHash = SM3.ComputeHash(innerData);
+
+            // 计算外部哈希
+            byte[] outerData = new byte[opad.Length + innerHash.Length];
+            Buffer.BlockCopy(opad, 0, outerData, 0, opad.Length);
+            Buffer.BlockCopy(innerHash, 0, outerData, opad.Length, innerHash.Length);
+            return SM3.ComputeHash(outerData);
+        }
+
+        public static byte[] ComputeHash(string key, string message, System.Text.Encoding encoding)
+        {
+            return ComputeHash(
+                encoding.GetBytes(key),
+                encoding.GetBytes(message)
+            );
+        }
+
+    }
+}

+ 23 - 2
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/AlarmHistoryEntity.cs

@@ -1,4 +1,5 @@
 using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -22,7 +23,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         
         public DateTime? CreatedDate { get; set; }
         /// <summary>
-        /// 加油站
+        /// 加油站名称
         /// </summary>
         public string GasStation { get; set; }
         /// <summary>
@@ -51,7 +52,15 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// </summary>
         public int AlarmDeviceId { get; set; }
         /// <summary>
-        /// 报警设备
+        /// 报警设备 
+        /// 告警域[dispenser
+        ///blackBox
+        ///valveControl
+        ///taxControl
+        ///displayControl
+        ///encoderControl
+        ///nozzleControl 
+        ///meter]
         /// </summary>
         public string  AlarmDevice { get; set; }
         /// <summary>
@@ -82,5 +91,17 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 报警等级
         /// </summary>
         public int? AlarmLevel { get; set; }
+        /// <summary>
+        ///IOT告警序列号
+        /// </summary>
+        public long GenSeq { get; set; }
+        /// <summary>
+        /// 安全装置ID
+        /// </summary>
+        public int BlackBoxId { get; set; }
+        /// <summary>
+        /// 油枪ID
+        /// </summary>
+        public int NozzleControlID { get; set; }
     }
 }

+ 78 - 2
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/BlackBoxEntity.cs

@@ -9,7 +9,7 @@ using ZhonTai.Admin.Core.Entities;
 namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
 {
     /// <summary>
-    /// 黑盒
+    /// 安全装置
     /// </summary>
     [Table(Name = "BlackBox")]
     public class BlackBoxEntity : EntityAdd
@@ -111,7 +111,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         public DateTime? FixTime { get; set; }
 
         /// <summary>
-        /// 销售时间。
+        /// 出厂时间。
         /// </summary>
         public DateTime? SoldTime { get; set; }
 
@@ -141,5 +141,81 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 离线报警级别。
         /// </summary>
         public int OfflineAlarmLevel { get; set; }
+        /// <summary>
+        /// 软件版本号
+        /// </summary>
+        public string Swv { get; set; }
+        /// <summary>
+        /// 硬件版本号
+        /// </summary>
+        public string hdv { get; set; }
+        /// <summary>
+        /// 告警开始时间。
+        /// </summary>
+        public DateTime? AlarmTime { get; set; }
+        /// <summary>
+        /// sim卡imsi
+        /// </summary>
+        public string Imsi { get; set; }
+        /// <summary>
+        /// sim卡iccid
+        /// </summary>
+        public string Iccid { get; set; }
+        /// <summary>
+        /// 微处理器编号
+        /// </summary>
+        public string CpuUuid { get; set; }
+
+        /// <summary>
+        /// 注册消息更新时间 
+        /// </summary>
+        public DateTime? RegisterUpdateTime { get; set; }
+
+        /// <summary>
+        /// 快照
+        /// </summary>
+        public string SnapshotJson { get; set; }
+
+        /// <summary>
+        /// 扩展属性 
+        /// </summary>
+        public string Xattrs { get; set; }
+        /// <summary>
+        /// 机型配置
+        /// </summary>
+        public string IotType { get; set; }
+        /// <summary>
+        /// 站点id
+        /// </summary>
+        public int? StationID { get; set; }
+        /// <summary>
+        /// 供应商id
+        /// </summary>
+        public int? supplierID { get; set; }
+        /// <summary>
+        /// 出厂加油机厂商ID
+        /// </summary>
+        public int? FactorySupplierID { get; set; }
+
+        /// <summary>
+        /// 启用时间
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+        /// <summary>
+        /// 照片id
+        /// </summary>
+        public long PhotoId { get; set; }
+        /// <summary>
+        /// 错误列表
+        /// </summary>
+        public string Alarms { get; set; }
+        /// <summary>
+        /// 法制软件版本
+        /// </summary>
+        public string LawSwv { get; set; }
+        /// <summary>
+        /// 法制软件标识
+        /// </summary>
+        public string LawSwi { get; set; }
     }
 }

+ 116 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/CalculatorMainboardEntity.cs

@@ -0,0 +1,116 @@
+using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 计控主板
+    /// </summary>
+    [Table(Name = "CalculatorMainboard")]
+    public class CalculatorMainboardEntity : EntityAdd
+    {
+        /// <summary>
+        /// 唯一ID
+        /// </summary>
+        public string Uuid { get; set; }
+        /// <summary>
+        /// 软件版本号
+        /// </summary>
+        public string Swv { get; set; }
+        /// <summary>
+        /// 硬件版本号
+        /// </summary>
+        public string Hdv { get; set; }
+        /// <summary>
+        /// 计量签名
+        /// </summary>
+        public string Signature { get; set; }
+        /// <summary>
+        /// 签名是否正确
+        /// </summary>
+        public bool SignVerify { get; set; }
+        /// <summary>
+        /// 是否未上报的疑似脏数据
+        /// </summary>
+        public bool Dirty { get; set; }
+        /// <summary>
+        /// 机型配置
+        /// </summary>
+        public string IotType { get; set; }
+        /// <summary>
+        /// 计控主板备案程序包
+        /// </summary>
+        public string CalculatorSoftware { get; set; }
+        /// <summary>
+        /// 供应商id
+        /// </summary>
+        public int SupplierID { get; set; }
+        /// <summary>
+        ///安全装置ID
+        /// </summary>
+        public int BlackBoxID { get; set; }
+        /// <summary>
+        /// 站点
+        /// </summary>
+        public int StationID { get; set; }
+        /// <summary>
+        /// 加油机ID
+        /// </summary>
+        public int FuelID { get; set; }
+        /// <summary>
+        /// 监控微处理器ID
+        /// </summary>
+        public int TaxControlID { get; set; }
+        /// <summary>
+        ///  online/offline 状态 
+        /// </summary>
+        public string OnlineStatus { get; set; }
+        /// <summary>
+        /// 设备状态 unregister, register, bind, enable, disable
+        /// </summary>
+        public string DeviceStatus { get; set; }
+        /// <summary>
+        /// 设备端告警等级
+        /// </summary>
+        public int DeviceAlarmLevel { get; set; }
+        /// <summary>
+        /// 生产时间
+        /// </summary>
+        public DateTime? ProductTime { get; set; }
+        /// <summary>
+        /// 出厂时间
+        /// </summary>
+        public DateTime? SoldTime { get; set; }
+        /// <summary>
+        /// 启用时间
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 照片id
+        /// </summary>
+        public long PhotoId { get; set; }
+        /// <summary>
+        /// 安装时间
+        /// </summary>
+        public DateTime? FixTime { get; set; }
+        /// <summary>
+        /// 错误列表
+        /// </summary>
+        public string Alarms { get; set; }
+        /// <summary>
+        /// 法制软件版本
+        /// </summary>
+        public string LawSwv { get; set; }
+        /// <summary>
+        /// 法制软件标识
+        /// </summary>
+        public string LawSwi { get; set; } 
+    }
+}

+ 124 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/DisplayControlEntity.cs

@@ -0,0 +1,124 @@
+using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 显示屏
+    /// </summary>
+    [Table(Name = "DisplayControl")]
+    public class DisplayControlEntity : EntityAdd
+    {
+        /// <summary>
+        /// 显示屏唯一标识符
+        /// <remarks>长度限制:0-32字符</remarks>
+        /// </summary>
+        public string Uuid { get; set; }
+
+        /// <summary>
+        /// 设备原厂序列号
+        /// <remarks>长度限制:0-32字符</remarks>
+        /// </summary>
+        public string Sn { get; set; }
+
+        /// <summary>
+        /// 关联油机供应商ID
+        /// </summary>
+        public long DispenserSupplierId { get; set; }
+
+        /// <summary>
+        /// 标识是否存在未上报的疑似脏数据
+        /// <remarks>true表示存在未上报的脏数据</remarks>
+        /// </summary>
+        public bool Dirty { get; set; }
+
+        /// <summary>
+        /// 安全装置ID
+        /// <seealso cref="BlackBox"/>
+        /// </summary>
+        public int? BlackBoxID { get; set; }
+
+        /// <summary>
+        /// 站点ID
+        /// <seealso cref="Station"/>
+        /// </summary>
+        public int?  StationID { get; set; }
+
+        /// <summary>
+        /// 供应商ID
+        /// <seealso cref="Supplier"/>
+        /// </summary>
+        public int? SupplierID { get; set; }
+
+
+
+        /// <summary>
+        /// 设备在线状态
+        /// <seealso cref="OnlineStatus"/>
+        /// </summary>
+        public string OnlineStatus { get; set; }
+
+        /// <summary>
+        /// 设备注册/绑定状态
+        /// <seealso cref="DeviceStatus"/>
+        /// </summary>
+        public string DeviceStatus { get; set; }
+
+        /// <summary>
+        /// 设备告警等级
+        /// <remarks>1-一般告警,2-严重告警</remarks>
+        /// </summary>
+        public int DeviceAlarmLevel { get; set; }
+
+        /// <summary>
+        /// 设备生产日期
+        /// </summary>
+        public DateTime? ProductTime { get; set; }
+
+        /// <summary>
+        /// 设备出厂日期
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public DateTime? SoldTime { get; set; }
+
+        /// <summary>
+        /// 设备启用日期
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 设备安装日期
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public DateTime? FixTime { get; set; }
+
+        /// <summary>
+        /// 设备照片存储ID
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public long? PhotoId { get; set; }
+
+        /// <summary>
+        /// 设备错误代码集合
+        /// <remarks>初始化默认空集合</remarks>
+        /// </summary>
+        public string Alarms { get; set; } 
+
+        /// <summary>
+        /// 法制软件版本号
+        /// </summary>
+        public string LawSwv { get; set; }
+
+        /// <summary>
+        /// 法制软件标识
+        /// </summary>
+        public string LawSwi { get; set; }
+    }
+}

+ 0 - 3
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/AlarmRootobject.cs

@@ -38,9 +38,6 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
     //{
     //}
 
-    public class Sort1
-    {
-    }
 
     public class AlarmHistoryContent
     {

+ 108 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/DispenserDto.cs

@@ -0,0 +1,108 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+
+    public class DispenserDto
+    {
+        public DispenserData data { get; set; }
+        public string message { get; set; }
+        public string requestId { get; set; }
+        public int status { get; set; }
+    }
+
+    public class DispenserData
+    {
+        public int number { get; set; }
+        public int size { get; set; }
+        public int numberOfElements { get; set; }
+        public int totalPages { get; set; }
+        public Pageable pageable { get; set; }
+        public Sort1 sort { get; set; }
+        public DispenserContent[] content { get; set; }
+        public int totalElements { get; set; }
+    }
+
+
+
+    public class DispenserContent
+    {
+        public string measureRang { get; set; }
+        public bool alarming { get; set; }
+        public int deviceAlarmLevel { get; set; }
+        public string onlineStatus { get; set; }
+        public long productTime { get; set; }
+        public string type { get; set; }
+        public string accuracyLevel { get; set; }
+        public string uuid { get; set; }
+        public string deviceStatus { get; set; }
+        public long lockTime { get; set; }
+        public string[] changeInfo { get; set; }
+        public Supplier supplier { get; set; }
+        public Station station { get; set; }
+        public DispenserNozzlecontrol[] nozzleControls { get; set; }
+        public bool _lock { get; set; }
+        public int modifiedBy { get; set; }
+        public long startTime { get; set; }
+        public string canLock { get; set; }
+        public int alarmLevel { get; set; }
+        public int id { get; set; }
+        public string modelSpec { get; set; }
+        public string serialNum { get; set; }
+        public bool test { get; set; }
+        public string[] sealNo { get; set; }
+        public object[] alarms { get; set; }
+        public long alarmTime { get; set; }
+        public int photoId { get; set; }
+        public long fixTime { get; set; }
+        public int?[] photoIds { get; set; }
+        public long soldTime { get; set; }
+        public string[] alarmDetail { get; set; }
+        public long createdDate { get; set; }
+        public int createdBy { get; set; }
+        public bool repairing { get; set; }
+        public string name { get; set; }
+        public long modifiedDate { get; set; }
+        public string setup { get; set; }
+        public int noticesTotal { get; set; }
+        public int nozzleControlsTotal { get; set; }
+        public long lastInspectTime { get; set; }
+    }
+
+
+    public class DispenserNozzlecontrol
+    {
+        public int mainBoard { get; set; }
+        public bool hidden { get; set; }
+        public int deviceAlarmLevel { get; set; }
+        public string onlineStatus { get; set; }
+        public object[] taxAlarms { get; set; }
+        public string iotType { get; set; }
+        public string deviceStatus { get; set; }
+        public int modifiedBy { get; set; }
+        public long startTime { get; set; }
+        public int alarmLevel { get; set; }
+        public Fuel fuel { get; set; }
+        public int id { get; set; }
+        public string value { get; set; }
+        public bool dirty { get; set; }
+        public string recover { get; set; }
+        public long ecqsDate { get; set; }
+        public object[] alarms { get; set; }
+        public int photoId { get; set; }
+        public long fixTime { get; set; }
+        public string[] alarmDetail { get; set; }
+        public long createdDate { get; set; }
+        public int nozzleNo { get; set; }
+        public int createdBy { get; set; }
+        public string name { get; set; }
+        public long modifiedDate { get; set; }
+        public string cheatStatus { get; set; }
+        public long productTime { get; set; }
+        public long soldTime { get; set; }
+    }
+}

+ 26 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/FuelDispenserDto.cs

@@ -96,6 +96,27 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         /// 省份
         /// </summary>
         public string Province { get; set; }
+        /// <summary>
+        /// 联系方式
+        /// </summary>
+        public string Phone { get; set; }
+        /// <summary>
+        /// 联系人
+        /// </summary>
+        public string Contact { get; set; }
+        /// <summary>
+        /// 多个铅封号
+        /// </summary>
+        public string SealNo { get; set; }
+        /// <summary>
+        /// 多个附件
+        /// </summary>
+        public string photoIds { get; set; }
+        /// <summary>
+        /// 验证码
+        /// </summary>
+        public string VerificationCode { get; set; }
+
         public FuelDispenserEntity ToFuelDispenser(FuelDispenserDto gasPump)
         {
             return new FuelDispenserEntity()
@@ -120,6 +141,11 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
                 AlarmLevel = gasPump.AlarmLevel,
                 OnlineDesc = gasPump.OnlineDesc,
                 Province = gasPump.Province,
+                Phone = gasPump.Phone,
+                Contact = gasPump.Contact,
+                SealNo = gasPump.SealNo,
+                photoIds = gasPump.photoIds,
+                VerificationCode = gasPump.VerificationCode
             };
         }
     }

+ 0 - 4
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/LifecycleContentDto.cs

@@ -40,10 +40,6 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public int Size { get; set; }
         public int Number { get; set; }
     }
-    public class Sort
-    {
-    }
-
     public class DispenserContentDetails
     {
         public object DeviceStatus { get; set; }

+ 321 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/NozzleDetails.cs

@@ -0,0 +1,321 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+
+
+    public class NozzleDetails
+    {
+        public NozzleDetailsData data { get; set; }
+        public string message { get; set; }
+        public string requestId { get; set; }
+        public int status { get; set; }
+    }
+
+    public class NozzleDetailsData
+    {
+        public NozzleDetailsTaxcontrol taxControl { get; set; }
+        public int mainBoard { get; set; }
+        public bool hidden { get; set; }
+        public int deviceAlarmLevel { get; set; }
+        public string onlineStatus { get; set; }
+        public object[] taxAlarms { get; set; }
+        public string iotType { get; set; }
+        public long productTime { get; set; }
+        public NozzleMeter[] meters { get; set; }
+        public string deviceStatus { get; set; }
+        public NozzleStation station { get; set; }
+        public int modifiedBy { get; set; }
+        public long startTime { get; set; }
+        public NozzleEncodercontrol[] encoderControls { get; set; }
+        public int alarmLevel { get; set; }
+        public int id { get; set; }
+        public string value { get; set; }
+        public NozzleDisplaycontrol[] displayControls { get; set; }
+        public bool dirty { get; set; }
+        public string recover { get; set; }
+        public long ecqsDate { get; set; }
+        public object[] alarms { get; set; }
+        public int photoId { get; set; }
+        public long fixTime { get; set; }
+        public Vaporrecoverycontrol vaporRecoveryControl { get; set; }
+        public long soldTime { get; set; }
+        public string[] alarmDetail { get; set; }
+        public long createdDate { get; set; }
+        public NozzleBlackbox blackBox { get; set; }
+        public int nozzleNo { get; set; }
+        public int createdBy { get; set; }
+        public string name { get; set; }
+        public long modifiedDate { get; set; }
+        public string cheatStatus { get; set; }
+        public object[] valveControls { get; set; }
+    }
+
+    public class NozzleDetailsTaxcontrol
+    {
+        public long onlineStatusDate { get; set; }
+        public int deviceAlarmLevel { get; set; }
+        public string onlineStatus { get; set; }
+        public string uuid { get; set; }
+        public bool signVerify { get; set; }
+        public int id { get; set; }
+        public string mainBoardUuid { get; set; }
+        public string nozzleControlName { get; set; }
+        public long fixTime { get; set; }
+        public int bindMainBoard { get; set; }
+        public long soldTime { get; set; }
+        public object[] alarmDetail { get; set; }
+        public long modifiedDate { get; set; }
+        public int offlineAlarmLevel { get; set; }
+        public int bindResetTimes { get; set; }
+        public int mainBoard { get; set; }
+        public int resetTimes { get; set; }
+        public string signature { get; set; }
+        public string lawSwv { get; set; }
+        public long productTime { get; set; }
+        public string deviceStatus { get; set; }
+        public int modifiedBy { get; set; }
+        public string lawSwi { get; set; }
+        public long startTime { get; set; }
+        public int alarmLevel { get; set; }
+        public string sn { get; set; }
+        public int dispenserSupplierId { get; set; }
+        public long registerDate { get; set; }
+        public bool dirty { get; set; }
+        public object[] alarms { get; set; }
+        public int photoId { get; set; }
+        public long createdDate { get; set; }
+        public int createdBy { get; set; }
+        public string hdv { get; set; }
+    }
+
+    public class NozzleStation
+    {
+        public bool alarming { get; set; }
+        public string districtCode { get; set; }
+        public string city { get; set; }
+        public string cityCode { get; set; }
+        public int groupId { get; set; }
+        public string type { get; set; }
+        public string registerNo { get; set; }
+        public string province { get; set; }
+        public string contact { get; set; }
+        public int modifiedBy { get; set; }
+        public int id { get; set; }
+        public int state { get; set; }
+        public float lat { get; set; }
+        public string address { get; set; }
+        public float lng { get; set; }
+        public bool test { get; set; }
+        public bool business { get; set; }
+        public string provinceCode { get; set; }
+        public long alarmTime { get; set; }
+        public int photoId { get; set; }
+        public object[] tags { get; set; }
+        public int dispensersTotal { get; set; }
+        public long createdDate { get; set; }
+        public string phone { get; set; }
+        public int createdBy { get; set; }
+        public string district { get; set; }
+        public string name { get; set; }
+        public long modifiedDate { get; set; }
+        public int noticesTotal { get; set; }
+        public int nozzleControlsTotal { get; set; }
+    }
+
+    public class Vaporrecoverycontrol
+    {
+        public int deviceAlarmLevel { get; set; }
+        public string signature { get; set; }
+        public string onlineStatus { get; set; }
+        public long productTime { get; set; }
+        public bool signVerify { get; set; }
+        public string uuid { get; set; }
+        public string deviceStatus { get; set; }
+        public int modifiedBy { get; set; }
+        public long startTime { get; set; }
+        public int alarmLevel { get; set; }
+        public int id { get; set; }
+        public int dispenserSupplierId { get; set; }
+        public bool dirty { get; set; }
+        public object[] alarms { get; set; }
+        public int photoId { get; set; }
+        public long fixTime { get; set; }
+        public long soldTime { get; set; }
+        public string[] alarmDetail { get; set; }
+        public long createdDate { get; set; }
+        public int createdBy { get; set; }
+        public long modifiedDate { get; set; }
+        public int offlineAlarmLevel { get; set; }
+    }
+
+    public class NozzleBlackbox
+    {
+        public bool alarming { get; set; }
+        public long onlineStatusDate { get; set; }
+        public int deviceAlarmLevel { get; set; }
+        public string onlineStatus { get; set; }
+        public string iotType { get; set; }
+        public bool signVerify { get; set; }
+        public string uuid { get; set; }
+        public string iccid { get; set; }
+        public string swv { get; set; }
+        public string qrCode { get; set; }
+        public int id { get; set; }
+        public bool filtering { get; set; }
+        public string taxType { get; set; }
+        public string nozzleControlName { get; set; }
+        public long fixTime { get; set; }
+        public long soldTime { get; set; }
+        public object[] alarmDetail { get; set; }
+        public string[] snapshot2 { get; set; }
+        public long modifiedDate { get; set; }
+        public int offlineAlarmLevel { get; set; }
+        public string cpuUuid { get; set; }
+        public int resetTimes { get; set; }
+        public long productTime { get; set; }
+        public string imsi { get; set; }
+        public string deviceStatus { get; set; }
+        public string smUuid { get; set; }
+        public int modifiedBy { get; set; }
+        public long startTime { get; set; }
+        public int alarmLevel { get; set; }
+        public int dispenserSupplierId { get; set; }
+        public long alarmTime { get; set; }
+        public object[] alarms { get; set; }
+        public int photoId { get; set; }
+        public long createdDate { get; set; }
+        public int createdBy { get; set; }
+        public NozzleXattrs xattrs { get; set; }
+        public string imei { get; set; }
+        public string hdv { get; set; }
+        public long registerUpdateTime { get; set; }
+    }
+
+    public class NozzleXattrs
+    {
+        public NozzleUart6cancontrols uart6CanControls { get; set; }
+        public NozzleUart5cancontrols uart5CanControls { get; set; }
+        public string netDevice { get; set; }
+        public int strength { get; set; }
+        public string buildTime { get; set; }
+        public int onchipFlash { get; set; }
+        public string sn { get; set; }
+        public NozzleSafechipcontrols safeChipControls { get; set; }
+    }
+
+    public class NozzleUart6cancontrols
+    {
+        public int cover { get; set; }
+        public int canBaud { get; set; }
+        public string swv { get; set; }
+        public string buildTime { get; set; }
+        public string hdid { get; set; }
+        public string hdv { get; set; }
+    }
+
+    public class NozzleUart5cancontrols
+    {
+        public int cover { get; set; }
+        public int canBaud { get; set; }
+        public string swv { get; set; }
+        public string buildTime { get; set; }
+        public string hdid { get; set; }
+        public string hdv { get; set; }
+    }
+
+    public class NozzleSafechipcontrols
+    {
+        public int cover { get; set; }
+        public string swv { get; set; }
+        public string buildTime { get; set; }
+        public string hdid { get; set; }
+        public int supplier_type { get; set; }
+        public int secret { get; set; }
+        public string hdv { get; set; }
+    }
+
+    public class NozzleMeter
+    {
+        public int deviceAlarmLevel { get; set; }
+        public string onlineStatus { get; set; }
+        public object[] alarms { get; set; }
+        public string nozzleControlName { get; set; }
+        public int photoId { get; set; }
+        public long fixTime { get; set; }
+        public string uuid { get; set; }
+        public string deviceStatus { get; set; }
+        public object[] alarmDetail { get; set; }
+        public long createdDate { get; set; }
+        public int createdBy { get; set; }
+        public long modifiedDate { get; set; }
+        public string setup { get; set; }
+        public int modifiedBy { get; set; }
+        public int alarmLevel { get; set; }
+        public long startTime { get; set; }
+        public int id { get; set; }
+    }
+
+    public class NozzleEncodercontrol
+    {
+        public long onlineStatusDate { get; set; }
+        public int deviceAlarmLevel { get; set; }
+        public string signature { get; set; }
+        public string onlineStatus { get; set; }
+        public string lawSwv { get; set; }
+        public long productTime { get; set; }
+        public string uuid { get; set; }
+        public bool signVerify { get; set; }
+        public string deviceStatus { get; set; }
+        public int modifiedBy { get; set; }
+        public long startTime { get; set; }
+        public int alarmLevel { get; set; }
+        public string lawSwi { get; set; }
+        public string sn { get; set; }
+        public int id { get; set; }
+        public int dispenserSupplierId { get; set; }
+        public long registerDate { get; set; }
+        public bool dirty { get; set; }
+        public object[] alarms { get; set; }
+        public string nozzleControlName { get; set; }
+        public int photoId { get; set; }
+        public long fixTime { get; set; }
+        public long soldTime { get; set; }
+        public object[] alarmDetail { get; set; }
+        public long createdDate { get; set; }
+        public int createdBy { get; set; }
+        public long modifiedDate { get; set; }
+        public int offlineAlarmLevel { get; set; }
+        public string hdv { get; set; }
+    }
+
+    public class NozzleDisplaycontrol
+    {
+        public long onlineStatusDate { get; set; }
+        public int deviceAlarmLevel { get; set; }
+        public string onlineStatus { get; set; }
+        public string uuid { get; set; }
+        public string deviceStatus { get; set; }
+        public int modifiedBy { get; set; }
+        public long startTime { get; set; }
+        public int alarmLevel { get; set; }
+        public string sn { get; set; }
+        public int id { get; set; }
+        public int dispenserSupplierId { get; set; }
+        public bool dirty { get; set; }
+        public object[] alarms { get; set; }
+        public string nozzleControlName { get; set; }
+        public int photoId { get; set; }
+        public long fixTime { get; set; }
+        public string[] alarmDetail { get; set; }
+        public long createdDate { get; set; }
+        public int createdBy { get; set; }
+        public long modifiedDate { get; set; }
+        public int offlineAlarmLevel { get; set; }
+    }
+
+}

+ 20 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/ObjectData.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+    public class ObjectData
+    {
+        public int number { get; set; }
+        public int size { get; set; }
+        public int numberOfElements { get; set; }
+        public int totalPages { get; set; }
+        public Pageable pageable { get; set; }
+        public Sort1 sort { get; set; }
+        public Content[] content { get; set; }
+        public int totalElements { get; set; }
+    }
+}

+ 16 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/Pageable.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+    public class Pageable
+    {
+        public int pageNumber { get; set; }
+        public int offset { get; set; }
+        public int pageSize { get; set; }
+        public Sort sort { get; set; }
+    }
+}

+ 1 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/Rootobject.cs

@@ -384,6 +384,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public string buildTime { get; set; }
         public string hdid { get; set; }
         public int? supplier_type { get; set; }
+        public int? secret { get; set; }
         public string hdv { get; set; }
     }
 

+ 15 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/Sort.cs

@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+    public class Sort
+    {
+    }
+    public class Sort1
+    {
+    }
+}

+ 54 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/StationDto.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+    public class StationDto
+    {
+        public Data data { get; set; }
+        public string message { get; set; }
+        public string requestId { get; set; }
+        public int status { get; set; }
+    }
+
+
+
+    public class StationContent
+    {
+        public bool alarming { get; set; }
+        public string districtCode { get; set; }
+        public string city { get; set; }
+        public string cityCode { get; set; }
+        public int groupId { get; set; }
+        public string type { get; set; }
+        public string province { get; set; }
+        public string contact { get; set; }
+        public int modifiedBy { get; set; }
+        public Supervision supervision { get; set; }
+        public StationCompany company { get; set; }
+        public int id { get; set; }
+        public int state { get; set; }
+        public float lat { get; set; }
+        public string address { get; set; }
+        public float lng { get; set; }
+        public bool test { get; set; }
+        public bool business { get; set; }
+        public string provinceCode { get; set; }
+        public long alarmTime { get; set; }
+        public int photoId { get; set; }
+        public object[] tags { get; set; }
+        public int dispensersTotal { get; set; }
+        public long createdDate { get; set; }
+        public string phone { get; set; }
+        public int createdBy { get; set; }
+        public string district { get; set; }
+        public string name { get; set; }
+        public long modifiedDate { get; set; }
+        public int noticesTotal { get; set; }
+        public int nozzleControlsTotal { get; set; }
+    }
+
+}

+ 1 - 36
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/StationRootobject.cs

@@ -17,7 +17,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
 
     public class StationData
     {
-        public Summary summary { get; set; }
+        public Summary? summary { get; set; }
         public int number { get; set; }
         public int size { get; set; }
         public int numberOfElements { get; set; }
@@ -27,39 +27,4 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public StationContent[] content { get; set; }
         public int totalElements { get; set; }
     }
-
-    public class StationContent
-    {
-        public bool alarming { get; set; }
-        public string districtCode { get; set; }
-        public string city { get; set; }
-        public string cityCode { get; set; }
-        public string type { get; set; }
-        public string registerNo { get; set; }
-        public string province { get; set; }
-        public string contact { get; set; }
-        public int modifiedBy { get; set; }
-        public int id { get; set; }
-        public float lat { get; set; }
-        public string address { get; set; }
-        public float lng { get; set; }
-        public bool test { get; set; }
-        public bool business { get; set; }
-        public string provinceCode { get; set; }
-        public long? alarmTime { get; set; }
-        public int photoId { get; set; }
-        public object[] tags { get; set; }
-        public int dispensersTotal { get; set; }
-        public long createdDate { get; set; }
-        public string phone { get; set; }
-        public int createdBy { get; set; }
-        public string district { get; set; }
-        public string name { get; set; }
-        public long modifiedDate { get; set; }
-        public int noticesTotal { get; set; }
-        public int nozzleControlsTotal { get; set; }
-        public string stationCode { get; set; }
-        public string description { get; set; }
-    }
-
 }

+ 0 - 7
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/SupplierDto.cs

@@ -143,13 +143,6 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public string type { get; set; }
         public string device { get; set; }
     }
-    public class Pageable
-    {
-        public object Sort { get; set; }
-        public int PageSize { get; set; }
-        public int PageNumber { get; set; }
-        public int Offset { get; set; }
-    }
 
     public class Summary
     {

+ 40 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/supervision.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+    public class Supervision
+    {
+        public string groupType { get; set; }
+        public string address { get; set; }
+        public int standardId { get; set; }
+        public int photoId { get; set; }
+        public long createdDate { get; set; }
+        public object[] deviceTypes { get; set; }
+        public int createdBy { get; set; }
+        public string name { get; set; }
+        public long modifiedDate { get; set; }
+        public int modifiedBy { get; set; }
+        public int id { get; set; }
+    }
+
+   
+   
+    public class StationCompany
+    {
+        public string groupType { get; set; }
+        public int standardId { get; set; }
+        public int photoId { get; set; }
+        public long createdDate { get; set; }
+        public object[] deviceTypes { get; set; }
+        public int createdBy { get; set; }
+        public string name { get; set; }
+        public long modifiedDate { get; set; }
+        public int modifiedBy { get; set; }
+        public int id { get; set; }
+    }
+
+}

+ 73 - 10
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/EncoderControlsEntity.cs

@@ -1,19 +1,22 @@
-using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Entities;
 
 namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
 {
     /// <summary>
     /// 编码器
     /// </summary>
-    public class EncoderControlsEntity
+    [Table(Name = "EncoderControls")]
+    public class EncoderControlsEntity : EntityAdd
     {
         /// <summary>
-        /// 设备报警级别。
+        /// 设备端告警等级 1代表一 般,2代表严重
         /// </summary>
         public int DeviceAlarmLevel { get; set; }
 
@@ -38,9 +41,9 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         public string DeviceStatus { get; set; }
 
         /// <summary>
-        /// 编码器供应商ID。
+        /// 供应商ID。
         /// </summary>
-        public int SupplierID { get; set; }
+        public int? SupplierID { get; set; }
 
         /// <summary>
         /// 用户 ID。
@@ -48,9 +51,9 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         public int ModifiedBy { get; set; }
 
         /// <summary>
-        /// 开始时间。
+        /// 启用时间。
         /// </summary>
-        public long StartTime { get; set; }
+        public DateTime? StartTime { get; set; }
 
         /// <summary>
         /// 报警级别。
@@ -68,12 +71,12 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         public int DispenserSupplierId { get; set; }
 
         /// <summary>
-        /// 
+        /// 是否未上报的疑似脏数据
         /// </summary>
         public bool Dirty { get; set; }
 
         /// <summary>
-        /// 修复时间
+        /// 安装时间 
         /// </summary>
         public DateTime? FixTime { get; set; }
 
@@ -95,6 +98,66 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// <summary>
         /// 修改日期。
         /// </summary>
-        public long ModifiedDate { get; set; }
+        public DateTime? ModifiedDate { get; set; }
+        /// <summary>
+        /// 微处理器编号
+        /// </summary>
+        public string CpuUuid { get; set; }
+        /// <summary>
+        /// 原厂编号
+        /// </summary>
+        public string SN { get; set; }
+        /// <summary>
+        /// 硬件版本号 
+        /// </summary>
+        public string Hdv { get; set; }
+        /// <summary>
+        /// 程序签名 
+        /// </summary>
+        public string Signature { get; set; }
+        /// <summary>
+        /// 编码器备案程序包 
+        /// </summary>
+        public string EncoderSoftware { get; set; }
+        /// <summary>
+        /// 安全装置ID 
+        /// </summary>
+        public int? BlackBoxID { get; set; }
+        /// <summary>
+        /// 站点id 
+        /// </summary>
+        public int? StationID { get; set; }
+        /// <summary>
+        /// 计量器id 
+        /// </summary>
+        public int? MeterID { get; set; }
+        /// <summary>
+        /// 生产时间 
+        /// </summary>
+        public DateTime? ProductTime { get; set; }
+        /// <summary>
+        /// 出厂时间 
+        /// </summary>
+        public DateTime? SoldTime { get; set; }
+        /// <summary>
+        /// 照片id  
+        /// </summary>
+        public long photoId { get; set; }
+        /// <summary>
+        /// 错误列表 
+        /// </summary>
+        public string Alarms { get; set; }
+        /// <summary>
+        /// 法制软件版本 
+        /// </summary>
+        public string lawSwv { get; set; }
+        /// <summary>
+        /// 法制软件标识 
+        /// </summary>
+        public string lawSwi { get; set; }
+        /// <summary>
+        /// 油机id
+        /// </summary>
+        public int? FuelId { get; set; }
     }
 }

+ 21 - 1
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/FuelDispenserEntity.cs

@@ -10,7 +10,7 @@ using ZhonTai.Admin.Core.Entities;
 namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
 {
     /// <summary>
-    /// 电子档案
+    /// 加油机
     /// </summary>
     [Table(Name = "FuelDispenser")]
     public class FuelDispenserEntity : EntityUpdate
@@ -159,5 +159,25 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 测试
         /// </summary>
         public int Test { get; set; }
+        /// <summary>
+        /// 联系方式
+        /// </summary>
+        public string Phone { get; set; }
+        /// <summary>
+        /// 联系人
+        /// </summary>
+        public string Contact { get; set; }
+        /// <summary>
+        /// 多个铅封号
+        /// </summary>
+        public string SealNo { get; set; }
+        /// <summary>
+        /// 多个附件
+        /// </summary>
+        public string photoIds { get; set; }
+        /// <summary>
+        /// 验证码
+        /// </summary>
+        public string VerificationCode { get; set; }
     }
 }

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IBlackBoxRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface IBlackBoxRepository : IRepositoryBase<BlackBoxEntity>
+    {
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ICalculatorMainboardRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface ICalculatorMainboardRepository : IRepositoryBase<CalculatorMainboardEntity>
+    {
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ICompanyRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface ICompanyRepository : IRepositoryBase<CompanyEntity>
+    {
+    }
+}

+ 14 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IDisplayControlRepository.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+
+    public interface IDisplayControlRepository : IRepositoryBase<DisplayControlEntity>
+    {
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IEncoderControlsRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface IEncoderControlsRepository : IRepositoryBase<EncoderControlsEntity>
+    {
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IMaintenanceRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface IMaintenanceRepository : IRepositoryBase<MaintenanceEntity>
+    {
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IMeterRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface IMeterRepository : IRepositoryBase<MeterEntity>
+    {
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ISupplierRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface ISupplierRepository : IRepositoryBase<SupplierEntity>
+    {
+    }
+}

+ 14 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ITaxControlRepository.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface ITaxControlRepository : IRepositoryBase<TaxControlEntity>
+    {
+    }
+
+}

+ 14 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IValveControlRepository.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface IValveControlRepository : IRepositoryBase<ValveControlEntity>
+    {
+    }
+
+}

+ 14 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IVaporRecoveryControlRepository.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface IVaporRecoveryControlRepository : IRepositoryBase<VaporRecoveryControlEntity>
+    {
+    }
+
+}

+ 61 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/MaintenanceEntity.cs

@@ -0,0 +1,61 @@
+using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 维修记录
+    /// </summary>
+    [Table(Name = "Maintenance")]
+    public class MaintenanceEntity : EntityAdd
+    {
+        /// <summary>
+        /// 维修时间(Unix时间戳)
+        /// <remarks>精确到毫秒</remarks>
+        /// </summary>
+        public long CreatedDate { get; set; }
+
+        /// <summary>
+        /// 维修人员唯一标识
+        /// <remarks>关联人员管理系统ID</remarks>
+        /// </summary>
+        public long CreatedBy { get; set; }
+
+        /// <summary>
+        /// 维修状态
+        /// <seealso cref="MaintenanceStatus"/>
+        /// </summary>
+        public string Status { get; set; }
+
+        /// <summary>
+        /// 维修类型
+        /// <seealso cref="MaintenanceType"/>
+        /// </summary>
+        public string Type { get; set; }
+
+        /// <summary>
+        /// 维修描述
+        /// <remarks>最大长度500字符</remarks>
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 油机id
+        /// <seealso cref="Dispenser"/>
+        /// <remarks>当维修类型为油机时必填</remarks>
+        /// </summary>
+        public int? FuelId{ get; set; }
+
+        /// <summary>
+        /// 站点id
+        /// <seealso cref="Station"/>
+        /// </summary>
+        public int  StationID { get; set; }
+    }
+}

+ 92 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/MeterEntity.cs

@@ -0,0 +1,92 @@
+using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 计量器
+    /// </summary>
+    [Table(Name = "Meter")]
+    public class MeterEntity : EntityAdd
+    {
+        /// <summary>
+        /// 计量器唯一标识符
+        /// <remarks>长度限制:0-32字符</remarks>
+        /// </summary>
+        public string Uuid { get; set; }
+
+        /// <summary>
+        /// 站点ID
+        /// <seealso cref="Station"/>
+        /// </summary>
+        public int? StationID { get; set; }
+
+        /// <summary>
+        ///供应商ID
+        /// <seealso cref="Supplier"/>
+        /// </summary>
+        public int? SupplierID { get; set; }
+
+
+        /// <summary>
+        /// 设备在线状态
+        /// <seealso cref="OnlineStatus"/>
+        /// </summary>
+        public string OnlineStatus { get; set; }
+
+        /// <summary>
+        /// 设备注册/绑定状态
+        /// <seealso cref="DeviceStatus"/>
+        /// </summary>
+        public string DeviceStatus { get; set; }
+
+        /// <summary>
+        /// 设备告警等级
+        /// <remarks>1-一般告警,2-严重告警</remarks>
+        /// </summary>
+        public int DeviceAlarmLevel { get; set; }
+
+        /// <summary>
+        /// 设备生产日期
+        /// </summary>
+        public DateTime? ProductTime { get; set; }
+
+        /// <summary>
+        /// 设备出厂日期
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public DateTime? SoldTime { get; set; }
+
+        /// <summary>
+        /// 设备启用日期
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 设备照片存储ID
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public long? PhotoId { get; set; }
+
+        /// <summary>
+        /// 设备安装日期
+        /// <remarks>可为空值</remarks>
+        /// </summary>
+        public DateTime? FixTime { get; set; }
+
+        /// <summary>
+        /// 设备错误代码集合
+        /// <remarks>初始化默认空集合</remarks>
+        /// </summary>
+        public string Alarms { get; set; }
+        public int? id { get; set; }
+        public int? FuelId { get; set; }
+    }
+}

+ 26 - 10
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/NozzlecontrolEntity.cs

@@ -28,7 +28,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// </summary>
         public string FuelName { get; set; }
         /// <summary>
-        /// 枪号
+        /// 逻辑编
         /// </summary>
         public string Name { get; set; }
         /// <summary>
@@ -47,10 +47,6 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 自锁功能
         /// </summary>
         public bool Alarming { get; set; }
-        /// <summary>
-        /// 税控主板ID
-        /// </summary>
-        public int TaxControlID { get; set; }
 
         /// <summary>
         /// 设备是否隐藏。
@@ -62,10 +58,6 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// </summary>
         public int DeviceAlarmLevel { get; set; }
 
-        /// <summary>
-        /// 税务报警。
-        /// </summary>
-        public string TaxAlarms { get; set; }
 
         /// <summary>
         /// 设备类型。
@@ -148,7 +140,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         public DateTime? CreatedDate { get; set; }
 
         /// <summary>
-        /// 黑盒ID
+        /// 安全监督装置ID
         /// </summary>
         public int? BlackBoxID { get; set; }
 
@@ -191,5 +183,29 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 编码器编号
         /// </summary>
         public string EncoderControlsNo { get; set; }
+        /// <summary>
+        /// 监控微处理器错误列表
+        /// </summary>
+        public string TaxAlarms { get; set; }
+        /// <summary>
+        /// 站点id
+        /// </summary>
+        public int? StationID { get; set; }
+        /// <summary>
+        /// 厂商ID
+        /// </summary>
+        public int SupplierID { get; set; }
+        /// <summary>
+        /// 计量器ID
+        /// </summary>
+        public int MetersID { get; set; }
+        /// <summary>
+        /// 智能控制阀ID
+        /// </summary>
+        public int ValveControlsID { get; set; }
+        /// <summary>
+        /// 监控微处理器ID
+        /// </summary>
+        public int TaxControlID { get; set; }
     }
 }

+ 29 - 1
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/StationEntity.cs

@@ -15,7 +15,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
     public class StationEntity : EntityAdd
     {
         /// <summary>
-        /// 报警状态
+        /// 是否有生效中的告警
         /// </summary>
         public bool Alarming { get; set; }
 
@@ -141,5 +141,33 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 公司ID
         /// </summary>
         public int CompanyID { get; set; }
+        /// <summary>
+        /// 油站编号
+        /// </summary>
+        public string StationCode { get; set; }
+        /// <summary>
+        /// 照片ID
+        /// </summary>
+        public long PhotoId { get; set; }
+        /// <summary>
+        /// 描述
+        /// </summary>
+        public string Description { get; set; }
+        /// <summary>
+        /// 纳税人识别号
+        /// </summary>
+        public string registerNo { get; set; }
+        /// <summary>
+        /// 是否有生效的标签
+        /// </summary>
+        public string tags { get; set; }
+        /// <summary>
+        /// 归属质监局
+        /// </summary>
+        public int supervision { get; set; }
+        /// <summary>
+        /// 站点id
+        /// </summary>
+        public int StationID { get; set; }
     }
 }

+ 1 - 1
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/SupplierEntity.cs

@@ -9,7 +9,7 @@ using ZhonTai.Admin.Core.Entities;
 namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
 {
     /// <summary>
-    /// 供应商ID
+    /// 供应商
     /// </summary>
     [Table(Name = "Supplier")]
     public class SupplierEntity : EntityAdd

+ 66 - 6
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/TaxControlEntity.cs

@@ -9,13 +9,13 @@ using ZhonTai.Admin.Core.Entities;
 namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
 {
     /// <summary>
-    /// 税控
+    /// 监控微处理器
     /// </summary>
     [Table(Name = "TaxControl")]
     public class TaxControlEntity : EntityAdd
     {
         /// <summary>
-        /// 主板数量
+        /// 主板Id
         /// </summary>
         public int MainBoard { get; set; }
 
@@ -25,7 +25,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         public int ResetTimes { get; set; }
 
         /// <summary>
-        /// 设备报警级别。
+        /// 设备端告警等级 1代表一 般,2代表严重
         /// </summary>
         public int DeviceAlarmLevel { get; set; }
 
@@ -70,12 +70,12 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         public int DispenserSupplierId { get; set; }
 
         /// <summary>
-        /// 
+        /// 是否未上报的疑似脏数据
         /// </summary>
         public bool Dirty { get; set; }
 
         /// <summary>
-        /// 报警信息
+        /// 错误列表
         /// </summary>
         public string Alarms { get; set; }
 
@@ -86,7 +86,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
 
 
         /// <summary>
-        /// 修复时间。
+        /// 安装时间。
         /// </summary>
         public DateTime? FixTime { get; set; }
 
@@ -109,5 +109,65 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 油机ID
         /// </summary>
         public int FuelID { get; set; }
+        /// <summary>
+        /// 油枪逻辑编号
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 油枪物理Id
+        /// </summary>
+        public string NozzleNo { get; set; }
+        /// <summary>
+        /// 防作弊状 态:enable-启用 disable-停用
+        /// </summary>
+        public string CheatStatus { get; set; }
+        /// <summary>
+        /// 油气回收认证等级:signed-带签名enable- 仅硬件disable未启用
+        /// </summary>
+        public string Recover { get; set; }
+        /// <summary>
+        /// 智能型控制阀认证等级:signed-带签名enable- 仅硬件disable非智能
+        /// </summary>
+        public string Value { get; set; }
+        /// <summary>
+        /// 是否隐藏
+        /// </summary>
+        public string Hidden { get; set; }
+        /// <summary>
+        /// 监控微处理器错误列表
+        /// </summary>
+        public string TaxAlarms { get; set; }
+        /// <summary>
+        /// 机型配置
+        /// </summary>
+        public string IotType { get; set; }
+        /// <summary>
+        /// 安全装置ID
+        /// </summary>
+        public int? BlackBoxID { get; set; }
+        /// <summary>
+        /// 站点id
+        /// </summary>
+        public int? StationID { get; set; }
+        /// <summary>
+        /// 油品名称
+        /// </summary>
+        public string FuelName { get; set; }
+        /// <summary>
+        /// e-CQS编码
+        /// </summary>
+        public string Code { get; set; }
+        /// <summary>
+        ///生产时间 
+        /// </summary>
+        public DateTime? ProductTime { get; set; }
+        /// <summary>
+        ///出厂时间  
+        /// </summary>
+        public DateTime? SoldTime { get; set; }
+        /// <summary>
+        ///启用时间 
+        /// </summary>
+        public DateTime? StartTime { get; set; }
     }
 }

+ 111 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ValveControlEntity.cs

@@ -0,0 +1,111 @@
+using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 智能型控制阀
+    /// </summary>
+    [Table(Name = "ValveControl")]
+    public class ValveControlEntity : EntityAdd
+    {
+        /// <summary>
+        /// 唯一ID (0-32)
+        /// </summary>
+        public string Uuid { get; set; }
+        /// <summary>
+        /// 软件版本号 (0-32)
+        /// </summary>
+        public string Swv { get; set; }
+        /// <summary>
+        /// 硬件版本号 (0-32)
+        /// </summary>
+        public string Hdv { get; set; }
+        /// <summary>
+        ///  国密芯片ID (0-32)
+        /// </summary>
+        public string SecCpuUuid { get; set; }
+        /// <summary>
+        ///  油机供应商ID
+        /// </summary>
+        public long DispenserSupplierId { get; set; }
+        /// <summary>
+        ///  是否未上报的疑似脏数据
+        /// </summary>
+        public bool Dirty { get; set; }
+        /// <summary>
+        /// 程序签名 (0-256)
+        /// </summary>
+        public string Signature { get; set; }
+        /// <summary>
+        /// 验签结果
+        /// </summary>
+        public bool SignVerify { get; set; }
+        /// <summary>
+        /// 智能型控制阀备案程序包
+        /// </summary>
+        public string ValveSoftware { get; set; }
+        /// <summary>
+        /// 安全装置
+        /// </summary>
+        public int BlackBoxID { get; set; }
+        /// <summary>
+        /// 站点
+        /// </summary>
+        public int StationID { get; set; }
+        /// <summary>
+        /// 供应商
+        /// </summary>
+        public int SupplierID { get; set; }
+        /// <summary>
+        /// online/offline状态
+        /// </summary>
+        public string OnlineStatus { get; set; }
+        /// <summary>
+        /// 设备状态
+        /// </summary>
+        public string DeviceStatus { get; set; }
+        /// <summary>
+        ///  设备端告警等级(1-一般,2-严重)
+        /// </summary>
+        public int DeviceAlarmLevel { get; set; }
+        /// <summary>
+        /// 生产时间
+        /// </summary>
+        public DateTime? ProductTime { get; set; }
+        /// <summary>
+        /// 出厂时间(可为空)
+        /// </summary>
+        public DateTime? SoldTime { get; set; }
+        /// <summary>
+        /// 启用时间(可为空)
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+        /// <summary>
+        /// 照片ID(可为空)
+        /// </summary>
+        public long? PhotoId { get; set; }
+        /// <summary>
+        ///  安装时间(可为空)
+        /// </summary>
+        public DateTime? FixTime { get; set; }
+        /// <summary>
+        /// 错误列表
+        /// </summary>
+        public string Alarms { get; set; }
+        /// <summary>
+        /// 法制软件版本
+        /// </summary>
+        public string LawSwv { get; set; }
+        /// <summary>
+        /// 法制软件标识
+        /// </summary>
+        public string LawSwi { get; set; } 
+    }
+}

+ 133 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/VaporRecoveryControlEntity.cs

@@ -0,0 +1,133 @@
+using FreeSql.DataAnnotations;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 油气回收控制板
+    /// </summary>
+    [Table(Name = "VaporRecoveryControl")]
+    public class VaporRecoveryControlEntity : EntityAdd
+    {
+        /// <summary>
+        /// 设备唯一标识符 (0-32字符)
+        /// </summary>
+        public string Uuid { get; set; }
+
+        /// <summary>
+        /// 软件版本号 (0-32字符)
+        /// </summary>
+        public string Swv { get; set; }
+
+        /// <summary>
+        /// 硬件版本号 (0-32字符)
+        /// </summary>
+        public string Hdv { get; set; }
+
+        /// <summary>
+        /// 国密安全芯片唯一标识 (0-32字符)
+        /// </summary>
+        public string SecCpuUuid { get; set; }
+
+        /// <summary>
+        /// 供应商ID
+        /// </summary>
+        public long DispenserSupplierId { get; set; }
+
+        /// <summary>
+        /// 标识是否存在未上报的疑似脏数据
+        /// </summary>
+        public bool Dirty { get; set; }
+
+        /// <summary>
+        /// 程序签名数据 (0-256字符)
+        /// </summary>
+        public string Signature { get; set; }
+
+        /// <summary>
+        /// 签名验证结果
+        /// </summary>
+        public bool SignVerify { get; set; }
+
+        /// <summary>
+        /// 油气回收控制板备案程序包信息
+        /// </summary>
+        public string VaporRecoverySoftware { get; set; }
+
+        /// <summary>
+        /// 安全装置id
+        /// </summary>
+        public int? BlackBoxID { get; set; }
+
+        /// <summary>
+        /// 站点id
+        /// </summary>
+        public int? StationID { get; set; }
+
+        /// <summary>
+        /// 供应商ID
+        /// </summary>
+        public int? SupplierID { get; set; }
+
+        /// <summary>
+        /// 设备在线状态
+        /// </summary>
+        public string OnlineStatus { get; set; }
+
+        /// <summary>
+        /// 设备注册/绑定状态
+        /// </summary>
+        public string DeviceStatus { get; set; }
+
+        /// <summary>
+        /// 设备告警等级 (1-一般告警,2-严重告警)
+        /// </summary>
+        public int DeviceAlarmLevel { get; set; }
+
+        /// <summary>
+        /// 设备生产日期
+        /// </summary>
+        public DateTime? ProductTime { get; set; }
+
+        /// <summary>
+        /// 设备出厂日期
+        /// </summary>
+        public DateTime? SoldTime { get; set; }
+
+        /// <summary>
+        /// 设备启用日期
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 设备安装日期
+        /// </summary>
+        public DateTime? FixTime { get; set; }
+
+        /// <summary>
+        /// 设备照片存储ID
+        /// </summary>
+        public long? PhotoId { get; set; }
+
+        /// <summary>
+        /// 设备错误代码集合
+        /// </summary>
+        public string Alarms { get; set; }
+
+        /// <summary>
+        /// 法制软件版本号
+        /// </summary>
+        public string LawSwv { get; set; }
+
+        /// <summary>
+        /// 法制软件标识
+        /// </summary>
+        public string LawSwi { get; set; }
+    }
+}

+ 1 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.csproj

@@ -10,6 +10,7 @@
 
 	<ItemGroup>
 		<PackageReference Include="DFS.Infrastructure" Version="1.0.1" />
+		<PackageReference Include="RestSharp" Version="112.1.0" />
 		<PackageReference Include="ZhonTai.Admin" Version="$(PackageZhonTaiVersion)">
 			<CopyToOutputDirectory>*\*\*.xml</CopyToOutputDirectory>
 		</PackageReference>

File diff suppressed because it is too large
+ 721 - 55
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.xml


+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/BlackBoxRepository.cs

@@ -0,0 +1,19 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class BlackBoxRepository : AppRepositoryBase<BlackBoxEntity>, IBlackBoxRepository
+    {
+        public BlackBoxRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/CalculatorMainboardRepository.cs

@@ -0,0 +1,19 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class CalculatorMainboardRepository : AppRepositoryBase<CalculatorMainboardEntity>, ICalculatorMainboardRepository
+    {
+        public CalculatorMainboardRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/CompanyRepository.cs

@@ -0,0 +1,19 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class CompanyRepository : AppRepositoryBase<CompanyEntity>, ICompanyRepository
+    {
+        public CompanyRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/DisplayControlRepository.cs

@@ -0,0 +1,19 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class DisplayControlRepository : AppRepositoryBase<DisplayControlEntity>, IDisplayControlRepository
+    {
+        public DisplayControlRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 20 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/EncoderControlsRepository.cs

@@ -0,0 +1,20 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+
+    public class EncoderControlsRepository : AppRepositoryBase<EncoderControlsEntity>, IEncoderControlsRepository
+    {
+        public EncoderControlsRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/MaintenanceRepository.cs

@@ -0,0 +1,19 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class MaintenanceRepository : AppRepositoryBase<MaintenanceEntity>, IMaintenanceRepository
+    {
+        public MaintenanceRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/MeterRepository.cs

@@ -0,0 +1,19 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class MeterRepository : AppRepositoryBase<MeterEntity>, IMeterRepository
+    {
+        public MeterRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 20 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/SupplierRepository.cs

@@ -0,0 +1,20 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class SupplierRepository : AppRepositoryBase<SupplierEntity>, ISupplierRepository
+    {
+        public SupplierRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+
+}

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/TaxControlRepository.cs

@@ -0,0 +1,19 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class TaxControlRepository : AppRepositoryBase<TaxControlEntity>, ITaxControlRepository
+    {
+        public TaxControlRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 20 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/ValveControlRepository.cs

@@ -0,0 +1,20 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class ValveControlRepository : AppRepositoryBase<ValveControlEntity>, IValveControlRepository
+    {
+        public ValveControlRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+
+}

+ 20 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/VaporRecoveryControlRepository.cs

@@ -0,0 +1,20 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class VaporRecoveryControlRepository : AppRepositoryBase<VaporRecoveryControlEntity>, IVaporRecoveryControlRepository
+    {
+        public VaporRecoveryControlRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+
+}

+ 685 - 11
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Association/AssociationService.cs

@@ -3,6 +3,7 @@ using DotNetCore.CAP.Internal;
 using IdentityModel;
 using IMES_Middleware_Platform.Api.Core.Consts;
 using IMES_Middleware_Platform.Api.Core.Handlers;
+using IMES_Middleware_Platform.Api.Core.Utility;
 using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
 using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
 using IMES_Middleware_Platform.Api.Domain.Push;
@@ -13,15 +14,19 @@ using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Configuration;
 using Newtonsoft.Json.Linq;
 using SixLabors.ImageSharp.Drawing;
+using SixLabors.ImageSharp.Metadata.Profiles.Exif;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Diagnostics.Metrics;
 using System.IO;
 using System.Linq;
 using System.Net;
 using System.Net.Http;
 using System.Reactive;
 using System.Reactive.Joins;
+using System.Security.Cryptography;
 using System.Text;
 using System.Text.Json;
 using System.Text.RegularExpressions;
@@ -29,12 +34,14 @@ using System.Threading.Tasks;
 using System.Xml.Linq;
 using ZhonTai.Admin.Core.Configs;
 using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Entities;
 using ZhonTai.Admin.Core.Logs;
 using ZhonTai.Admin.Services;
 using ZhonTai.Common.Helpers;
 using ZhonTai.DynamicApi;
 using ZhonTai.DynamicApi.Attributes;
 using static COSXML.Model.Tag.ListBucketVersions;
+using static System.Collections.Specialized.BitVector32;
 
 namespace IMES_Middleware_Platform.Api.Services.Association
 {
@@ -59,6 +66,19 @@ namespace IMES_Middleware_Platform.Api.Services.Association
 
         public readonly IUserRepository _userRepository;
         public readonly IUserPoleRepository _userPoleRepository;
+
+        public readonly IBlackBoxRepository _blackBoxRepository;
+        public readonly ICalculatorMainboardRepository _calculatorMainboardRepository;
+        public readonly ICompanyRepository _companyRepository;
+        public readonly IDisplayControlRepository _displayControlRepository;
+        public readonly IEncoderControlsRepository _encoderControlsRepository;
+        public readonly IMaintenanceRepository _maintenanceRepository;
+        public readonly IMeterRepository _meterRepository;
+        public readonly ISupplierRepository _supplierRepository;
+        public readonly ITaxControlRepository _taxControlRepository;
+        public readonly IValveControlRepository _valveControlRepository;
+        public readonly IVaporRecoveryControlRepository _vaporRecoveryControlRepository;
+
         static string token = string.Empty;
         public AssociationService(IConfiguration configuration
         , IFuelDispenserRepository fuelDispenserRepository
@@ -74,7 +94,19 @@ namespace IMES_Middleware_Platform.Api.Services.Association
         IPushTemplateMappingRepository pushTemplateMappingRepository,
         IRoleMappingRepository roleMappingRepository,
         IUserRepository userRepository,
-        IUserPoleRepository userPoleRepository)
+        IUserPoleRepository userPoleRepository,
+        IBlackBoxRepository blackBoxRepository,
+        ICalculatorMainboardRepository calculatorMainboardRepository,
+        ICompanyRepository companyRepository,
+        IDisplayControlRepository displayControlRepository,
+        IEncoderControlsRepository encoderControlsRepository,
+        IMaintenanceRepository maintenanceRepository,
+        IMeterRepository meterRepository,
+        ISupplierRepository supplierRepository,
+        ITaxControlRepository taxControlRepository,
+        IValveControlRepository valveControlRepository,
+        IVaporRecoveryControlRepository vaporRecoveryControlRepository
+        )
         {
             _configuration = configuration;
             _fuelDispenserRepository = fuelDispenserRepository;
@@ -91,6 +123,17 @@ namespace IMES_Middleware_Platform.Api.Services.Association
             _pushTemplateMappingRepository = pushTemplateMappingRepository;
             _userRepository = userRepository;
             _userPoleRepository = userPoleRepository;
+            _blackBoxRepository = blackBoxRepository;
+            _calculatorMainboardRepository = calculatorMainboardRepository;
+            _companyRepository = companyRepository;
+            _displayControlRepository = displayControlRepository;
+            _encoderControlsRepository = encoderControlsRepository;
+            _maintenanceRepository = maintenanceRepository;
+            _meterRepository = meterRepository;
+            _supplierRepository = supplierRepository;
+            _taxControlRepository = taxControlRepository;
+            _valveControlRepository = valveControlRepository;
+            _vaporRecoveryControlRepository = vaporRecoveryControlRepository;
         }
 
         public Task<LocalApiDto> GetAllStation(string areaType, string search)
@@ -653,7 +696,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
         /// </summary>
         /// <returns></returns>
         [HttpPost]
-        public async Task GetAssociationUserAsync(string token,string url)
+        public async Task GetAssociationUserAsync(string token, string url)
         {
             //EquipmentRootobject myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<EquipmentRootobject>(result);
 
@@ -737,9 +780,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
                 List<StationEntity> historyDtos = new List<StationEntity>();
                 for (var i = 0; i < myObject.data.content.Count(); i++)
                 {
-                    DateTime? AlarmTime = myObject.data.content[i].alarmTime.HasValue
-        ? DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].alarmTime.Value).UtcDateTime
-        : (DateTime?)null;
+                    DateTime? AlarmTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].alarmTime).UtcDateTime;
 
                     StationEntity nozzle = new StationEntity
                     {
@@ -748,7 +789,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
                         City = myObject.data.content[i].city,
                         CityCode = myObject.data.content[i].cityCode,
                         Type = myObject.data.content[i].type,
-                        RegisterNo = myObject.data.content[i].registerNo,
+                        RegisterNo = "",
                         Province = myObject.data.content[i].province,
                         Contact = myObject.data.content[i].contact,
                         Lat = myObject.data.content[i].lat,
@@ -788,7 +829,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
 
         }
 
-       
+
         /// <summary>
         /// 规则匹配
         /// </summary>
@@ -847,7 +888,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
                 }
             }
             if (pushlist.Count > 0)
-            { 
+            {
                 _pushRepository.Insert(pushlist);
             }
             List<PushRuleEntity> pushRules = new List<PushRuleEntity>();
@@ -871,7 +912,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
                     Conditions = true;
                 }
                 if (!Conditions)
-                { 
+                {
                     return false;
                 }
                 Conditions = CompareStringToInt(trigger.Symbol, trigger.Right, alarmHistoryEntity.AlarmLevel);
@@ -937,7 +978,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
                 {
                     Conditions = true;
                 }
-                Conditions = CompareStringToInt(trigger.Symbol, trigger.Right,alarmHistoryEntity.AlarmLevel);
+                Conditions = CompareStringToInt(trigger.Symbol, trigger.Right, alarmHistoryEntity.AlarmLevel);
                 if (Conditions)
                 {
                     return true;
@@ -975,7 +1016,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
         /// <param name="Symbol"></param>
         /// <param name="Right"></param>
         /// <returns></returns>
-        public bool CompareStringToInt(string Symbol, string Right,int? AlarmLevel)
+        public bool CompareStringToInt(string Symbol, string Right, int? AlarmLevel)
         {
             int? level = 0;
             if (int.TryParse(Right, out int result))
@@ -1005,5 +1046,638 @@ namespace IMES_Middleware_Platform.Api.Services.Association
             }
             return false;
         }
+        /// <summary>
+        /// 通过id获取站点信息
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task GetStationList()
+        {
+            HttpHelper helper = new HttpHelper();
+            int currentPage = 0;
+            int pageSize = 20;
+            try
+            {
+                while (true)
+                {
+                    string url = "https://cma-fds.org.cn/api/open/v1/station/list?page=" + currentPage + "&size=" + pageSize + "&expand=supervision&expand=company";
+                    string secureRandomString = GenerateSecureRandomString(10);//生成10位随机字符串
+                    string unixTimestampMs = ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeMilliseconds().ToString();//生成时间戳,精确到毫秒
+                    var query = "query={\"page\":\"" + currentPage + "\",\"size\":\"" + pageSize + "\",\"expand\":[\"supervision\",\"company\"]}";
+                    string stringToSign = $"sign_method=HMAC-SM3&secret_id=AwTHQMpzVvsCe7qx&nonce={secureRandomString}&timestamp={unixTimestampMs}";
+                    stringToSign = stringToSign + "&" + query;
+                    var encodedString = Uri.EscapeDataString(stringToSign);
+                    byte[] hmac = HMAC_SM3.ComputeHash("BK6gfhrUxxtIqD7ZeTU0LTd1w9SOseih", encodedString, System.Text.Encoding.UTF8);
+                    var signature = Convert.ToBase64String(hmac);
+                    string result = await helper.GetAsync(string.Format(url), secureRandomString, unixTimestampMs, signature);
+                    StationRootobject myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<StationRootobject>(result);
+                    if (myObject == null || myObject.data == null || myObject.data.content.Count() == 0)
+                    {
+                        break;
+                    }
+                    List<StationEntity> list = new List<StationEntity>();
+                    List<int> intList = new List<int>();
+                    for (var i = 0; i < myObject.data.content.Count(); i++)
+                    {
+                        DateTime? AlarmTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].alarmTime).UtcDateTime;
+
+                        StationEntity nozzle = new StationEntity
+                        {
+                            Alarming = myObject.data.content[i].alarming,
+                            DistrictCode = myObject.data.content[i].districtCode,
+                            City = myObject.data.content[i].city,
+                            CityCode = myObject.data.content[i].cityCode,
+                            Type = myObject.data.content[i].type,
+                            RegisterNo = "",
+                            Province = myObject.data.content[i].province,
+                            Contact = myObject.data.content[i].contact,
+                            Lat = myObject.data.content[i].lat,
+                            Address = myObject.data.content[i].address,
+                            Lng = myObject.data.content[i].lng,
+                            Test = myObject.data.content[i].test,
+                            Business = myObject.data.content[i].alarming,
+                            ProvinceCode = myObject.data.content[i].provinceCode,
+                            AlarmTime = AlarmTime,
+                            DispensersTotal = myObject.data.content[i].dispensersTotal,
+                            Phone = myObject.data.content[i].phone,
+                            District = myObject.data.content[i].district,
+                            Name = myObject.data.content[i].name,
+                            NoticesTotal = myObject.data.content[i].noticesTotal,
+                            NozzleControlsTotal = myObject.data.content[i].nozzleControlsTotal,
+                            CompanyID = myObject.data.content[i].company.id,
+                            StationID = myObject.data.content[i].id,
+                            supervision = myObject.data.content[i].supervision.id
+                        };
+                        list.Add(nozzle);
+                        intList.Add(nozzle.CompanyID);
+                    }
+                    currentPage++;  // 增加当前页数
+                    var _station = _stationRepository.Where(x => intList.Contains(x.CompanyID)).ToList();
+                    _station.ForEach(a =>
+                    {
+                        list.RemoveAll(e => e.Id == a.Id);
+                    });
+                    if (list != null)
+                    {
+
+                        await _stationRepository.InsertAsync(list);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        public async Task<string> GetAsync(string url, string query)
+        {
+            HttpHelper helper = new HttpHelper();
+            string secureRandomString = GenerateSecureRandomString(10);//生成10位随机字符串
+            string unixTimestampMs = ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeMilliseconds().ToString();//生成时间戳,精确到毫秒
+            string stringToSign = $"sign_method=HMAC-SM3&secret_id=AwTHQMpzVvsCe7qx&nonce={secureRandomString}&timestamp={unixTimestampMs}";
+            stringToSign = stringToSign + "&" + query;
+            var encodedString = Uri.EscapeDataString(stringToSign);
+            byte[] hmac = HMAC_SM3.ComputeHash("BK6gfhrUxxtIqD7ZeTU0LTd1w9SOseih", encodedString, System.Text.Encoding.UTF8);
+            var signature = Convert.ToBase64String(hmac);
+            string result = await helper.GetAsync(string.Format(url), secureRandomString, unixTimestampMs, signature);
+            return result;
+        }
+        /// <summary>
+        /// 获取油机列表
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task GetDispenserList()
+        {
+            HttpHelper helper = new HttpHelper();
+            int currentPage = 7;
+            int pageSize = 20;
+            try
+            {
+                while (true)
+                {
+                    string url = "https://cma-fds.org.cn/api/open/v1/dispenser/list?page=" + currentPage + "&size=" + pageSize + "&expand=supplier&expand=station&expand=nozzleControls&expand=nozzleControls.fuel&expand=vaporRecoveryControl&expand=calculatorMainboard";
+                    var query = "query={\"page\":\"" + currentPage + "\",\"size\":\"" + pageSize + "\",\"expand\":[\"supplier\",\"station\",\"nozzleControls\",\"nozzleControls.fuel\",\"vaporRecoveryControl\",\"calculatorMainboard\"]}";
+                    string result = await GetAsync(url, query);
+                    DispenserDto myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<DispenserDto>(result);
+                    if (myObject == null || myObject.data == null || myObject.data.content.Count() == 0)
+                    {
+                        break;
+                    }
+                    List<StationEntity> list = new List<StationEntity>();
+                    List<int> intList = new List<int>();
+                    for (var i = 0; i < myObject.data.content.Count(); i++)
+                    {
+
+                        DateTime? ProductTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].productTime).UtcDateTime;
+                        DateTime? StartTime = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].startTime).UtcDateTime;
+                        DateTime? InstallationDate = DateTimeOffset.FromUnixTimeMilliseconds(myObject.data.content[i].fixTime).UtcDateTime;
+                        FuelDispenserDto fuelDispenserDto = new FuelDispenserDto
+                        {
+                            Name = myObject.data.content[i].name,
+                            OilCompany = myObject?.data.content[i]?.station?.Company?.Name,
+                            GasStation = myObject.data.content[i].station?.Name,
+                            SerialNumber = myObject.data.content[i].serialNum,
+                            Model = myObject.data.content[i].type,
+                            GunCount = myObject.data.content[i].nozzleControlsTotal, // 例如,假设有4个枪
+                            Manufacturer = myObject.data.content[i].supplier?.Name,//制造商
+                            Description = myObject.data.content[i].supplier?.Description,//加油机厂商
+                            ManufactureDate = ProductTime, // 使用实际的出厂时间
+                            StartupDate = StartTime, // 使用实际的启动时间
+                            InstallationDate = InstallationDate, // 使用实际的安装时间
+                            DeviceStatus = myObject.data.content[i].deviceStatus,
+                            OnlineStatus = myObject.data.content[i].onlineStatus,// 假设在线状态为1,可以根据实际情况设置
+                            AccuracyLevel = myObject.data.content[i].accuracyLevel,//准确度等级
+                            MeasureRang = myObject.data.content[i].measureRang,//测量范围
+                            ModelSpec = myObject.data.content[i].modelSpec,//规格参数
+                            FuelId = myObject.data.content[i].id,
+                            AlarmLevel = myObject.data.content[i].alarmLevel,
+                            Province = myObject.data.content[i].station?.Province,
+                            Phone = "",
+                            Contact = "",
+                            SealNo = myObject.data.content[i].serialNum,
+                            photoIds = "",
+                            VerificationCode = ""
+                        };
+                        await AddNozzle(myObject.data.content[i].nozzleControls, myObject.data.content[i].id, myObject.data.content[i].station);
+                        var fuelDispenser = _fuelDispenserRepository.Where(x => x.FuelId == fuelDispenserDto.FuelId).First();
+                        if (fuelDispenser == null)
+                        {
+                            await _fuelDispenserRepository.InsertAsync(fuelDispenserDto.ToFuelDispenser(fuelDispenserDto));
+                        }
+                        else
+                        {
+                            fuelDispenser.DeviceStatus = fuelDispenserDto.DeviceStatus;
+                            fuelDispenser.OnlineStatus = fuelDispenserDto.OnlineStatus;
+                            fuelDispenser.FuelId = fuelDispenserDto.FuelId;
+                            fuelDispenser.Province = myObject.data.content[i].station?.Province;
+                            await _fuelDispenserRepository.UpdateAsync(fuelDispenser);
+                        }
+                    }
+                    currentPage++;  // 增加当前页数
+
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        /// <summary>
+        /// 添加油枪
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task AddNozzle(DispenserNozzlecontrol[] nozzlecontrols, int FuelId, Station station)
+        {
+            try
+            {
+                List<NozzlecontrolEntity> nozzle = new List<NozzlecontrolEntity>();
+                foreach (var nozzlecontrol in nozzlecontrols)
+                {
+                    DateTime? ProductTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.productTime).UtcDateTime;
+                    DateTime? StartTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.startTime).UtcDateTime;
+                    DateTime? FixTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.fixTime).UtcDateTime;
+                    DateTime? SoldTime = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.soldTime).UtcDateTime;
+                    DateTime? CreatedDate = DateTimeOffset.FromUnixTimeMilliseconds(nozzlecontrol.createdDate).UtcDateTime;
+                    var nozzleinfo = await GetNozzleInfo(nozzlecontrol.id, FuelId, station?.Id, nozzlecontrol.fuel?.fuelName);
+                    nozzle.Add(new NozzlecontrolEntity()
+                    {
+                        NozzleID = nozzlecontrol.id,
+                        FuelId = FuelId,
+                        FuelName = nozzlecontrol.fuel?.fuelName,
+                        Name = nozzlecontrol.name,
+                        MainBoard = nozzlecontrol.mainBoard,
+                        NozzleNo = nozzlecontrol.nozzleNo,
+                        OnlineStatus = nozzlecontrol.onlineStatus,
+                        Hidden = nozzlecontrol.hidden,
+                        DeviceAlarmLevel = nozzlecontrol.deviceAlarmLevel,
+                        IotType = nozzlecontrol.iotType,
+                        ProductTime = ProductTime,
+                        DeviceStatus = nozzlecontrol.deviceStatus,
+                        StartTime = StartTime,
+                        AlarmLevel = nozzlecontrol.alarmLevel,
+                        Value = nozzlecontrol.value,
+                        Dirty = nozzlecontrol.dirty,
+                        Recover = nozzlecontrol.recover,
+                        FixTime = FixTime,
+                        CreatedDate = CreatedDate,
+                        CreatedBy = nozzlecontrol.createdBy,
+                        CheatStatus = nozzlecontrol.cheatStatus,
+                        GasStation = station?.Name,//加油站
+                        SupplierName = "",//供应商名称
+                        CompanyName = "",//公司名称
+                        StationID = station?.Id,
+
+                    });
+                }
+                await _nozzlecontrolRepository.InsertAsync(nozzle);
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+        /// <summary>
+        /// 根据id获取油枪信息
+        /// </summary>
+        /// <param name="id"></param>
+        /// <param name="FuelId"></param>
+        /// <param name="stationid"></param>
+        /// <param name="fuelName"></param>
+        /// <returns></returns>
+        public async Task<NozzleDetails> GetNozzleInfo(int id, int FuelId, int? stationid,string fuelName)
+        {
+            HttpHelper helper = new HttpHelper();
+            string url = "https://cma-fds.org.cn/api/open/v1/nozz/getNozzById?id=" + id + "&expand=supplier&expand=blackBox&expand=encoderControls&expand=meters&expand=vaporRecoveryControl&expand=taxControl&expand=displayControls&expand=valveControls&expand=station";
+            var query = "query={\"id\":\"" + id + "\",\"expand\":[\"supplier\",\"blackBox\",\"encoderControls\",\"meters\",\"vaporRecoveryControl\",\"taxControl\",\"displayControls\",\"valveControls\",\"station\"]}";
+            string result = await GetAsync(url, query);
+            NozzleDetails myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<NozzleDetails>(result);
+
+            //安全监督装置
+            if (myObject.data.blackBox != null)
+            {
+                AddBlackBox(myObject.data.blackBox, FuelId, stationid);
+            }
+
+            //编码器
+            if (myObject.data.encoderControls != null && myObject.data.encoderControls.Count() > 0)
+            {
+                AddEncoderControls(myObject.data.encoderControls, FuelId, stationid, myObject.data.blackBox?.id);
+            }
+
+            //计量器
+            if (myObject.data.meters != null && myObject.data.meters.Count() > 0)
+            {
+                AddMeters(myObject.data.meters, FuelId, stationid);
+            }
+
+            //油气回收控制板
+            if (myObject.data.vaporRecoveryControl != null)
+            {
+                AddVaporRecoveryControl(myObject.data.vaporRecoveryControl, FuelId, stationid, myObject.data.blackBox?.id);
+            }
+
+            //监控微处理器
+            if (myObject.data.taxControl != null)
+            {
+                AddTaxControl(myObject.data.taxControl, FuelId, stationid, myObject.data.blackBox?.id, myObject.data.name, fuelName);
+            }
+
+            //显示屏
+            if (myObject.data.displayControls != null && myObject.data.displayControls.Count() > 0)
+            {
+                AddDisplayControls(myObject.data.displayControls, FuelId, stationid, myObject.data.blackBox?.id, myObject.data.name, fuelName);
+            }
+
+            //智能型控制阀
+            if (myObject.data.valveControls != null && myObject.data.valveControls.Count() > 0)
+            {
+
+            }
+
+            return myObject;
+        }
+        /// <summary>
+        /// 添加显示屏
+        /// </summary>
+        /// <param name="NozzleDetailsTaxcontrol"></param>
+        /// <param name="fuelId"></param>
+        /// <param name="stationId"></param>
+        /// <returns></returns>
+        public async Task AddDisplayControls(NozzleDisplaycontrol[] displaycontrols, int fuelId, int? stationId, int? blackBoxID, string NozzleName, string fuelName)
+        {
+            List<DisplayControlEntity> list = new List<DisplayControlEntity>();
+            foreach (var control in displaycontrols)
+            {
+                DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(control.modifiedDate).UtcDateTime;
+                DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(control.fixTime).UtcDateTime;
+                DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(control.createdDate).UtcDateTime;
+                DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(control.startTime).UtcDateTime;
+                DisplayControlEntity entity = new DisplayControlEntity
+                {
+                    Uuid = control.uuid,
+                    Sn = control.sn,
+                    DispenserSupplierId = control.dispenserSupplierId,  
+                    Dirty = control.dirty,
+                    BlackBoxID = blackBoxID,
+                    StationID = stationId,
+                    SupplierID = null,
+                    OnlineStatus = control.onlineStatus,
+                    DeviceStatus = control.deviceStatus,
+                    DeviceAlarmLevel = control.deviceAlarmLevel,
+                    ProductTime = null,
+                    SoldTime = null,
+                    StartTime = startTime,
+                    FixTime = fixTime,
+                    PhotoId = control.photoId,                          
+                    Alarms = JsonSerializer.Serialize(control.alarms),
+                    LawSwv =null,
+                    LawSwi = null
+                };
+
+                list.Add(entity);
+            }
+            await _displayControlRepository.InsertAsync(list);
+        }
+        /// <summary>
+        /// 添加监控微处理器
+        /// </summary>
+        /// <param name="NozzleDetailsTaxcontrol"></param>
+        /// <param name="fuelId"></param>
+        /// <param name="stationId"></param>
+        /// <returns></returns>
+        public async Task AddTaxControl(NozzleDetailsTaxcontrol taxControl, int fuelId, int? stationId, int? blackBoxID,string NozzleName, string fuelName)
+        {
+            DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.modifiedDate).UtcDateTime;
+            DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.productTime).UtcDateTime;
+            DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.fixTime).UtcDateTime;
+            DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.soldTime).UtcDateTime;
+            DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.createdDate).UtcDateTime;
+            DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(taxControl.startTime).UtcDateTime;
+            TaxControlEntity entity = new TaxControlEntity
+            {
+                // 按类定义逐项赋值
+                MainBoard = taxControl.mainBoard,
+                ResetTimes = taxControl.resetTimes,
+                DeviceAlarmLevel = taxControl.deviceAlarmLevel,
+                OnlineStatus = taxControl.onlineStatus,
+                Uuid = taxControl.uuid,
+                SignVerify = taxControl.signVerify,
+                DeviceStatus = taxControl.deviceStatus,
+                ModifiedBy = taxControl.modifiedBy,
+                AlarmLevel = taxControl.alarmLevel,
+                Id = taxControl.id,
+                DispenserSupplierId = taxControl.dispenserSupplierId,
+                Dirty = taxControl.dirty,
+                Alarms = JsonSerializer.Serialize(taxControl.alarms),
+                NozzleControlName = taxControl.nozzleControlName,
+                FixTime = fixTime,
+                CreatedDate = taxControl.createdDate,     
+                CreatedBy = taxControl.createdBy,
+                ModifiedDate = taxControl.modifiedDate,     
+                FuelID = fuelId,                    
+                Name = NozzleName,
+                NozzleNo = null,
+                CheatStatus = null,
+                Recover = null,
+                Value = null,
+                Hidden = null,
+                TaxAlarms = null,
+                IotType = null,
+                BlackBoxID = blackBoxID,
+                StationID = stationId,
+                FuelName = fuelName,
+                Code = null,
+                ProductTime = productTime,
+                SoldTime = soldTime,
+                StartTime = startTime
+            };
+            await _taxControlRepository.InsertAsync(entity);
+        }
+        /// <summary>
+        /// 添加油气回收控制板
+        /// </summary>
+        /// <param name="vaporrecoverycontrol"></param>
+        /// <param name="fuelId"></param>
+        /// <param name="stationId"></param>
+        /// <returns></returns>
+        public async Task AddVaporRecoveryControl(Vaporrecoverycontrol control, int fuelId, int? stationId,int? blackBoxID)
+        {
+            DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(control.modifiedDate).UtcDateTime;
+            DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(control.productTime).UtcDateTime;
+            DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(control.fixTime).UtcDateTime;
+            DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(control.soldTime).UtcDateTime;
+            DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(control.createdDate).UtcDateTime;
+            DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(control.startTime).UtcDateTime;
+            VaporRecoveryControlEntity entity = new VaporRecoveryControlEntity
+            {
+                // 按类定义逐项赋值
+                Uuid = control.uuid,
+                Swv = null,
+                Hdv = null,
+                SecCpuUuid = null,
+                DispenserSupplierId = control.dispenserSupplierId,  
+                Dirty = control.dirty,
+                Signature = control.signature,
+                SignVerify = control.signVerify,
+                VaporRecoverySoftware = null,
+                BlackBoxID = blackBoxID,                    
+                StationID = stationId,
+                SupplierID = null,                  
+                OnlineStatus = control.onlineStatus,
+                DeviceStatus = control.deviceStatus,
+                DeviceAlarmLevel = control.deviceAlarmLevel,
+                ProductTime = productTime,
+                SoldTime = soldTime,
+                StartTime = startTime,
+                FixTime = fixTime,
+                PhotoId = control.photoId,                       
+                Alarms = JsonSerializer.Serialize(control.alarms),
+                LawSwv = null,
+                LawSwi = null
+            };
+            await _vaporRecoveryControlRepository.InsertAsync(entity);
+
+        }
+        /// <summary>
+        /// 添加计量器
+        /// </summary>
+        /// <param name="nozzleEncodercontrols"></param>
+        /// <param name="fuelId"></param>
+        /// <param name="stationId"></param>
+        /// <param name="blackBoxid"></param>
+        /// <returns></returns>
+        public async Task AddMeters(NozzleMeter[] nozzleMeters, int fuelId, int? stationId)
+        { 
+            List<MeterEntity> list = new List<MeterEntity>();
+            foreach (var meter in nozzleMeters)
+            {
+                DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(meter.modifiedDate).UtcDateTime;
+                DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(meter.fixTime).UtcDateTime;
+                DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(meter.createdDate).UtcDateTime;
+                DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(meter.startTime).UtcDateTime;
+                MeterEntity entity = new MeterEntity
+                {
+                 
+                    Uuid = meter.uuid,
+                    StationID = stationId,         
+                    SupplierID = null,
+                    OnlineStatus = meter.onlineStatus,
+                    DeviceStatus = meter.deviceStatus,
+                    DeviceAlarmLevel = meter.deviceAlarmLevel,
+                    ProductTime = null,
+                    SoldTime = null,
+                    StartTime = startTime,
+                    PhotoId = meter.photoId,            
+                    FixTime = fixTime,
+                    Alarms = JsonSerializer.Serialize(meter.alarms),
+                    id = meter.id,
+                    FuelId = fuelId,
+                };
+                list.Add(entity);
+            }
+            await _meterRepository.InsertAsync(list);
+        }
+        /// <summary>
+        /// 添加编码器
+        /// </summary>
+        /// <param name="nozzleEncodercontrols"></param>
+        /// <param name="fuelId"></param>
+        /// <param name="stationId"></param>
+        /// <param name="blackBoxid"></param>
+        /// <returns></returns>
+        public async Task AddEncoderControls(NozzleEncodercontrol[] nozzleEncodercontrols, int fuelId, int? stationId,int? blackBoxid)
+        {
+            List<EncoderControlsEntity> list = new List<EncoderControlsEntity>();
+            foreach (var encoderControls in nozzleEncodercontrols)
+            {
+                DateTime? onlineStatusDate = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.onlineStatusDate).UtcDateTime;
+                DateTime? modifiedDate = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.modifiedDate).UtcDateTime;
+                DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.productTime).UtcDateTime;
+                DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.fixTime).UtcDateTime;
+                DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.soldTime).UtcDateTime;
+                DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.createdDate).UtcDateTime;
+                DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(encoderControls.startTime).UtcDateTime;
+                EncoderControlsEntity entity = new EncoderControlsEntity
+                {
+                    // 按类定义逐项赋值
+                    DeviceAlarmLevel = encoderControls.deviceAlarmLevel,
+                    OnlineStatus = encoderControls.onlineStatus,
+                    SignVerify = encoderControls.signVerify,
+                    Uuid = encoderControls.uuid,
+                    DeviceStatus = encoderControls.deviceStatus,
+                    SupplierID = null,
+                    ModifiedBy = encoderControls.modifiedBy,
+                    StartTime = startTime,
+                    AlarmLevel = encoderControls.alarmLevel,
+                    Id = encoderControls.id,
+                    DispenserSupplierId = encoderControls.dispenserSupplierId,
+                    Dirty = encoderControls.dirty,
+                    FixTime = fixTime,
+                    AlarmDetail = JsonSerializer.Serialize(encoderControls.alarmDetail),
+                    CreatedDate = createdDate,
+                    CreatedBy = encoderControls.createdBy,
+                    ModifiedDate = modifiedDate,
+                    CpuUuid = null,
+                    SN = encoderControls.sn,
+                    Hdv = encoderControls.hdv,
+                    Signature = encoderControls.signature,
+                    EncoderSoftware = null,
+                    BlackBoxID = blackBoxid,
+                    StationID = stationId,
+                    MeterID = null,
+                    ProductTime = productTime,
+                    SoldTime = soldTime,
+                    photoId = encoderControls.photoId,       
+                    Alarms = JsonSerializer.Serialize(encoderControls.alarms),
+                    lawSwv = encoderControls.lawSwv,       
+                    lawSwi = encoderControls.lawSwi ,
+                    FuelId = fuelId
+                };
+                list.Add(entity);
+            }
+            await _encoderControlsRepository.InsertAsync(list);
+        }
+        /// <summary>
+        /// 添加安全装置
+        /// </summary>
+        /// <param name="blackbox"></param>
+        /// <param name="fuelId"></param>
+        /// <param name="stationId"></param>
+        /// <returns></returns>
+        public async Task AddBlackBox(NozzleBlackbox blackbox, int fuelId, int? stationId)
+        {
+            try
+            {
+                DateTime? onlineStatusDate = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.onlineStatusDate).UtcDateTime;
+                DateTime? alarmTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.alarmTime).UtcDateTime;
+                DateTime? productTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.productTime).UtcDateTime;
+                DateTime? fixTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.fixTime).UtcDateTime;
+                DateTime? soldTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.soldTime).UtcDateTime;
+                DateTime? createdDate = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.createdDate).UtcDateTime;
+                DateTime? registerUpdateTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.registerUpdateTime).UtcDateTime;
+                DateTime? startTime = DateTimeOffset.FromUnixTimeMilliseconds(blackbox.startTime).UtcDateTime;
+
+                BlackBoxEntity entity = new BlackBoxEntity
+                {
+                    // 按你提供的完整类结构逐项赋值
+                    Alarming = blackbox.alarming,
+                    ResetTimes = blackbox.resetTimes,
+                    OnlineStatusDate = onlineStatusDate,
+                    DeviceAlarmLevel = blackbox.deviceAlarmLevel,
+                    OnlineStatus = blackbox.onlineStatus,
+                    ProductTime = productTime,
+                    Uuid = blackbox.uuid,
+                    SignVerify = blackbox.signVerify,
+                    DeviceStatus = blackbox.deviceStatus,
+                    FuelID = fuelId,
+                    QrCode = blackbox.qrCode,
+                    ModifiedBy = blackbox.modifiedBy,
+                    AlarmLevel = blackbox.alarmLevel,
+                    Id = blackbox.id,
+                    Filtering = blackbox.filtering,
+                    DispenserSupplierId = blackbox.dispenserSupplierId,
+                    TaxType = blackbox.taxType,
+                    NozzleControlName = blackbox.nozzleControlName,
+                    FixTime = fixTime,
+                    SoldTime = soldTime,
+                    AlarmDetail = JsonSerializer.Serialize(blackbox.alarmDetail),
+                    CreatedDate = createdDate,
+                    CreatedBy = blackbox.createdBy,
+                    ModifiedDate = blackbox.modifiedDate,
+                    OfflineAlarmLevel = blackbox.offlineAlarmLevel,
+                    Swv = blackbox.swv,
+                    hdv = blackbox.hdv,
+                    AlarmTime = alarmTime,
+                    Imsi = blackbox.imsi,
+                    Iccid = blackbox.iccid,
+                    CpuUuid = blackbox.cpuUuid,
+                    RegisterUpdateTime = registerUpdateTime,
+                    SnapshotJson = JsonSerializer.Serialize(blackbox.snapshot2),
+                    Xattrs = JsonSerializer.Serialize(blackbox.xattrs),
+                    IotType = blackbox.iotType,
+                    StationID = stationId,
+                    supplierID = null,
+                    FactorySupplierID = null,
+                    StartTime = startTime,
+                    PhotoId = blackbox.photoId,
+                    Alarms = JsonSerializer.Serialize(blackbox.alarms),
+                    LawSwv = null,
+                    LawSwi = null,
+                };
+
+
+                await _blackBoxRepository.InsertAsync(entity);
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        static string GenerateSecureRandomString(int length)
+        {
+            const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+            StringBuilder sb = new StringBuilder();
+            byte[] randomBytes = new byte[length];
+
+            using (var rng = RandomNumberGenerator.Create())
+            {
+                rng.GetBytes(randomBytes); // 生成随机字节
+            }
+
+            for (int i = 0; i < length; i++)
+            {
+                int index = randomBytes[i] % chars.Length; // 将字节映射到字符范围
+                sb.Append(chars[index]);
+            }
+
+            return sb.ToString();
+        }
     }
 }

Some files were not shown because too many files changed in this diff