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
120f42dd
Commit
120f42dd
authored
Apr 10, 2019
by
ruyun.zhang@suvalue.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of
http://192.168.0.110:8880/zry/performance
into develop
parents
e9ab8d5b
67d2b23a
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
249 additions
and
3 deletions
+249
-3
performance/Performance.Repository/PerforCofdirectorRepository.cs
+1
-0
performance/Performance.Services/AllotCompute/CheckDataService.cs
+248
-3
No files found.
performance/Performance.Repository/PerforCofdirectorRepository.cs
View file @
120f42dd
...
@@ -30,6 +30,7 @@ public int DeleteData(int allotId)
...
@@ -30,6 +30,7 @@ public int DeleteData(int allotId)
"res_baiscnorm"
,
"res_baiscnorm"
,
"res_compute"
,
"res_compute"
,
"res_specialunit"
,
"res_specialunit"
,
"log_check"
,
};
};
string
sql
=
""
;
string
sql
=
""
;
tableArray
.
ForEach
(
t
=>
sql
+=
$"delete from
{
t
}
where allotid=@allotId;"
);
tableArray
.
ForEach
(
t
=>
sql
+=
$"delete from
{
t
}
where allotid=@allotId;"
);
...
...
performance/Performance.Services/AllotCompute/CheckDataService.cs
View file @
120f42dd
using
Performance.DtoModels
;
using
Performance.DtoModels
;
using
Performance.EntityModels
;
using
Performance.EntityModels
;
using
Performance.Repository
;
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Text
;
using
System.Linq
;
using
Performance.Infrastructure
;
namespace
Performance.Services.AllotCompute
namespace
Performance.Services.AllotCompute
{
{
public
class
CheckDataService
:
IAutoInjection
public
class
CheckDataService
:
IAutoInjection
{
{
private
PerSheetService
perSheetService
;
private
PerforCofcheckRepository
perforCofcheckRepository
;
private
PerforLogcheckRepository
perforLogcheckRepository
;
public
CheckDataService
(
PerSheetService
perSheetService
,
PerforCofcheckRepository
perforCofcheckRepository
,
PerforLogcheckRepository
perforLogcheckRepository
)
{
this
.
perSheetService
=
perSheetService
;
this
.
perforCofcheckRepository
=
perforCofcheckRepository
;
this
.
perforLogcheckRepository
=
perforLogcheckRepository
;
}
internal
bool
Check
(
PerExcel
excel
,
per_allot
allot
)
internal
bool
Check
(
PerExcel
excel
,
per_allot
allot
)
{
{
bool
result
=
true
;
//sheet页名称分类
//sheet页名称分类
excel
=
Classify
(
excel
,
allot
);
//列头识别
//列头识别
if
(!
Discern
(
excel
,
allot
))
result
=
false
;
//匹配绩效参考标准
//匹配绩效参考标准
//MatchStandard(excel, allot);
//空行数据警告
//空行数据警告
if
(!
CheckData
(
excel
,
allot
))
result
=
false
;
//科室收入项 总费用相等 校验(暂不处理)
//科室收入项 总费用相等 校验(暂不处理)
return
result
;
}
#
region
sheet
页名称分类
/// <summary>
/// sheet页名称分类
/// </summary>
/// <param name="excel"></param>
/// <param name="allot"></param>
/// <returns></returns>
public
PerExcel
Classify
(
PerExcel
excel
,
per_allot
allot
)
{
var
perSheet
=
excel
.
PerSheet
;
foreach
(
var
sheet
in
perSheet
)
{
string
message
;
SheetType
sheetType
=
perSheetService
.
GetSheetType
(
sheet
.
SheetName
);
if
(
sheetType
!=
SheetType
.
Unidentifiable
)
message
=
$"
{
sheet
.
SheetName
}
-- 已成功分类,类别为:
{
EnumHelper
.
GetDescription
(
sheetType
)}
;"
;
else
{
message
=
$"
{
sheet
.
SheetName
}
-- 未识别,请检测sheet页名称是否正确;"
;
}
InsertLog
(
allot
.
ID
,
(
int
)
sheetType
,
"sheet页名称分类"
,
message
);
}
return
excel
;
}
#
endregion
#
region
列头识别
/// <summary>
/// 列头识别
/// </summary>
/// <param name="excel"></param>
/// <returns></returns>
public
bool
Discern
(
PerExcel
excel
,
per_allot
allot
)
{
var
result
=
true
;
var
perSheet
=
excel
.
PerSheet
;
foreach
(
var
sheet
in
perSheet
)
{
var
flag
=
true
;
string
message
=
$"
{
sheet
.
SheetName
}
-- 列头符合要求;"
;
var
cellValue
=
sheet
.
PerHeader
.
Select
(
t
=>
t
.
CellValue
).
ToList
();
foreach
(
var
item
in
sheet
.
PerHeader
)
{
if
(
item
.
IsHasChildren
)
cellValue
=
cellValue
.
Union
(
item
.
Children
.
Select
(
t
=>
t
.
CellValue
)).
ToList
();
}
var
headerCheck
=
perforCofcheckRepository
.
GetEntities
(
t
=>
t
.
Type
==
(
int
)
sheet
.
SheetType
)
.
Select
(
t
=>
t
.
CellName
).
Distinct
().
ToList
();
if
(
headerCheck
!=
null
)
{
if
((
int
)
sheet
.
SheetType
==
4
)
{
string
str
=
sheet
.
SheetName
.
Contains
(
"医生组"
)
?
"医生组"
:
"护理组"
;
var
filter
=
new
List
<
string
>()
{
"核算单元(医生组)"
,
"核算单元(护理组)"
};
var
list
=
cellValue
.
Intersect
(
filter
).
ToList
();
//求交集
if
(
list
==
null
)
{
message
=
$"
{
sheet
.
SheetName
}
-- 列头不规范,缺少列头或命名不规范:“核算单元(
{
str
}
)、科室名称”不存在;"
;
flag
=
false
;
}
else
if
(!
filter
.
Contains
(
list
.
FirstOrDefault
()))
{
message
=
$"
{
sheet
.
SheetName
}
-- 列头不规范,缺少列头或命名不规范:“核算单元(
{
str
}
)”不存在;"
;
flag
=
false
;
}
else
if
(!
cellValue
.
Contains
(
"科室名称"
))
{
message
=
$"
{
sheet
.
SheetName
}
-- 列头不规范,缺少列头或命名不规范:“科室名称”不存在;"
;
flag
=
false
;
}
}
else
{
var
list
=
cellValue
.
Intersect
(
headerCheck
).
ToList
();
//求交集,提交的列头和数据库中保存的列头
var
lack
=
headerCheck
.
Except
(
list
).
ToList
();
//求差集,数据库中列头与交集
if
(
lack
.
Count
>
0
)
{
flag
=
false
;
message
=
$"
{
sheet
.
SheetName
}
-- 列头不规范,缺少列头或命名不规范:“
{
String
.
Join
(
"、"
,
lack
.
ToArray
())}
”不存在;"
;
}
}
if
(!
flag
)
result
=
false
;
}
InsertLog
(
allot
.
ID
,
(
int
)
sheet
.
SheetType
,
"列头识别"
,
message
);
}
return
result
;
}
#
endregion
#
region
匹配绩效参考标准
/// <summary>
/// 匹配绩效参考标准
/// </summary>
/// <param name="excel"></param>
/// <param name="allot"></param>
/// <returns></returns>
public
bool
MatchStandard
(
PerExcel
excel
,
per_allot
allot
)
{
return
true
;
return
true
;
}
}
#
endregion
#
region
空行数据警告
public
bool
CheckData
(
PerExcel
excel
,
per_allot
allot
)
{
var
result
=
true
;
var
perSheet
=
excel
.
PerSheet
;
foreach
(
var
sheet
in
perSheet
)
{
string
message
=
$"
{
sheet
.
SheetName
}
-- 数据符合规范;"
;
List
<
int
>
rowNumber
=
new
List
<
int
>();
bool
flag
=
true
;
int
count
=
0
;
if
(
sheet
.
SheetName
.
StartsWith
(
"医院人员名单"
))
{
List
<
string
>
accountType
=
new
List
<
string
>()
{
"临床科室"
,
"医技科室"
,
""
};
List
<
string
>
fitPeople
=
new
List
<
string
>();
foreach
(
var
name
in
EnumHelper
.
GetNames
<
PerformanceType
>())
{
var
a
=
(
int
)
Enum
.
Parse
(
typeof
(
PerformanceType
),
name
);
fitPeople
.
Add
(
EnumHelper
.
GetDescription
((
PerformanceType
)
a
));
}
var
dataList
=
sheet
.
PerData
.
Select
(
t
=>
(
PerDataEmployee
)
t
);
foreach
(
var
item
in
dataList
)
{
if
(!
accountType
.
Contains
(
item
.
AccountType
)
||
!
fitPeople
.
Contains
(
item
.
FitPeople
)
||
string
.
IsNullOrEmpty
(
item
.
AccountingUnit
))
{
flag
=
false
;
rowNumber
.
Add
(
item
.
RowNumber
+
1
);
count
++;
}
}
}
else
if
(
sheet
.
SheetName
.
StartsWith
(
"1.0"
)
||
sheet
.
SheetName
.
StartsWith
(
"3."
))
{
var
data
=
sheet
.
PerData
.
Select
(
t
=>
(
PerData
)
t
);
var
dataList
=
data
.
GroupBy
(
t
=>
t
.
RowNumber
).
ToList
();
foreach
(
var
item
in
dataList
)
{
var
perData
=
item
.
FirstOrDefault
();
if
(
string
.
IsNullOrEmpty
(
perData
.
AccountingUnit
))
{
flag
=
false
;
rowNumber
.
Add
(
perData
.
RowNumber
+
1
);
count
++;
}
}
}
else
if
(
sheet
.
SheetName
.
StartsWith
(
"1."
)
||
sheet
.
SheetName
.
StartsWith
(
"2."
))
{
var
data
=
sheet
.
PerData
.
Select
(
t
=>
(
PerData
)
t
);
var
dataList
=
data
.
GroupBy
(
t
=>
t
.
RowNumber
).
ToList
();
foreach
(
var
item
in
dataList
)
{
var
doctor
=
item
.
Where
(
t
=>
t
.
UnitType
==
"医生组"
).
FirstOrDefault
();
var
nurse
=
item
.
Where
(
t
=>
t
.
UnitType
==
"护理组"
).
FirstOrDefault
();
if
(
string
.
IsNullOrEmpty
(
doctor
.
AccountingUnit
)
&&
string
.
IsNullOrEmpty
(
nurse
.
AccountingUnit
))
{
flag
=
false
;
rowNumber
.
Add
(
doctor
.
RowNumber
+
1
);
count
++;
}
}
}
else
if
(
sheet
.
SheetName
.
StartsWith
(
"4.1"
))
{
var
dataList
=
sheet
.
PerData
.
Select
(
t
=>
(
PerDataAccountBaisc
)
t
);
foreach
(
var
item
in
dataList
)
{
if
(
string
.
IsNullOrEmpty
(
item
.
AccountingUnit
))
{
flag
=
false
;
rowNumber
.
Add
(
item
.
RowNumber
+
1
);
count
++;
}
}
}
else
if
(
sheet
.
SheetName
.
StartsWith
(
"4.2"
))
{
var
dataList
=
sheet
.
PerData
.
Select
(
t
=>
(
PerDataSpecialUnit
)
t
);
foreach
(
var
item
in
dataList
)
{
if
(
string
.
IsNullOrEmpty
(
item
.
Department
))
{
flag
=
false
;
rowNumber
.
Add
(
item
.
RowNumber
+
1
);
count
++;
}
}
}
if
(!
flag
)
{
result
=
false
;
message
=
$"
{
sheet
.
SheetName
}
-- 有
{
count
}
行空数据,行号是
{
String
.
Join
(
"、"
,
rowNumber
.
ToArray
())}
;"
;
}
InsertLog
(
allot
.
ID
,
(
int
)
sheet
.
SheetType
,
"空行数据警告"
,
message
.
ToString
());
}
return
result
;
}
#
endregion
#
region
向
log_check
表中添加记录
/// <summary>
/// 向log_check表中添加记录
/// </summary>
/// <param name="allotId">绩效id</param>
/// <param name="type">1、通过验证,2、验证失败</param>
/// <param name="title"></param>
/// <param name="message">描述</param>
public
void
InsertLog
(
int
allotId
,
int
type
,
string
title
,
string
message
)
{
log_check
model
=
new
log_check
()
{
AllotID
=
allotId
,
CreateTime
=
DateTime
.
Now
,
Type
=
type
,
Titile
=
title
,
Message
=
message
};
perforLogcheckRepository
.
Add
(
model
);
}
#
endregion
}
}
}
}
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