Browse Source

协会部件列表、部件详情

DOVER-GLOBAL\11047086 1 year ago
parent
commit
502d266c95
14 changed files with 828 additions and 23 deletions
  1. 47 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Handlers/HttpHelper.cs
  2. 50 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/AlarmHistoryEntity.cs
  3. 80 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/AlarmHistoryDto.cs
  4. 17 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/FuelDispenserDto.cs
  5. 102 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/LifecycleContentDto.cs
  6. 35 9
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/SupplierDto.cs
  7. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/FuelDispenserEntity.cs
  8. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IAlarmHistoryRepository.cs
  9. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ILifeCycleRepository.cs
  10. 37 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/LifeCycle.cs
  11. 180 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.xml
  12. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/AlarmHistoryRepository.cs
  13. 19 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/LifeCycleRepository.cs
  14. 203 14
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Association/AssociationService.cs

+ 47 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Handlers/HttpHelper.cs

@@ -59,7 +59,54 @@ namespace IMES_Middleware_Platform.Api.Core.Handlers
             }
 
         }
+        public async Task<string> GetLifecycleAsync(string baseUrl, string accessToken, int id, int size = 20, int page = 0)
+        {
+            using (HttpClient httpClient = new HttpClient())
+            {
+                httpClient.BaseAddress = new Uri(baseUrl);
+                httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");
+                // _httpClient.DefaultRequestHeaders.Add("Cookie", cookie);
+
+                string endpoint = $"?expand=createdBy.name&expand=createdBy.id&page={page}&size={size}&sort=id,desc&search=modelId:{id},type:Dispenser,content.deviceStatus<>null";
+
+                HttpResponseMessage response = await httpClient.GetAsync(endpoint);
+                response.EnsureSuccessStatusCode();
+                if (response.IsSuccessStatusCode)
+                {
+                    return await response.Content.ReadAsStringAsync();
+                }
+                else
+                {
+                    Console.WriteLine($"Error: {response.StatusCode} - {response.ReasonPhrase}");
+                    return null;
+                }
+            }
+
+        }
+        public async Task<string> GetAlarmHistoryAsync(string baseUrl, string accessToken, int id, int size = 20, int page = 0)
+        {
+            using (HttpClient httpClient = new HttpClient())
+            {
+                httpClient.BaseAddress = new Uri(baseUrl);
+                httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");
+                // _httpClient.DefaultRequestHeaders.Add("Cookie", cookie);
+                //https://cma-fds.org.cn/api/v1/notices?expand=station&expand=dispenser&expand=alarm&page=0&size=5&sort=id,desc&search=dispenser.id:34
+                string endpoint = $"?expand=station&expand=dispenser&expand=alarm&page={page}&size={size}&sort=id,desc&search=dispenser.id:{id}";
 
+                HttpResponseMessage response = await httpClient.GetAsync(endpoint);
+                response.EnsureSuccessStatusCode();
+                if (response.IsSuccessStatusCode)
+                {
+                    return await response.Content.ReadAsStringAsync();
+                }
+                else
+                {
+                    Console.WriteLine($"Error: {response.StatusCode} - {response.ReasonPhrase}");
+                    return null;
+                }
+            }
+
+        }
 
         public async Task<string> PostAsync(string url, HttpContent content)
         {

+ 50 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/AlarmHistoryEntity.cs

@@ -0,0 +1,50 @@
+using FreeSql.DataAnnotations;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 报警历史
+    /// </summary>
+    [Table(Name = "AlarmHistory")]
+    public class AlarmHistoryEntity : EntityAdd
+    {
+        /// <summary>
+        /// 油机ID
+        /// </summary>
+        public int FuelId { get; set; }
+        
+        public DateTime? CreatedDate { get; set; }
+        /// <summary>
+        /// 加油站
+        /// </summary>
+        public string GasStation { get; set; }
+        /// <summary>
+        /// 油机号
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 序列号
+        /// </summary>
+        public string SerialNumber { get; set; }
+        /// <summary>
+        /// 报警来源
+        /// </summary>
+        public string AlarmSource { get; set; }
+        /// <summary>
+        /// 报警类型
+        /// </summary>
+        public string AlarmType { get; set; }
+        /// <summary>
+        /// 报警描述
+        /// </summary>
+        public string AlarmDescription { get; set; }
+        public int AlarmHistoryID { get; set; }
+    }
+}

