Ver Fonte

fcc lite

devin.zhu@doverfs.com há 1 ano atrás
pai
commit
7d00ceb204

+ 5 - 0
src/XF.Common.Api/Pages/GasStation/Index.razor

@@ -9,6 +9,7 @@
 @using System.ComponentModel
 @using System.Reflection
 @using System.Text.Json
+@using XF.Common.Server.Core.Server
 @using XF.Common.Server.Core.VM.GasStation
 
 
@@ -179,6 +180,9 @@
     //注入需要调用后端的业务方法
     [Inject] ISiteServer server { get; set; }
 
+    //注入需要调用后端的业务方法
+    [Inject] IFccConfigServer server2 { get; set; }
+
     //商品基础对象
     Dictionary<string, bool> checkProducts = new();
 
@@ -249,6 +253,7 @@
         save_load = true;
         SetcheckBox(model);
         server.SaveSite(model);
+        server2.GetProcessMeteConfig();
         save_load = false;
     }
 }

+ 132 - 0
src/XF.Common.Api/Server/Core/Model/FCC/Configuration/ProcessorMetaConfig.cs

@@ -0,0 +1,132 @@
+
+using Microsoft.EntityFrameworkCore.Internal;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Reflection;
+using System.Text;
+using System.Text.Json;
+
+namespace XF.Common.Core.Model.FCC
+{
+    public class ProcessorMetaConfigDbModel
+    {
+        [Key]
+        public int Id { get; set; }
+
+        [Required]
+        public string Name { get; set; }
+        public string Description { get; set; }
+        public ProcessorTypeEnum Type { get; set; }
+
+        public IEnumerable<ProcessorMetaPartsMetaConfigDbModel> Parts { get; set; }
+        public bool Activated { get; set; }
+        public DateTime TimeStamp { get; set; }
+    }
+
+
+    public class ProcessorMetaPartsMetaConfigDbModel
+    {
+        [Key]
+        public int Id { get; set; }
+
+        public int ProcessorMetaConfigId { get; set; }
+        public virtual ProcessorMetaConfigDbModel ProcessorMetaConfig { get; set; }
+
+        public ProcessorMetaPartsTypeEnum Type { get; set; }
+
+        [Required]
+        public string FullTypeString { get; set; }
+        public string ParametersJsonArrayStr { get; set; }
+    }
+
+
+
+    public enum ProcessorTypeEnum { DeviceProcessor, AppProcessor }
+
+    public enum ProcessorMetaPartsTypeEnum
+    {
+        /// <summary>
+        /// the most outer processor, like GenericDeviceProcessor<TRaw, TMessage>, 
+        ///     HalfDuplexActivePollingDeviceProcessor<TRaw, TMessage>
+        /// </summary>
+        DeviceProcessor,
+        DeviceHandler,
+        App,
+        Parser,
+        MessageCutter,
+        Communicator,
+        // most likey the byte[]
+        RawMessageTypeStr,
+        MessageTypeStr
+    }
+
+    public class ProcessorMetaConfig
+    {
+        public int Id { get; set; }
+        public string SourceEndpointFullTypeStr { get; set; }
+        public string Name { get; set; }
+        public string Description { get; set; }
+        public ProcessorTypeEnum Type { get; set; }
+
+        public IEnumerable<ProcessorMetaPartsConfig> Parts { get; set; }
+        public bool Activated { get; set; }
+        //public DateTime TimeStamp { get; set; }
+    }
+
+
+    public class ProcessorMetaPartsConfig
+    {
+        public int Id { get; set; }
+
+        //public int ProcessorMetaConfigId { get; set; }
+        //public ProcessorMetaConfig ProcessorMetaConfig { get; set; }
+
+        public ProcessorMetaPartsTypeEnum Type { get; set; }
+        public string FullTypeString { get; set; }
+        public string ParametersJsonArrayStr { get; set; }
+    }
+
+    /// <summary>
+    /// Data structure for how construct a Processor instance.
+    /// </summary>
+    public class ProcessorMetaDescriptor
+    {
+        public string SourceEndpointFullTypeStr { get; set; }
+        public string DisplayName { get; set; }
+        public string Description { get; set; }
+        public ProcessorTypeEnum Type { get; set; }
+        public string[] Tags { get; set; }
+
+        /// <summary>
+        /// Gets or sets the MetaPartsGroupDescriptor, a processor is consist of several meta part.
+        /// </summary>
+        public IEnumerable<ProcessorMetaPartsGroupDescriptor> MetaPartsGroupDescriptors { get; set; }
+        //public bool Activated { get; set; }
+        //public DateTime TimeStamp { get; set; }
+    }
+
+
+    public class ProcessorMetaPartsGroupDescriptor
+    {
+        public ProcessorMetaPartsTypeEnum GroupType { get; set; }
+        /// <summary>
+        /// the available MetaParts list, when in real constructing, will only pick one.
+        /// think about the case of a device support multiple communicator.
+        /// </summary>
+        public IEnumerable<ProcessorMetaPartsDescriptor> MetaPartsDescriptors { get; set; }
+    }
+
+    /// <summary>
+    /// Data structure for how construct a MetaParts.
+    /// </summary>
+    public class ProcessorMetaPartsDescriptor
+    {
+        public string FullTypeString { get; set; }
+        public string TypeString { get; set; }
+        public string DisplayName { get; set; }
+        public string Description { get; set; }
+        public IEnumerable<List<string>> ParametersJsonSchemaStrings { get; set; }
+    }
+}

+ 27 - 0
src/XF.Common.Api/Server/Core/Model/FCC/FuelPointReservation.cs

@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XF.Common.Core.Model.FCC
+{
+    public class FuelPointReservation
+    {
+        public int Id { get; set; }
+        /// <summary>
+        /// Pump id.
+        /// </summary>
+        public int FuelPointId { get; set; }
+        /// <summary>
+        /// Gets or sets the Fdc Client WorkStationId which reserved this fuel point.
+        /// the Pos id is the workstation id parameter used in Fdc client connect to Fdc server, each client
+        /// should have an unique this id to distinguish from each other.
+        /// until 2017 Dec, the pos id is config in COS (web), model: SiteDevice , column: PosDeviceFdcClientId, once the android POS
+        /// downloaded this value via AccessToken web service, it will be deducted with 100, and then plus 110, like you config the id in
+        /// COS is 109, then in fdc client connection, the final value will be 119.
+        /// </summary>
+        public int ReservedByFdcClientId { get; set; }
+        public DateTime ReservingTime { get; set; }
+    }
+}

+ 26 - 0
src/XF.Common.Api/Server/Core/Model/FCC/FuelPriceChange.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XF.Common.Core.Model.FCC
+{
+    public class FuelPriceChange
+    {
+        public int Id { get; set; }
+        public int PumpId { get; set; }
+        public int LogicalNozzleId { get; set; }
+
+        public int NewPriceWithoutDecimal { get; set; }
+        public DateTime StartTime { get; set; }
+
+        /// <summary>
+        /// if new price applied succeed to pumps, should fill this value.
+        /// otherwise, it's Null, indicates the price change is failed to push to pumps.
+        /// </summary>
+        public DateTime? FinishTime { get; set; }
+
+
+    }
+}

+ 128 - 0
src/XF.Common.Api/Server/Core/Model/FCC/GenericData.cs

