新增抄读记录表自定义仓储

This commit is contained in:
陈益 2025-03-19 22:52:53 +08:00
parent 83d8785ff4
commit e836522e3a
4 changed files with 139 additions and 2 deletions

View File

@ -3,7 +3,10 @@ using JiShe.CollectBus.IotSystems.MessageIssueds;
using JiShe.CollectBus.IotSystems.MessageReceiveds; using JiShe.CollectBus.IotSystems.MessageReceiveds;
using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.IotSystems.Protocols; using JiShe.CollectBus.IotSystems.Protocols;
using MongoDB.Bson;
using MongoDB.Driver; using MongoDB.Driver;
using System;
using System.Collections.Generic;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.MongoDB; using Volo.Abp.MongoDB;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
@ -24,13 +27,34 @@ public class CollectBusMongoDbContext : AbpMongoDbContext, ICollectBusMongoDbCon
public IMongoCollection<Device> Devices => Collection<Device>(); public IMongoCollection<Device> Devices => Collection<Device>();
public IMongoCollection<ProtocolInfo> ProtocolInfos => Collection<ProtocolInfo>(); public IMongoCollection<ProtocolInfo> ProtocolInfos => Collection<ProtocolInfo>();
public IMongoCollection<MeterReadingRecords> MeterReadingRecords => Collection<MeterReadingRecords>(); /// <summary>
/// 抄表记录,默认按天分表
/// </summary>
public IMongoCollection<MeterReadingRecords> MeterReadingRecordInfo => Database.GetCollection<MeterReadingRecords>(DateTime.Now.GetCollectionName<MeterReadingRecords>());
protected override void CreateModel(IMongoModelBuilder modelBuilder) protected override void CreateModel(IMongoModelBuilder modelBuilder)
{ {
base.CreateModel(modelBuilder); base.CreateModel(modelBuilder);
modelBuilder.Entity<MeterReadingRecords>(builder =>
{
// 创建索引
builder.ConfigureIndexes(index =>
{
List<CreateIndexModel<BsonDocument>> createIndexModels = new List<CreateIndexModel<BsonDocument>>();
createIndexModels.Add(new CreateIndexModel<BsonDocument>(
Builders<BsonDocument>.IndexKeys.Ascending(nameof(MeterReadingRecords)),
new CreateIndexOptions
{
Unique = true
}
));
index.CreateMany(createIndexModels);
});
});
modelBuilder.ConfigureCollectBus(); modelBuilder.ConfigureCollectBus();
} }
} }

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JiShe.CollectBus.MongoDB
{
/// <summary>
/// MongoDB集合帮助类
/// </summary>
public static class CollectionHelper
{
/// <summary>
/// 获取集合名称
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="time"></param>
/// <returns></returns>
public static string GetCollectionName<T>(this DateTime time)
{
return $"{typeof(T).Name}{time:yyyyMMddHHmm}";
}
}
}

View File

@ -0,0 +1,35 @@
using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace JiShe.CollectBus.Repository.MeterReadingRecord
{
/// <summary>
/// 抄读仓储接口
/// </summary>
public interface IMeterReadingRecordRepository: IRepository<MeterReadingRecords, Guid>
{
/// <summary>
/// 批量插入
/// </summary>
/// <param name="entities"></param>
/// <param name="dayTime"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task InsertManyAsync(List<MeterReadingRecords> entities, DateTime dayTime, CancellationToken cancellationToken = default(CancellationToken));
/// <summary>
/// 单个插入
/// </summary>
/// <param name="entity"></param>
/// <param name="dayTime"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task InsertOneAsync(MeterReadingRecords entity, DateTime dayTime, CancellationToken cancellationToken = default(CancellationToken));
}
}

View File

@ -0,0 +1,53 @@
using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.MongoDB;
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
using static System.Net.Mime.MediaTypeNames;
namespace JiShe.CollectBus.Repository.MeterReadingRecord
{
/// <summary>
/// 抄读记录仓储
/// </summary>
public class MeterReadingRecordRepository : MongoDbRepository<CollectBusMongoDbContext, MeterReadingRecords, Guid>, IMeterReadingRecordRepository
{
public MeterReadingRecordRepository(IMongoDbContextProvider<CollectBusMongoDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
/// <summary>
/// 批量插入
/// </summary>
/// <param name="entities"></param>
/// <param name="dayTime"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public async Task InsertManyAsync(List<MeterReadingRecords> entities, DateTime dayTime, CancellationToken cancellationToken = default(CancellationToken))
{
var collection = await GetCollectionAsync(cancellationToken);
await collection.InsertManyAsync(entities);
}
/// <summary>
/// 单条插入
/// </summary>
/// <param name="entity"></param>
/// <param name="dayTime"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public async Task InsertOneAsync(MeterReadingRecords entity,DateTime dayTime, CancellationToken cancellationToken = default(CancellationToken))
{
var collection = await GetCollectionAsync(cancellationToken);
await collection.InsertOneAsync(entity);
}
}
}