+ 80 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/AlarmHistoryDto.cs

@@ -0,0 +1,80 @@
+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 AlarmHistoryDto
+    {
+        /// <summary>
+        /// 油机ID
+        /// </summary>
+        public int FuelId { get; set; }
+
+        public DateTime? CreatedDate { get; set; }
+        /// <summary>
+        /// 加油站
+        /// </summary>
+        public string GasStation { get; set; }
+        /// <summary>
+        /// 油机号
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 序列号
+        /// </summary>
+        public string SerialNumber { get; set; }
+        /// <summary>
+        /// 报警来源
+        /// </summary>
+        public string AlarmSource { get; set; }
+        /// <summary>
+        /// 报警类型
+        /// </summary>
+        public string AlarmType { get; set; }
+        /// <summary>
+        /// 报警描述
+        /// </summary>
+        public string AlarmDescription { get; set; }
+        /// <summary>
+        ///  
+        /// </summary>
+        public int AlarmHistoryID { get; set; }
+        public AlarmHistoryEntity ToFuelDispenser(AlarmHistoryDto gasPump)
+        {
+            return new AlarmHistoryEntity()
+            {
+                FuelId = gasPump.FuelId,
+                CreatedDate = gasPump.CreatedDate,
+                GasStation = gasPump.GasStation,
+                SerialNumber = gasPump.SerialNumber,
+                Name = gasPump.Name,
+                AlarmSource = gasPump.AlarmSource,
+                AlarmType = gasPump.AlarmType,
+                AlarmDescription = gasPump.AlarmDescription,
+                AlarmHistoryID = gasPump.AlarmHistoryID
+            };
+        }
+        public static List<AlarmHistoryEntity> ToFuelDispenserList(List<AlarmHistoryDto> gasPump)
+        {
+            List<AlarmHistoryEntity> list = new List<AlarmHistoryEntity>();
+            foreach (var i in gasPump)
+            {
+                list.Add(new AlarmHistoryEntity {
+                    FuelId = i.FuelId,
+                    CreatedDate = i.CreatedDate,
+                    GasStation = i.GasStation,
+                    SerialNumber = i.SerialNumber,
+                    Name = i.Name,
+                    AlarmSource = i.AlarmSource,
+                    AlarmType = i.AlarmType,
+                    AlarmDescription = i.AlarmDescription,
+                    AlarmHistoryID = i.AlarmHistoryID
+                });
+            }
+            return list;
+        }
+    }
+}

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

@@ -12,6 +12,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         /// 加油机名称
         /// </summary>
         public string Name { get; set; }
+        public int FuelId { get; set; }
 
         /// <summary>
         /// 石油公司
@@ -67,6 +68,18 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         /// 在线状态
         /// </summary>
         public string OnlineStatus { get; set; }
+        /// <summary>
+        /// 测量范围
+        /// </summary>
+        public string MeasureRang { get; set; }
+        /// <summary>
+        /// 准确度等级
+        /// </summary>
+        public string AccuracyLevel { get; set; }
+        /// <summary>
+        /// 规格参数
+        /// </summary>
+        public string ModelSpec { get; set; }
         public FuelDispenserEntity ToFuelDispenser(FuelDispenserDto gasPump)
         {
             return new FuelDispenserEntity()
@@ -83,6 +96,10 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
                 InstallationDate = gasPump.InstallationDate,
                 DeviceStatus = gasPump.DeviceStatus,
                 OnlineStatus = gasPump.OnlineStatus,
+                MeasureRang = gasPump.MeasureRang,
+                AccuracyLevel = gasPump.AccuracyLevel,
+                ModelSpec = gasPump.ModelSpec,
+                FuelId = gasPump.FuelId,
             };
         }
     }

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

