Commit 2922823f by lcx

获取报表sql条件更改

parent 68035f62
......@@ -43,9 +43,8 @@ public PerformanceQuery(GraphQLService service)
int reportId = context.Arguments.ContainsKey(QueryParams.reportId)
? ConvertHelper.To<int>(context.Arguments[QueryParams.reportId])
: 0;
StringBuilder where = new StringBuilder();
var parameters = GetDynamicParameters(context.Arguments, where, QueryParams.hospitalId, QueryParams.year, QueryParams.month, QueryParams.accountingUnit);
return service.GetChartData(reportId, parameters, where.ToString());
var parameters = GetDynamicParameters(context.Arguments, QueryParams.hospitalId, QueryParams.year, QueryParams.month, QueryParams.accountingUnit);
return service.GetChartData(reportId, parameters);
}
);
......@@ -60,9 +59,8 @@ public PerformanceQuery(GraphQLService service)
int reportId = context.Arguments.ContainsKey(QueryParams.reportId)
? ConvertHelper.To<int>(context.Arguments[QueryParams.reportId])
: 0;
StringBuilder where = new StringBuilder();
var parameters = GetDynamicParameters(context.Arguments, where, QueryParams.hospitalId, QueryParams.year, QueryParams.month, QueryParams.accountingUnit, QueryParams.category, QueryParams.itemName);
return service.GetReportPerformance(reportId, parameters, where.ToString());
var parameters = GetDynamicParameters(context.Arguments, QueryParams.hospitalId, QueryParams.year, QueryParams.month, QueryParams.accountingUnit, QueryParams.category, QueryParams.itemName);
return service.GetReportPerformance(reportId, parameters);
}
);
}
......@@ -88,7 +86,7 @@ public static QueryArguments Arguments(params QueryArgument[] args)
return basic;
}
public DynamicParameters GetDynamicParameters(Dictionary<string, object> arguments, StringBuilder builder, params string[] fields)
public DynamicParameters GetDynamicParameters(Dictionary<string, object> arguments, params string[] fields)
{
DynamicParameters parameters = new DynamicParameters();
if (arguments == null || !arguments.Any()) return parameters;
......@@ -99,7 +97,6 @@ public DynamicParameters GetDynamicParameters(Dictionary<string, object> argumen
if (arguments.ContainsKey(item))
{
parameters.Add(item.ToLower(), arguments[item]);
builder.Append($" and {item.ToLower()}=@{item.ToLower()} ");
}
}
}
......
......@@ -142,10 +142,10 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.his_import_clinic">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.his_import_summary">
<member name="P:Performance.EntityModels.PerformanceDbContext.his_importdata">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.his_importdata">
<member name="P:Performance.EntityModels.PerformanceDbContext.his_script">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.hos_personfee">
......@@ -2498,51 +2498,6 @@
创建时间
</summary>
</member>
<member name="T:Performance.EntityModels.his_import_summary">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.AllotId">
<summary>
ID
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.Year">
<summary>
绩效发放年
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.Month">
<summary>
绩效发放月
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.AccountingUnit">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.RealGiveFee">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.his_import_summary.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="T:Performance.EntityModels.his_script">
<summary>
......
......@@ -105,8 +105,6 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
/// <summary> </summary>
public virtual DbSet<his_import_clinic> his_import_clinic { get; set; }
/// <summary> </summary>
public virtual DbSet<his_import_summary> his_import_summary { get; set; }
/// <summary> </summary>
public virtual DbSet<his_importdata> his_importdata { get; set; }
/// <summary> </summary>
public virtual DbSet<his_script> his_script { get; set; }
......
//-----------------------------------------------------------------------
// <copyright file=" his_import_summary.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("his_import_summary")]
public class his_import_summary
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
/// 医院ID
/// </summary>
public int HospitalId { get; set; }
/// <summary>
/// ID
/// </summary>
public int AllotId { get; set; }
/// <summary>
/// 绩效发放年
/// </summary>
public int Year { get; set; }
/// <summary>
/// 绩效发放月
/// </summary>
public int Month { get; set; }
/// <summary>
///
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
///
/// </summary>
public Nullable<decimal> RealGiveFee { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public Nullable<DateTime> CreateTime { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" his_import_summary.cs">
// * FileName: his_import_summary.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// his_import_summary Repository
/// </summary>
public partial class PerforHisimportsummaryRepository : PerforRepository<his_import_summary>
{
public PerforHisimportsummaryRepository(PerformanceDbContext context) : base(context)
{
}
}
}
......@@ -52,7 +52,7 @@ public ReportData GetReport(int reportId)
return new ReportData(report);
}
public List<ChartData> GetChartData(int reportId, DynamicParameters parameters, string where = null)
public List<ChartData> GetChartData(int reportId, DynamicParameters parameters)
{
if (reportId == 0) return new List<ChartData>();
......@@ -62,7 +62,8 @@ public List<ChartData> GetChartData(int reportId, DynamicParameters parameters,
if (report == null || string.IsNullOrEmpty(report.Content)) return new List<ChartData>();
var sql = report.Content.ToLower();
if (!string.IsNullOrEmpty(where)) sql = sql.Replace("{wh}", where);
string where = GetQueryCondition(sql, parameters);
sql = sql.Replace("{wh}", where);
var chartData = repreportRepository.DapperQuery<ChartData>(sql, parameters, 60 * 5);
......@@ -75,7 +76,7 @@ public List<ChartData> GetChartData(int reportId, DynamicParameters parameters,
}
}
public List<ReportTable> GetReportPerformance(int reportId, DynamicParameters parameters, string where = null)
public List<ReportTable> GetReportPerformance(int reportId, DynamicParameters parameters)
{
if (reportId == 0) return new List<ReportTable>();
......@@ -85,7 +86,8 @@ public List<ReportTable> GetReportPerformance(int reportId, DynamicParameters pa
if (report == null || string.IsNullOrEmpty(report.Content)) return new List<ReportTable>();
var sql = report.Content.ToLower();
if (!string.IsNullOrEmpty(where)) sql = sql.Replace("{wh}", where);
string where = GetQueryCondition(sql, parameters);
sql = sql.Replace("{wh}", where);
var chartData = repreportRepository.DapperQuery<ReportTable>(sql, parameters, 60 * 5);
......@@ -97,5 +99,22 @@ public List<ReportTable> GetReportPerformance(int reportId, DynamicParameters pa
return new List<ReportTable>();
}
}
private string GetQueryCondition(string sql, DynamicParameters parameters)
{
StringBuilder builder = new StringBuilder();
if (parameters != null && parameters.ParameterNames.Any())
{
foreach (var parameter in parameters.ParameterNames.Select(t => t))
{
string key = "@" + parameter;
if (sql.IndexOf(key) == -1)
{
builder.Append($" and {parameter} = {key} ");
}
}
}
return builder.ToString();
}
}
}
......@@ -19,7 +19,6 @@ public class ReportGlobalService : IAutoInjection
private readonly PerforPerallotRepository perallotRepository;
private readonly PerforReportglobalRepository reportglobalRepository;
private readonly PerforHisimportdataRepository hisimportdataRepository;
private readonly PerforHisimportsummaryRepository hisimportsummaryRepository;
private readonly PerforHisimportaccountRepository hisimportaccountRepository;
private readonly PerforHisimportclinicRepository hisimportclinicRepository;
private readonly PerforHisimportbaiscnormRepository hisimportbaiscnormRepository;
......@@ -31,7 +30,6 @@ public class ReportGlobalService : IAutoInjection
PerforPerallotRepository perallotRepository,
PerforReportglobalRepository reportglobalRepository,
PerforHisimportdataRepository hisimportdataRepository,
PerforHisimportsummaryRepository hisimportsummaryRepository,
PerforHisimportaccountRepository hisimportaccountRepository,
PerforHisimportclinicRepository hisimportclinicRepository,
PerforHisimportbaiscnormRepository hisimportbaiscnormRepository,
......@@ -43,7 +41,6 @@ PerforReportperformancepersontagsRepository reportperformancepersontagsRepositor
this.perallotRepository = perallotRepository;
this.reportglobalRepository = reportglobalRepository;
this.hisimportdataRepository = hisimportdataRepository;
this.hisimportsummaryRepository = hisimportsummaryRepository;
this.hisimportaccountRepository = hisimportaccountRepository;
this.hisimportclinicRepository = hisimportclinicRepository;
this.hisimportbaiscnormRepository = hisimportbaiscnormRepository;
......@@ -181,6 +178,8 @@ public void ImportAllotData(int hospitalId, string filePath)
var allots = perallotRepository.GetEntities(t => t.HospitalId == hospitalId);
var basicnormData = new List<his_import_baiscnorm>();
for (int sheetIndex = 0; sheetIndex < workbook.NumberOfSheets; sheetIndex++)
{
var sheet = workbook.GetSheetAt(sheetIndex);
......@@ -196,7 +195,7 @@ public void ImportAllotData(int hospitalId, string filePath)
switch (sheetName)
{
case "科室绩效":
ImporAccountData(sheet, columns, hospitalId, allots);
ImporAccountData(sheet, columns, hospitalId, allots, basicnormData);
break;
case "科室标签":
......@@ -204,7 +203,7 @@ public void ImportAllotData(int hospitalId, string filePath)
break;
case "科主任护士长绩效":
ImporClinicData(sheet, columns, hospitalId, allots);
ImporClinicData(sheet, columns, hospitalId, allots, basicnormData);
break;
case "科主任护士长标签":
......@@ -217,6 +216,19 @@ public void ImportAllotData(int hospitalId, string filePath)
}
logger.LogInformation($"{sheetName}读取已结束");
}
#region 人均绩效
if (basicnormData != null && basicnormData.Any())
{
foreach (var item in basicnormData.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportbaiscnormRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportbaiscnormRepository.BulkInsert(basicnormData);
}
#endregion 科室总绩效 人均绩效
}
catch (Exception ex)
{
......@@ -226,6 +238,8 @@ public void ImportAllotData(int hospitalId, string filePath)
private void ImportBasicData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots, string sheetName, string sourceType)
{
if (string.IsNullOrEmpty(sourceType)) return;
var data = new List<his_importdata>();
for (int rowIndex = 1; rowIndex < sheet.LastRowNum + 1; rowIndex++)
{
......@@ -265,7 +279,7 @@ private void ImportBasicData(ISheet sheet, List<string> columns, int hospitalId,
hisimportdataRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
}
private void ImporAccountData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots)
private void ImporAccountData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots, List<his_import_baiscnorm> basicnormData)
{
var data = new List<his_import_account>();
for (int rowIndex = 1; rowIndex < sheet.LastRowNum + 1; rowIndex++)
......@@ -295,47 +309,6 @@ private void ImporAccountData(ISheet sheet, List<string> columns, int hospitalId
t.CreateTime = dateTime;
});
#region his_import_summary 科室总绩效
logger.LogInformation($"添加科室总绩效");
var summaryData = data.GroupBy(t => new { t.AllotId, t.Year, t.Month, t.AccountingUnit }).Select(t => new his_import_summary
{
HospitalId = hospitalId,
AllotId = t.Key.AllotId ?? 0,
Year = t.Key.Year,
Month = t.Key.Month,
AccountingUnit = t.Key.AccountingUnit,
RealGiveFee = t.Sum(s => s.RealGiveFee),
CreateTime = dateTime
});
foreach (var item in summaryData.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportsummaryRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportsummaryRepository.BulkInsert(summaryData.Where(t => t.Year != 0 && t.Month != 0));
#endregion his_import_summary
#region his_import_account 临床科室绩效
logger.LogInformation($"临床科室绩效");
string[] clinicAccountTypes = new string[]
{
UnitType.医生组.ToString(),
UnitType.护理组.ToString(),
UnitType.医技组.ToString(),
UnitType.其他医生组.ToString(),
UnitType.其他护理组.ToString(),
UnitType.其他医技组.ToString(),
UnitType.特殊核算组.ToString()
};
if (data.Any(t => clinicAccountTypes.Contains(t.UnitType)))
{
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportaccountRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportaccountRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0 && clinicAccountTypes.Contains(t.UnitType)));
}
#endregion his_import_account
#region his_import_baiscnorm 人均绩效计算
logger.LogInformation($"人均绩效计算");
Dictionary<string, string> basicDict = new Dictionary<string, string>
......@@ -348,7 +321,7 @@ private void ImporAccountData(ISheet sheet, List<string> columns, int hospitalId
List<his_import_baiscnorm> baiscnorms = new List<his_import_baiscnorm>();
foreach (var item in basicDict)
{
var basicnormData = data.Where(t => t.UnitType == item.Value).GroupBy(t => new { t.AllotId, t.Year, t.Month }).Select(t => new his_import_baiscnorm
basicnormData.AddRange(data.Where(t => t.UnitType == item.Value).GroupBy(t => new { t.AllotId, t.Year, t.Month }).Select(t => new his_import_baiscnorm
{
HospitalId = hospitalId,
AllotId = t.Key.AllotId ?? 0,
......@@ -359,15 +332,18 @@ private void ImporAccountData(ISheet sheet, List<string> columns, int hospitalId
TotelNumber = t.Sum(s => s.Number),
AvgValue = t.Sum(s => s.Number) == 0 ? 0 : t.Sum(s => s.RealGiveFee) / t.Sum(s => s.Number),
CreateTime = dateTime
});
baiscnorms.AddRange(basicnormData);
}));
}
foreach (var item in baiscnorms.Select(t => new { t.Year, t.Month, t.PositionName }).Distinct())
#endregion his_import_baiscnorm
#region his_import_account 临床科室绩效
logger.LogInformation($"临床科室绩效");
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportbaiscnormRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month && t.PositionName == item.PositionName);
hisimportaccountRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportbaiscnormRepository.BulkInsert(baiscnorms);
#endregion his_import_baiscnorm
hisimportaccountRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
#endregion his_import_account
}
private void ImporAccountTag(ISheet sheet, List<string> columns, int hospitalId)
......@@ -404,7 +380,7 @@ private void ImporAccountTag(ISheet sheet, List<string> columns, int hospitalId)
reportperformancetagsRepository.BulkInsert(data.Where(t => !string.IsNullOrEmpty(t.UnitType) && !string.IsNullOrEmpty(t.AccountingUnit)));
}
private void ImporClinicData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots)
private void ImporClinicData(ISheet sheet, List<string> columns, int hospitalId, List<per_allot> allots, List<his_import_baiscnorm> basicnormData)
{
var data = new List<his_import_clinic>();
for (int rowIndex = 1; rowIndex < sheet.LastRowNum + 1; rowIndex++)
......@@ -437,15 +413,6 @@ private void ImporClinicData(ISheet sheet, List<string> columns, int hospitalId,
t.CreateTime = dateTime;
});
#region his_import_clinic 科主任护士长绩效
logger.LogInformation($"科主任护士长绩效");
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportclinicRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportclinicRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
#endregion his_import_clinic
#region his_import_baiscnorm 人均绩效计算
logger.LogInformation($"人均绩效计算");
Dictionary<string, string> basicDict = new Dictionary<string, string>
......@@ -457,7 +424,7 @@ private void ImporClinicData(ISheet sheet, List<string> columns, int hospitalId,
List<his_import_baiscnorm> baiscnorms = new List<his_import_baiscnorm>();
foreach (var item in basicDict)
{
var basicnormData = data.Where(t => t.UnitType == item.Value).GroupBy(t => new { t.AllotId, t.Year, t.Month }).Select(t => new his_import_baiscnorm
basicnormData.AddRange(data.Where(t => t.UnitType == item.Value).GroupBy(t => new { t.AllotId, t.Year, t.Month }).Select(t => new his_import_baiscnorm
{
HospitalId = hospitalId,
AllotId = t.Key.AllotId ?? 0,
......@@ -468,15 +435,18 @@ private void ImporClinicData(ISheet sheet, List<string> columns, int hospitalId,
TotelNumber = t.Sum(s => s.Basics),
AvgValue = t.Sum(s => s.Basics) == 0 ? 0 : t.Sum(s => s.RealGiveFee) / t.Sum(s => s.Basics),
CreateTime = dateTime
});
baiscnorms.AddRange(basicnormData);
}));
}
foreach (var item in baiscnorms.Select(t => new { t.Year, t.Month, t.PositionName }).Distinct())
#endregion his_import_baiscnorm
#region his_import_clinic 科主任护士长绩效
logger.LogInformation($"科主任护士长绩效");
foreach (var item in data.Select(t => new { t.Year, t.Month }).Distinct())
{
hisimportbaiscnormRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month && t.PositionName == item.PositionName);
hisimportclinicRepository.DeleteFromQuery(t => t.HospitalId == hospitalId && t.Year == item.Year && t.Month == item.Month);
}
hisimportbaiscnormRepository.BulkInsert(baiscnorms);
#endregion his_import_baiscnorm
hisimportclinicRepository.BulkInsert(data.Where(t => t.Year != 0 && t.Month != 0));
#endregion his_import_clinic
}
private void ImporClinicTag(ISheet sheet, List<string> columns, int hospitalId)
......@@ -491,8 +461,8 @@ private void ImporClinicTag(ISheet sheet, List<string> columns, int hospitalId)
{
UnitType = GetCellValue<string>(row, columns, "核算单元类型"),
AccountingUnit = GetCellValue<string>(row, columns, "核算单元"),
PersonnelName = GetCellValue<string>(row, columns, "工号"),
PersonnelNumber = GetCellValue<string>(row, columns, "姓名"),
PersonnelName = GetCellValue<string>(row, columns, "姓名"),
PersonnelNumber = GetCellValue<string>(row, columns, "工号"),
Tag1 = GetCellValue<string>(row, columns, "Tag1"),
Tag2 = GetCellValue<string>(row, columns, "Tag2"),
Tag3 = GetCellValue<string>(row, columns, "Tag3"),
......
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