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
b7164ee4
Commit
b7164ee4
authored
Jul 13, 2021
by
lcx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
测算表中收入的费用系数来源改变
parent
bebc5339
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
71 additions
and
25 deletions
+71
-25
performance/Performance.Services/ExtractExcelService/ExtractDtos/ExcelHeader.cs
+4
-4
performance/Performance.Services/ExtractExcelService/ExtractHelper/WriteDataHelper.cs
+40
-16
performance/Performance.Services/ExtractExcelService/ExtractService.cs
+8
-1
performance/Performance.Services/ExtractExcelService/QueryService.cs
+1
-0
performance/Performance.Services/ExtractExcelService/SheetDataWrite/IncomeDataWrite.cs
+18
-4
No files found.
performance/Performance.Services/ExtractExcelService/ExtractDtos/ExcelHeader.cs
View file @
b7164ee4
...
@@ -14,21 +14,21 @@ public class ExcelHeader
...
@@ -14,21 +14,21 @@ public class ExcelHeader
/// <summary>
/// <summary>
/// 护理组系数
/// 护理组系数
/// </summary>
/// </summary>
public
decimal
NurseFactor
{
get
;
set
;
}
public
decimal
?
NurseFactor
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 医生组系数
/// 医生组系数
/// </summary>
/// </summary>
public
decimal
DoctorFactor
{
get
;
set
;
}
public
decimal
?
DoctorFactor
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 医技组系数
/// 医技组系数
/// </summary>
/// </summary>
public
decimal
TechnicianFactor
{
get
;
set
;
}
public
decimal
?
TechnicianFactor
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 工作量系数
/// 工作量系数
/// </summary>
/// </summary>
public
decimal
WorkloadFactor
{
get
;
set
;
}
public
decimal
?
WorkloadFactor
{
get
;
set
;
}
}
}
}
}
performance/Performance.Services/ExtractExcelService/ExtractHelper/WriteDataHelper.cs
View file @
b7164ee4
...
@@ -32,27 +32,37 @@ public static void WriteSheetHeader(ISheet sheet, PerSheetPoint point, SheetType
...
@@ -32,27 +32,37 @@ public static void WriteSheetHeader(ISheet sheet, PerSheetPoint point, SheetType
// 工作量系数
// 工作量系数
var
workloadFactor
=
sheet
.
GetOrCreate
(
point
.
HeaderFirstRowNum
.
Value
+
1
);
var
workloadFactor
=
sheet
.
GetOrCreate
(
point
.
HeaderFirstRowNum
.
Value
+
1
);
var
factorStyle
=
new
SheetType
[]
{
SheetType
.
Workload
,
SheetType
.
OtherWorkload
}.
Contains
(
sheetType
)
?
style
.
SetBgkColorAndFormat
(
style
.
GetCellStyle
(),
StyleType
.
系数
,
CellFormat
.
数字
)
:
style
.
SetBgkColorAndFormat
(
style
.
GetCellStyle
(),
StyleType
.
系数
,
CellFormat
.
百分比
);
var
columnStyle
=
style
.
SetBgkColorAndFormat
(
style
.
GetCellStyle
(),
StyleType
.
列头
);
// 去除excel中已存在的列
// 去除excel中已存在的列
int
headerFirstCellNum
=
point
.
DataFirstCellNum
.
Value
;
int
headerFirstCellNum
=
point
.
DataFirstCellNum
.
Value
;
if
(
columnHeader
.
LastCellNum
>
point
.
DataFirstCellNum
.
Value
)
if
(
columnHeader
.
LastCellNum
>
point
.
DataFirstCellNum
.
Value
)
{
{
for
(
int
index
=
point
.
DataFirstCellNum
.
Value
;
index
<
columnHeader
.
LastCellNum
;
index
++)
for
(
int
index
=
point
.
DataFirstCellNum
.
Value
;
index
<
columnHeader
.
LastCellNum
;
index
++)
{
{
var
c
olumn
=
columnHeader
.
GetCell
(
index
).
GetDecodeEscapes
();
var
c
ategory
=
columnHeader
.
GetCell
(
index
).
GetDecodeEscapes
();
if
(
string
.
IsNullOrEmpty
(
c
olumn
))
continue
;
if
(
string
.
IsNullOrEmpty
(
c
ategory
))
continue
;
if
(
index
>
headerFirstCellNum
)
headerFirstCellNum
=
index
;
if
(
index
>
headerFirstCellNum
)
headerFirstCellNum
=
index
;
columns
.
RemoveAll
(
t
=>
t
.
ColumnName
.
NoBlank
()
==
column
);
var
column
=
columns
.
FirstOrDefault
(
t
=>
t
.
ColumnName
.
NoBlank
()
==
category
);
if
(
sheetType
==
SheetType
.
Income
)
{
WriteFactor
(
doctorFactor
,
index
,
column
?.
DoctorFactor
,
factorStyle
);
WriteFactor
(
nurseFactor
,
index
,
column
?.
NurseFactor
,
factorStyle
);
WriteFactor
(
technicianFactor
,
index
,
column
?.
TechnicianFactor
,
factorStyle
);
}
columns
.
RemoveAll
(
t
=>
t
.
ColumnName
.
NoBlank
()
==
category
);
}
}
if
(
headerFirstCellNum
>
point
.
DataFirstCellNum
.
Value
)
if
(
headerFirstCellNum
>
point
.
DataFirstCellNum
.
Value
)
headerFirstCellNum
+=
1
;
headerFirstCellNum
+=
1
;
}
}
if
(
columns
==
null
||
!
columns
.
Any
())
return
;
if
(
columns
==
null
||
!
columns
.
Any
())
return
;
var
factorStyle
=
new
SheetType
[]
{
SheetType
.
Workload
,
SheetType
.
OtherWorkload
}.
Contains
(
sheetType
)
?
style
.
SetBgkColorAndFormat
(
style
.
GetCellStyle
(),
StyleType
.
系数
,
CellFormat
.
数字
)
:
style
.
SetBgkColorAndFormat
(
style
.
GetCellStyle
(),
StyleType
.
系数
,
CellFormat
.
百分比
);
var
columnStyle
=
style
.
SetBgkColorAndFormat
(
style
.
GetCellStyle
(),
StyleType
.
列头
);
// 补充excel中不存在的列
// 补充excel中不存在的列
foreach
(
var
item
in
columns
)
foreach
(
var
item
in
columns
)
...
@@ -69,23 +79,37 @@ public static void WriteSheetHeader(ISheet sheet, PerSheetPoint point, SheetType
...
@@ -69,23 +79,37 @@ public static void WriteSheetHeader(ISheet sheet, PerSheetPoint point, SheetType
}
}
else
else
{
{
var
doctorCell
=
doctorFactor
.
GetOrCreate
(
headerFirstCellNum
);
WriteFactor
(
doctorFactor
,
headerFirstCellNum
,
item
?.
DoctorFactor
,
factorStyle
);
doctorCell
.
SetCellValue
<
decimal
>(
item
.
DoctorFactor
);
doctorCell
.
CellStyle
=
factorStyle
;
var
nurseCell
=
nurseFactor
.
GetOrCreate
(
headerFirstCellNum
);
WriteFactor
(
nurseFactor
,
headerFirstCellNum
,
item
?.
NurseFactor
,
factorStyle
);
nurseCell
.
SetCellValue
<
decimal
>(
item
.
NurseFactor
);
nurseCell
.
CellStyle
=
factorStyle
;
var
technicianCell
=
technicianFactor
.
GetOrCreate
(
headerFirstCellNum
);
WriteFactor
(
technicianFactor
,
headerFirstCellNum
,
item
?.
TechnicianFactor
,
factorStyle
);
technicianCell
.
SetCellValue
<
decimal
>(
item
.
TechnicianFactor
);
technicianCell
.
CellStyle
=
factorStyle
;
}
}
headerFirstCellNum
++;
headerFirstCellNum
++;
}
}
}
}
private
static
void
WriteFactor
(
IRow
row
,
int
cellIndex
,
decimal
?
value
,
ICellStyle
style
)
{
var
cell
=
row
.
GetCell
(
cellIndex
);
if
(
cell
!=
null
)
{
row
.
RemoveCell
(
cell
);
}
cell
=
row
.
CreateCell
(
cellIndex
);
if
(
value
.
HasValue
)
{
cell
.
SetCellValue
<
decimal
>(
value
);
}
else
{
cell
.
SetCellValue
<
string
>(
"#VALUE!"
);
}
cell
.
CellStyle
=
style
;
}
#
region
ExtractData
#
region
ExtractData
public
static
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
ExcelStyle
style
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
)
public
static
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
ExcelStyle
style
,
List
<
string
>
headers
,
List
<
ExtractTransDto
>
data
)
...
...
performance/Performance.Services/ExtractExcelService/ExtractService.cs
View file @
b7164ee4
...
@@ -26,6 +26,7 @@ public class ExtractService : IAutoInjection
...
@@ -26,6 +26,7 @@ public class ExtractService : IAutoInjection
private
readonly
PerforCollectdataRepository
collectdataRepository
;
private
readonly
PerforCollectdataRepository
collectdataRepository
;
private
readonly
PerforPeremployeeRepository
peremployeeRepository
;
private
readonly
PerforPeremployeeRepository
peremployeeRepository
;
private
readonly
PerforPerdeptdicRepository
perdeptdicRepository
;
private
readonly
PerforPerdeptdicRepository
perdeptdicRepository
;
private
readonly
PerforCofdrugtypefactorRepository
drugtypefactorRepository
;
public
ExtractService
(
public
ExtractService
(
ILogger
<
ExtractService
>
logger
,
ILogger
<
ExtractService
>
logger
,
...
@@ -39,7 +40,8 @@ public class ExtractService : IAutoInjection
...
@@ -39,7 +40,8 @@ public class ExtractService : IAutoInjection
PerforPerallotRepository
perallotRepository
,
PerforPerallotRepository
perallotRepository
,
PerforCollectdataRepository
collectdataRepository
,
PerforCollectdataRepository
collectdataRepository
,
PerforPeremployeeRepository
peremployeeRepository
,
PerforPeremployeeRepository
peremployeeRepository
,
PerforPerdeptdicRepository
perdeptdicRepository
PerforPerdeptdicRepository
perdeptdicRepository
,
PerforCofdrugtypefactorRepository
drugtypefactorRepository
)
)
{
{
this
.
logger
=
logger
;
this
.
logger
=
logger
;
...
@@ -54,6 +56,7 @@ PerforPerdeptdicRepository perdeptdicRepository
...
@@ -54,6 +56,7 @@ PerforPerdeptdicRepository perdeptdicRepository
this
.
collectdataRepository
=
collectdataRepository
;
this
.
collectdataRepository
=
collectdataRepository
;
this
.
peremployeeRepository
=
peremployeeRepository
;
this
.
peremployeeRepository
=
peremployeeRepository
;
this
.
perdeptdicRepository
=
perdeptdicRepository
;
this
.
perdeptdicRepository
=
perdeptdicRepository
;
this
.
drugtypefactorRepository
=
drugtypefactorRepository
;
}
}
/// <summary>
/// <summary>
...
@@ -146,6 +149,10 @@ private void WriteDataToFile(IWorkbook workbook, per_allot allot, Dictionary<ExD
...
@@ -146,6 +149,10 @@ private void WriteDataToFile(IWorkbook workbook, per_allot allot, Dictionary<ExD
var
employeeDict
=
peremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allot
.
ID
);
var
employeeDict
=
peremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allot
.
ID
);
var
collectData
=
collectdataRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
);
var
collectData
=
collectdataRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
);
var
drugfactorData
=
drugtypefactorRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
)
??
new
List
<
cof_drugtype_factor
>();
if
(!
exdict
.
ContainsKey
(
ExDataDict
.
IncomeFactor
))
exdict
.
Add
(
ExDataDict
.
IncomeFactor
,
drugfactorData
);
logger
.
LogInformation
(
$"allotId:
{
allot
.
ID
}
: 总金额 -
{
extractDto
?.
Sum
(
s
=>
s
.
Value
??
0
)}
"
);
logger
.
LogInformation
(
$"allotId:
{
allot
.
ID
}
: 总金额 -
{
extractDto
?.
Sum
(
s
=>
s
.
Value
??
0
)}
"
);
WriteDataFactory
factory
=
new
WriteDataFactory
();
WriteDataFactory
factory
=
new
WriteDataFactory
();
...
...
performance/Performance.Services/ExtractExcelService/QueryService.cs
View file @
b7164ee4
...
@@ -17,6 +17,7 @@ public enum ExDataDict
...
@@ -17,6 +17,7 @@ public enum ExDataDict
ExItem
=
2
,
ExItem
=
2
,
ExSpecial
=
3
,
ExSpecial
=
3
,
AccountingBasic
=
4
,
AccountingBasic
=
4
,
IncomeFactor
=
5
,
}
}
public
class
QueryService
:
IAutoInjection
public
class
QueryService
:
IAutoInjection
...
...
performance/Performance.Services/ExtractExcelService/SheetDataWrite/IncomeDataWrite.cs
View file @
b7164ee4
...
@@ -44,14 +44,28 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
...
@@ -44,14 +44,28 @@ public void WriteSheetData(ISheet sheet, PerSheetPoint point, SheetType sheetTyp
if
(
data
is
List
<
ExtractTransDto
>
extractDto
&&
extractDto
.
Any
())
if
(
data
is
List
<
ExtractTransDto
>
extractDto
&&
extractDto
.
Any
())
{
{
var
headers
=
extractDto
.
Select
(
t
=>
t
.
Category
?.
Trim
()
??
""
).
Distinct
()
var
headers
=
new
List
<
ExcelHeader
>();
var
categories
=
extractDto
.
Select
(
t
=>
t
.
Category
?.
Trim
()
??
""
).
Distinct
();
if
(
exdict
.
ContainsKey
(
ExDataDict
.
IncomeFactor
)
&&
exdict
[
ExDataDict
.
IncomeFactor
]
is
List
<
cof_drugtype_factor
>
factors
&&
factors
.
Any
(
t
=>
t
.
ExModuleId
==
module
.
Id
))
{
factors
=
factors
.
Where
(
t
=>
t
.
ExModuleId
==
module
.
Id
).
ToList
();
categories
=
categories
.
Union
(
factors
.
Select
(
t
=>
t
.
Charge
)).
Distinct
();
headers
=
categories
.
GroupJoin
(
factors
,
inner
=>
new
{
category
=
inner
.
NoBlank
()
},
outer
=>
new
{
category
=
outer
.
Charge
.
NoBlank
()
},
(
inner
,
outer
)
=>
new
{
inner
,
outer
})
.
Select
(
t
=>
new
ExcelHeader
.
Select
(
t
=>
new
ExcelHeader
{
{
ColumnName
=
t
.
inner
,
DoctorFactor
=
t
.
outer
?.
FirstOrDefault
()?.
YSZ
,
NurseFactor
=
t
.
outer
?.
FirstOrDefault
()?.
HLZ
,
TechnicianFactor
=
t
.
outer
?.
FirstOrDefault
()?.
YJZ
,
}).
ToList
();
}
else
{
headers
=
categories
.
Select
(
t
=>
new
ExcelHeader
{
ColumnName
=
t
,
ColumnName
=
t
,
DoctorFactor
=
0
,
NurseFactor
=
0
,
TechnicianFactor
=
0
}).
ToList
();
}).
ToList
();
}
WriteDataHelper
.
WriteSheetHeader
(
sheet
,
point
,
sheetType
,
style
,
headers
);
WriteDataHelper
.
WriteSheetHeader
(
sheet
,
point
,
sheetType
,
style
,
headers
);
var
columns
=
headers
.
Select
(
t
=>
t
.
ColumnName
).
ToList
();
var
columns
=
headers
.
Select
(
t
=>
t
.
ColumnName
).
ToList
();
...
...
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