@@ -0,0 +1,102 @@
+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 LifecycleContent
+    {
+        public int ModelId { get; set; }
+        public string Ip { get; set; }
+        public string Type { get; set; }
+        public string Url { get; set; }
+        public long? CreatedDate { get; set; }
+        public CreatedBy CreatedBy { get; set; }
+        public string RequestId { get; set; }
+        public long ModifiedDate { get; set; }
+        public int ModifiedBy { get; set; }
+        public int Id { get; set; }
+        public string Category { get; set; }
+        public DispenserContentDetails Content { get; set; }
+    }
+
+    public class CreatedBy
+    {
+        public string Name { get; set; }
+        public int? Id { get; set; }
+    }
+
+    public class LifecycleRoot
+    {
+        public List<LifecycleContent> Content { get; set; }
+        public Pageable Pageable { get; set; }
+        public int TotalElements { get; set; }
+        public int TotalPages { get; set; }
+        public Sort Sort { get; set; }
+        public int NumberOfElements { get; set; }
+        public int Size { get; set; }
+        public int Number { get; set; }
+    }
+    public class Sort
+    {
+    }
+
+    public class DispenserContentDetails
+    {
+        public object DeviceStatus { get; set; }
+
+    }
+    public class LifecycleDto
+    {
+        /// <summary>
+        /// 油机ID
+        /// </summary>
+        public int FuelId { get; set; }
+        public DateTime? CreatedDate { get; set; }
+        /// <summary>
+        /// 操作人
+        /// </summary>
+        public string Operator { get; set; }  // 操作人
+        /// <summary>
+        /// 操作人ID
+        /// </summary>
+        public int? OperatorID { get; set; }   // 操作人ID
+        /// <summary>
+        /// 操作
+        /// </summary>
+        public string Operation { get; set; } // 操作
+        public int LifeCycleID { get; set; }
+        public LifeCycle ToFuelDispenser(LifecycleDto lifecycleDto)
+        {
+            return new LifeCycle()
+            {
+                CreatedDate = lifecycleDto.CreatedDate,
+                Operator = lifecycleDto.Operator,
+                OperatorID = lifecycleDto.OperatorID,
+                Operation = lifecycleDto.Operation,
+                FuelId = lifecycleDto.FuelId,
+                LifeCycleID = lifecycleDto.LifeCycleID
+            };
+        }
+        public static List<LifeCycle> ToFuelDispenserList(List<LifecycleDto> gasPump)
+        {
+            List<LifeCycle> list = new List<LifeCycle>();
+            foreach (var i in gasPump)
+            {
+                list.Add(new LifeCycle
+                {
+                    FuelId = i.FuelId,
+                    CreatedDate = i.CreatedDate,
+                    Operator = i.Operator,
+                    OperatorID = i.OperatorID,
+                    Operation = i.Operation,
+                    LifeCycleID = i.LifeCycleID
+                });
+            }
+            return list;
+        }
+    }
+}

+ 35 - 9
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/SupplierDto.cs

@@ -20,7 +20,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public string RegisterNo { get; set; }
         public long? CreatedDate { get; set; }
         public List<string> DeviceTypes { get; set; }
-        public int CreatedBy { get; set; }
+        public int? CreatedBy { get; set; }
         public object Phone { get; set; }
         public object Contact { get; set; }
         public string Name { get; set; }
@@ -41,7 +41,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public object RegisterNo { get; set; }
         public long? CreatedDate { get; set; }
         public List<object> DeviceTypes { get; set; }
-        public int CreatedBy { get; set; }
+        public int? CreatedBy { get; set; }
         public object Phone { get; set; }
         public object Contact { get; set; }
         public string Name { get; set; }//石油公司
@@ -79,7 +79,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public int DispensersTotal { get; set; }
         public long? CreatedDate { get; set; }
         public string Phone { get; set; }
-        public int CreatedBy { get; set; }
+        public int? CreatedBy { get; set; }
         public string District { get; set; }
         public string Name { get; set; }//加油站
         public long? ModifiedDate { get; set; }
