Compare commits

..

3 Commits

Author SHA1 Message Date
cli
9cda1af5fc update 2025-03-18 13:56:38 +08:00
cli
798c48650a Merge branch 'dev' of https://310.jisheyun.com/daizan/JiShe.CollectBus into dev 2025-03-17 15:51:43 +08:00
cli
e95d356780 修改配置 2025-03-17 15:51:40 +08:00
7 changed files with 78 additions and 21 deletions

View File

@ -4,12 +4,41 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JiShe.CollectBus.Common.Consts;
using JiShe.CollectBus.EnergySystems.TableViews;
using JiShe.CollectBus.FreeSql;
using Volo.Abp.Domain.Repositories;
using JiShe.CollectBus.IotSystems.PrepayModel;
namespace JiShe.CollectBus.EnergySystem
{
public class CacheAppService : CollectBusAppService, ICacheAppService
{
//public async Task<V_FocusAmmeter> GetHashByKey(string key)
//{
// await FreeRedisProvider.Instance.HGetAsync<V_FocusAmmeter>(key,);
//}
public async Task SetHashByKey(string key)
{
var data = await SqlProvider.Instance.Change(DbEnum.EnergyDB).Select<V_FocusAmmeter>().ToListAsync();
var groupData = data.GroupBy(a => $"{a.FocusAreaCode}{a.FocusAddress}").ToList();
foreach (var group in groupData)
{
try
{
var aa = group.ToDictionary(a => $"{a.ID}_{a.Address}" , b => b);
await FreeRedisProvider.Instance.HSetAsync($"{RedisConst.CacheAmmeterFocusKey}:{group.Key}", aa);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}
}

View File

@ -5,6 +5,7 @@ using System.Linq;
using System.Net;
using System.Threading.Tasks;
using DotNetCore.CAP;
using FreeSql;
using JiShe.CollectBus.Ammeters;
using JiShe.CollectBus.Common;
using JiShe.CollectBus.Common.BuildSendDatas;
@ -24,6 +25,7 @@ using MassTransit;
using MassTransit.Internals.GraphValidation;
using Microsoft.Extensions.Logging;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
namespace JiShe.CollectBus.ScheduledMeterReading
{
@ -35,16 +37,18 @@ namespace JiShe.CollectBus.ScheduledMeterReading
private readonly ILogger<BasicScheduledMeterReadingService> _logger;
private readonly ICapPublisher _capBus;
private readonly IRepository<ScheduledMeterReadingIssuedEventMessage, Guid> _meterReadingIssuedRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public BasicScheduledMeterReadingService(
ILogger<BasicScheduledMeterReadingService> logger,
ICapPublisher capBus,
IRepository<ScheduledMeterReadingIssuedEventMessage, Guid> meterReadingIssuedRepository)
IRepository<ScheduledMeterReadingIssuedEventMessage, Guid> meterReadingIssuedRepository, IUnitOfWorkManager unitOfWorkManager)
{
_capBus = capBus;
_logger = logger;
_meterReadingIssuedRepository = meterReadingIssuedRepository;
_unitOfWorkManager = unitOfWorkManager;
}
/// <summary>
@ -116,7 +120,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
continue;
}
var redisCacheKey = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, itemTimeDensity.Key)}{item.Key}";
var redisCacheKey = $"{string.Format(RedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, itemTimeDensity.Key)}{item.Key}";
Dictionary<string, AmmeterInfo> keyValuePairs = new Dictionary<string, AmmeterInfo>();
foreach (var ammeter in item)
{
@ -178,7 +182,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
public virtual async Task AmmeterScheduledMeterOneMinuteReading()
{
//获取缓存中的电表信息
var redisKeyList = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 1)}*";
var redisKeyList = $"{string.Format(RedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 1)}*";
var oneMinutekeyList = await FreeRedisProvider.Instance.KeysAsync(redisKeyList);
if (oneMinutekeyList == null || oneMinutekeyList.Length <= 0)
{
@ -207,7 +211,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
public virtual async Task AmmeterScheduledMeterFiveMinuteReading()
{
//获取缓存中的电表信息
var redisKeyList = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 5)}*";
var redisKeyList = $"{string.Format(RedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 5)}*";
var oneMinutekeyList = await FreeRedisProvider.Instance.KeysAsync(redisKeyList);
if (oneMinutekeyList == null || oneMinutekeyList.Length <= 0)
{
@ -234,7 +238,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
public virtual async Task AmmeterScheduledMeterFifteenMinuteReading()
{
//获取缓存中的电表信息
var redisKeyList = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 15)}*";
var redisKeyList = $"{string.Format(RedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 15)}*";
var oneMinutekeyList = await FreeRedisProvider.Instance.KeysAsync(redisKeyList);
if (oneMinutekeyList == null || oneMinutekeyList.Length <= 0)
{
@ -307,7 +311,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
continue;
}
var redisCacheKey = $"{string.Format(FreeRedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, itemTimeDensity.Key)}{item.Key}";
var redisCacheKey = $"{string.Format(RedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, itemTimeDensity.Key)}{item.Key}";
Dictionary<string, WatermeterInfo> keyValuePairs = new Dictionary<string, WatermeterInfo>();
foreach (var subItem in item)
{
@ -327,7 +331,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
public virtual async Task WatermeterScheduledMeterOneMinuteReading()
{
//获取缓存中的水表信息
var redisKeyList = $"{string.Format(FreeRedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, 1)}*";
var redisKeyList = $"{string.Format(RedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, 1)}*";
var oneMinutekeyList = await FreeRedisProvider.Instance.KeysAsync(redisKeyList);
if (oneMinutekeyList == null || oneMinutekeyList.Length <= 0)
{
@ -354,7 +358,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
{
//获取缓存中的水表信息
var redisKeyList = $"{string.Format(FreeRedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, 5)}*";
var redisKeyList = $"{string.Format(RedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, 5)}*";
var oneMinutekeyList = await FreeRedisProvider.Instance.KeysAsync(redisKeyList);
if (oneMinutekeyList == null || oneMinutekeyList.Length <= 0)
{
@ -380,7 +384,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
public virtual async Task WatermeterScheduledMeterFifteenMinuteReading()
{
//获取缓存中的水表信息
var redisKeyList = $"{string.Format(FreeRedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, 15)}*";
var redisKeyList = $"{string.Format(RedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, 15)}*";
var oneMinutekeyList = await FreeRedisProvider.Instance.KeysAsync(redisKeyList);
if (oneMinutekeyList == null || oneMinutekeyList.Length <= 0)
{
@ -434,7 +438,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading
{
string key = (string)item[0];//集中器地址对应的Redis缓存Key
object[] fieldsAndValues = (object[])item[1];//缓存Key对应的Hash表数据集合
var redisCacheKey = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, minute)}";
var redisCacheKey = $"{string.Format(RedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, minute)}";
string focusAddress = key.Replace(redisCacheKey, "");//集中器地址
var meterHashs = new Dictionary<string, T>();
@ -515,7 +519,16 @@ namespace JiShe.CollectBus.ScheduledMeterReading
foreach (var group in focusHashGroups)
{
//TODO _meterReadingIssuedRepository 需要优化
//_ = Task.Run(async () => { await CreatePublishTask(eventName, group.Value); });
await Task.Factory.StartNew(async () =>
{
using var uow = _unitOfWorkManager.Begin();
await CreatePublishTask(eventName, group.Value);
await uow.SaveChangesAsync();
});
//await Task.Run(async () => { await CreatePublishTask(eventName, group.Value); });
await CreatePublishTask(eventName, group.Value);
}

View File

@ -11,6 +11,7 @@ using JiShe.CollectBus.IotSystems.Watermeter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Logging;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
namespace JiShe.CollectBus.ScheduledMeterReading
{
@ -22,7 +23,10 @@ namespace JiShe.CollectBus.ScheduledMeterReading
public class EnergySystemScheduledMeterReadingService : BasicScheduledMeterReadingService
{
public EnergySystemScheduledMeterReadingService(ILogger<EnergySystemScheduledMeterReadingService> logger, ICapPublisher capBus, IRepository<ScheduledMeterReadingIssuedEventMessage, Guid> meterReadingIssuedRepository) :base(logger, capBus, meterReadingIssuedRepository)
public EnergySystemScheduledMeterReadingService(ILogger<EnergySystemScheduledMeterReadingService> logger,
ICapPublisher capBus,
IRepository<ScheduledMeterReadingIssuedEventMessage, Guid> meterReadingIssuedRepository,
IUnitOfWorkManager unitOfWorkManager) :base(logger, capBus, meterReadingIssuedRepository, unitOfWorkManager)
{
}

View File

@ -6,36 +6,41 @@ using System.Threading.Tasks;
namespace JiShe.CollectBus.Common.Consts
{
public class FreeRedisConst
public class RedisConst
{
/// <summary>
/// 缓存基础目录
/// </summary>
public const string CacheBasicDirectoryKey = "CollectBus:";
public const string CacheBasicDirectoryKey = "CollectBus";
/// <summary>
/// 1分钟采集间隔
/// </summary>
public const string OneMinuteAcquisitionTimeInterval = $"one";
public const string OneMinuteAcquisitionTimeInterval = "One";
/// <summary>
/// 5分钟采集间隔
/// </summary>
public const string FiveMinuteAcquisitionTimeInterval = $"Five";
public const string FiveMinuteAcquisitionTimeInterval = "Five";
/// <summary>
/// 15分钟采集间隔
/// </summary>
public const string FifteenMinuteAcquisitionTimeInterval = $"Fifteen";
public const string FifteenMinuteAcquisitionTimeInterval = "Fifteen";
/// <summary>
/// 缓存电表信息
/// </summary>
public const string CacheAmmeterInfoKey = $"{CacheBasicDirectoryKey}{"{0}"}:{"{1}"}:AmmeterInfo:";
public const string CacheAmmeterInfoKey = $"{CacheBasicDirectoryKey}:{"{0}"}:{"{1}"}:AmmeterInfo:";
/// <summary>
/// 缓存水表信息
/// </summary>
public const string CacheWatermeterInfoKey = $"{CacheBasicDirectoryKey}{"{0}"}:{"{1}"}:WatermeterInfo:";
public const string CacheAmmeterFocusKey = $"{CacheBasicDirectoryKey}:AmmeterFocus";
/// <summary>
/// 缓存水表信息
/// </summary>
public const string CacheWatermeterInfoKey = $"{CacheBasicDirectoryKey}:{"{0}"}:{"{1}"}:WatermeterInfo:";
}
}

View File

@ -1,4 +1,5 @@
using System;
using FreeSql.DataAnnotations;
namespace JiShe.CollectBus.EnergySystems.Entities
{
@ -22,6 +23,7 @@ namespace JiShe.CollectBus.EnergySystems.Entities
/// <summary>
/// 区域名
/// </summary>
[Column(IsIgnore = true)]
public string AreaName { get; set; }
/// <summary>
@ -146,6 +148,7 @@ namespace JiShe.CollectBus.EnergySystems.Entities
/// <summary>
/// 集中器名称(扩展字段)
/// </summary>
[Column(IsIgnore = true)]
public string FocusName { get; set; }
/// <summary>
@ -168,11 +171,13 @@ namespace JiShe.CollectBus.EnergySystems.Entities
/// 机械表1德力西机械电表-Code
/// (原有数据都默认:电子电表)
/// </summary>
[Column(IsIgnore = true)]
public int MeterKind { get; set; }
/// <summary>
/// 采集方案ID
/// </summary>
[Column(IsIgnore = true)]
public int GatherPlanID { get; set; }
/// <summary>

View File

@ -23,6 +23,7 @@
<ItemGroup>
<ProjectReference Include="..\JiShe.CollectBus.Common\JiShe.CollectBus.Common.csproj" />
<ProjectReference Include="..\JiShe.CollectBus.Domain.Shared\JiShe.CollectBus.Domain.Shared.csproj" />
<ProjectReference Include="..\JiShe.CollectBus.FreeSql\JiShe.CollectBus.FreeSql.csproj" />
</ItemGroup>
<ItemGroup>

View File

@ -40,7 +40,7 @@
"EnergyDB": "server=118.190.144.92;database=db_energy;uid=sa;pwd=admin@2023;Encrypt=False;Trust Server Certificate=False"
},
"Redis": {
"Configuration": "118.190.144.92:6379,syncTimeout=30000,abortConnect=false,connectTimeout=30000,allowAdmin=true",
"Configuration": "192.168.111.248:6379,password=123456abcD,syncTimeout=30000,abortConnect=false,connectTimeout=30000,allowAdmin=true",
"DefaultDB": "14",
"HangfireDB": "15"
},