diff --git a/Entity/DbModel/Station/ElecPriceModelVersion.cs b/Entity/DbModel/Station/ElecPriceModelVersion.cs index 6e1ad57..49639fa 100644 --- a/Entity/DbModel/Station/ElecPriceModelVersion.cs +++ b/Entity/DbModel/Station/ElecPriceModelVersion.cs @@ -29,7 +29,7 @@ namespace Entity.DbModel.Station /// Nullable:True /// [SugarColumn(ColumnName="version")] - public string Version {get;set;} + public int Version {get;set;} /// /// Desc:生效时间;生效时间(左开右闭) diff --git a/Entity/DbModel/Station/ElecPriceModelVersionDetail.cs b/Entity/DbModel/Station/ElecPriceModelVersionDetail.cs index 3400f4c..528deff 100644 --- a/Entity/DbModel/Station/ElecPriceModelVersionDetail.cs +++ b/Entity/DbModel/Station/ElecPriceModelVersionDetail.cs @@ -29,7 +29,7 @@ namespace Entity.DbModel.Station /// Nullable:True /// [SugarColumn(ColumnName="version")] - public string Version {get;set;} + public int Version {get;set;} /// /// Desc:开始时间 diff --git a/Repository/BaseRepository.cs b/Repository/BaseRepository.cs index 78023b2..a6d72de 100644 --- a/Repository/BaseRepository.cs +++ b/Repository/BaseRepository.cs @@ -780,6 +780,16 @@ public abstract class BaseRepository where T : class, new() .Insertable(entity) .ExecuteReturnIdentity(); } + + /// + /// 写入或者更新实体数据 + /// + /// 实体数据 + /// + public int InsertOrUpdate(T entity) + { + return DbBaseClient.Storageable(entity).ExecuteCommand(); + } /// /// 写入实体数据 diff --git a/Repository/Station/ElecPriceModelVersionDetailRepository.cs b/Repository/Station/ElecPriceModelVersionDetailRepository.cs new file mode 100644 index 0000000..d703a49 --- /dev/null +++ b/Repository/Station/ElecPriceModelVersionDetailRepository.cs @@ -0,0 +1,13 @@ +using Entity.DbModel.Station; +using HybirdFrameworkCore.Autofac.Attribute; +using SqlSugar; + +namespace Repository.Station; + +[Scope] +public class ElecPriceModelVersionDetailRepository : BaseRepository +{ + public ElecPriceModelVersionDetailRepository(ISqlSugarClient sqlSugar) : base(sqlSugar) + { + } +} \ No newline at end of file diff --git a/Repository/Station/ElecPriceModelVersionRepository.cs b/Repository/Station/ElecPriceModelVersionRepository.cs new file mode 100644 index 0000000..ae06c30 --- /dev/null +++ b/Repository/Station/ElecPriceModelVersionRepository.cs @@ -0,0 +1,13 @@ +using Entity.DbModel.Station; +using HybirdFrameworkCore.Autofac.Attribute; +using SqlSugar; + +namespace Repository.Station; + +[Scope] +public class ElecPriceModelVersionRepository : BaseRepository +{ + public ElecPriceModelVersionRepository(ISqlSugarClient sqlSugar) : base(sqlSugar) + { + } +} \ No newline at end of file diff --git a/Service/Cloud/Handler/ChargerElectricityPriceModelHandler.cs b/Service/Cloud/Handler/ChargerElectricityPriceModelHandler.cs new file mode 100644 index 0000000..36ab97c --- /dev/null +++ b/Service/Cloud/Handler/ChargerElectricityPriceModelHandler.cs @@ -0,0 +1,66 @@ +using Entity.DbModel.Station; +using HybirdFrameworkCore.Autofac.Attribute; +using Newtonsoft.Json; +using Repository.Station; +using Service.Cloud.Client; +using Service.Cloud.Common; +using Service.Cloud.Msg.Cloud.Req; +using Service.Cloud.Msg.Host.Resp; + +namespace Service.Cloud.Handler; + +[Scope] +public class ChargerElectricityPriceModelHandler : IBaseHandler +{ + + private ElecPriceModelVersionRepository _versionRepository; + private ElecPriceModelVersionDetailRepository _detailRepository; + + public ChargerElectricityPriceModelHandler(ElecPriceModelVersionRepository elecPriceModelVersionRepository, + ElecPriceModelVersionDetailRepository elecPriceModelVersionDetailRepository) + { + this._versionRepository = elecPriceModelVersionRepository; + this._detailRepository = elecPriceModelVersionDetailRepository; + } + + public bool CanHandle(string cmd) + { + return CloudConst.setChargePrice == cmd; + } + + public void Handle(string t) + { + ChargerElectricityPriceModel? priceModel = JsonConvert.DeserializeObject(t); + if (priceModel != null) + { + ElecPriceModelVersion version = _versionRepository.QueryByClause(d => d.Version == priceModel.ceid); + if (version == null) + { + version = new ElecPriceModelVersion + { + Version = priceModel.ceid + }; + } + version.StartTime = DateTime.Now; + version.EndTime = DateTime.Now.AddYears(10); + _versionRepository.InsertOrUpdate(version); + + List? segs = priceModel.seg; + if (segs is { Count: > 0 }) + { + List versionDetails = segs.Select(d => new ElecPriceModelVersionDetail() + { + Version = version.Version, + Price = (int)d.ep * 10000, + Type = d.pr, + StartTime = d.st, + EndTime = d.et + }).ToList(); + _detailRepository.Insert(versionDetails); + } + + ChargerElectricityPriceModelResp resp = new ChargerElectricityPriceModelResp(); + CloudClientMgr.CloudClient?.Publish(resp); + } + } +} \ No newline at end of file diff --git a/Service/Cloud/Msg/Cloud/Req/ChargerElectricityPriceModel.cs b/Service/Cloud/Msg/Cloud/Req/ChargerElectricityPriceModel.cs index d0a3341..3014add 100644 --- a/Service/Cloud/Msg/Cloud/Req/ChargerElectricityPriceModel.cs +++ b/Service/Cloud/Msg/Cloud/Req/ChargerElectricityPriceModel.cs @@ -1,9 +1,4 @@ using Service.Cloud.Common; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Service.Cloud.Msg.Cloud.Req { @@ -17,6 +12,7 @@ namespace Service.Cloud.Msg.Cloud.Req /// 格式”yyyy-MM-dd HH:mm:ss” /// public string ut { get; set; } + /// /// 电价模型id /// 由服务器统一进行分配 @@ -24,7 +20,7 @@ namespace Service.Cloud.Msg.Cloud.Req public int ceid { get; set; } - public List seg = new(); + public List? seg { get; set; } public string GetCmd() { @@ -35,20 +31,23 @@ namespace Service.Cloud.Msg.Cloud.Req public class Seg { /// - /// 电价 - /// 精度 0.0001 元 - /// + /// 电价 + /// 精度 0.0001 元 + /// public float ep { get; set; } + /// /// 开始时段 /// 格式”HH:mm:ss”精确到小时 /// public DateTime st { get; set; } + /// /// 结束时段 /// 格式“HH:mm:ss” 精确到小时 /// public DateTime et { get; set; } + /// /// 时段序号 /// 对应尖峰平谷序号1:尖; 2:峰; 3:平; 4:谷 @@ -56,4 +55,4 @@ namespace Service.Cloud.Msg.Cloud.Req /// public int pr { get; set; } } -} +} \ No newline at end of file