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
8e449b8b
Commit
8e449b8b
authored
Oct 20, 2020
by
lcx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
人员其他收入抽取
parent
c7bd4929
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
90 additions
and
34 deletions
+90
-34
performance/Performance.Services/ExtractExcelService/ExtractHelper/WriteDataHelper.cs
+21
-26
performance/Performance.Services/ExtractExcelService/SheetDataWrite/EmployeeDataWrite.cs
+39
-3
performance/Performance.Services/ExtractExcelService/SheetDataWrite/OtherIncomeDataWrite.cs
+29
-2
performance/Performance.Services/ExtractExcelService/WriteDataFactory.cs
+1
-3
No files found.
performance/Performance.Services/ExtractExcelService/ExtractHelper/WriteDataHelper.cs
View file @
8e449b8b
...
...
@@ -16,7 +16,7 @@ public enum UnitType
医技组
}
public
void
WriteSheetHeader
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
ExcelHeader
>
headers
)
public
static
void
WriteSheetHeader
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
ExcelHeader
>
headers
)
{
if
(
headers
==
null
||
!
headers
.
Any
())
return
;
...
...
@@ -75,26 +75,26 @@ public void WriteSheetHeader(ISheet sheet, PerSheetPoint point, SheetType sheetT
}
}
public
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
)
public
static
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
)
{
var
columnHeader
=
sheet
.
GetOrCreate
(
point
.
HeaderFirstRowNum
.
Value
);
int
headerFirstRowNum
=
point
.
HeaderFirstRowNum
.
Value
+
1
;
int
dataFirstRowNum
=
point
.
DataFirstRowNum
.
Value
;
WriteSheetDataExistent
(
sheet
,
columnHeader
,
point
,
sheetType
,
headers
,
data
,
ref
header
FirstRowNum
);
WriteSheetDataExistent
(
sheet
,
columnHeader
,
point
,
sheetType
,
headers
,
data
,
ref
data
FirstRowNum
);
if
(
data
==
null
||
!
data
.
Any
(
t
=>
!
string
.
IsNullOrEmpty
(
t
.
Department
)))
return
;
WriteSheetDataNonexistent
(
sheet
,
columnHeader
,
point
,
sheetType
,
headers
,
data
,
header
FirstRowNum
);
WriteSheetDataNonexistent
(
sheet
,
columnHeader
,
point
,
sheetType
,
headers
,
data
,
data
FirstRowNum
);
}
private
void
WriteSheetDataExistent
(
ISheet
sheet
,
IRow
columnHeader
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
,
ref
int
header
FirstRowNum
)
private
static
void
WriteSheetDataExistent
(
ISheet
sheet
,
IRow
columnHeader
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
,
ref
int
data
FirstRowNum
)
{
if
(
sheet
.
LastRowNum
>
header
FirstRowNum
)
if
(
sheet
.
LastRowNum
>
data
FirstRowNum
)
{
int
dataFirstCellNum
=
point
.
DataFirstCellNum
.
Value
;
for
(
int
rowIndex
=
header
FirstRowNum
;
rowIndex
<
sheet
.
LastRowNum
+
1
;
rowIndex
++)
for
(
int
rowIndex
=
data
FirstRowNum
;
rowIndex
<
sheet
.
LastRowNum
+
1
;
rowIndex
++)
{
var
row
=
sheet
.
GetRow
(
rowIndex
);
if
(
row
==
null
)
continue
;
...
...
@@ -128,13 +128,13 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
}
data
.
RemoveAll
(
t
=>
t
.
Department
==
department
);
if
(
rowIndex
>
headerFirstRowNum
)
header
FirstRowNum
=
rowIndex
+
1
;
if
(
rowIndex
>
dataFirstRowNum
)
data
FirstRowNum
=
rowIndex
+
1
;
}
}
}
private
void
WriteSheetDataNonexistent
(
ISheet
sheet
,
IRow
columnHeader
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
,
int
header
FirstRowNum
)
private
static
void
WriteSheetDataNonexistent
(
ISheet
sheet
,
IRow
columnHeader
,
PerSheetPoint
point
,
SheetType
sheetType
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
,
int
data
FirstRowNum
)
{
var
departments
=
data
.
Select
(
s
=>
s
.
Department
).
Where
(
w
=>
!
string
.
IsNullOrEmpty
(
w
)).
Distinct
().
ToList
();
...
...
@@ -149,7 +149,7 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
var
deptData
=
data
.
Where
(
t
=>
t
.
Department
==
department
);
if
(
deptData
==
null
||
!
deptData
.
Any
())
continue
;
var
row
=
sheet
.
GetOrCreate
(
header
FirstRowNum
);
var
row
=
sheet
.
GetOrCreate
(
data
FirstRowNum
);
for
(
int
cellIndex
=
point
.
HeaderFirstCellNum
.
Value
;
cellIndex
<
columnHeader
.
LastCellNum
;
cellIndex
++)
{
var
column
=
row
.
GetCell
(
cellIndex
).
GetDecodeEscapes
();
...
...
@@ -165,10 +165,17 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
cell
.
SetCellOValue
(
value
);
}
}
header
FirstRowNum
++;
data
FirstRowNum
++;
}
}
public
static
string
HasValue
(
params
string
[]
list
)
{
if
(
list
==
null
||
!
list
.
Any
())
return
null
;
return
list
.
FirstOrDefault
(
t
=>
!
string
.
IsNullOrEmpty
(
t
));
}
/// <summary> 住院核算单元 </summary>
private
readonly
Dictionary
<
string
,
Func
<
ExtractTransDto
,
string
>>
fieldInpat
=
new
Dictionary
<
string
,
Func
<
ExtractTransDto
,
string
>>
{
...
...
@@ -206,17 +213,5 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
{
"科室名称"
,
(
dto
)
=>
dto
.
Department
},
{
"核算单元"
,
(
dto
)
=>
new
string
[]{
dto
.
OutNurseAccounting
,
dto
.
InpatNurseAccounting
}.
FirstOrDefault
(
t
=>
!
string
.
IsNullOrEmpty
(
t
))
},
};
/// <summary>
///
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public
static
string
HasValue
(
params
string
[]
list
)
{
if
(
list
==
null
||
!
list
.
Any
())
return
null
;
return
list
.
FirstOrDefault
(
t
=>
!
string
.
IsNullOrEmpty
(
t
));
}
}
}
performance/Performance.Services/ExtractExcelService/SheetDataWrite/EmployeeDataWrite.cs
View file @
8e449b8b
...
...
@@ -12,12 +12,14 @@ public class EmployeeDataWrite : ISheetDataWrite
{
public
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
object
data
)
{
if
(
data
is
IEnumerable
<
per_employee
>
employees
&&
employees
.
Any
(
t
=>
accountingUnits
.
Contains
(
t
.
UnitType
)))
if
(
data
is
List
<
per_employee
>
employees
&&
employees
.
Any
(
t
=>
accountingUnits
.
Contains
(
t
.
UnitType
)))
{
int
dataFirstRowNum
=
point
.
DataFirstRowNum
.
Value
;
var
columns
=
sheet
.
CreateRow
(
point
.
HeaderFirstRowNum
.
Value
).
GetCellValues
();
ClearHistoryData
(
sheet
,
employees
,
columns
,
ref
dataFirstRowNum
);
foreach
(
var
employee
in
employees
)
{
var
row
=
sheet
.
GetOrCreate
(
dataFirstRowNum
);
...
...
@@ -34,12 +36,46 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
}
}
private
void
ClearHistoryData
(
ISheet
sheet
,
PerSheetPoint
point
,
List
<
per_employee
>
employees
,
List
<
string
>
columns
,
ref
int
dataFirstRowNum
)
private
void
ClearHistoryData
(
ISheet
sheet
,
List
<
per_employee
>
employees
,
List
<
string
>
columns
,
ref
int
dataFirstRowNum
)
{
foreach
(
var
employee
in
employees
)
var
pairs
=
new
Dictionary
<
string
,
int
>();
foreach
(
var
key
in
new
string
[]
{
"核算单元"
,
"人员工号"
,
"医生姓名"
})
{
if
(!
pairs
.
ContainsKey
(
key
)
&&
columns
.
Contains
(
key
))
pairs
.
Add
(
key
,
columns
.
IndexOf
(
key
));
}
var
clearDict
=
new
Dictionary
<
string
,
int
>();
foreach
(
var
key
in
new
string
[]
{
"出勤率"
})
{
if
(!
clearDict
.
ContainsKey
(
key
)
&&
columns
.
Contains
(
key
))
clearDict
.
Add
(
key
,
columns
.
IndexOf
(
key
));
}
for
(
int
rowIndex
=
dataFirstRowNum
;
rowIndex
<
sheet
.
LastRowNum
;
rowIndex
++)
{
var
row
=
sheet
.
GetRow
(
dataFirstRowNum
);
string
accountingUnit
=
row
.
GetOrCreate
(
pairs
[
"核算单元"
]).
GetDecodeEscapes
();
string
personnel
=
row
.
GetOrCreate
(
pairs
[
"人员工号"
]).
GetDecodeEscapes
();
string
doctorName
=
row
.
GetOrCreate
(
pairs
[
"医生姓名"
]).
GetDecodeEscapes
();
var
employee
=
employees
.
FirstOrDefault
(
t
=>
t
.
AccountingUnit
==
accountingUnit
&&
t
.
PersonnelNumber
==
personnel
&&
t
.
DoctorName
==
doctorName
);
if
(
employee
==
null
)
{
}
else
{
foreach
(
var
clear
in
clearDict
)
{
if
(
clear
.
Value
<
0
)
return
;
var
cell
=
row
.
GetOrCreate
(
clear
.
Value
);
if
(
cell
.
CellType
!=
CellType
.
Formula
)
cell
.
SetCellValue
(
""
);
}
employees
.
Remove
(
employee
);
}
if
(
rowIndex
>
dataFirstRowNum
)
dataFirstRowNum
=
rowIndex
+
1
;
}
}
...
...
performance/Performance.Services/ExtractExcelService/SheetDataWrite/OtherIncomeDataWrite.cs
View file @
8e449b8b
using
System
;
using
NPOI.SS.UserModel
;
using
Performance.DtoModels
;
using
Performance.EntityModels
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
namespace
Performance.Services.ExtractExcelService.SheetDataWrite
{
class
OtherIncomeDataWrite
:
ISheetDataWrite
public
class
OtherIncomeDataWrite
:
ISheetDataWrite
{
public
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
object
data
,
List
<
ex_module
>
modules
,
List
<
ex_item
>
items
)
{
var
module
=
modules
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
(
int
)
sheetType
);
if
(
module
==
null
)
return
;
var
modelItems
=
items
.
Where
(
t
=>
t
.
ModuleId
==
module
.
Id
);
if
(
modelItems
==
null
||
!
modelItems
.
Any
())
return
;
var
headers
=
modelItems
.
Select
(
t
=>
new
ExcelHeader
{
ColumnName
=
t
.
ItemName
,
DoctorFactor
=
t
.
FactorValue1
??
0
,
NurseFactor
=
t
.
FactorValue2
??
0
,
TechnicianFactor
=
t
.
FactorValue3
??
0
}).
ToList
();
WriteDataHelper
.
WriteSheetHeader
(
sheet
,
point
,
sheetType
,
headers
);
if
(
data
is
List
<
ExtractTransDto
>
extractDto
&&
extractDto
.
Any
())
{
var
columns
=
headers
.
Select
(
t
=>
t
.
ColumnName
).
ToList
();
WriteDataHelper
.
WriteSheetData
(
sheet
,
point
,
sheetType
,
columns
,
extractDto
);
}
}
}
}
performance/Performance.Services/ExtractExcelService/WriteDataFactory.cs
View file @
8e449b8b
...
...
@@ -21,14 +21,12 @@ public ISheetDataWrite GetWriteData(SheetType sheetType)
factory
=
new
ClinicEmployeeDataWrite
();
break
;
case
SheetType
.
OtherIncome
:
case
SheetType
.
Expend
:
factory
=
new
OtherIncomeDataWrite
();
break
;
case
SheetType
.
Income
:
factory
=
new
IncomeDataWrite
();
break
;
case
SheetType
.
Expend
:
factory
=
new
ExpendDataWrite
();
break
;
case
SheetType
.
Workload
:
factory
=
new
WorkloadDataWrite
();
break
;
...
...
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