@@ -90,14 +90,14 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
     public class Content
     {
         public object LastInspectTime { get; set; }
-        public string MeasureRang { get; set; }
+        public string MeasureRang { get; set; }//测量范围
         public bool Alarming { get; set; }
         public int DeviceAlarmLevel { get; set; }
         public string OnlineStatus { get; set; }//在线状态 online:在线  offline : 离线
         public long? ProductTime { get; set; }//出厂时间
 
         public string Type { get; set; }//加油机机型
-        public string AccuracyLevel { get; set; }
+        public string AccuracyLevel { get; set; }//准确度等级
         public string Uuid { get; set; }
         public string DeviceStatus { get; set; }//设备状态  enable:启用   register:备案  disable:维修  factory:出厂注册
         public long? LockTime { get; set; }
@@ -111,8 +111,8 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
 
         public int AlarmLevel { get; set; }
         public int Id { get; set; }
-        public string ModelSpec { get; set; }
-        public string SerialNum { get; set; }//序列号
+        public string ModelSpec { get; set; }//规格参数
+        public string SerialNum { get; set; }//序列号     出厂编号
         public bool Test { get; set; }
         public List<object> SealNo { get; set; }
         public List<object> Alarms { get; set; }
@@ -125,7 +125,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public object VerificationCode { get; set; }
         public long? CreatedDate { get; set; }
         public object Phone { get; set; }
-        public int CreatedBy { get; set; }
+        public int? CreatedBy { get; set; }
         public bool Repairing { get; set; }
         public string Name { get; set; } //名称
         public long? ModifiedDate { get; set; }
@@ -133,7 +133,16 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
         public int NoticesTotal { get; set; }
         public int NozzleControlsTotal { get; set; }//加油枪数量
     }
-
+    public class Alarm
+    {
+        public int code { get; set; }
+        public string typeDisplay { get; set; }
+        public int level { get; set; }
+        public string description { get; set; }
+        public int _id { get; set; }
+        public string type { get; set; }
+        public string device { get; set; }
+    }
     public class Pageable
     {
         public object Sort { get; set; }
@@ -150,9 +159,26 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
 
     public class Root
     {
+        public string origin { get; set; }//blackBox :安全装置      platform :云平台
         public List<Content> Content { get; set; }
         public Pageable Pageable { get; set; }
         public Summary Summary { get; set; }
+        public Station Station { get; set; }
+        public Alarm Alarm { get; set; }
+        public Content dispenser { get; set; }
+        public int TotalElements { get; set; }
+        public int TotalPages { get; set; }
+        public object Sort { get; set; }
+        public int NumberOfElements { get; set; }
+        public int Size { get; set; }
+        public int Number { get; set; }
+        public long? createdDate { get; set; }
+        public int id { get; set; }
+    }
+    public class AlarmHistoryRoot
+    { 
+        public List<Root> Content { get; set; }
+        public Pageable Pageable { get; set; }
         public int TotalElements { get; set; }
         public int TotalPages { get; set; }
         public object Sort { get; set; }

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

@@ -16,6 +16,7 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 加油机名称
         /// </summary>
         public string Name { get; set; }
+        public int  FuelId { get; set; }
 
         /// <summary>
         /// 石油公司
@@ -71,6 +72,18 @@ namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
         /// 在线状态
         /// </summary>
         public string OnlineStatus { get; set; }
+        /// <summary>
+        /// 测量范围
+        /// </summary>
+        public string MeasureRang { get; set; }
+        /// <summary>
+        /// 准确度等级
+        /// </summary>
+        public string AccuracyLevel { get; set; }
+        /// <summary>
+        /// 规格参数
+        /// </summary>
+        public string ModelSpec { get; set; }
 
     }
 }

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IAlarmHistoryRepository.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 IAlarmHistoryRepository : IRepositoryBase<AlarmHistoryEntity>
+    {
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/ILifeCycleRepository.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 ILifeCycleRepository : IRepositoryBase<LifeCycle>
+    {
+    }
+}

+ 37 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/LifeCycle.cs

