Commit d15d08c8 by lcx

Merge branch 'v2020morge' into v2020morge-graphql

parents d1a3b266 fe4853ca
......@@ -166,6 +166,22 @@ public ApiResponse Import([FromForm] IFormCollection form)
#region 新版提取
/// <summary>
/// 提取前检查
/// </summary>
/// <returns></returns>
[HttpPost("Prejudge/{allotId}")]
public ApiResponse Prejudge([FromRoute] int allotId)
{
string filePath = configService.LastAllotFilePath(allotId);
if (!string.IsNullOrEmpty(filePath) && FileHelper.IsExistFile(filePath))
{
var data = configService.CheckHasNewDepartmentOrCategory(allotId);
return new ApiResponse(ResponseType.OK, new { haserror = (data != null && data.Any()), data });
}
return new ApiResponse(ResponseType.OK);
}
/// <summary>
/// 提取绩效数据
/// </summary>
/// <param name="request"></param>
......
......@@ -1341,6 +1341,12 @@
<param name="form"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.TemplateController.Prejudge(System.Int32)">
<summary>
提取前检查
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.TemplateController.NewExtractData(Performance.DtoModels.ExtractRequest)">
<summary>
提取绩效数据
......
......@@ -4,8 +4,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Z.EntityFramework.Extensions;
namespace Performance.Repository
{
......@@ -23,18 +23,22 @@ public TEntity DapperQueryFirst(string sql, object param)
{
return context.Database.GetDbConnection().QueryFirst<TEntity>(sql, param);
}
public IEnumerable<TEntity> DapperQuery(string sql, object param)
{
return context.Database.GetDbConnection().Query<TEntity>(sql, param);
}
public IEnumerable<TEntity> DapperQuery(string sql, object param, int? commandTimeout = null)
{
return context.Database.GetDbConnection().Query<TEntity>(sql, param, commandTimeout: commandTimeout);
}
public IEnumerable<T> DapperQuery<T>(string sql, object param) where T : class, new()
{
return context.Database.GetDbConnection().Query<T>(sql, param);
}
public T DapperQueryFirstOrDefault<T>(string sql, object param)
{
return context.Database.GetDbConnection().QueryFirstOrDefault<T>(sql, param);
......@@ -79,11 +83,13 @@ public bool Remove(TEntity entity)
context.Set<TEntity>().Remove(entity);
return context.SaveChanges() > 0;
}
public bool RemoveRange(params TEntity[] entities)
{
context.Set<TEntity>().RemoveRange(entities);
return context.SaveChanges() > 0;
}
public bool RemoveRange(Expression<Func<TEntity, bool>> exp)
{
var query = CompileQuery(exp);
......@@ -144,5 +150,42 @@ private TEntity CompileQuerySingle(Expression<Func<TEntity, bool>> exp)
var func = EF.CompileQuery((DbContext context, Expression<Func<TEntity, bool>> exps) => context.Set<TEntity>().FirstOrDefault(exp));
return func(context, exp);
}
#region Bulk
public void BulkInsert(IEnumerable<TEntity> entities)
{
EntityFrameworkManager.ContextFactory = factory => context;
context.Set<TEntity>().BulkInsert(entities);
context.BulkSaveChanges();
}
public async Task BulkInsertAsync(IEnumerable<TEntity> entities)
{
EntityFrameworkManager.ContextFactory = factory => context;
await context.Set<TEntity>().BulkInsertAsync(entities);
await context.BulkSaveChangesAsync();
}
public int DeleteFromQuery(Expression<Func<TEntity, bool>> exp)
{
return context.Set<TEntity>().Where(exp).DeleteFromQuery();
}
public void BulkDelete(IEnumerable<TEntity> entities)
{
EntityFrameworkManager.ContextFactory = factory => context;
context.Set<TEntity>().BulkDelete(entities);
context.BulkSaveChanges();
}
public async Task BulkDeleteAsync(IEnumerable<TEntity> entities)
{
EntityFrameworkManager.ContextFactory = factory => context;
await context.Set<TEntity>().BulkDeleteAsync(entities);
await context.BulkSaveChangesAsync();
}
#endregion Bulk
}
}
......@@ -10,6 +10,7 @@
<PackageReference Include="MySql.Data" Version="8.0.15" />
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.15" />
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="2.19.60" />
<PackageReference Include="Z.EntityFramework.Extensions.EFCore" Version="2.8.20" />
</ItemGroup>
<ItemGroup>
......
......@@ -608,6 +608,22 @@ public ModFeeResponse FeeSource(ModModuleRequest request)
#region 配置校验
public string LastAllotFilePath(int allotId)
{
// 获取绩效信息
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
if (allot == null)
throw new PerformanceException("AllotID错误");
var statesArray = new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive };
var allotList = perallotRepository.GetEntities(t => t.HospitalId == allot.HospitalId && statesArray.Contains(t.States));
var allotLast = allotList?.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First();
if (allotLast != null)
return allotLast.Path;
return "";
}
/// <summary>
/// 配置校验
/// </summary>
......
......@@ -7,6 +7,7 @@
using Performance.Services.ExtractExcelService;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
......@@ -204,10 +205,9 @@ public void ImportAllotData(int hospitalId, string filePath)
var years = data.Select(t => t.Year).Distinct();
var months = data.Select(t => t.Month).Distinct();
var historyData = hisimportdataRepository.GetEntities(t => t.HospitalId == hospitalId && years.Contains(t.Year) && months.Contains(t.Month) && t.Category == sheetName);
if (historyData != null && historyData.Any()) hisimportdataRepository.RemoveRange(historyData.ToArray());
hisimportdataRepository.AddRange(data.Where(t => t.Year != 0 && t.Month != 0).ToArray());
hisimportdataRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && years.Contains(t.Year) && months.Contains(t.Month) && t.Category == sheetName);
hisimportdataRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
}
}
catch (Exception ex)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment