Commit ac1dbf9b by lcx

抽取生成绩效返回日志方式修改

parent c95e8999
......@@ -208,7 +208,7 @@
<summary>
上传文件
</summary>
<param name="form"></param>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.Generate(Performance.DtoModels.AllotRequest)">
......@@ -600,6 +600,21 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetHrpDeptHands(System.Int32,System.Int32)">
<summary>
获取HRP人员科室
</summary>
<param name="hospitalId"></param>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.SaveHrpDept(System.Int32,System.Int32,Performance.DtoModels.SaveCollectData)">
<summary>
保存HRP人员科室
</summary>
<param name=""></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.GetEmployeeList(Performance.DtoModels.EmployeeRequest)">
<summary>
获取人员列表
......@@ -1420,7 +1435,7 @@
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.TemplateController.ReturnLog(Performance.DtoModels.SignalrLogRequest)">
<member name="M:Performance.Api.Controllers.TemplateController.ReturnLog(Performance.DtoModels.MessageInfo)">
<summary>
返回日志
</summary>
......
......@@ -221,69 +221,69 @@
结果值
</summary>
</member>
<member name="F:Performance.DtoModels.Classify.Notification">
<member name="F:Performance.DtoModels.Component.Notification">
<summary>
通知
</summary>
</member>
<member name="F:Performance.DtoModels.Classify.Progress">
<member name="F:Performance.DtoModels.Component.Progress">
<summary>
进度条
</summary>
</member>
<member name="F:Performance.DtoModels.NoticeType.success">
<member name="F:Performance.DtoModels.ComponentType.success">
<summary>
成功
</summary>
</member>
<member name="F:Performance.DtoModels.NoticeType.info">
<member name="F:Performance.DtoModels.ComponentType.info">
<summary>
消息
</summary>
</member>
<member name="F:Performance.DtoModels.NoticeType.warning">
<member name="F:Performance.DtoModels.ComponentType.warning">
<summary>
警告
</summary>
</member>
<member name="F:Performance.DtoModels.NoticeType.error">
<member name="F:Performance.DtoModels.ComponentType.error">
<summary>
错误
</summary>
</member>
<member name="F:Performance.DtoModels.NoticeType.exception">
<member name="P:Performance.DtoModels.IMessageInfo`1.Uuid">
<summary>
异常
唯一编码
</summary>
</member>
<member name="P:Performance.DtoModels.MessageInfo.Classify">
<member name="P:Performance.DtoModels.IMessageInfo`1.AllotId">
<summary>
分类
绩效Id
</summary>
</member>
<member name="P:Performance.DtoModels.MessageInfo.Type">
<member name="P:Performance.DtoModels.IMessageInfo`1.Title">
<summary>
类型
标题
</summary>
</member>
<member name="P:Performance.DtoModels.MessageInfo.Title">
<member name="P:Performance.DtoModels.IMessageInfo`1.Message">
<summary>
标题
内容
</summary>
</member>
<member name="P:Performance.DtoModels.MessageInfo.Message">
<member name="P:Performance.DtoModels.IMessageInfo`1.Component">
<summary>
消息
控件类型
</summary>
</member>
<member name="P:Performance.DtoModels.MessageInfo.Percentage">
<member name="P:Performance.DtoModels.IMessageInfo`1.Status">
<summary>
百分比
状态(完成、警告、错误、信息)
</summary>
</member>
<member name="P:Performance.DtoModels.MessageInfo.TypeValue">
<member name="P:Performance.DtoModels.IMessageInfo`1.Type">
<summary>
类型
状态文本
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.RowNumber">
......
......@@ -991,6 +991,11 @@
护理部审核状态 2 等待审核 3 审核通过 4 驳回
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.NightShiftWorkPerforFee">
<summary>
夜班绩效
</summary>
</member>
<member name="T:Performance.EntityModels.ag_temp">
<summary>
二次绩效模板
......@@ -3606,6 +3611,61 @@
1、绩效生成日志 2、绩效提取日志 3、绩效提取进度
</summary>
</member>
<member name="T:Performance.EntityModels.log_signalr">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.AllotId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.Classify">
<summary>
分类
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.TypeValue">
<summary>
类型值
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.Type">
<summary>
类型
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.Title">
<summary>
标题
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.Message">
<summary>
消息
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.Percentage">
<summary>
百分比
</summary>
</member>
<member name="P:Performance.EntityModels.log_signalr.CreateTime">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.mod_dic">
<summary>
部分公共数据抽取SQL
......@@ -4951,7 +5011,7 @@
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_category.Category">
<member name="P:Performance.EntityModels.report_performance_category.Id">
<summary>
</summary>
......@@ -4961,22 +5021,27 @@
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_category.Original">
<member name="P:Performance.EntityModels.report_performance_category.Year">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_category.ItemName">
<member name="P:Performance.EntityModels.report_performance_category.Month">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_category.Year">
<member name="P:Performance.EntityModels.report_performance_category.Category">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_category.Month">
<member name="P:Performance.EntityModels.report_performance_category.Original">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_category.ItemName">
<summary>
</summary>
......@@ -5041,6 +5106,11 @@
重点群体对比5
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_person_tags.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="T:Performance.EntityModels.report_performance_tags">
<summary>
......@@ -5091,6 +5161,11 @@
重点群体对比5
</summary>
</member>
<member name="P:Performance.EntityModels.report_performance_tags.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="T:Performance.EntityModels.rep_group">
<summary>
......
......@@ -46,10 +46,10 @@ public enum ComponentType
[Description("错误")]
error = 3,
/// <summary>
/// 异常
/// </summary>
[Description("异常")]
exception = 4,
///// <summary>
///// 异常
///// </summary>
//[Description("异常")]
//exception = 4,
}
}
......@@ -193,26 +193,26 @@ public void Save(List<PerSheet> perSheets, int allotId)
//合并科室收入、支出
var incomeconfs = perforCofincomeRepository.GetEntities();
var economicCompute = new PerSheetDataComputeEconomic();
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表", 1, allotid, "ReceiveMessage");
notificationsService.SendGenerateMessage(allotid, "正在生成绩效:计算科室经济核算汇总表");
var mergeResult = economicCompute.MergeCompute(excel, incomeconfs);
//一次计算
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表 -- 第一次计算", 1, allotid, "ReceiveMessage");
notificationsService.SendGenerateMessage(allotid, "正在生成绩效:计算科室经济核算汇总表 -- 第一次计算");
var onceEconomic = economicCompute.OnceCompute(mergeResult);
//二次计算
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表 -- 第二次计算", 1, allotid, "ReceiveMessage");
notificationsService.SendGenerateMessage(allotid, "正在生成绩效:计算科室经济核算汇总表 -- 第二次计算");
var twiceEconomicResult = economicCompute.TwiceCompute(onceEconomic);
twiceEconomicResult.Sheet.SheetType = SheetType.ComputeEconomic;
perSheet.Add(twiceEconomicResult.Sheet);
logManageService.WriteMsg("正在生成绩效", "计算科室经济核算汇总表 -- 计算完成", 1, allotid, "ReceiveMessage");
notificationsService.SendGenerateMessage(allotid, "正在生成绩效:计算科室经济核算汇总表 -- 计算完成");
//工作量
var workloadCompute = new PerSheetDataComputeWorkload();
var workload1 = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.Workload && t.SheetName.Contains("医生组"));
workload1.SheetName = "医生组工作量绩效测算表";
logManageService.WriteMsg("正在生成绩效", "获取药品费用分割比例", 1, allotid, "ReceiveMessage");
notificationsService.SendGenerateMessage(allotid, "正在生成绩效:获取药品费用分割比例");
var conitem = perforCofworkitemRepository.GetEntities(t => t.AllotID == allotid);
var medicineProps = GetFactors(excel, SheetType.WorkloadMedicineProp);
......@@ -222,7 +222,7 @@ public void Save(List<PerSheet> perSheets, int allotId)
//医生组 一次计算
//var onceWorkload1 = workloadCompute.OnceCompute(workload1, confs);
//医生组 二次计算
logManageService.WriteMsg("正在生成绩效", "医生组工作量计算", 1, allotid, "ReceiveMessage");
notificationsService.SendGenerateMessage(allotid, "正在生成绩效:医生组工作量计算");
var twiceWorkloadResult1 = workloadCompute.TwiceCompute(workload1, hospital, conitem, medicineProps, cmis, inclines, true);
twiceWorkloadResult1.Sheet.SheetType = SheetType.ComputeDoctorWorkload;
......@@ -233,7 +233,7 @@ public void Save(List<PerSheet> perSheets, int allotId)
//护理组 一次计算
//var onceWorkload2 = workloadCompute.OnceCompute(workload2);
//护理组 二次计算
logManageService.WriteMsg("正在生成绩效", "护理组工作量计算", 1, allotid, "ReceiveMessage");
notificationsService.SendGenerateMessage(allotid, "正在生成绩效:护理组工作量计算");
var twiceWorkloadResult2 = workloadCompute.TwiceCompute(workload2, hospital, conitem, medicineProps, cmis, inclines);
twiceWorkloadResult2.Sheet.SheetType = SheetType.ComputeNurseWorkload;
......
......@@ -14,7 +14,7 @@ namespace Performance.Services.ExtractExcelService
public class ExtractService : IAutoInjection
{
private readonly ILogger logger;
private readonly LogManageService logService;
private readonly NotificationsService notificationsService;
private readonly QueryService queryService;
private readonly PersonService personService;
private readonly PerSheetService perSheetService;
......@@ -26,7 +26,7 @@ public class ExtractService : IAutoInjection
public ExtractService(
ILogger<ExtractService> logger,
LogManageService logService,
NotificationsService notificationsService,
QueryService queryService,
PersonService personService,
PerSheetService perSheetService,
......@@ -38,7 +38,7 @@ PerforPerdeptdicRepository perdeptdicRepository
)
{
this.logger = logger;
this.logService = logService;
this.notificationsService = notificationsService;
this.queryService = queryService;
this.personService = personService;
this.perSheetService = perSheetService;
......@@ -65,9 +65,9 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
IWorkbook workbook = null;
try
{
logService.ReturnTheLog(allotId, groupName, 2, "等待提取", $"确认配置信息是否可完成数据提取...", 1, isSingle);
notificationsService.SendExtractMessage(allotId, "等待提取:确认配置信息是否可完成数据提取...");
logService.ClearExtractLog(allotId);
//logService.ClearExtractLog(allotId);
var allots = perallotRepository.GetEntities(t => t.HospitalId == hospitalId);
if (allots == null || !allots.Any(t => t.ID == allotId)) throw new Exception("绩效不存在");
......@@ -75,7 +75,7 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
allot = allots.First(t => t.ID == allotId);
var dict = new Dictionary<ExDataDict, object>();
logService.ReturnTheLog(allotId, groupName, 3, "", 5, 1, isSingle);
notificationsService.SendExtractProgress(allotId, 5);
dictionaryService.Handler(hospitalId, allot, groupName, isSingle);
var data = queryService.Handler(hospitalId, allot, groupName, isSingle, ref dict);
var standData = StandDataFormat(hospitalId, data);
......@@ -83,7 +83,7 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
var statesArray = new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive };
var templateFilePath = ExtractHelper.GetExtractFile(hospitalId, ref extractFilePath, filePath);
logService.ReturnTheLog(allotId, groupName, 2, "创建文件", $"模板文件: {templateFilePath}", 1, isSingle);
notificationsService.SendExtractMessage(allotId, $"创建文件:模板文件: {templateFilePath}。");
if (!FileHelper.IsExistFile(templateFilePath)) throw new PerformanceException("抽取文件创建失败");
......@@ -91,7 +91,6 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
if (workbook == null) throw new PerformanceException("文件读取失败");
WriteDataToFile(workbook, allot, dict, standData, groupName, isSingle);
logService.ReturnTheLog(allotId, groupName, 2, "提取完成", $"绩效数据提取成功", 5, isSingle);
allot.IsExtracting = isSingle ? 2 : 0;
allot.ExtractPath = extractFilePath;
......@@ -101,12 +100,13 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
catch (Exception ex)
{
allot.IsExtracting = 3;
logService.ReturnTheLog(allotId, groupName, 2, "提取完成", $"绩效数据提取失败", 4, isSingle);
notificationsService.SendExtractMessage(allotId, $"提取失败:数据提取过程中发生异常。", ComponentType.error);
logger.LogError("提取数据中发生异常: " + ex.ToString());
}
finally
{
logService.ReturnTheLog(allotId, groupName, 3, "", 100, 5, isSingle);
notificationsService.SendExtractProgress(allotId, 100, ComponentType.success);
notificationsService.SendExtractMessage(allotId, $"提取完成:绩效数据提取成功。", ComponentType.success);
using (FileStream file = new FileStream(extractFilePath, FileMode.OpenOrCreate))
{
workbook.Write(file);
......@@ -150,8 +150,8 @@ private void WriteDataToFile(IWorkbook workbook, per_allot allot, Dictionary<ExD
var sheetType = perSheetService.GetSheetType(sheet.SheetName);
if (sheetType == SheetType.Unidentifiable) continue;
logService.ReturnTheLog(allot.ID, groupName, 3, "", ratio > 99 ? 99 : ratio, 1, isSingle);
logService.ReturnTheLog(allot.ID, groupName, 2, "写入数据", $"sheet“{sheet.SheetName}”开始写入数据", 1, isSingle);
notificationsService.SendExtractProgress(allot.ID, ratio);
notificationsService.SendExtractMessage(allot.ID, $"写入数据:sheet“{sheet.SheetName}”开始写入数据。");
var point = PerSheetDataFactory.GetDataRead(sheetType)?.Point;
if (sheetType == SheetType.OtherWorkload) point = PerSheetDataFactory.GetDataRead(SheetType.Workload)?.Point;
......@@ -177,7 +177,7 @@ private void WriteDataToFile(IWorkbook workbook, per_allot allot, Dictionary<ExD
customer.WriteSheetData(sheet, point, sheetType, style, data, exdict);
}
logService.ReturnTheLog(allot.ID, groupName, 2, "写入数据", $"sheet“{sheet.SheetName}”已完成数据写入", 1, isSingle);
notificationsService.SendExtractMessage(allot.ID, $"写入数据:sheet“{sheet.SheetName}”已完成数据写入。");
}
}
......
......@@ -55,6 +55,20 @@ public void SendExtractMessage(int allotId, string message, ComponentType type =
SendMessage(data.UserId, info);
}
public void SendExtractProgress(int allotId, decimal percentage, ComponentType type = ComponentType.info)
{
var data = GetCache<SingleData>(AllotExtractKeyPrefix + allotId);
if (data == null || data.UserId == 0)
return;
percentage = type == ComponentType.success
? 100
: (type != ComponentType.success && percentage >= 100) ? 99 : percentage;
var info = new MessageInfo(data.Uuid, allotId, "数据提取进度", percentage.ToString(), Component.Progress, type);
SendMessage(data.UserId, info);
}
public void SendMessage(int userId, MessageInfo data)
{
string key = userId.ToString();
......@@ -63,9 +77,6 @@ public void SendMessage(int userId, MessageInfo data)
if (data.Component == Component.Progress)
{
var percentage = ConvertHelper.To<decimal>(data.Message);
data.Message = (data.Status == ComponentType.success
? 100
: (data.Status != ComponentType.success && percentage >= 100) ? 99 : percentage).ToString();
}
SendMessageToClient(connectionId, data);
}
......
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