Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
Jst.Domain.Lims.Timeliness.V4.5
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶然
Jst.Domain.Lims.Timeliness.V4.5
Commits
b89945db
Commit
b89945db
authored
Sep 24, 2024
by
Neo Turing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化
parent
6650ff7c
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
101 additions
and
45 deletions
+101
-45
Class1.cs
Src/Class1.cs
+88
-41
AssemblyInfo.cs
Src/Properties/AssemblyInfo.cs
+2
-2
RestfulTimeliness.cs
Src/RestfulTimeliness.cs
+11
-2
No files found.
Src/Class1.cs
View file @
b89945db
...
...
@@ -9,6 +9,7 @@ using Kivii.Lims.Transforms;
using
Kivii.Linq
;
using
Kivii.Timeliness
;
using
Kivii.Timeliness.Extensions
;
using
Kivii.Lims.Extensions
;
namespace
Jst.Lims.Timeliness
{
...
...
@@ -53,9 +54,9 @@ namespace Jst.Lims.Timeliness
ReportStatusType
statusType
=
Model
.
RequestDto
.
StatusType
;
List
<
Guid
>
reportKvids
=
Model
.
RequestDto
.
ReportKvids
;
Dictionary
<
string
,
string
>
meta
=
Model
.
RequestDto
.
Meta
;
if
(
statusType
!=
ReportStatusType
.
CommissionAccept
)
{
return
;
}
var
nodeTitle
=
"
委托受理
"
;
var
nodeType
=
NodeType
.
Begin
;
if
(
statusType
!=
ReportStatusType
.
DataEntry
)
{
return
;
}
var
nodeTitle
=
"
数据录入
"
;
var
nodeType
=
NodeType
.
Node
;
Model
.
Meta
[
"NodeTitle"
]
=
nodeTitle
;
Model
.
Meta
[
"NodeType"
]
=
nodeType
;
var
connR
=
KiviiContext
.
GetOpenedDbConnection
<
Report
>();
...
...
@@ -74,9 +75,17 @@ namespace Jst.Lims.Timeliness
foreach
(
var
report
in
reports
)
{
if
(
report
.
CreateTime
<
DateTime
.
Parse
(
"202
3-11-06
"
))
{
continue
;
}
//2023-11-06新规之前的报告就不绩效了
if
(
report
.
CreateTime
<
DateTime
.
Parse
(
"202
4-08-24
"
))
{
continue
;
}
//2023-11-06新规之前的报告就不绩效了
DateTime
?
deadTime
=
null
;
if
(
report
.
DeadDate
!=
null
)
{
deadTime
=
report
.
DeadDate
.
Value
.
AddDays
(
1
).
AddSeconds
(-
1
);
}
var
queryWorkGroups
=
connR
.
From
<
ReportItem
>();
queryWorkGroups
.
Where
(
o
=>
o
.
ReportKvid
==
report
.
Kvid
);
queryWorkGroups
.
GroupBy
(
o
=>
o
.
WorkGroupName
);
queryWorkGroups
.
Select
(
o
=>
o
.
WorkGroupName
);
var
workGroupNames
=
connR
.
Select
<
string
>(
queryWorkGroups
);
////////////////////////////////////验证当前报告是否有主节点和数据录入大节点///////////////////////////////////////////
var
enableRequest
=
new
TimelinessRequest
();
enableRequest
.
InternalCode
=
"Lims"
;
enableRequest
.
NodeType
=
nodeType
;
...
...
@@ -85,7 +94,7 @@ namespace Jst.Lims.Timeliness
enableRequest
.
BizId
=
report
.
ReportId
;
enableRequest
.
BizKvid
=
report
.
Kvid
;
enableRequest
.
RelationTitle
=
report
.
SampleSourceBatchNumber
;
if
(!
PolicyExtension
.
VerifyEnable
(
enableRequest
,
policy
,
policyNodes
,
conn
))
{
return
;
}
if
(!
PolicyExtension
.
VerifyEnable
(
enableRequest
,
policy
,
policyNodes
,
conn
))
{
continue
;
}
var
existRequest
=
new
Kivii
.
Timeliness
.
TimelinessRequest
();
existRequest
.
InternalCode
=
"Lims"
;
existRequest
.
NodeTitle
=
nodeTitle
;
...
...
@@ -96,19 +105,65 @@ namespace Jst.Lims.Timeliness
existRequest
.
PlanFinishTime
=
report
.
DeadDate
;
existRequest
.
RealStartTime
=
DateTime
.
Now
;
var
existTime
=
PolicyExtension
.
GetPreNode
(
existRequest
,
policy
,
policyNodes
,
conn
);
if
(
existTime
!=
null
)
//原本就有时效
if
(
existTime
==
null
)
{
Model
.
Meta
[
report
.
ReportId
]
=
existTime
;
Console
.
WriteLine
(
"---------------------Request:existTime--------------------------"
);
existRequest
.
NodeTitle
=
"任务分派"
;
existRequest
.
NodeType
=
NodeType
.
Node
;
var
existNext
=
PolicyExtension
.
GetPreNode
(
existRequest
,
policy
,
policyNodes
,
conn
);
if
(
existNext
!=
null
)
//没有下一个节点的时效,就要更新
foreach
(
var
prop
in
report
.
GetType
().
GetProperties
())
{
Model
.
Meta
[
report
.
ReportId
+
"ExistNext"
]
=
existNext
;
//有此Key说明existTime不要更新
Console
.
WriteLine
(
"---------------------Request:existNext--------------------------"
);
return
;
try
{
var
key
=
prop
.
Name
;
if
(
key
==
"Metadata"
)
{
continue
;
}
var
type
=
prop
.
GetType
();
var
value
=
prop
.
GetValue
(
report
,
null
);
if
(
value
==
null
)
{
continue
;
}
existRequest
.
Metadata
[
key
]
=
value
.
ToString
();
if
(
type
==
typeof
(
DateTime
))
{
existRequest
.
Metadata
[
key
]
=
DateTime
.
Parse
(
value
.
ToString
()).
ToString
(
"yyyy-MM-dd"
);
}
}
catch
{
continue
;
}
}
PolicyExtension
.
AddTimeliness
(
existRequest
);
}
///////////////////////////////////////////////////////////////////////////////
var
groupNames
=
new
List
<
string
>();
var
roles
=
KiviiContext
.
CurrentMember
.
Kvid
.
GetTestRoles
();
if
(!
roles
.
IsNullOrEmpty
()
&&
!
workGroupNames
.
IsNullOrEmpty
())
{
foreach
(
var
role
in
roles
)
{
if
(
workGroupNames
.
Contains
(
role
))
{
Console
.
WriteLine
(
"---------------------groupNames:"
+
role
+
"--------------------------"
);
groupNames
.
Add
(
role
);
}
}
}
else
{
groupNames
.
Add
(
KiviiContext
.
CurrentMember
.
DepartmentName
);
}
Model
.
Meta
[
report
.
ReportId
+
"groupNames"
]
=
groupNames
;
foreach
(
var
role
in
groupNames
)
{
//再获取当前登陆人所在组的信息
nodeTitle
=
role
;
//KiviiContext.CurrentMember.DepartmentName;
nodeType
=
NodeType
.
SubNode
;
Model
.
Meta
[
"NodeTitle"
]
=
nodeTitle
;
Model
.
Meta
[
"NodeType"
]
=
nodeType
;
existRequest
.
InternalCode
=
"Lims"
;
existRequest
.
NodeTitle
=
nodeTitle
;
existRequest
.
NodeType
=
nodeType
;
existRequest
.
RelationTitle
=
report
.
SampleSourceBatchNumber
;
existRequest
.
BizId
=
report
.
ReportId
;
existRequest
.
BizKvid
=
report
.
Kvid
;
existRequest
.
PlanFinishTime
=
report
.
DeadDate
;
existRequest
.
RealStartTime
=
DateTime
.
Now
;
existTime
=
PolicyExtension
.
GetPreNode
(
existRequest
,
policy
,
policyNodes
,
conn
);
if
(
existTime
!=
null
)
//原本就有时效
{
Model
.
Meta
[
report
.
ReportId
+
nodeTitle
]
=
existTime
;
}
else
{
...
...
@@ -121,6 +176,7 @@ namespace Jst.Lims.Timeliness
verifyRequest
.
BizKvid
=
report
.
Kvid
;
verifyRequest
.
RelationTitle
=
report
.
SampleSourceBatchNumber
;
var
verify
=
PolicyExtension
.
VerifyTimeline
(
verifyRequest
,
policy
,
policyNodes
,
conn
);
//验证是否超时
Console
.
WriteLine
(
"---------------------verify:"
+
verify
+
"--------------------------"
);
var
addRequest
=
new
Kivii
.
Timeliness
.
TimelinessRequest
();
addRequest
.
InternalCode
=
"Lims"
;
addRequest
.
NodeType
=
nodeType
;
...
...
@@ -148,14 +204,18 @@ namespace Jst.Lims.Timeliness
if
(
verify
)
{
if
(
meta
.
IsNullOrEmpty
()
||
meta
[
"Timeline"
].
IsNullOrEmpty
())
if
(!
meta
.
IsNullOrEmpty
()
&&
!
meta
[
"Timeline"
].
IsNullOrEmpty
())
{
err
=
new
HttpError
(
System
.
Net
.
HttpStatusCode
.
Forbidden
,
"TimelineTimeout"
,
"时效考核超时"
);
}
addRequest
.
Summary
=
meta
[
"Timeline"
];
}
else
{
addRequest
.
Summary
=
"当前时效节点超时"
;
}
}
Console
.
WriteLine
(
"---------------------Request:addRequest--------------------------"
);
Model
.
Meta
[
report
.
ReportId
+
"Add"
]
=
addRequest
;
//有此Key说明要创建时效
Model
.
Meta
[
report
.
ReportId
+
nodeTitle
+
"Add"
]
=
addRequest
;
//有此Key说明要创建时效
}
}
}
...
...
@@ -182,39 +242,26 @@ namespace Jst.Lims.Timeliness
foreach
(
var
report
in
rtns
.
Results
)
{
TimelinessRequest
addRequest
=
null
;
Timeline
existNext
=
null
;
Timeline
exist
=
null
;
if
(
Model
.
Meta
.
ContainsKey
(
report
.
ReportId
+
"Add"
))
List
<
string
>
groupNames
=
null
;
if
(
Model
.
Meta
.
ContainsKey
(
report
.
ReportId
+
"groupNames"
))
{
addRequest
=
Model
.
Meta
[
report
.
ReportId
+
"Add"
]
as
TimelinessRequest
;
groupNames
=
Model
.
Meta
[
report
.
ReportId
+
"groupNames"
]
as
List
<
string
>
;
}
else
if
(
Model
.
Meta
.
ContainsKey
(
report
.
ReportId
))
if
(!
groupNames
.
IsNullOrEmpty
(
))
{
exist
=
Model
.
Meta
[
report
.
ReportId
]
as
Timeline
;
if
(
Model
.
Meta
.
ContainsKey
(
report
.
ReportId
+
"ExistNext"
))
foreach
(
var
role
in
groupNames
)
{
existNext
=
Model
.
Meta
[
report
.
ReportId
+
"ExistNext"
]
as
Timeline
;
}
addRequest
=
null
;
if
(
Model
.
Meta
.
ContainsKey
(
report
.
ReportId
+
role
+
"Add"
))
{
addRequest
=
Model
.
Meta
[
report
.
ReportId
+
role
+
"Add"
]
as
TimelinessRequest
;
}
if
(
addRequest
!=
null
)
{
PolicyExtension
.
AddTimeliness
(
addRequest
);
Console
.
WriteLine
(
"---------------------Response:addRequest--------------------------"
);
}
else
if
(
exist
!=
null
&&
existNext
==
null
)
{
var
updateRequest
=
new
TimelinessRequest
();
updateRequest
.
OwnerKvid
=
KiviiContext
.
CurrentMember
.
DepartmentKvid
;
updateRequest
.
OwnerName
=
KiviiContext
.
CurrentMember
.
DepartmentName
;
updateRequest
.
OperatorKvid
=
KiviiContext
.
CurrentMember
.
Kvid
;
updateRequest
.
OperatorName
=
KiviiContext
.
CurrentMember
.
FullName
;
updateRequest
.
RealFinishTime
=
DateTime
.
Now
;
if
(
exist
.
PlanFinishTime
!=
null
&&
exist
.
PlanFinishTime
<
updateRequest
.
RealFinishTime
)
{
updateRequest
.
Summary
=
"委托受理打回后重新下达超时"
;
}
PolicyExtension
.
UpdateTimeline
(
exist
,
updateRequest
);
Console
.
WriteLine
(
"---------------------Response:updateRequest--------------------------"
);
}
else
{
continue
;
}
}
...
...
Src/Properties/AssemblyInfo.cs
View file @
b89945db
...
...
@@ -32,6 +32,6 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("5.4.2024.
820
0")]
[assembly: AssemblyFileVersion("5.4.2024.
820
0")]
[assembly: AssemblyVersion("5.4.2024.
918
0")]
[assembly: AssemblyFileVersion("5.4.2024.
918
0")]
Src/RestfulTimeliness.cs
View file @
b89945db
...
...
@@ -103,8 +103,16 @@ namespace Jst.Lims.Timeliness
BeginDate
=
DateTime
.
Parse
(
BeginDate
.
ToString
(
"yyyy-MM-dd"
));
EndDate
=
DateTime
.
Parse
(
EndDate
.
ToString
(
"yyyy-MM-dd"
));
if
(
EndDate
<
BeginDate
)
throw
new
Exception
(
"查询结束日期不可小于开始日期!"
);
var
days
=
EndDate
.
Subtract
(
BeginDate
).
Days
;
if
(
days
>
92
)
throw
new
Exception
(
"最多查询三个月的数据,您已超出日期范围上线!"
);
(
EndDate
.
Subtract
(
BeginDate
).
Days
>
31
).
ThrowIfTrue
(
"时间跨度不得大于31天!"
);
#
region
启用缓存
,
20
分钟内查询条件相同不重复请求数据库
var
cache
=
KiviiContext
.
GetCacheClient
();
var
cacheKey
=
KiviiContext
.
GetUrnKey
(
$"
{
this
.
GetType
().
FullName
}
_Request_
{
BeginDate
:
G
}
_
{
EndDate
:
G
}
_
{
TimeFilter
}
_
{
Grouped
}
_
{
Urgent
}
_
{
PolicyNodeKvids
.
Join
(
","
)}
"
);
var
cacheValue
=
cache
.
Get
<
RestfulQueryResponse
<
TimelineStatistic
>>(
cacheKey
);
if
(
cacheValue
!=
null
)
{
return
cacheValue
;
}
#
endregion
var
rtns
=
new
RestfulQueryResponse
<
TimelineStatistic
>();
rtns
.
Results
=
new
List
<
TimelineStatistic
>();
...
...
@@ -390,6 +398,7 @@ namespace Jst.Lims.Timeliness
}
rtns
.
Results
=
rtns
.
Results
.
OrderBy
(
o
=>
o
.
SortId
).
ToList
();
rtns
.
Total
=
rtns
.
Results
.
Count
;
cache
.
Set
(
cacheKey
,
rtns
,
TimeSpan
.
FromMinutes
(
20
));
return
rtns
;
}
}
...
...
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