@@ -0,0 +1,37 @@
+using FreeSql.DataAnnotations;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    /// <summary>
+    /// 生命周期
+    /// </summary>
+    [Table(Name = "LifeCycle")]
+    public class LifeCycle : EntityAdd
+    {
+        /// <summary>
+        /// 油机ID
+        /// </summary>
+        public int FuelId { get; set; }
+        public DateTime? CreatedDate { get; set; }
+        /// <summary>
+        /// 操作人
+        /// </summary>
+        public string Operator { get; set; }  // 操作人
+        /// <summary>
+        /// 操作人ID
+        /// </summary>
+        public int? OperatorID { get; set; }   // 操作人ID
+        /// <summary>
+        /// 操作
+        /// </summary>
+        public string Operation { get; set; } // 操作
+        public int LifeCycleID { get; set; }
+    }
+}

+ 180 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.xml

@@ -227,6 +227,86 @@
             备注
             </summary>
         </member>
+        <member name="T:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity">
+            <summary>
+            报警历史
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity.FuelId">
+            <summary>
+            油机ID
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity.GasStation">
+            <summary>
+            加油站
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity.Name">
+            <summary>
+            油机号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity.SerialNumber">
+            <summary>
+            序列号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity.AlarmSource">
+            <summary>
+            报警来源
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity.AlarmType">
+            <summary>
+            报警类型
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.AlarmHistoryEntity.AlarmDescription">
+            <summary>
+            报警描述
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.FuelId">
+            <summary>
+            油机ID
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.GasStation">
+            <summary>
+            加油站
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.Name">
+            <summary>
+            油机号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.SerialNumber">
+            <summary>
+            序列号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.AlarmSource">
+            <summary>
+            报警来源
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.AlarmType">
+            <summary>
+            报警类型
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.AlarmDescription">
+            <summary>
+            报警描述
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.AlarmHistoryDto.AlarmHistoryID">
+            <summary>
+             
+            </summary>
+        </member>
         <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.Name">
             <summary>
             加油机名称
@@ -287,6 +367,41 @@
             在线状态
             </summary>
         </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.MeasureRang">
+            <summary>
+            测量范围
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.AccuracyLevel">
+            <summary>
+            准确度等级
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.ModelSpec">
+            <summary>
+            规格参数
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.LifecycleDto.FuelId">
+            <summary>
+            油机ID
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.LifecycleDto.Operator">
+            <summary>
+            操作人
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.LifecycleDto.OperatorID">
+            <summary>
+            操作人ID
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.LifecycleDto.Operation">
+            <summary>
+            操作
+            </summary>
+        </member>
         <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.Name">
             <summary>
             加油机名称
@@ -347,6 +462,46 @@
             在线状态
             </summary>
         </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.MeasureRang">
+            <summary>
+            测量范围
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.AccuracyLevel">
+            <summary>
+            准确度等级
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.ModelSpec">
+            <summary>
+            规格参数
+            </summary>
+        </member>
+        <member name="T:IMES_Middleware_Platform.Api.Domain.FuelDispenser.LifeCycle">
+            <summary>
+            生命周期
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.LifeCycle.FuelId">
+            <summary>
+            油机ID
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.LifeCycle.Operator">
+            <summary>
+            操作人
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.LifeCycle.OperatorID">
+            <summary>
+            操作人ID
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.LifeCycle.Operation">
+            <summary>
+            操作
+            </summary>
+        </member>
         <member name="T:IMES_Middleware_Platform.Api.Domain.Module.Dto.ModuleGetPageDto">
             <summary>
             模块分页
@@ -409,6 +564,31 @@
             <param name="user"></param>
             <returns></returns>
         </member>
