Commit d15d08c8 by lcx

Merge branch 'v2020morge' into v2020morge-graphql

parents d1a3b266 fe4853ca
...@@ -166,6 +166,22 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -166,6 +166,22 @@ public ApiResponse Import([FromForm] IFormCollection form)
#region 新版提取 #region 新版提取
/// <summary> /// <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> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
......
...@@ -1341,6 +1341,12 @@ ...@@ -1341,6 +1341,12 @@
<param name="form"></param> <param name="form"></param>
<returns></returns> <returns></returns>
</member> </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)"> <member name="M:Performance.Api.Controllers.TemplateController.NewExtractData(Performance.DtoModels.ExtractRequest)">
<summary> <summary>
提取绩效数据 提取绩效数据
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Z.EntityFramework.Extensions;
namespace Performance.Repository namespace Performance.Repository
{ {
...@@ -23,18 +23,22 @@ public TEntity DapperQueryFirst(string sql, object param) ...@@ -23,18 +23,22 @@ public TEntity DapperQueryFirst(string sql, object param)
{ {
return context.Database.GetDbConnection().QueryFirst<TEntity>(sql, param); return context.Database.GetDbConnection().QueryFirst<TEntity>(sql, param);
} }
public IEnumerable<TEntity> DapperQuery(string sql, object param) public IEnumerable<TEntity> DapperQuery(string sql, object param)
{ {
return context.Database.GetDbConnection().Query<TEntity>(sql, param); return context.Database.GetDbConnection().Query<TEntity>(sql, param);
} }
public IEnumerable<TEntity> DapperQuery(string sql, object param, int? commandTimeout = null) public IEnumerable<TEntity> DapperQuery(string sql, object param, int? commandTimeout = null)
{ {
return context.Database.GetDbConnection().Query<TEntity>(sql, param, commandTimeout: commandTimeout); return context.Database.GetDbConnection().Query<TEntity>(sql, param, commandTimeout: commandTimeout);
} }
public IEnumerable<T> DapperQuery<T>(string sql, object param) where T : class, new() public IEnumerable<T> DapperQuery<T>(string sql, object param) where T : class, new()
{ {
return context.Database.GetDbConnection().Query<T>(sql, param); return context.Database.GetDbConnection().Query<T>(sql, param);
} }
public T DapperQueryFirstOrDefault<T>(string sql, object param) public T DapperQueryFirstOrDefault<T>(string sql, object param)
{ {
return context.Database.GetDbConnection().QueryFirstOrDefault<T>(sql, param); return context.Database.GetDbConnection().QueryFirstOrDefault<T>(sql, param);
...@@ -79,11 +83,13 @@ public bool Remove(TEntity entity) ...@@ -79,11 +83,13 @@ public bool Remove(TEntity entity)
context.Set<TEntity>().Remove(entity); context.Set<TEntity>().Remove(entity);
return context.SaveChanges() > 0; return context.SaveChanges() > 0;
} }
public bool RemoveRange(params TEntity[] entities) public bool RemoveRange(params TEntity[] entities)
{ {
context.Set<TEntity>().RemoveRange(entities); context.Set<TEntity>().RemoveRange(entities);
return context.SaveChanges() > 0; return context.SaveChanges() > 0;
} }
public bool RemoveRange(Expression<Func<TEntity, bool>> exp) public bool RemoveRange(Expression<Func<TEntity, bool>> exp)
{ {
var query = CompileQuery(exp); var query = CompileQuery(exp);
...@@ -144,5 +150,42 @@ private TEntity CompileQuerySingle(Expression<Func<TEntity, bool>> 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)); var func = EF.CompileQuery((DbContext context, Expression<Func<TEntity, bool>> exps) => context.Set<TEntity>().FirstOrDefault(exp));
return func(context, 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 @@ ...@@ -10,6 +10,7 @@
<PackageReference Include="MySql.Data" Version="8.0.15" /> <PackageReference Include="MySql.Data" Version="8.0.15" />
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.15" /> <PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.15" />
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="2.19.60" /> <PackageReference Include="Oracle.ManagedDataAccess.Core" Version="2.19.60" />
<PackageReference Include="Z.EntityFramework.Extensions.EFCore" Version="2.8.20" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -608,6 +608,22 @@ public ModFeeResponse FeeSource(ModModuleRequest request) ...@@ -608,6 +608,22 @@ public ModFeeResponse FeeSource(ModModuleRequest request)
#region 配置校验 #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>
/// 配置校验 /// 配置校验
/// </summary> /// </summary>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
using Performance.Services.ExtractExcelService; using Performance.Services.ExtractExcelService;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
...@@ -204,10 +205,9 @@ public void ImportAllotData(int hospitalId, string filePath) ...@@ -204,10 +205,9 @@ public void ImportAllotData(int hospitalId, string filePath)
var years = data.Select(t => t.Year).Distinct(); var years = data.Select(t => t.Year).Distinct();
var months = data.Select(t => t.Month).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) 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