@@ -0,0 +1,128 @@
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace XF.Common.Core.Model.FCC
+{
+    public class GenericData
+    {
+        /// <summary>
+        /// database auto increase unique id, DO NOT map on it.
+        /// </summary>
+        [Key]
+        public int Id { get; set; }
+
+        [Required]
+        public string Owner { get; set; }
+
+        public string Type { get; set; }
+
+        public string State { get; set; }
+
+        public string Description { get; set; }
+
+        /// <summary>
+        /// Used to store serialized custom object.
+        /// </summary>
+        public string ComplexData { get; set; }
+
+
+        public DateTime? CreatedTimeStamp { get; set; }
+        public DateTime? ModifiedTimeStamp { get; set; }
+
+        public int? IntProperty0 { get; set; }
+        public int? IntProperty1 { get; set; }
+        public int? IntProperty2 { get; set; }
+        public int? IntProperty3 { get; set; }
+        public int? IntProperty4 { get; set; }
+        public int? IntProperty5 { get; set; }
+        public int? IntProperty6 { get; set; }
+        public int? IntProperty7 { get; set; }
+        public int? IntProperty8 { get; set; }
+        public int? IntProperty9 { get; set; }
+
+        public double? DoubleProperty0 { get; set; }
+        public double? DoubleProperty1 { get; set; }
+        public double? DoubleProperty2 { get; set; }
+        public double? DoubleProperty3 { get; set; }
+        public double? DoubleProperty4 { get; set; }
+        public double? DoubleProperty5 { get; set; }
+        public double? DoubleProperty6 { get; set; }
+        public double? DoubleProperty7 { get; set; }
+        public double? DoubleProperty8 { get; set; }
+        public double? DoubleProperty9 { get; set; }
+
+        public string StrProperty0 { get; set; }
+        public string StrProperty1 { get; set; }
+        public string StrProperty2 { get; set; }
+        public string StrProperty3 { get; set; }
+        public string StrProperty4 { get; set; }
+        public string StrProperty5 { get; set; }
+        public string StrProperty6 { get; set; }
+        public string StrProperty7 { get; set; }
+        public string StrProperty8 { get; set; }
+        public string StrProperty9 { get; set; }
+
+        public DateTime? TimeStampProperty0 { get; set; }
+        public DateTime? TimeStampProperty1 { get; set; }
+        public DateTime? TimeStampProperty2 { get; set; }
+        public DateTime? TimeStampProperty3 { get; set; }
+        public DateTime? TimeStampProperty4 { get; set; }
+    }
+
+    public class GenericAlarmDbModel
+    {
+        [Key]
+        public int Id { get; set; }
+        public string ProcessorEndpointFullTypeStr { get; set; }
+        public string OriginatorDisplayName { get; set; }
+        /// <summary>
+        /// Gets or sets the alarm message title.
+        ///     please keep this shorter for better user exp in UI, and fill with multiple languages string, like: lang-en-us:helloWorldlang-zh-ch:你好世界.
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// Gets or sets the alarm message detail.
+        ///     please fill with multiple languages string, like: lang-en-us:helloWorldlang-zh-ch:你好世界.
+        /// </summary>
+        public string Detail { get; set; }
+
+        /// <summary>
+        /// Abstract description for a serial of alarms that could help to group alarms.
+        ///     this is mostly used by UI app that providing a group box to group similar alarms.
+        /// </summary>
+        public string Category { get; set; }
+
+        /// <summary>
+        /// Abstract description for a serial of alarms that could help to further group alarms besides Category.
+        ///     this is mostly used by UI app that providing a group box to group similar alarms.
+        /// </summary>
+        public string SubCategory { get; set; }
+
+        /// <summary>
+        /// Used to store specific business data that the caller may use it when retrieve the historical alarms. 
+        /// </summary>
+        public string HiddenData { get; set; }
+        /// <summary>
+        /// could be anything that recognized by front end(mostly the Web html/javascript).
+        /// </summary>
+        public string Action { get; set; }
+        //public GenericAlarmSeverity Severity { get; set; }
+
+        /// <summary>
+        /// alarms with same identity from a processor will be treat as the same alarm, thus only the earliest fired single alarm will be persist, following alarms will be ignored for persist.
+        /// leave this value null or empty will treat a new one, thus it'll be persist.
+        /// </summary>
+        //public string Identity { get; set; }
+        public DateTime OpeningTimestamp { get; set; }
+
+        public string AckedReason { get; set; }
+        public DateTime? AckedTimestamp { get; set; }
+
+        public string ClosedReason { get; set; }
+        public DateTime? ClosedTimestamp { get; set; }
+    }
+}

+ 208 - 0
src/XF.Common.Api/Server/Core/Model/FCC/PumpTransaction.cs

@@ -0,0 +1,208 @@
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XF.Common.Core.Model.FCC
+{
+    public enum FuelSaleTransactionState
+    {
+        Undefined = 0,
+        Payable = 1,
+        Locked = 2,
+        Paid = 3,
+        Cleared = 4,
+    }
+
+    public class FuelSaleTransaction
+    {
+        // FDC defined:
+        //SALE_TRX_UNDEFINED = 0,
+        //SALE_TRX_PAYABLE = 1,
+        //SALE_TRX_LOCKED = 2,
+        //SALE_TRX_PAID = 3,
+        //SALE_TRX_CLEARED = 4,
+
+
+        /// <summary>
+        /// Gets or sets the release token for this trx, release token is an database unique
+        /// id for a trx, unlike `TransactionSeqNumberFromPhysicalPump`, it's a 
+        /// device dependent and will be re-cyclely used by device, so there're may have multiple 
+        /// trx in database with same `TransactionSeqNumberFromPhysicalPump`, but release token is
+        /// guranteed to be unique for a trx.
+        /// </summary>
+        [Key]
+        public int ReleaseToken { get; set; }
+        public int PumpId { get; set; }
+        public int LogicalNozzleId { get; set; }
+        public string TransactionSeqNumberFromPhysicalPump { get; set; }
+        public FuelSaleTransactionState State { get; set; }
+
+        public string ProductBarcode { get; set; }
+
+        /// <summary>
+        /// without decimal points
+        /// </summary>
+        public int UnitPrice { get; set; }
+
+        /// <summary>
+        /// without decimal points
+        /// </summary>
+        public int Amount { get; set; }
+
+        /// <summary>
+        /// without decimal points
+        /// </summary>
+        public int Volumn { get; set; }
+
+        /// <summary>
+        /// Gets or sets the Fdc Client WorkStationId which reserved this fuel point.
+        /// the Pos id is the workstation id parameter used in Fdc client connect to Fdc server, each client
+        /// should have an unique this id to distinguish from each other.
+        /// until 2017 Dec, the pos id is config in COS (web), model: SiteDevice , column: PosDeviceFdcClientId, once the android POS
+        /// downloaded this value via AccessToken web service, it will be deducted with 100, and then plus 110, like you config the id in
+        /// COS is 109, then in fdc client connection, the final value will be 119.
+        /// </summary>
+        public string LockedByFdcClientId { get; set; }
+        public DateTime? LockedTime { get; set; }
+
+        public string AuthorizedByFdcClientId { get; set; }
+        public DateTime? AuthorizedTime { get; set; }
+
+        public string PaidByFdcClientId { get; set; }
+        public DateTime? PaidTime { get; set; }
+
+        public DateTime? SaleStartTime { get; set; }
+        public DateTime? SaleEndTime { get; set; }
+
+        /// <summary>
+        /// the money amount totalizer value after this new trx done, without decimal points
+        /// </summary>
+        public int AmountTotalizer { get; set; }
+
+        /// <summary>
+        /// the volume amount totalizer value after this new trx done, without decimal points
+        /// </summary>
+        public int VolumeTotalizer { get; set; }
+
+        public override string ToString()
+        {
+            return $"ReleaseToken: {ReleaseToken }, PumpId: {PumpId }, logicalNozzleId: {LogicalNozzleId }, " +
+                $"seqNo: { (TransactionSeqNumberFromPhysicalPump ?? "")}, state: {State }, amount: {Amount }, " +
+                $"LockedByFdcClientId: { (LockedByFdcClientId ?? "")}, LockedTime: {(LockedTime?.ToShortTimeString() ?? "") }, " +
+                $"AuthorizedByFdcClientId: { (AuthorizedByFdcClientId ?? "")}, PaidByFdcClientId: { (PaidByFdcClientId ?? "")}, " +
+                $"SaleEndTime: {SaleEndTime?.ToString("yyyy-MM-dd HH:mm:ss fff") ?? ""}";
+        }
+    }
+
+    public class FuelSaleTransactionResponse
+    {
+        // FDC defined:
+        //SALE_TRX_UNDEFINED = 0,
+        //SALE_TRX_PAYABLE = 1,
+        //SALE_TRX_LOCKED = 2,
+        //SALE_TRX_PAID = 3,
+        //SALE_TRX_CLEARED = 4,
+
+        //private FuelSaleTransactionResponse(FuelSaleTransaction fuelSaleTransaction,
+        //    IFdcPumpController fdcPumpController)
+        //{
+        //    ReleaseToken = fuelSaleTransaction.ReleaseToken;
+        //    PumpId = fuelSaleTransaction.PumpId;
+        //    LogicalNozzleId = fuelSaleTransaction.LogicalNozzleId;
+        //    TransactionSeqNumberFromPhysicalPump = fuelSaleTransaction.TransactionSeqNumberFromPhysicalPump;
+        //    State = fuelSaleTransaction.State;
+        //    ProductBarcode = fuelSaleTransaction.ProductBarcode;
+        //    UnitPrice = (decimal)(fuelSaleTransaction.UnitPrice / Math.Pow(10, fdcPumpController.PriceDecimalDigits));
+        //    Amount = (decimal)(fuelSaleTransaction.Amount / Math.Pow(10, fdcPumpController.AmountDecimalDigits));
+        //    Volumn = (decimal)(fuelSaleTransaction.Volumn / Math.Pow(10, fdcPumpController.VolumeDecimalDigits));
+        //    LockedByFdcClientId = fuelSaleTransaction.LockedByFdcClientId;
+        //    LockedTime = fuelSaleTransaction.LockedTime;
+        //    AuthorizedByFdcClientId = fuelSaleTransaction.AuthorizedByFdcClientId;
+        //    AuthorizedTime = fuelSaleTransaction.AuthorizedTime;
+        //    PaidTime = fuelSaleTransaction.PaidTime;
+        //    SaleStartTime = fuelSaleTransaction.SaleStartTime;
+        //    SaleEndTime = fuelSaleTransaction.SaleEndTime;
+        //    AmountTotalizer = (decimal)(fuelSaleTransaction.AmountTotalizer / Math.Pow(10, fdcPumpController.AmountDecimalDigits));
+        //    VolumeTotalizer = (decimal)(fuelSaleTransaction.VolumeTotalizer / Math.Pow(10, fdcPumpController.VolumeTotalizerDecimalDigits));
+        //}
+
+        //public static FuelSaleTransactionResponse CreateInstance(FuelSaleTransaction fuelSaleTransaction,
+        //    IFdcPumpController fdcPumpController)
+        //{
+        //    return new FuelSaleTransactionResponse(fuelSaleTransaction, fdcPumpController);
+        //}
+
+
+        /// <summary>
+        /// Gets or sets the release token for this trx, release token is an database unique
+        /// id for a trx, unlike `TransactionSeqNumberFromPhysicalPump`, it's a 
+        /// device dependent and will be re-cyclely used by device, so there're may have multiple 
+        /// trx in database with same `TransactionSeqNumberFromPhysicalPump`, but release token is
+        /// guranteed to be unique for a trx.
+        /// </summary>
+        [Key]
+        public int ReleaseToken { get; set; }
+        public int PumpId { get; set; }
+        public int LogicalNozzleId { get; set; }
+        public string TransactionSeqNumberFromPhysicalPump { get; set; }
+        public FuelSaleTransactionState State { get; set; }
+
+        public string ProductBarcode { get; set; }
+        /// <summary>
+        /// without decimal points
+        /// </summary>
+        public decimal UnitPrice { get; set; }
+
+        /// <summary>
+        /// without decimal points
+        /// </summary>
+        public decimal Amount { get; set; }
+
+        /// <summary>
+        /// without decimal points
+        /// </summary>
+        public decimal Volumn { get; set; }
+
+        /// <summary>
+        /// Gets or sets the Fdc Client WorkStationId which reserved this fuel point.
+        /// the Pos id is the workstation id parameter used in Fdc client connect to Fdc server, each client
+        /// should have an unique this id to distinguish from each other.
+        /// until 2017 Dec, the pos id is config in COS (web), model: SiteDevice , column: PosDeviceFdcClientId, once the android POS
+        /// downloaded this value via AccessToken web service, it will be deducted with 100, and then plus 110, like you config the id in
+        /// COS is 109, then in fdc client connection, the final value will be 119.
+        /// </summary>
+        public string LockedByFdcClientId { get; set; }
+        public DateTime? LockedTime { get; set; }
+
+        public string AuthorizedByFdcClientId { get; set; }
+        public DateTime? AuthorizedTime { get; set; }
+
+        public string PaidByFdcClientId { get; set; }
+        public DateTime? PaidTime { get; set; }
+
+        public DateTime? SaleStartTime { get; set; }
+        public DateTime? SaleEndTime { get; set; }
+
+        /// <summary>
+        /// the money amount totalizer value after this new trx done, without decimal points
+        /// </summary>
+        public decimal AmountTotalizer { get; set; }
+
+        /// <summary>
+        /// the volume amount totalizer value after this new trx done, without decimal points
+        /// </summary>
+        public decimal VolumeTotalizer { get; set; }
+
+        public override string ToString()
+        {
+            return "ReleaseToken: " + ReleaseToken + ", PumpId: " + PumpId + ", logicalNozzleId: " + LogicalNozzleId + ", seqNo: " + (TransactionSeqNumberFromPhysicalPump ?? "")
+                + ", state: " + State + ", amount: " + Amount + ", LockedByFdcClientId: " + (LockedByFdcClientId ?? "")
+                + "LockedTime: " + (LockedTime?.ToShortTimeString() ?? "") + ", AuthorizedByFdcClientId: " + (AuthorizedByFdcClientId ?? "")
+                + ", PaidByFdcClientId: " + (PaidByFdcClientId ?? "");
+        }
+    }
+}

