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
4669183f
Commit
4669183f
authored
Aug 03, 2020
by
lcx
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '抽取公式消失' into 医护工作量
parents
9f088395
be2a2085
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
8 deletions
+30
-8
performance/Performance.Services/DFExtractService.cs
+30
-8
No files found.
performance/Performance.Services/DFExtractService.cs
View file @
4669183f
using
Dapper
;
using
Microsoft.Extensions.Logging
;
using
NPOI.HSSF.UserModel
;
using
NPOI.SS.UserModel
;
using
NPOI.SS.Util
;
using
NPOI.XSSF.UserModel
;
...
...
@@ -135,6 +136,7 @@ public string ExtractData(int allotId, string email, int hospitalId, string file
}
var
standData
=
StandData
(
data
);
logger
.
LogInformation
(
"Execute Main"
);
return
lastAllot
==
null
?
TemplateExecute
(
email
,
hospital
,
configs
,
modules
,
items
,
specials
,
standData
)
:
AlllotExecute
(
email
,
hospital
,
configs
,
modules
,
items
,
specials
,
standData
,
lastAllot
,
filePath
);
}
...
...
@@ -302,9 +304,17 @@ private void ClearHistData(per_allot allot)
/// <returns></returns>
public
string
TemplateExecute
(
string
email
,
sys_hospital
hospital
,
List
<
sys_hospitalconfig
>
configs
,
List
<
ex_module
>
modules
,
List
<
ex_item
>
items
,
List
<
ex_special
>
specials
,
List
<
NewExtractDto
>
data
)
{
string
originalPath
=
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"Template"
,
"医院绩效模板.xls
x
"
);
string
originalPath
=
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"Template"
,
"医院绩效模板.xls"
);
var
(
tempPath
,
newPath
)
=
CopyOriginalFile
(
hospital
.
ID
,
originalPath
);
workbook
=
new
XSSFWorkbook
(
tempPath
);
var
version
=
FileHelper
.
GetExtension
(
originalPath
)
==
".xlsx"
?
ExcelVersion
.
xlsx
:
ExcelVersion
.
xls
;
using
(
FileStream
fs
=
new
FileStream
(
tempPath
,
FileMode
.
OpenOrCreate
))
{
workbook
=
(
version
==
ExcelVersion
.
xlsx
)
?
(
IWorkbook
)(
new
XSSFWorkbook
(
fs
))
:
(
IWorkbook
)(
new
HSSFWorkbook
(
fs
));
}
CreateNotExistSheet
(
modules
,
workbook
);
...
...
@@ -371,8 +381,18 @@ public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospit
{
if
(
string
.
IsNullOrEmpty
(
path
))
throw
new
PerformanceException
(
"历史绩效文件不存在!"
);
logger
.
LogInformation
(
"Copy File"
);
var
(
tempPath
,
newPath
)
=
CopyOriginalFile
(
hospital
.
ID
,
path
);
workbook
=
new
XSSFWorkbook
(
tempPath
);
logger
.
LogInformation
(
tempPath
);
var
version
=
FileHelper
.
GetExtension
(
path
)
==
".xlsx"
?
ExcelVersion
.
xlsx
:
ExcelVersion
.
xls
;
using
(
FileStream
fs
=
new
FileStream
(
tempPath
,
FileMode
.
OpenOrCreate
))
{
workbook
=
(
version
==
ExcelVersion
.
xlsx
)
?
(
IWorkbook
)(
new
XSSFWorkbook
(
fs
))
:
(
IWorkbook
)(
new
HSSFWorkbook
(
fs
));
}
CreateNotExistSheet
(
modules
,
workbook
);
...
...
@@ -649,9 +669,10 @@ private void SaveWorkload(IEnumerable<NewExtractDto> dtos)
private
(
string
TempPath
,
string
NewPath
)
CopyOriginalFile
(
int
hospitalId
,
string
originalPath
)
{
var
ext
=
FileHelper
.
GetExtension
(
originalPath
);
var
dpath
=
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"Files"
,
$"
{
hospitalId
}
"
,
"autoextract"
);
FileHelper
.
CreateDirectory
(
dpath
);
string
tempPath
=
Path
.
Combine
(
dpath
,
$"Template
{
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)}
.xlsx
"
);
string
tempPath
=
Path
.
Combine
(
dpath
,
$"Template
{
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)}
{
ext
}
"
);
FileHelper
.
Copy
(
originalPath
,
tempPath
);
string
newPath
=
Path
.
Combine
(
dpath
,
$"绩效提取数据
{
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)}
.xls"
);
...
...
@@ -858,7 +879,8 @@ private void WriteEmployee(ISheet sheet, IPerSheetDataRead sheetRead, bool isNew
private
void
WriteClinicEmployee
(
ISheet
sheet
,
IPerSheetDataRead
sheetRead
,
bool
isNewTemp
=
true
)
{
var
accountingunits
=
new
string
[]
{
AccountUnitType
.
行政高层
.
ToString
(),
AccountUnitType
.
行政中层
.
ToString
(),
AccountUnitType
.
行政工勤
.
ToString
()
};
var
validData
=
perforPeremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
Allot
.
ID
&&
!
accountingunits
.
Contains
(
t
.
UnitType
))?.
ToList
();
var
validData
=
perforPeremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
Allot
.
ID
&&
!
accountingunits
.
Contains
(
t
.
UnitType
)
&&
(
t
.
Duty
.
Contains
(
"主任"
)
||
t
.
Duty
.
Contains
(
"护士长"
)))?.
ToList
();
if
(
validData
==
null
||
!
validData
.
Any
())
return
;
Dictionary
<
string
,
Func
<
per_employee
,
object
>>
dict
=
new
Dictionary
<
string
,
Func
<
per_employee
,
object
>>
...
...
@@ -939,8 +961,8 @@ private void WriteClinicEmployee(ISheet sheet, IPerSheetDataRead sheetRead, bool
private
void
WriteAccountBasic
(
ISheet
sheet
,
IPerSheetDataRead
sheetRead
,
bool
isNewTemp
=
true
)
{
var
accountingunits
=
new
string
[]
{
AccountUnitType
.
行政高层
.
ToString
(),
AccountUnitType
.
行政中层
.
ToString
(),
AccountUnitType
.
行政工勤
.
ToString
()
};
var
validData
=
perforPeremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
Allot
.
ID
&&
!
accountingunit
s
.
Contains
(
t
.
UnitType
))?.
ToList
();
var
unittypes
=
new
string
[]
{
UnitType
.
医生组
.
ToString
(),
UnitType
.
医技组
.
ToString
(),
UnitType
.
护理组
.
ToString
(),
UnitType
.
专家组
.
ToString
(),
UnitType
.
其他医生组
.
ToString
(),
UnitType
.
其他医技组
.
ToString
(),
UnitType
.
其他护理组
.
ToString
(),
UnitType
.
特殊核算组
.
ToString
(),
};
var
validData
=
perforPeremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
Allot
.
ID
&&
unittype
s
.
Contains
(
t
.
UnitType
))?.
ToList
();
if
(
validData
==
null
||
!
validData
.
Any
())
return
;
#
region
计算数据
...
...
@@ -1356,7 +1378,7 @@ private void WriteSheetData(ISheet sheet, IPerSheetDataRead sheetRead, List<NewE
var
lastrowIndex
=
(
isNewTemp
||
isIncom
)
?
rowIndex
:
sheet
.
LastRowNum
+
1
;
foreach
(
var
department
in
allExtract
.
Select
(
t
=>
t
.
Department
).
Where
(
t
=>
!
string
.
IsNullOrEmpty
(
t
)).
Distinct
())
{
var
row
=
sheet
.
CreateRow
(
lastrowIndex
);
var
row
=
GetOrCreate
(
sheet
,
lastrowIndex
);
for
(
int
i
=
head
.
FirstCellNum
+
3
;
i
<
head
.
LastCellNum
;
i
++)
{
var
headName
=
head
.
GetCell
(
i
).
StringCellValue
;
...
...
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