+        <member name="M:IMES_Middleware_Platform.Api.Services.Association.AssociationService.GetAllDataAsync(System.String,System.String,System.String,System.String,System.String,System.Int32)">
+            <summary>
+            电子档案
+            </summary>
+            <param name="postUrl"></param>
+            <param name="token"></param>
+            <param name="expand1"></param>
+            <param name="expand2"></param>
+            <param name="search"></param>
+            <param name="pageSize"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Services.Association.AssociationService.GetLifecycleAsync(System.Int32)">
+            <summary>
+            获取生命周期
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Services.Association.AssociationService.GetAlarmHistoryAsync(System.Int32)">
+            <summary>
+            获取报警历史
+            </summary>
+            <param name="id"></param>
+            <returns></returns>
+        </member>
         <member name="T:IMES_Middleware_Platform.Api.Services.Association.BaseQueryDto">
             <summary>
             协会基础父类

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/AlarmHistoryRepository.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 AlarmHistoryRepository : AppRepositoryBase<AlarmHistoryEntity>, IAlarmHistoryRepository
+    {
+        public AlarmHistoryRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 19 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/LifeCycleRepository.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 LifeCycleRepository : AppRepositoryBase<LifeCycle>, ILifeCycleRepository
+    {
+        public LifeCycleRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 203 - 14
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Association/AssociationService.cs

@@ -8,6 +8,7 @@ using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
 using IMES_Middleware_Platform.Api.Services.Module;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Configuration;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -34,11 +35,15 @@ namespace IMES_Middleware_Platform.Api.Services.Association
     {
         private readonly IConfiguration _configuration;
         public readonly IFuelDispenserRepository _fuelDispenserRepository;
+        public readonly IAlarmHistoryRepository _alarmHistoryRepository;
+        public readonly ILifeCycleRepository _lifeCycleRepository;
         static string token = string.Empty;
-        public AssociationService(IConfiguration configuration, IFuelDispenserRepository fuelDispenserRepository)
+        public AssociationService(IConfiguration configuration, IFuelDispenserRepository fuelDispenserRepository, IAlarmHistoryRepository alarmHistoryRepository, ILifeCycleRepository lifeCycleRepository)
         {
             _configuration = configuration;
             _fuelDispenserRepository = fuelDispenserRepository;
+            _alarmHistoryRepository = alarmHistoryRepository;
+            _lifeCycleRepository = lifeCycleRepository;
         }
 
         public Task<LocalApiDto> GetAllStation(string areaType, string search)
@@ -54,21 +59,11 @@ namespace IMES_Middleware_Platform.Api.Services.Association
         [HttpPost]
         public async Task GetDispensersAsync(string expand1, string expand2, string search)
         {
-
             HttpHelper helper = new HttpHelper();
-
             string postUrl = "https://cma-fds.org.cn/api/v1/dispensers";
             var size = 20;
             var page = 0;
-            //string result = await helper.GetDispensersDataAsync(postUrl, token, "", expand1, expand2, search, size, page);// "supplier", "station"
-            //Root myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(result);
-            //int totalRequests = myObject != null ? (int)Math.Ceiling((double)myObject.TotalElements / size) : 0;
             await GetAllDataAsync(postUrl, token, expand1, expand2, search, size);
-            //if (myObject != null)
-            //{
-            //    await AddFuelDispenserAsync(myObject);
-            //}
-            //return myObject;
         }
         [HttpPost]
         public async Task<UserResponseDto> GetTokenAsync(UserLogin user)
@@ -94,6 +89,16 @@ namespace IMES_Middleware_Platform.Api.Services.Association
             token = myObject.Token;
             return myObject;
         }
+        /// <summary>
+        /// 电子档案
+        /// </summary>
+        /// <param name="postUrl"></param>
+        /// <param name="token"></param>
+        /// <param name="expand1"></param>
+        /// <param name="expand2"></param>
+        /// <param name="search"></param>
+        /// <param name="pageSize"></param>
+        /// <returns></returns>
         public async Task GetAllDataAsync(string postUrl, string token, string expand1, string expand2, string search, int pageSize)
         {
             int currentPage = 0;
@@ -108,6 +113,7 @@ namespace IMES_Middleware_Platform.Api.Services.Association
                 {
                     break;
                 }
+
                 await AddFuelDispenserAsync(myObject);
 
                 // 增加当前页数
@@ -115,6 +121,184 @@ namespace IMES_Middleware_Platform.Api.Services.Association
             }
 
         }
+        /// <summary>
+        /// 获取生命周期
+        /// </summary>
+        /// <returns></returns>
+        public async Task GetLifecycleAsync(int id)
+        {
+            try
+            {
+                string jsonString = @"
+        [
+            {
+                ""启用"": [
+                    [""disable"", ""enable""],
+                    [""bind"", ""enable""]
+                ]
+            },
+            {
+                ""维修"": [
+                    [""enable"", ""disable""],
+                    [""bind"", ""disable""]
+                ]
+            },
+            {
+                ""加油站注册"": [
+                    [""factory"", ""bind""]
+                ]
+            },
+            {
+                ""出厂注册"": [
+                    [""register"", ""factory""],
+                    [""bind"", ""factory""]
+                ]
+            }
+        ]";
+                JArray jsonArray = JArray.Parse(jsonString);
+                int currentPage = 0;
+                int pageSize = 20;
+                HttpHelper helper = new HttpHelper();
+                List<LifecycleDto> list = new List<LifecycleDto>();
+                List<int> intList = new List<int>();
+                while (true)
+                {
+                    string result = await helper.GetLifecycleAsync("https://cma-fds.org.cn/api/v1/audits?", token, id, pageSize, currentPage);
+                    LifecycleRoot myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<LifecycleRoot>(result);
+                    if (myObject == null || myObject.Content == null || myObject.Content.Count == 0)
+                    {
+                        break;
+                    }
+                    for (var i = 0; i < myObject.Content.Count(); i++)
+                    {
+                        DateTime? CreatedDate = myObject.Content[i].CreatedDate.HasValue
+      ? DateTimeOffset.FromUnixTimeMilliseconds(myObject.Content[i].CreatedDate.Value).UtcDateTime
+      : (DateTime?)null;
+                        var device = myObject.Content[i].Content.DeviceStatus;
+                        string keyName = string.Empty;
+                        if (device is string)
+                        {
+                            // 处理字符串类型
+                            keyName = ((string)device) == "register" ? "备案":"";
+                            // 进行相应的操作
+                        }
+                        else if (device is JArray)
+                        {
+                            // 处理字符串数组类型
+                            JArray statusArray = (JArray)device;
+                            foreach (JObject item in jsonArray)
+                            {
+                                foreach (var kvp in item)
+                                {
+                                    //keyName = kvp.Key;
+
+                                    JArray innerArray = (JArray)kvp.Value;
+                                    foreach (JArray subArray in innerArray)
+                                    {
+                                        // Compare each element in the subArray with statusArray
+                                        bool isEqual = JArray.DeepEquals(subArray, statusArray);
+                                        if (isEqual)
+                                        {
+                                            keyName = kvp.Key;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        LifecycleDto lifecycleDto = new LifecycleDto()
+                        {
+                            CreatedDate = CreatedDate,
+                            FuelId = id,
+                            Operation = keyName,
+                            Operator = myObject.Content[i].CreatedBy.Name,
+                            OperatorID = myObject.Content[i].CreatedBy.Id,
+                            LifeCycleID = myObject.Content[i].Id
+                        };
+                        list.Add(lifecycleDto);
+                        intList.Add(lifecycleDto.LifeCycleID);
+                    }
+                    // 增加当前页数
+                    currentPage++;
+                }
+                var lifeCycle = _lifeCycleRepository.Where(x => intList.Contains(x.LifeCycleID)).ToList();
+                lifeCycle.ForEach(a =>
+                {
+                    list.RemoveAll(e => e.LifeCycleID == a.LifeCycleID);
+                });
+                if (list != null)
+                {
+                    await _lifeCycleRepository.InsertAsync(LifecycleDto.ToFuelDispenserList(list));
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+        /// <summary>
+        /// 获取报警历史
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task GetAlarmHistoryAsync(int id)
+        {
+            try
+            {
+
+                int currentPage = 0;
+                int pageSize = 20;
+                HttpHelper helper = new HttpHelper();
+                List<int> intList = new List<int>();
+                List<AlarmHistoryDto> historyDtos = new List<AlarmHistoryDto>();
+                while (true)
+                {
+                    string result = await helper.GetAlarmHistoryAsync("https://cma-fds.org.cn/api/v1/notices?", token, id, pageSize, currentPage);
+                    AlarmHistoryRoot myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<AlarmHistoryRoot>(result);
+                    if (myObject == null || myObject.Content == null || myObject.Content.Count == 0)
+                    {
+                        break;
+                    }
+                    for (var i = 0; i < myObject.Content.Count(); i++)
+                    {
+                        string origin = myObject.Content[i].origin;
+                        DateTime? CreatedDate = myObject.Content[i].createdDate.HasValue
+            ? DateTimeOffset.FromUnixTimeMilliseconds(myObject.Content[i].createdDate.Value).UtcDateTime
+            : (DateTime?)null;
+                        AlarmHistoryDto alarmHistoryDto = new AlarmHistoryDto
+                        {
+                            FuelId = id,
+                            GasStation = myObject.Content[i].Station?.Name,
+                            AlarmDescription = myObject.Content[i].Alarm?.description,
+                            AlarmSource = origin == "blackBox" ? "安全装置" : origin == "platform" ? "云平台" : null,
+                            SerialNumber = myObject.Content[i].dispenser.SerialNum,
+                            AlarmType = myObject.Content[i].Alarm?.type,
+                            CreatedDate = CreatedDate,
+                            Name = myObject.Content[i].dispenser.Name,
+                            AlarmHistoryID = myObject.Content[i].id
+                        };
+                        historyDtos.Add(alarmHistoryDto);
+                        intList.Add(alarmHistoryDto.AlarmHistoryID);
+
+                    }
+                    // 增加当前页数
+                    currentPage++;
+                }
+                var alarmHistory = _alarmHistoryRepository.Where(x => intList.Contains(x.AlarmHistoryID)).ToList();
+                alarmHistory.ForEach(a =>
+                {
+                    historyDtos.RemoveAll(e => e.AlarmHistoryID == a.AlarmHistoryID);
+                });
+                if (historyDtos != null)
+                {
+
+                    await _alarmHistoryRepository.InsertAsync(AlarmHistoryDto.ToFuelDispenserList(historyDtos));
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
         public async Task RepeatOperation(int numberOfTimes)
         {
             for (int i = 0; i < numberOfTimes; i++)
@@ -128,7 +312,8 @@ namespace IMES_Middleware_Platform.Api.Services.Association
         {
             for (var i = 0; i < myObject.Content.Count(); i++)
             {
-
+                await GetLifecycleAsync(myObject.Content[i].Id);
+                await GetAlarmHistoryAsync(myObject.Content[i].Id);
                 DateTime? ProductTime = myObject.Content[i].ProductTime.HasValue
                     ? DateTimeOffset.FromUnixTimeMilliseconds(myObject.Content[i].ProductTime.Value).UtcDateTime
                     : (DateTime?)null;
@@ -148,10 +333,14 @@ namespace IMES_Middleware_Platform.Api.Services.Association
                     StartupDate = StartTime, // 使用实际的启动时间
                     InstallationDate = null, // 使用实际的安装时间
                     DeviceStatus = myObject.Content[i].DeviceStatus,
-                    OnlineStatus = myObject.Content[i].OnlineStatus// 假设在线状态为1,可以根据实际情况设置
+                    OnlineStatus = myObject.Content[i].OnlineStatus,// 假设在线状态为1,可以根据实际情况设置
+                    AccuracyLevel = myObject.Content[i].AccuracyLevel,//准确度等级
+                    MeasureRang = myObject.Content[i].MeasureRang,//测量范围
+                    ModelSpec = myObject.Content[i].ModelSpec,//规格参数
+                    FuelId = myObject.Content[i].Id
                 };
                 var fuelDispenser = _fuelDispenserRepository.Where(x => x.SerialNumber == fuelDispenserDto.SerialNumber).First();
-                if (fuelDispenser != null)
+                if (fuelDispenser == null)
                 {
                     await _fuelDispenserRepository.InsertAsync(fuelDispenserDto.ToFuelDispenser(fuelDispenserDto));
                 }