Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
performance
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zry
performance
Commits
ac1dbf9b
Commit
ac1dbf9b
authored
Mar 23, 2021
by
lcx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
抽取生成绩效返回日志方式修改
parent
c95e8999
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
156 additions
and
55 deletions
+156
-55
performance/Performance.Api/wwwroot/Performance.Api.xml
+17
-2
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+20
-20
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+80
-5
performance/Performance.DtoModels/Hubs/Enum.cs
+5
-5
performance/Performance.Services/AllotCompute/ProcessComputService.cs
+7
-7
performance/Performance.Services/ExtractExcelService/ExtractService.cs
+13
-13
performance/Performance.Services/Hubs/NotificationsService.cs
+14
-3
No files found.
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
ac1dbf9b
...
...
@@ -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>
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
ac1dbf9b
...
...
@@ -221,69 +221,69 @@
结果值
</summary>
</member>
<member
name=
"F:Performance.DtoModels.C
lassify
.Notification"
>
<member
name=
"F:Performance.DtoModels.C
omponent
.Notification"
>
<summary>
通知
</summary>
</member>
<member
name=
"F:Performance.DtoModels.C
lassify
.Progress"
>
<member
name=
"F:Performance.DtoModels.C
omponent
.Progress"
>
<summary>
进度条
</summary>
</member>
<member
name=
"F:Performance.DtoModels.
Notice
Type.success"
>
<member
name=
"F:Performance.DtoModels.
Component
Type.success"
>
<summary>
成功
</summary>
</member>
<member
name=
"F:Performance.DtoModels.
Notice
Type.info"
>
<member
name=
"F:Performance.DtoModels.
Component
Type.info"
>
<summary>
消息
</summary>
</member>
<member
name=
"F:Performance.DtoModels.
Notice
Type.warning"
>
<member
name=
"F:Performance.DtoModels.
Component
Type.warning"
>
<summary>
警告
</summary>
</member>
<member
name=
"F:Performance.DtoModels.
Notice
Type.error"
>
<member
name=
"F:Performance.DtoModels.
Component
Type.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.Typ
e"
>
<member
name=
"P:Performance.DtoModels.
IMessageInfo`1.Titl
e"
>
<summary>
类型
标题
</summary>
</member>
<member
name=
"P:Performance.DtoModels.
MessageInfo.Titl
e"
>
<member
name=
"P:Performance.DtoModels.
IMessageInfo`1.Messag
e"
>
<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.TypeValu
e"
>
<member
name=
"P:Performance.DtoModels.
IMessageInfo`1.Typ
e"
>
<summary>
类型
值
状态文本
值
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAgainData.RowNumber"
>
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
ac1dbf9b
...
...
@@ -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>
...
...
performance/Performance.DtoModels/Hubs/Enum.cs
View file @
ac1dbf9b
...
...
@@ -46,10 +46,10 @@ public enum ComponentType
[
Description
(
"错误"
)]
error
=
3
,
/// <summary>
/// 异常
/// </summary>
[
Description
(
"异常"
)]
exception
=
4
,
///
//
<summary>
///
//
异常
///
//
</summary>
//
[Description("异常")]
//
exception = 4,
}
}
performance/Performance.Services/AllotCompute/ProcessComputService.cs
View file @
ac1dbf9b
...
...
@@ -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
;
...
...
performance/Performance.Services/ExtractExcelService/ExtractService.cs
View file @
ac1dbf9b
...
...
@@ -14,7 +14,7 @@ namespace Performance.Services.ExtractExcelService
public
class
ExtractService
:
IAutoInjection
{
private
readonly
ILogger
logger
;
private
readonly
LogManageService
log
Service
;
private
readonly
NotificationsService
notifications
Service
;
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
log
Service
,
NotificationsService
notifications
Service
,
QueryService
queryService
,
PersonService
personService
,
PerSheetService
perSheetService
,
...
...
@@ -38,7 +38,7 @@ PerforPerdeptdicRepository perdeptdicRepository
)
{
this
.
logger
=
logger
;
this
.
logService
=
log
Service
;
this
.
notificationsService
=
notifications
Service
;
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
}
”已完成数据写入。"
);
}
}
...
...
performance/Performance.Services/Hubs/NotificationsService.cs
View file @
ac1dbf9b
...
...
@@ -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
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment