Commit db51957b by 李承祥

界面日志信息输出

parent 1c089166
......@@ -15,16 +15,19 @@ public class CheckDataService : IAutoInjection
private PerforCofcheckRepository perforCofcheckRepository;
private PerforLogcheckRepository perforLogcheckRepository;
private PerforCofdrugtypeRepository perforCofdrugtypeRepository;
private LogManageService logManageService;
public CheckDataService(PerSheetService perSheetService,
PerforCofcheckRepository perforCofcheckRepository,
PerforLogcheckRepository perforLogcheckRepository,
PerforCofdrugtypeRepository perforCofdrugtypeRepository
PerforCofdrugtypeRepository perforCofdrugtypeRepository,
LogManageService logManageService
)
{
this.perSheetService = perSheetService;
this.perforCofcheckRepository = perforCofcheckRepository;
this.perforLogcheckRepository = perforLogcheckRepository;
this.perforCofdrugtypeRepository = perforCofdrugtypeRepository;
this.logManageService = logManageService;
}
internal bool Check(PerExcel excel, per_allot allot)
{
......@@ -232,6 +235,7 @@ public void InsertLog(int allotId, int type, int level, string title, string mes
Message = message
};
perforLogcheckRepository.Add(model);
logManageService.WriteMsg("绩效数据校验", $"{title} - {message}", allotId, "ReceiveMessage");
}
#endregion
}
......
......@@ -27,7 +27,8 @@ public class ImportDataService : IAutoInjection
private PerforImemployeeRepository perforImEmployeeRepository;
private PerforImaccountbasicRepository perforImaccountbasicRepository;
private PerforImspecialunitRepository perforImspecialunitRepository;
private PerforLogdbugRepository logdbug;
//private PerforLogdbugRepository logdbug;
private readonly LogManageService logManageService;
public ImportDataService(PerSheetService perSheetService,
PerforPersheetRepository perforPerSheetRepository,
PerforPerallotRepository perforPerallotRepository,
......@@ -36,7 +37,8 @@ public class ImportDataService : IAutoInjection
PerforImemployeeRepository perforImEmployeeRepository,
PerforImaccountbasicRepository perforImaccountbasicRepository,
PerforImspecialunitRepository perforImspecialunitRepository,
PerforLogdbugRepository logdbug)
//PerforLogdbugRepository logdbug
LogManageService logManageService)
{
this.perSheetService = perSheetService;
this.perforPerSheetRepository = perforPerSheetRepository;
......@@ -46,7 +48,8 @@ public class ImportDataService : IAutoInjection
this.perforImEmployeeRepository = perforImEmployeeRepository;
this.perforImaccountbasicRepository = perforImaccountbasicRepository;
this.perforImspecialunitRepository = perforImspecialunitRepository;
this.logdbug = logdbug;
//this.logdbug = logdbug;
this.logManageService = logManageService;
}
/// <summary>
......@@ -86,7 +89,8 @@ private PerExcel Import(per_allot allot)
var sheet = workbook.GetSheetAt(i);
var sheetType = perSheetService.GetSheetType(sheet.SheetName);
logdbug.Add(allot.ID, "开始读取excel文件", JsonHelper.Serialize(new { sheetType, Description = EnumHelper.GetDescription(sheetType), name = sheet.SheetName }));
//logdbug.Add(allot.ID, "开始读取excel文件", JsonHelper.Serialize(new { sheetType, Description = EnumHelper.GetDescription(sheetType), name = sheet.SheetName }));
logManageService.WriteMsg("开始读取excel文件", JsonHelper.Serialize(new { sheetType, Description = EnumHelper.GetDescription(sheetType), name = sheet.SheetName }), allot.ID, "ReceiveMessage", true);
if (SheetType.Unidentifiable != sheetType)
{
var st = perSheetService.Sheet(sheet);
......@@ -233,22 +237,26 @@ private bool Save(PerExcel excel, int allotId)
{
if (sheet.SheetType == SheetType.Employee)
{
logdbug.Add(allotId, "开始保存人员数据数据", sheet.SheetName);
//logdbug.Add(allotId, "开始保存人员数据数据", sheet.SheetName);
logManageService.WriteMsg("保存基础数据", "开始保存人员数据数据", allotId, "ReceiveMessage", true);
SaveEmployee(sheet, allotId);
}
else if (sheet.SheetType == SheetType.AccountBasic)
{
logdbug.Add(allotId, "开始保存临床科室医护绩效测算基础数据", sheet.SheetName);
//logdbug.Add(allotId, "开始保存临床科室医护绩效测算基础数据", sheet.SheetName);
logManageService.WriteMsg("保存基础数据", "开始保存临床科室医护绩效测算基础数据", allotId, "ReceiveMessage", true);
SaveAccountBasic(sheet, allotId);
}
else if (sheet.SheetType == SheetType.SpecialUnit)
{
logdbug.Add(allotId, "开始保存特殊核算单元数据", sheet.SheetName);
//logdbug.Add(allotId, "开始保存特殊核算单元数据", sheet.SheetName);
logManageService.WriteMsg("保存基础数据", "开始保存特殊核算单元数据", allotId, "ReceiveMessage", true);
SaveSpecialUnit(sheet, allotId);
}
else
{
logdbug.Add(allotId, "开始保存统一格式数据", sheet.SheetName);
//logdbug.Add(allotId, "开始保存统一格式数据", sheet.SheetName);
logManageService.WriteMsg("保存基础数据", $"开始保存{sheet.SheetName}数据", allotId, "ReceiveMessage", true);
SaveCommon(sheet, allotId);
}
}
......
......@@ -25,6 +25,7 @@ public class ProcessComputService : IAutoInjection
private PerforResaccountRepository perforResaccountRepository;
private PerforResbaiscnormRepository perforResbaiscnormRepository;
private PerforCofdrugtypeRepository perforCofdrugtypeRepository;
private readonly LogManageService logManageService;
public ProcessComputService(PerforCofincomeRepository perforCofincomeRepository,
PerforCofdrugpropRepository perforCofdrugpropRepository,
PerforPersheetRepository perforPerSheetRepository,
......@@ -33,7 +34,8 @@ public class ProcessComputService : IAutoInjection
PerforImemployeeRepository perforImEmployeeRepository,
PerforResaccountRepository perforResaccountRepository,
PerforResbaiscnormRepository perforResbaiscnormRepository,
PerforCofdrugtypeRepository perforCofdrugtypeRepository)
PerforCofdrugtypeRepository perforCofdrugtypeRepository,
LogManageService logManageService)
{
this.perforCofincomeRepository = perforCofincomeRepository;
this.perforCofdrugpropRepository = perforCofdrugpropRepository;
......@@ -44,6 +46,7 @@ public class ProcessComputService : IAutoInjection
this.perforResaccountRepository = perforResaccountRepository;
this.perforResbaiscnormRepository = perforResbaiscnormRepository;
this.perforCofdrugtypeRepository = perforCofdrugtypeRepository;
this.logManageService = logManageService;
}
/// <summary>
......@@ -160,6 +163,7 @@ private void Save(List<PerSheet> perSheets, int allotId)
{
foreach (var sheet in perSheets)
{
logManageService.WriteMsg("正在生成绩效", $"保存核算数据 - {sheet.SheetName}", allotId, "ReceiveMessage");
if (sheet.SheetType == SheetType.ComputeDoctorAccount)
{
SaveComputeDoctorAccount(sheet, allotId);
......@@ -187,25 +191,31 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid)
//合并科室收入、支出
var incomeconfs = perforCofincomeRepository.GetEntities();
var economicCompute = new PerSheetDataComputeEconomic();
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表", allotid, "ReceiveMessage");
var mergeResult = economicCompute.MergeCompute(excel, incomeconfs);
//一次计算
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表 -- 第一次计算", allotid, "ReceiveMessage");
var onceEconomic = economicCompute.OnceCompute(mergeResult);
//二次计算
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表 -- 第二次计算", allotid, "ReceiveMessage");
var twiceEconomicResult = economicCompute.TwiceCompute(onceEconomic);
twiceEconomicResult.Sheet.SheetType = SheetType.ComputeEconomic;
perSheet.Add(twiceEconomicResult.Sheet);
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表 -- 计算完成", allotid, "ReceiveMessage");
//工作量
var workloadCompute = new PerSheetDataComputeWorkload();
var workload1 = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.Workload && t.SheetName.Contains("医生组"));
workload1.SheetName = "医生组工作量绩效测算表";
logManageService.WriteMsg("正在生成绩效", "获取药品费用分割比例", allotid, "ReceiveMessage");
var confs = GetDrugConfig(excel, allotid);
//医生组 一次计算
//var onceWorkload1 = workloadCompute.OnceCompute(workload1, confs);
//医生组 二次计算
logManageService.WriteMsg("正在生成绩效", "医生组工作量计算", allotid, "ReceiveMessage");
var twiceWorkloadResult1 = workloadCompute.TwiceCompute(workload1);
twiceWorkloadResult1.Sheet.SheetType = SheetType.ComputeDoctorWorkload;
......@@ -216,6 +226,7 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid)
//护理组 一次计算
//var onceWorkload2 = workloadCompute.OnceCompute(workload2);
//护理组 二次计算
logManageService.WriteMsg("正在生成绩效", "护理组工作量计算", allotid, "ReceiveMessage");
var twiceWorkloadResult2 = workloadCompute.TwiceCompute(workload2);
twiceWorkloadResult2.Sheet.SheetType = SheetType.ComputeNurseWorkload;
......@@ -224,8 +235,10 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid)
var deptAccounting = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountBasic);
var dataList = deptAccounting.PerData.Select(t => (PerDataAccountBaisc)t);
logManageService.WriteMsg("正在生成绩效", "计算保底绩效参考标准", allotid, "ReceiveMessage");
var baiscnormList = ComputeMinimum(dataList, twiceEconomicResult.PerData, twiceWorkloadResult1.PerData, twiceWorkloadResult2.PerData, allotid);
logManageService.WriteMsg("正在生成绩效", "计算科室绩效", allotid, "ReceiveMessage");
var sheet = Compute(dataList, twiceEconomicResult.PerData, twiceWorkloadResult1.PerData, twiceWorkloadResult2.PerData, baiscnormList);
perSheet.AddRange(sheet);
......
......@@ -22,6 +22,7 @@ public class ResultComputeService : IAutoInjection
private readonly PerforResbaiscnormRepository perforResbaiscnormRepository;
private readonly PerforResspecialunitRepository perforResspecialunitRepository;
private readonly PerforImaccountbasicRepository perforImaccountbasicRepository;
private readonly LogManageService logManageService;
public ResultComputeService(
PerforImemployeeRepository perforImEmployeeRepository,
......@@ -29,7 +30,8 @@ public class ResultComputeService : IAutoInjection
PerforResbaiscnormRepository perforResbaiscnormRepository,
PerforResspecialunitRepository perforResspecialunitRepository,
PerforImaccountbasicRepository perforImaccountbasicRepository,
BaiscNormService baiscNormService, ComputeDirector computeDirector)
BaiscNormService baiscNormService, ComputeDirector computeDirector,
LogManageService logManageService)
{
this.baiscNormService = baiscNormService;
this.computeDirector = computeDirector;
......@@ -38,6 +40,7 @@ public class ResultComputeService : IAutoInjection
this.perforResbaiscnormRepository = perforResbaiscnormRepository;
this.perforResspecialunitRepository = perforResspecialunitRepository;
this.perforImaccountbasicRepository = perforImaccountbasicRepository;
this.logManageService = logManageService;
}
/// <summary>
......@@ -52,12 +55,14 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerShee
List<ComputeEmployee> computeEmployees = Mapper.Map<List<ComputeEmployee>>(empolyeeList);
logManageService.WriteMsg("正在生成绩效", "临床科室主任、临床科室副主任、临床科室护士长 最终绩效数据计算", allot.ID, "ReceiveMessage");
var computResult = computeDirector.Compute(computeEmployees, accountbasicList, allot);
//计算 绩效标准 基数(科主任、副主任、护士长 =>> 平均值)
List<res_baiscnorm> baiscnormList = new List<res_baiscnorm>();
baiscNormService.ComputeAvg(baiscnormList, accountbasicList, computResult);
baiscNormService.DocterNurseBaiscnorm(baiscnormList, accountbasicList, perSheets);
logManageService.WriteMsg("正在生成绩效", "院领导、业务中层、工勤人员 最终绩效数据计算", allot.ID, "ReceiveMessage");
var computResult2 = computeDirector.Compute(computeEmployees, allot, baiscnormList);
//计算 行政人员 平均值
baiscNormService.ComputeOtherAvg(baiscnormList, computResult2, empolyeeList);
......@@ -68,6 +73,7 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerShee
perforRescomputeRepository.AddRange(computes.ToArray());
baiscnormList.ForEach(t => t.AllotID = allot.ID);
logManageService.WriteMsg("正在生成绩效", "保存最终绩效数据", allot.ID, "ReceiveMessage");
perforResbaiscnormRepository.AddRange(baiscnormList.ToArray());
return baiscnormList;
......
......@@ -24,7 +24,7 @@ public class AllotService : IAutoInjection
private ImportDataService importDataService;
private ProcessComputService processComputService;
private ResultComputeService resultComputeService;
private PerforLogdbugRepository logdbug;
//private PerforLogdbugRepository logdbug;
private ConfigService configService;
private IHostingEnvironment _evn;
......@@ -35,7 +35,8 @@ public class AllotService : IAutoInjection
private PerforPeragainallotRepository _againallotRepository;
private PerforLogcheckRepository perforLogcheckRepository;
private readonly PerforHospitalRepository perforHospitalRepository;
private readonly IHubContext<AllotLogHub> hubContext;
//private readonly IHubContext<AllotLogHub> hubContext;
private readonly LogManageService logManageService;
public AllotService(PerforPerallotRepository allotRepository,
BaiscNormService baiscNormService,
......@@ -44,14 +45,15 @@ public class AllotService : IAutoInjection
ProcessComputService processComputService,
ResultComputeService resultComputeService,
ConfigService configService,
PerforLogdbugRepository logdbug,
//PerforLogdbugRepository logdbug,
IHostingEnvironment evn, ILogger<AllotService> logger,
IEmailService emailService,
IOptions<Application> options,
PerforPeragainallotRepository againallotRepository,
PerforLogcheckRepository perforLogcheckRepository,
PerforHospitalRepository perforHospitalRepository,
IHubContext<AllotLogHub> hubContext)
//IHubContext<AllotLogHub> hubContext
LogManageService logManageService)
{
_allotRepository = allotRepository;
_againallotRepository = againallotRepository;
......@@ -65,10 +67,11 @@ public class AllotService : IAutoInjection
this.emailService = emailService;
this.options = options;
this.configService = configService;
this.logdbug = logdbug;
//this.logdbug = logdbug;
this.perforLogcheckRepository = perforLogcheckRepository;
this.perforHospitalRepository = perforHospitalRepository;
this.hubContext = hubContext;
//this.hubContext = hubContext;
this.logManageService = logManageService;
}
#region 基础功能
......@@ -212,41 +215,52 @@ public void Generate(per_allot allot, string mail)
DateTime time = DateTime.Now;
try
{
hubContext.Clients.Group("aaaa").SendAsync("ReceiveMessage", "绩效开始执行", "绩效开始执行");
logdbug.Add(allot.ID, "绩效开始执行", JsonHelper.Serialize(allot));
//hubContext.Clients.Group("aaaa").SendAsync("ReceiveMessage", "绩效开始执行", "绩效开始执行");
//logdbug.Add(allot.ID, "绩效开始执行", JsonHelper.Serialize(allot));
logManageService.WriteMsg("绩效开始执行", JsonHelper.Serialize(allot), allot.ID, "ReceiveMessage", true);
configService.Clear(allot.ID);
UpdateAllotStates(allot.ID, (int)AllotStates.InCheckData, EnumHelper.GetDescription(AllotStates.InCheckData));
// 导出数据
var excel = importDataService.ReadDataAndSave(allot);
UpdateAllotStates(allot.ID, (int)AllotStates.InCheckData, EnumHelper.GetDescription(AllotStates.InCheckData));
if (!checkDataService.Check(excel, allot))
{
UpdateAllotStates(allot.ID, (int)AllotStates.CheckFail, EnumHelper.GetDescription(AllotStates.CheckFail));
SendEmail(allot, mail, 3, time);
logdbug.Add(allot.ID, "绩效数据校验失败", JsonHelper.Serialize(allot));
//logdbug.Add(allot.ID, "绩效数据校验失败", JsonHelper.Serialize(allot));
logManageService.WriteMsg("绩效数据校验失败", JsonHelper.Serialize(allot), allot.ID, "ReceiveMessage", true);
return;
}
UpdateAllotStates(allot.ID, (int)AllotStates.InGenerate, EnumHelper.GetDescription(AllotStates.InGenerate));
// 计算合并数据
logdbug.Add(allot.ID, "计算合并数据", JsonHelper.Serialize(allot));
//logdbug.Add(allot.ID, "计算合并数据", JsonHelper.Serialize(allot));
logManageService.WriteMsg("正在生成绩效", "计算合并数据", allot.ID, "ReceiveMessage", true);
List<PerSheet> list = processComputService.MergeAndSave(excel, allot);
//var baiscnorm = baiscNormService.NurseBaiscnorm(list);
//logdbug.Add(allot.ID, "护士平均绩效", JsonHelper.Serialize(baiscnorm));
// 计算最总数据
logdbug.Add(allot.ID, "绩效结果计算数据开始", "");
//logdbug.Add(allot.ID, "绩效结果计算数据开始", "");
logManageService.WriteMsg("正在生成绩效", "计算最终绩效数据", allot.ID, "ReceiveMessage", true);
var baiscnormList = resultComputeService.Compute(allot, excel, list);
logManageService.WriteMsg("正在生成绩效", "计算最终特殊科室绩效数据", allot.ID, "ReceiveMessage", true);
resultComputeService.SpecialUnitCompute(excel, allot, baiscnormList);
logManageService.WriteMsg("正在生成绩效", "保存最终特殊科室绩效数据", allot.ID, "ReceiveMessage", true);
UpdateAllotStates(allot.ID, (int)AllotStates.GenerateSucceed, EnumHelper.GetDescription(AllotStates.GenerateSucceed));
//发送邮件
SendEmail(allot, mail, 1, time);
logdbug.Add(allot.ID, "绩效开始执行", "绩效生成成功");
//logdbug.Add(allot.ID, "绩效开始执行", "绩效生成成功");
logManageService.WriteMsg("绩效生成结束", "绩效生成成功", allot.ID, "ReceiveMessage", true);
}
catch (Exception ex)
{
UpdateAllotStates(allot.ID, (int)AllotStates.GenerateFail, EnumHelper.GetDescription(AllotStates.GenerateFail));
SendEmail(allot, mail, 2, time);
logdbug.Add(allot.ID, "绩效开始执行", ex.ToString());
//logdbug.Add(allot.ID, "绩效开始执行", ex.ToString());
logManageService.WriteMsg("绩效生成失败", ex.ToString(), allot.ID, "ReceiveMessage", true);
//throw ex;
}
}
......
......@@ -13,6 +13,7 @@ namespace Performance.Services
{
public class ConfigService : IAutoInjection
{
#region
private PerforCofdirectorRepository _directorRepository;
private PerforCofdrugpropRepository _drugpropRepository;
private PerforCofincomeRepository _incomeRepository;
......@@ -22,7 +23,8 @@ public class ConfigService : IAutoInjection
private PerforPerallotRepository perforPerAllotRepository;
private PerforPeragainallotRepository perforPeragainallotRepository;
private PerforHospitalRepository perforHospitalRepository;
private PerforLogdbugRepository logdbug;
//private PerforLogdbugRepository logdbug;
private readonly LogManageService logManageService;
public ConfigService(PerforCofdirectorRepository cofdirectorRepository,
PerforCofdrugpropRepository cofdrugpropRepository,
PerforCofincomeRepository cofincomeRepository,
......@@ -32,7 +34,8 @@ public class ConfigService : IAutoInjection
PerforPerallotRepository perforPerAllotRepository,
PerforPeragainallotRepository perforPeragainallotRepository,
PerforHospitalRepository perforHospitalRepository,
PerforLogdbugRepository logdbug)
//PerforLogdbugRepository logdbug
LogManageService logManageService)
{
this._directorRepository = cofdirectorRepository;
this._drugpropRepository = cofdrugpropRepository;
......@@ -43,8 +46,10 @@ public class ConfigService : IAutoInjection
this.perforPerAllotRepository = perforPerAllotRepository;
this.perforPeragainallotRepository = perforPeragainallotRepository;
this.perforHospitalRepository = perforHospitalRepository;
this.logdbug = logdbug;
//this.logdbug = logdbug;
this.logManageService = logManageService;
}
#endregion
#region cof_director 规模/效率绩效配置
/// <summary>
......@@ -343,16 +348,6 @@ public bool WorkDelete(WorkyearRequest request)
}
#endregion
/// <summary>
/// 清楚无效数据
/// </summary>
/// <param name="allotId"></param>
public void Clear(int allotId)
{
var count = _directorRepository.DeleteData(allotId);
logdbug.Add(allotId, "清理无效数据", $"受影响行数:{count}");
}
#region Copy
/// <summary>
/// 复制报表基础配置
......@@ -486,6 +481,17 @@ public bool AgainDelete(CofAgainRequest request)
}
#endregion
#region 清楚无效数据 Clear
/// <summary>
/// 清楚无效数据
/// </summary>
/// <param name="allotId"></param>
public void Clear(int allotId)
{
var count = _directorRepository.DeleteData(allotId);
//logdbug.Add(allotId, "清理无效数据", $"受影响行数:{count}");
logManageService.WriteMsg("清理无效数据", $"清理无效数据,受影响行数:{count}", 0, "", true);
}
/// <summary>
/// 清除二次绩效中无效数据
......@@ -494,7 +500,9 @@ public bool AgainDelete(CofAgainRequest request)
public void ClearAgain(int againId)
{
var count = _directorRepository.DelAgain(againId);
logdbug.Add(againId, "清除二次绩效中无效数据", $"受影响行数:{count}");
//logdbug.Add(againId, "清除二次绩效中无效数据", $"受影响行数:{count}");
logManageService.WriteMsg("清理无效数据", $"清除二次绩效中无效数据,受影响行数:{count}", 0, "", true);
}
#endregion
}
}
......@@ -19,6 +19,11 @@ public override Task OnDisconnectedAsync(Exception exception)
var groupName = "aaaa";
//2 删除数据库中用户分组数据
if (RedisHelper.HExists("MyGroup", groupName))
{
var connectionId = Context.ConnectionId;
RedisHelper.HDel("MyGroup", groupName);
}
//3 分组中删除用户
Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName);
......@@ -27,10 +32,16 @@ public override Task OnDisconnectedAsync(Exception exception)
public async Task AddGroup(string token, string groupName)
{
if (!RedisHelper.HExists("MyGroup", groupName))
{
//1 向数据库中插入用户及分组信息
var connectionId = Context.ConnectionId;
RedisHelper.HSet("MyGroup", groupName, connectionId);
//2 将用户插入分组
await Groups.AddToGroupAsync(Context.ConnectionId, groupName);
}
}
}
}
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.SignalR;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.Services
{
public class LogManageService : IAutoInjection
{
private readonly IHubContext<AllotLogHub> hubContext;
private PerforLogdbugRepository logdbug;
public LogManageService(IHubContext<AllotLogHub> hubContext,
PerforLogdbugRepository logdbug)
{
this.hubContext = hubContext;
this.logdbug = logdbug;
}
/// <summary>
///
/// </summary>
/// <param name="tag">标签</param>
/// <param name="message">内容</param>
/// <param name="allotId">绩效Id</param>
/// <param name="method">方法名称</param>
public void WriteMsg(string tag, string message, int allotId, string method, bool isDebug = false)
{
hubContext.Clients.Group(allotId.ToString()).SendAsync(method, tag, message);
if (isDebug)
{
logdbug.Add(allotId, tag, message);
}
}
}
}
using Dapper;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using NPOI.HSSF.UserModel;
......@@ -43,9 +44,11 @@ public class NewExtractService : IAutoInjection
private readonly PerforImaccountbasicRepository perforImaccountbasicRepository;
private readonly PerforImspecialunitRepository perforImspecialunitRepository;
private readonly PerforImdataRepository perforImdataRepository;
private readonly LogManageService logManageService;
private IWorkbook workbook = null;
private ICellStyle style;
private int AllotId;
public NewExtractService(ILogger<ExtractService> logger,
IHostingEnvironment environment,
......@@ -62,7 +65,8 @@ public class NewExtractService : IAutoInjection
PerforImemployeeRepository perforImemployeeRepository,
PerforImaccountbasicRepository perforImaccountbasicRepository,
PerforImspecialunitRepository perforImspecialunitRepository,
PerforImdataRepository perforImdataRepository)
PerforImdataRepository perforImdataRepository,
LogManageService logManageService)
{
this.logger = logger;
this.environment = environment;
......@@ -80,6 +84,7 @@ public class NewExtractService : IAutoInjection
this.perforImaccountbasicRepository = perforImaccountbasicRepository;
this.perforImspecialunitRepository = perforImspecialunitRepository;
this.perforImdataRepository = perforImdataRepository;
this.logManageService = logManageService;
}
#endregion
......@@ -87,6 +92,8 @@ public class NewExtractService : IAutoInjection
public string ExtractData(int allotId, string email, int hospitalId)
{
AllotId = allotId;
// 获取绩效信息
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId);
// 获取医院信息
......@@ -157,12 +164,14 @@ public string ExtractData(int allotId, string email, int hospitalId)
{
workbook.Write(file);
}
logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", allotId, "ReceiveMessage");
LogHelper.Information($"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", "提取绩效数据");
SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。");
return newPath;
}
catch (Exception ex)
{
logManageService.WriteMsg("提取数据异常", $"数据写入出现异常{ex.ToString()}", allotId, "ReceiveMessage");
LogHelper.Error($"数据写入出现异常{ex.ToString()}", "提取绩效数据", "异常");
SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!");
throw ex;
......@@ -219,6 +228,7 @@ private void WriteOtherIncome(ISheet sheet, int hospitalId, IPerSheetDataRead sh
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据");
//写入列头信息
foreach (var item in itemList)
......@@ -255,6 +265,7 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u
var technicianFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "医技组").FactorRow.Value);
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value);
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据");
//写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
......@@ -284,12 +295,14 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u
List<ExtractDto> allExtract = new List<ExtractDto>();
foreach (var item in extractList)
{
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName},", "提取绩效数据");
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName}", "提取绩效数据");
var result = QueryDatabase(hospitalConfigList, item, allot);
if (result != null)
allExtract.AddRange(result);
}
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- {module.ModuleName}", "提取绩效数据");
//写入数据
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1;
......@@ -378,6 +391,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity>
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 0);
var factor = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 1);
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据");
//写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 2;
......@@ -404,6 +418,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity>
if (category == null || category.Count() == 0) continue;
foreach (var moditem in category)
{
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName},", "提取绩效数据");
var result = QueryDatabase(hospitalConfigList, item, allot, moditem.ItemName);
if (result != null)
......@@ -418,6 +433,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity>
specialHead = itemList.Select(t => t.ItemName).Intersect(extractHead.Distinct())?.ToList();
}
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- {module.ModuleName}", "提取绩效数据");
//写入数据
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 2;
......@@ -463,6 +479,7 @@ private List<ExtractDto> QueryDatabase(List<sys_hospitalconfig> hospitalConfigLi
{
executeScript = Regex.Replace(executeScript, item.Key, item.Value, RegexOptions.IgnoreCase);
}
//logManageService.WriteMsg("提取绩效数据", $"SQL脚本:{executeScript}", AllotId, "ReceiveMessage");
LogHelper.Information($"SQL脚本{executeScript},", "提取绩效数据");
var result = connection.Query<ExtractDto>(executeScript, commandTimeout: 20000);
if (result != null && result.Count() > 0)
......@@ -493,6 +510,7 @@ private void WriteExpend(ISheet sheet, int hospitalId, IPerSheetDataRead sheetRe
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据");
//写入列头信息
foreach (var item in itemList)
......@@ -530,7 +548,6 @@ private void WriteExpend(ISheet sheet, int hospitalId, IPerSheetDataRead sheetRe
private void WriteEmployee(ISheet sheet, int allotLastId, IPerSheetDataRead sheetRead)
{
LogHelper.Information($"填充数据 -- 人员信息", "提取绩效数据");
var dictionary = new Dictionary<string, Func<im_employee, object>>
{
{ "核算单元", (t) => t.AccountingUnit },
......@@ -548,6 +565,8 @@ private void WriteEmployee(ISheet sheet, int allotLastId, IPerSheetDataRead shee
{ "调节系数", (t) => t.Adjust },
};
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 人员信息", AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- 人员信息", "提取绩效数据");
var dataList = perforImemployeeRepository.GetEntities(t => t.AllotID == allotLastId);
for (int i = 0; i < dataList.Count; i++)
{
......@@ -570,7 +589,6 @@ private void WriteEmployee(ISheet sheet, int allotLastId, IPerSheetDataRead shee
private void WriteSpecialUnit(ISheet sheet, int hospitalId, per_allot allotLast, IPerSheetDataRead sheetRead)
{
LogHelper.Information($"填充数据 -- 特殊核算单元绩效测算表", "提取绩效数据");
var dictionary = new Dictionary<string, Func<mod_special, List<im_specialunit>, object>>
{
{ "科室", (special,lastAllot) => special.Department },
......@@ -605,6 +623,8 @@ private void WriteSpecialUnit(ISheet sheet, int hospitalId, per_allot allotLast,
int mergedBegin = sheetRead.Point.DataFirstRowNum.Value;
int mergedEnd = sheetRead.Point.DataFirstRowNum.Value;
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 特殊核算单元绩效测算表", AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- 特殊核算单元绩效测算表", "提取绩效数据");
for (int i = 0; i < modDataList.Count; i++)
{
var headIndex = sheetRead.Point.HeaderFirstRowNum;
......@@ -650,7 +670,6 @@ private void WriteSpecialUnit(ISheet sheet, int hospitalId, per_allot allotLast,
private void WriteAccountBasic(ISheet sheet, int allotLastId, IPerSheetDataRead sheetRead)
{
LogHelper.Information($"填充数据 -- 临床科室医护绩效测算表", "提取绩效数据");
var dictionary = new Dictionary<string, Func<im_accountbasic, object>>
{
{ "核算单元类型", (t) => t.UnitType },
......@@ -672,6 +691,8 @@ private void WriteAccountBasic(ISheet sheet, int allotLastId, IPerSheetDataRead
{ "调节系数", (t) => t.DoctorAdjustFactor },
};
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 临床科室医护绩效测算表", AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- 临床科室医护绩效测算表", "提取绩效数据");
var dataList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allotLastId);
for (int i = 0; i < dataList.Count; i++)
{
......
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