+ 12 - 0
src/XF.Common.Api/Server/Core/Repositories/IProcessorMetaConfigRepository.cs

@@ -0,0 +1,12 @@
+using XF.Common.Core.Model.FCC;
+using XF.Common.Repositories.Base;
+
+namespace XF.Common.Server.Core.Repositories
+{
+    /// <summary>
+    ///  应用配置仓储接口
+    /// </summary>
+    public interface IProcessorMetaConfigRepository:ILiteRepository<ProcessorMetaConfigDbModel>
+    {
+    }
+}

+ 15 - 0
src/XF.Common.Api/Server/Core/Server/IFccConfigServer.cs

@@ -0,0 +1,15 @@
+namespace XF.Common.Server.Core.Server
+{
+
+    /// <summary>
+    /// FCC 配置服务
+    /// </summary>
+    public interface IFccConfigServer
+    {
+        /// <summary>
+        /// 获取数据库应用数据测试例子
+        /// </summary>
+        /// <returns></returns>
+        Task<object> GetProcessMeteConfig();
+    }
+}

+ 0 - 0
src/XF.Common.Api/Server/Repositories/Mysql/AccountDB/BusinessUnitInfoReponse.cs → src/XF.Common.Api/Server/Repositories/Mysql/AccountDB/BusinessUnitInfoRepository.cs


+ 27 - 0
src/XF.Common.Api/Server/Repositories/SQLLite/FCCDB/ProcessorMetaConfigRepository.cs

@@ -0,0 +1,27 @@
+using XF.Common.Core.Model;
+using XF.Common.Core;
+using XF.Common.Repositories.Base;
+using XF.Common.Server.Core.Repositories;
+using XF.Common.Core.Model.FCC;
+using ServiceLifetime = XF.Common.Core.ServiceLifetime;
+
+namespace XF.Common.Server.Repositories.SQLLite.FCCDB
+{
+ 
+
+    /// <summary>
+    /// bu info
+    /// </summary>
+    [ServiceDescription(typeof(IBusiness_unit_infoReponse), ServiceLifetime.Scoped)]
+    public class ProcessorMetaConfigRepository : LiteRepository<ProcessorMetaConfigDbModel>, IProcessorMetaConfigRepository
+    {
+        public async Task<object> GetObject()
+        {
+            return GetPageList<ProcessorMetaConfigDbModel>(c => true, new SqlSugar.PageModel()
+            {
+                PageSize = 100,
+                PageIndex = 0
+            });
+        }
+    }
+}

+ 27 - 0
src/XF.Common.Api/Server/Services/FccConfigServer.cs

@@ -0,0 +1,27 @@
+using XF.Common.Core.Server;
+using XF.Common.Core;
+using XF.Common.Server.Core.Server;
+using ServiceLifetime = XF.Common.Core.ServiceLifetime;
+using XF.Common.Server.Core.Repositories;
+
+
+namespace XF.Common.Server.Services
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    [ServiceDescription(typeof(ISiteServer), ServiceLifetime.Scoped)]
+    public class FccConfigServer : IFccConfigServer
+    {
+        IProcessorMetaConfigRepository _metaConfigRepository;
+        public FccConfigServer(IProcessorMetaConfigRepository processorMetaConfigRepository)
+        {
+            _metaConfigRepository = processorMetaConfigRepository;
+        }
+        public async Task<object> GetProcessMeteConfig()
+        {
+            var data = await _metaConfigRepository.GetListAsync();
+            return data;
+        }
+    }
+}

+ 0 - 5
src/XF.Common.Api/XF.Common.csproj

@@ -22,9 +22,4 @@
     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
   </ItemGroup>
 
-
-  <ItemGroup>
-    <Folder Include="Server\Repositories\Mysql\FCCDB\" />
-  </ItemGroup>
-
 </Project>