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
4433472b
Commit
4433472b
authored
Mar 09, 2021
by
lcx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改返回signalr的方法
parent
7157d4fc
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
350 additions
and
50 deletions
+350
-50
performance/Performance.Api/Controllers/AllotController.cs
+27
-26
performance/Performance.Api/wwwroot/Performance.Api.xml
+34
-0
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+70
-0
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+63
-0
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
+3
-0
performance/Performance.DtoModels/Hubs/Enum.cs
+1
-1
performance/Performance.DtoModels/Hubs/MessageInfo.cs
+11
-3
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
+3
-0
performance/Performance.EntityModels/Entity/log_signalr.cs
+69
-0
performance/Performance.Repository/Repository/PerforLogdsignalrRepository.cs
+20
-0
performance/Performance.Services/AllotService.cs
+0
-0
performance/Performance.Services/Hubs/AllotLogHub.cs
+25
-17
performance/Performance.Services/Hubs/NotificationsService.cs
+24
-3
No files found.
performance/Performance.Api/Controllers/AllotController.cs
View file @
4433472b
...
...
@@ -24,35 +24,34 @@ namespace Performance.Api.Controllers
[
Route
(
"api/[controller]"
)]
public
class
AllotController
:
Controller
{
private
AllotService
_allotService
;
private
ResultComputeService
_resultComputeService
;
private
ConfigService
_configService
;
private
IHostingEnvironment
_evn
;
private
ILogger
<
AllotController
>
_logger
;
private
ClaimService
_claim
;
private
LogManageService
_logManageService
;
private
IBackgroundTaskQueue
_backgroundTaskQueue
;
private
IServiceScopeFactory
_serviceScopeFactory
;
public
AllotController
(
AllotService
allotService
,
ResultComputeService
resultComputeService
,
ConfigService
configService
,
ILogger
<
AllotController
>
logger
,
private
readonly
IHostingEnvironment
_evn
;
private
readonly
ClaimService
_claim
;
private
readonly
IBackgroundTaskQueue
_backgroundTaskQueue
;
private
readonly
IServiceScopeFactory
_serviceScopeFactory
;
private
readonly
AllotService
_allotService
;
private
readonly
ConfigService
_configService
;
private
readonly
NotificationsService
_notificationsService
;
private
readonly
ResultComputeService
_resultComputeService
;
public
AllotController
(
IHostingEnvironment
evn
,
ClaimService
claim
,
IBackgroundTaskQueue
backgroundTaskQueue
,
IServiceScopeFactory
serviceScopeFactory
,
ClaimService
claim
,
LogManageService
logManageService
)
AllotService
allotService
,
ConfigService
configService
,
NotificationsService
notificationsService
,
ResultComputeService
resultComputeService
)
{
_allotService
=
allotService
;
_resultComputeService
=
resultComputeService
;
_logger
=
logger
;
_evn
=
evn
;
_claim
=
claim
;
_logManageService
=
logManageService
;
_configService
=
configService
;
_backgroundTaskQueue
=
backgroundTaskQueue
;
_serviceScopeFactory
=
serviceScopeFactory
;
_allotService
=
allotService
;
_configService
=
configService
;
_notificationsService
=
notificationsService
;
_resultComputeService
=
resultComputeService
;
}
/// <summary>
...
...
@@ -177,7 +176,7 @@ public ApiResponse Import([FromForm] IFormCollection form)
/// <summary>
/// 上传文件
/// </summary>
/// <param name="
form
"></param>
/// <param name="
allotId
"></param>
/// <returns></returns>
[
Route
(
"ImportExtraction/{allotId}"
)]
[
HttpPost
]
...
...
@@ -236,11 +235,13 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody] A
if
(
allot
.
States
==
(
int
)
AllotStates
.
Wait
)
return
new
ApiResponse
(
ResponseType
.
OK
,
"当前绩效正在等待生成"
);
_logManageService
.
WriteMsg
(
"生成绩效准备中"
,
$"准备生成
{
allot
.
Year
}
-
{
allot
.
Month
.
ToString
().
PadLeft
(
2
,
'0'
)}
月份绩效,请稍等!"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
int
userId
=
_claim
.
GetUserId
();
var
uuid
=
Guid
.
NewGuid
().
ToString
(
"N"
);
_notificationsService
.
SendGenerateMessage
(
userId
,
allot
,
uuid
,
$"准备生成
{
allot
.
Year
}
-
{
allot
.
Month
.
ToString
().
PadLeft
(
2
,
'0'
)}
月份绩效,请稍等!"
);
_allotService
.
UpdateAllotStates
(
allot
.
ID
,
(
int
)
AllotStates
.
Wait
,
EnumHelper
.
GetDescription
(
AllotStates
.
Wait
),
allot
.
Generate
);
if
(
_evn
.
IsEnvironment
(
"Localhost"
))
{
_allotService
.
Generate
(
allot
,
email
);
_allotService
.
Generate
(
allot
,
email
,
uuid
,
userId
);
}
else
{
...
...
@@ -251,13 +252,13 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody] A
using
(
var
scope
=
_serviceScopeFactory
.
CreateScope
())
{
var
scopedServices
=
scope
.
ServiceProvider
.
GetRequiredService
<
AllotService
>();
scopedServices
.
Generate
(
allot
,
email
);
scopedServices
.
Generate
(
allot
,
email
,
uuid
,
userId
);
await
Task
.
Delay
(
TimeSpan
.
FromSeconds
(
5
),
token
);
}
});
}
_
logManageService
.
WriteMsg
(
"等待绩效生成"
,
$"等待绩效生成
{
allot
.
Year
}
-
{
allot
.
Month
.
ToString
().
PadLeft
(
2
,
'0'
)}
月份绩效!"
,
1
,
allot
.
ID
,
"ReceiveMessage
"
);
_
notificationsService
.
SendGenerateMessage
(
userId
,
allot
,
uuid
,
$"等待绩效生成
{
allot
.
Year
}
-
{
allot
.
Month
.
ToString
().
PadLeft
(
2
,
'0'
)}
月份绩效,请稍等!
"
);
//_allotService.Generate(allot, email);
////BackgroundJob.Enqueue(() => _allotService.Generate(allot, email));
return
new
ApiResponse
(
ResponseType
.
OK
);
...
...
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
4433472b
...
...
@@ -110,6 +110,33 @@
<param
name=
"userId"
>
用户id
</param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AccountController.SelfInfos"
>
<summary>
查询用户信息
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AccountController.InsertUser(Performance.DtoModels.UserRequest)"
>
<summary>
新增用户
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AccountController.UpdateUser(Performance.DtoModels.UserRequest)"
>
<summary>
编辑用户
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AccountController.DeleteUser(Performance.DtoModels.UserRequest)"
>
<summary>
新增用户
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"T:Performance.Api.Controllers.AgainAllotController"
>
<summary>
科室二次分配
...
...
@@ -177,6 +204,13 @@
<param
name=
"form"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AllotController.ImportExtraction(System.Int32)"
>
<summary>
上传文件
</summary>
<param
name=
"allotId"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AllotController.Generate(Performance.DtoModels.AllotRequest)"
>
<summary>
绩效生成
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
4433472b
...
...
@@ -221,6 +221,71 @@
结果值
</summary>
</member>
<member
name=
"F:Performance.DtoModels.Classify.Notification"
>
<summary>
通知
</summary>
</member>
<member
name=
"F:Performance.DtoModels.Classify.Progress"
>
<summary>
进度条
</summary>
</member>
<member
name=
"F:Performance.DtoModels.NoticeType.success"
>
<summary>
成功
</summary>
</member>
<member
name=
"F:Performance.DtoModels.NoticeType.info"
>
<summary>
消息
</summary>
</member>
<member
name=
"F:Performance.DtoModels.NoticeType.warning"
>
<summary>
警告
</summary>
</member>
<member
name=
"F:Performance.DtoModels.NoticeType.error"
>
<summary>
错误
</summary>
</member>
<member
name=
"F:Performance.DtoModels.NoticeType.exception"
>
<summary>
异常
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MessageInfo.Classify"
>
<summary>
分类
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MessageInfo.Type"
>
<summary>
类型
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MessageInfo.Title"
>
<summary>
标题
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MessageInfo.Message"
>
<summary>
消息
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MessageInfo.Percentage"
>
<summary>
百分比
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MessageInfo.TypeValue"
>
<summary>
类型值
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAgainData.RowNumber"
>
<summary>
行号
...
...
@@ -2273,6 +2338,11 @@
角色
</summary>
</member>
<member
name=
"P:Performance.DtoModels.UserRequest.RoleArr"
>
<summary>
角色Arr
</summary>
</member>
<member
name=
"P:Performance.DtoModels.UserRequest.HosIDArray"
>
<summary>
用户医院ID
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
4433472b
...
...
@@ -151,6 +151,9 @@
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.log_dbug"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.log_signalr"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.mod_dic"
>
<summary>
部分公共数据抽取SQL
</summary>
</member>
...
...
@@ -2961,6 +2964,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
...
...
@@ -5731,6 +5789,11 @@
删除状态 1可用 2删除
</summary>
</member>
<member
name=
"P:Performance.EntityModels.sys_user.ParentID"
>
<summary>
父级ID
</summary>
</member>
<member
name=
"T:Performance.EntityModels.sys_user_hospital"
>
<summary>
...
...
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
View file @
4433472b
...
...
@@ -236,6 +236,9 @@ public AutoMapperConfigs()
CreateMap
<
HistoryData
,
report_original_surgery
>()
.
ForMember
(
dest
=>
dest
.
PersonTime
,
opt
=>
opt
.
MapFrom
(
src
=>
src
.
ResultData
))
.
ReverseMap
();
CreateMap
<
log_signalr
,
MessageInfo
>()
.
ReverseMap
();
}
public
void
xx
()
...
...
performance/Performance.
Service
s/Hubs/Enum.cs
→
performance/Performance.
DtoModel
s/Hubs/Enum.cs
View file @
4433472b
...
...
@@ -3,7 +3,7 @@
using
System.ComponentModel
;
using
System.Text
;
namespace
Performance.
Service
s
namespace
Performance.
DtoModel
s
{
public
enum
Classify
{
...
...
performance/Performance.
Service
s/Hubs/MessageInfo.cs
→
performance/Performance.
DtoModel
s/Hubs/MessageInfo.cs
View file @
4433472b
...
...
@@ -3,19 +3,27 @@
using
System.Collections.Generic
;
using
System.Text
;
namespace
Performance.
Service
s
namespace
Performance.
DtoModel
s
{
public
class
MessageInfo
{
public
MessageInfo
(
NoticeType
typeValue
)
public
MessageInfo
(
NoticeType
typeValue
,
string
uuid
=
null
,
Classify
classify
=
Classify
.
Notification
)
{
TypeValue
=
typeValue
;
Uuid
=
uuid
;
Classify
=
classify
;
}
public
string
Uuid
{
get
;
set
;
}
public
int
HospitalId
{
get
;
set
;
}
public
int
AllotId
{
get
;
set
;
}
/// <summary>
/// 分类
/// </summary>
public
Classify
Classify
{
get
;
set
;
}
=
Classify
.
Notification
;
public
Classify
Classify
{
get
;
set
;
}
/// <summary>
/// 类型
...
...
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
View file @
4433472b
...
...
@@ -164,6 +164,9 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
/// <summary> </summary>
public
virtual
DbSet
<
log_dbug
>
log_dbug
{
get
;
set
;
}
/// <summary> </summary>
public
virtual
DbSet
<
log_signalr
>
log_signalr
{
get
;
set
;
}
/// <summary> 部分公共数据抽取SQL </summary>
public
virtual
DbSet
<
mod_dic
>
mod_dic
{
get
;
set
;
}
...
...
performance/Performance.EntityModels/Entity/log_signalr.cs
0 → 100644
View file @
4433472b
//-----------------------------------------------------------------------
// <copyright file=" log_signalr.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using
System
;
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
namespace
Performance.EntityModels
{
/// <summary>
///
/// </summary>
[
Table
(
"log_signalr"
)]
public
class
log_signalr
{
/// <summary>
///
/// </summary>
[
Key
]
public
int
Id
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
int
HospitalId
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
int
AllotId
{
get
;
set
;
}
/// <summary>
/// 分类
/// </summary>
public
int
Classify
{
get
;
set
;
}
/// <summary>
/// 类型值
/// </summary>
public
int
TypeValue
{
get
;
set
;
}
/// <summary>
/// 类型
/// </summary>
public
string
Type
{
get
;
set
;
}
/// <summary>
/// 标题
/// </summary>
public
string
Title
{
get
;
set
;
}
/// <summary>
/// 消息
/// </summary>
public
string
Message
{
get
;
set
;
}
/// <summary>
/// 百分比
/// </summary>
public
Nullable
<
decimal
>
Percentage
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
Nullable
<
DateTime
>
CreateTime
{
get
;
set
;
}
}
}
performance/Performance.Repository/Repository/PerforLogdsignalrRepository.cs
0 → 100644
View file @
4433472b
//-----------------------------------------------------------------------
// <copyright file=" log_signalr.cs">
// * FileName: log_signalr.cs
// </copyright>
//-----------------------------------------------------------------------
using
System
;
using
Performance.EntityModels
;
namespace
Performance.Repository
{
/// <summary>
/// log_signalr Repository
/// </summary>
public
partial
class
PerforLogdsignalrRepository
:
PerforRepository
<
log_signalr
>
{
public
PerforLogdsignalrRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
{
}
}
}
performance/Performance.Services/AllotService.cs
View file @
4433472b
This diff is collapsed.
Click to expand it.
performance/Performance.Services/Hubs/AllotLogHub.cs
View file @
4433472b
...
...
@@ -10,40 +10,48 @@
namespace
Performance.Services
{
[
Authorize
]
public
class
AllotLogHub
:
Hub
{
private
readonly
IMemoryCache
cache
;
private
readonly
ILogger
<
AllotLogHub
>
logger
;
private
readonly
NotificationsService
service
;
public
AllotLogHub
(
IMemoryCache
cache
,
ILogger
<
AllotLogHub
>
logger
,
NotificationsService
service
ILogger
<
AllotLogHub
>
logger
)
{
this
.
cache
=
cache
;
this
.
logger
=
logger
;
this
.
service
=
service
;
}
private
readonly
MemoryCacheHelper
helper
=
new
MemoryCacheHelper
();
public
void
LoginService
(
string
userId
)
public
override
Task
OnConnectedAsync
()
{
if
(
helper
.
Exists
(
userId
))
helper
.
Remove
(
userId
);
var
dateTime
=
DateTime
.
Now
;
var
slidingtimespan
=
helper
.
ToUnixTimestampBySeconds
(
dateTime
.
AddMinutes
(
30
));
var
absolutetimespan
=
helper
.
ToUnixTimestampBySeconds
(
dateTime
.
AddHours
(
2
));
helper
.
Set
(
userId
,
Context
.
ConnectionId
,
slidingtimespan
,
absolutetimespan
);
string
key
=
Context
.
User
.
Claims
.
FirstOrDefault
(
t
=>
t
.
Type
==
"id"
)?.
Value
;
if
(!
string
.
IsNullOrEmpty
(
key
))
{
if
(
cache
.
TryGetValue
(
key
,
out
_
))
{
cache
.
Remove
(
key
);
}
cache
.
Set
(
key
,
Context
.
ConnectionId
);
}
logger
.
LogInformation
(
$"用户在
{
DateTime
.
Now
.
ToString
(
"yyyy年MM月dd日 hh时mm分ss秒"
)}
创建连接"
);
return
base
.
OnConnectedAsync
();
}
public
void
LogoutService
(
string
userId
)
public
override
Task
OnDisconnectedAsync
(
Exception
exception
)
{
if
(
helper
.
Exists
(
userId
))
helper
.
Remove
(
userId
);
string
key
=
Context
.
User
.
Claims
.
FirstOrDefault
(
t
=>
t
.
Type
==
"id"
)?.
Value
;
if
(!
string
.
IsNullOrEmpty
(
key
))
{
if
(
cache
.
TryGetValue
(
key
,
out
_
))
{
cache
.
Remove
(
key
);
}
}
logger
.
LogInformation
(
$"用户在
{
DateTime
.
Now
.
ToString
(
"yyyy年MM月dd日 hh时mm分ss秒"
)}
断开连接"
);
return
base
.
OnDisconnectedAsync
(
exception
);
}
}
}
performance/Performance.Services/Hubs/NotificationsService.cs
View file @
4433472b
using
Microsoft.AspNetCore.SignalR
;
using
Microsoft.Extensions.Caching.Memory
;
using
Microsoft.Extensions.Logging
;
using
Performance.DtoModels
;
using
Performance.EntityModels
;
using
Performance.Infrastructure
;
using
Performance.Repository
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
...
...
@@ -11,23 +15,40 @@ namespace Performance.Services
public
class
NotificationsService
:
IAutoInjection
{
private
readonly
ILogger
logger
;
private
readonly
IMemoryCache
cache
;
private
readonly
IHubContext
<
AllotLogHub
>
hubContext
;
private
readonly
PerforLogdsignalrRepository
repository
;
public
NotificationsService
(
ILogger
<
NotificationsService
>
logger
,
IHubContext
<
AllotLogHub
>
hubContext
IMemoryCache
cache
,
IHubContext
<
AllotLogHub
>
hubContext
,
PerforLogdsignalrRepository
repository
)
{
this
.
logger
=
logger
;
this
.
cache
=
cache
;
this
.
hubContext
=
hubContext
;
this
.
repository
=
repository
;
}
public
void
SendGenerateMessage
(
int
userId
,
per_allot
allot
,
string
uuid
,
string
message
,
NoticeType
typeValue
=
NoticeType
.
info
)
{
var
info
=
new
MessageInfo
(
typeValue
,
uuid
,
Classify
.
Notification
)
{
HospitalId
=
allot
.
HospitalId
,
AllotId
=
allot
.
ID
,
Title
=
"生成绩效"
,
Message
=
message
};
SendMessage
(
userId
,
info
);
}
private
readonly
MemoryCacheHelper
helper
=
new
MemoryCacheHelper
();
public
void
SendMessage
(
int
userId
,
MessageInfo
data
)
{
string
key
=
userId
.
ToString
();
if
(
helper
.
Exists
(
key
)
&&
helper
.
Get
(
key
)
is
string
connectionId
&&
!
string
.
IsNullOrEmpty
(
connectionId
))
if
(
cache
.
TryGetValue
(
key
,
out
string
connectionId
)
&&
!
string
.
IsNullOrEmpty
(
connectionId
))
{
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