Files
tnb.server/extend/Tnb.Extend/BigDataService.cs
2023-03-13 15:00:34 +08:00

128 lines
3.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using JNPF.Common.Enums;
using JNPF.Common.Extension;
using JNPF.Common.Filter;
using JNPF.Common.Security;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.Extend.Entitys;
using JNPF.Extend.Entitys.Dto.BigData;
using JNPF.FriendlyException;
using JNPF.LinqBuilder;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace JNPF.Extend;
/// <summary>
/// 大数据测试
/// 版 本V3.2
/// 版 权拓通智联科技有限公司http://www.tuotong-tech.com
/// 日 期2021-06-01 .
/// </summary>
[ApiDescriptionSettings(Tag = "Extend", Name = "BigData", Order = 600)]
[Route("api/extend/[controller]")]
public class BigDataService : IDynamicApiController, ITransient
{
private readonly ISqlSugarRepository<BigDataEntity> _repository;
/// <summary>
/// 初始化一个<see cref="BigDataService"/>类型的新实例.
/// </summary>
public BigDataService(ISqlSugarRepository<BigDataEntity> repository)
{
_repository = repository;
}
#region GET
/// <summary>
/// 列表
/// </summary>
/// <param name="input">请求参数</param>
/// <returns></returns>
[HttpGet("")]
public async Task<dynamic> GetList([FromQuery] PageInputBase input)
{
var queryWhere = LinqExpression.And<BigDataEntity>();
if (!string.IsNullOrEmpty(input.keyword))
queryWhere = queryWhere.And(m => m.FullName.Contains(input.keyword) || m.EnCode.Contains(input.keyword));
var list = await _repository.AsQueryable().Where(queryWhere).OrderBy(x => x.CreatorTime, OrderByType.Desc).ToPagedListAsync(input.currentPage, input.pageSize);
var pageList = new SqlSugarPagedList<BigDataListOutput>()
{
list = list.list.Adapt<List<BigDataListOutput>>(),
pagination = list.pagination
};
return PageResult<BigDataListOutput>.SqlSugarPageResult(pageList);
}
#endregion
#region POST
/// <summary>
/// 新建
/// </summary>
/// <returns></returns>
[HttpPost("")]
public async Task Create()
{
var list = await _repository.GetListAsync();
var code = 0;
if (list.Count > 0)
{
code = list.Select(x => x.EnCode).ToList().Max().ParseToInt();
}
var index = code == 0 ? 10000001 : code;
if (index > 11500001)
throw Oops.Oh(ErrorCode.Ex0001);
List<BigDataEntity> entityList = new List<BigDataEntity>();
for (int i = 0; i < 10000; i++)
{
entityList.Add(new BigDataEntity
{
Id = SnowflakeIdHelper.NextId(),
EnCode = index.ToString(),
FullName = "测试大数据" + index,
CreatorTime = DateTime.Now,
});
index++;
}
Blukcopy(entityList);
}
#endregion
#region PrivateMethod
/// <summary>
/// 大数据批量插入.
/// </summary>
/// <param name="entityList"></param>
private void Blukcopy(List<BigDataEntity> entityList)
{
try
{
var storageable = _repository.AsSugarClient().Storageable(entityList).SplitInsert(x => true).ToStorage();
switch (_repository.AsSugarClient().CurrentConnectionConfig.DbType)
{
case DbType.Dm:
case DbType.Kdbndp:
storageable.AsInsertable.ExecuteCommand();
break;
case DbType.Oracle:
_repository.AsSugarClient().Storageable(entityList).ToStorage().BulkCopy();
break;
default:
_repository.AsSugarClient().Fastest<BigDataEntity>().BulkCopy(entityList);
break;
}
}
catch (Exception ex)
{
throw;
}
}
#endregion
}