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
50089301
Commit
50089301
authored
Jan 26, 2021
by
lcx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
237dfe08
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
93 additions
and
43 deletions
+93
-43
performance/Performance.Repository/Repository/PerforPerdeptdicRepository.cs
+22
-1
performance/Performance.Services/ExtractExcelService/ExtractService.cs
+16
-13
performance/Performance.Services/ExtractExcelService/SheetDataWrite/AccountBasicDataWrite.cs
+55
-29
No files found.
performance/Performance.Repository/Repository/PerforPerdeptdicRepository.cs
View file @
50089301
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
// </copyright>
// </copyright>
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
using
System
;
using
System
;
using
System.Collections.Generic
;
using
Performance.EntityModels
;
using
Performance.EntityModels
;
namespace
Performance.Repository
namespace
Performance.Repository
...
@@ -13,8 +14,28 @@ namespace Performance.Repository
...
@@ -13,8 +14,28 @@ namespace Performance.Repository
/// </summary>
/// </summary>
public
partial
class
PerforPerdeptdicRepository
:
PerforRepository
<
per_dept_dic
>
public
partial
class
PerforPerdeptdicRepository
:
PerforRepository
<
per_dept_dic
>
{
{
public
PerforPerdeptdicRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
public
PerforPerdeptdicRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
{
{
}
}
public
IEnumerable
<
per_dept_dic
>
GetAccountBasicAccountingUnit
(
int
hospitalId
)
{
string
sql
=
@"select * from
(
select distinct
unittype,
ifnull
(
max(case when source = '' then accountingunit end),
max(case when source = 'סԺ' then accountingunit end)
) accountingunit
from per_dept_dic
where hospitalid = @hospitalId
group by unittype,department,hisdeptname
) t
where ifnull(accountingunit, '')<>''
order by unittype,accountingunit;"
;
return
DapperQuery
<
per_dept_dic
>(
sql
,
new
{
hospitalId
});
}
}
}
}
}
performance/Performance.Services/ExtractExcelService/ExtractService.cs
View file @
50089301
...
@@ -22,6 +22,7 @@ public class ExtractService : IAutoInjection
...
@@ -22,6 +22,7 @@ public class ExtractService : IAutoInjection
private
readonly
PerforPerallotRepository
perallotRepository
;
private
readonly
PerforPerallotRepository
perallotRepository
;
private
readonly
PerforcollectdataRepository
collectdataRepository
;
private
readonly
PerforcollectdataRepository
collectdataRepository
;
private
readonly
PerforPeremployeeRepository
peremployeeRepository
;
private
readonly
PerforPeremployeeRepository
peremployeeRepository
;
private
readonly
PerforPerdeptdicRepository
perdeptdicRepository
;
public
ExtractService
(
public
ExtractService
(
ILogger
<
ExtractService
>
logger
,
ILogger
<
ExtractService
>
logger
,
...
@@ -32,7 +33,8 @@ public class ExtractService : IAutoInjection
...
@@ -32,7 +33,8 @@ public class ExtractService : IAutoInjection
DictionaryService
dictionaryService
,
DictionaryService
dictionaryService
,
PerforPerallotRepository
perallotRepository
,
PerforPerallotRepository
perallotRepository
,
PerforcollectdataRepository
collectdataRepository
,
PerforcollectdataRepository
collectdataRepository
,
PerforPeremployeeRepository
peremployeeRepository
PerforPeremployeeRepository
peremployeeRepository
,
PerforPerdeptdicRepository
perdeptdicRepository
)
)
{
{
this
.
logger
=
logger
;
this
.
logger
=
logger
;
...
@@ -44,6 +46,7 @@ PerforPeremployeeRepository peremployeeRepository
...
@@ -44,6 +46,7 @@ PerforPeremployeeRepository peremployeeRepository
this
.
perallotRepository
=
perallotRepository
;
this
.
perallotRepository
=
perallotRepository
;
this
.
collectdataRepository
=
collectdataRepository
;
this
.
collectdataRepository
=
collectdataRepository
;
this
.
peremployeeRepository
=
peremployeeRepository
;
this
.
peremployeeRepository
=
peremployeeRepository
;
this
.
perdeptdicRepository
=
perdeptdicRepository
;
}
}
/// <summary>
/// <summary>
...
@@ -87,7 +90,7 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
...
@@ -87,7 +90,7 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
workbook
=
ExcelHelper
.
GetWorkbook
(
templateFilePath
);
workbook
=
ExcelHelper
.
GetWorkbook
(
templateFilePath
);
if
(
workbook
==
null
)
throw
new
PerformanceException
(
"文件读取失败"
);
if
(
workbook
==
null
)
throw
new
PerformanceException
(
"文件读取失败"
);
WriteDataToFile
(
workbook
,
allot
Id
,
dict
,
standData
,
groupName
,
isSingle
);
WriteDataToFile
(
workbook
,
allot
,
dict
,
standData
,
groupName
,
isSingle
);
logService
.
ReturnTheLog
(
allotId
,
groupName
,
2
,
"提取完成"
,
$"绩效数据提取成功"
,
5
,
isSingle
);
logService
.
ReturnTheLog
(
allotId
,
groupName
,
2
,
"提取完成"
,
$"绩效数据提取成功"
,
5
,
isSingle
);
allot
.
IsExtracting
=
isSingle
?
2
:
0
;
allot
.
IsExtracting
=
isSingle
?
2
:
0
;
...
@@ -118,22 +121,22 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
...
@@ -118,22 +121,22 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
/// 数据写入
/// 数据写入
/// </summary>
/// </summary>
/// <param name="workbook"></param>
/// <param name="workbook"></param>
/// <param name="allot
Id
"></param>
/// <param name="allot"></param>
/// <param name="exdict"></param>
/// <param name="exdict"></param>
/// <param name="extractDto"></param>
/// <param name="extractDto"></param>
/// <param name="groupName"></param>
/// <param name="groupName"></param>
/// <param name="isSingle"></param>
/// <param name="isSingle"></param>
private
void
WriteDataToFile
(
IWorkbook
workbook
,
int
allotId
,
Dictionary
<
ExDataDict
,
object
>
exdict
,
List
<
ExtractTransDto
>
extractDto
,
string
groupName
,
bool
isSingle
)
private
void
WriteDataToFile
(
IWorkbook
workbook
,
per_allot
allot
,
Dictionary
<
ExDataDict
,
object
>
exdict
,
List
<
ExtractTransDto
>
extractDto
,
string
groupName
,
bool
isSingle
)
{
{
ExcelStyle
style
=
new
ExcelStyle
(
workbook
);
ExcelStyle
style
=
new
ExcelStyle
(
workbook
);
var
models
=
exdict
[
ExDataDict
.
ExModule
]
as
List
<
ex_module
>;
var
models
=
exdict
[
ExDataDict
.
ExModule
]
as
List
<
ex_module
>;
ExtractHelper
.
CreateNotExistSheet
(
models
,
workbook
);
ExtractHelper
.
CreateNotExistSheet
(
models
,
workbook
);
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
);
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
();
var
types
=
new
List
<
SheetType
>
{
SheetType
.
OtherIncome
,
SheetType
.
Income
,
SheetType
.
Expend
,
SheetType
.
Workload
,
SheetType
.
OtherWorkload
,
SheetType
.
AccountBasic
};
var
types
=
new
List
<
SheetType
>
{
SheetType
.
OtherIncome
,
SheetType
.
Income
,
SheetType
.
Expend
,
SheetType
.
Workload
,
SheetType
.
OtherWorkload
,
SheetType
.
AccountBasic
};
...
@@ -146,8 +149,8 @@ private void WriteDataToFile(IWorkbook workbook, int allotId, Dictionary<ExDataD
...
@@ -146,8 +149,8 @@ private void WriteDataToFile(IWorkbook workbook, int allotId, Dictionary<ExDataD
var
sheetType
=
perSheetService
.
GetSheetType
(
sheet
.
SheetName
);
var
sheetType
=
perSheetService
.
GetSheetType
(
sheet
.
SheetName
);
if
(
sheetType
==
SheetType
.
Unidentifiable
)
continue
;
if
(
sheetType
==
SheetType
.
Unidentifiable
)
continue
;
logService
.
ReturnTheLog
(
allot
Id
,
groupName
,
3
,
""
,
ratio
>
99
?
99
:
ratio
,
1
,
isSingle
);
logService
.
ReturnTheLog
(
allot
.
ID
,
groupName
,
3
,
""
,
ratio
>
99
?
99
:
ratio
,
1
,
isSingle
);
logService
.
ReturnTheLog
(
allot
Id
,
groupName
,
2
,
"写入数据"
,
$"sheet“
{
sheet
.
SheetName
}
”开始写入数据"
,
1
,
isSingle
);
logService
.
ReturnTheLog
(
allot
.
ID
,
groupName
,
2
,
"写入数据"
,
$"sheet“
{
sheet
.
SheetName
}
”开始写入数据"
,
1
,
isSingle
);
var
point
=
PerSheetDataFactory
.
GetDataRead
(
sheetType
)?.
Point
;
var
point
=
PerSheetDataFactory
.
GetDataRead
(
sheetType
)?.
Point
;
if
(
sheetType
==
SheetType
.
OtherWorkload
)
point
=
PerSheetDataFactory
.
GetDataRead
(
SheetType
.
Workload
)?.
Point
;
if
(
sheetType
==
SheetType
.
OtherWorkload
)
point
=
PerSheetDataFactory
.
GetDataRead
(
SheetType
.
Workload
)?.
Point
;
...
@@ -168,15 +171,15 @@ private void WriteDataToFile(IWorkbook workbook, int allotId, Dictionary<ExDataD
...
@@ -168,15 +171,15 @@ private void WriteDataToFile(IWorkbook workbook, int allotId, Dictionary<ExDataD
{
{
logger
.
LogInformation
(
$"
{
sheetName
}
: 总金额 -
{
exdata
.
Sum
(
s
=>
s
.
Value
??
0
)}
; 科室 -
{
string
.
Join
(
","
,
exdata
.
Select
(
s
=>
s
.
Department
).
Distinct
())}
"
);
logger
.
LogInformation
(
$"
{
sheetName
}
: 总金额 -
{
exdata
.
Sum
(
s
=>
s
.
Value
??
0
)}
; 科室 -
{
string
.
Join
(
","
,
exdata
.
Select
(
s
=>
s
.
Department
).
Distinct
())}
"
);
}
}
var
data
=
GetDataBySheetType
(
sheetType
,
exdata
,
employeeDict
);
var
data
=
GetDataBySheetType
(
allot
.
HospitalId
,
sheetType
,
exdata
,
employeeDict
);
customer
.
WriteSheetData
(
sheet
,
point
,
sheetType
,
style
,
data
,
exdict
);
customer
.
WriteSheetData
(
sheet
,
point
,
sheetType
,
style
,
data
,
exdict
);
}
}
logService
.
ReturnTheLog
(
allot
Id
,
groupName
,
2
,
"写入数据"
,
$"sheet“
{
sheet
.
SheetName
}
”已完成数据写入"
,
1
,
isSingle
);
logService
.
ReturnTheLog
(
allot
.
ID
,
groupName
,
2
,
"写入数据"
,
$"sheet“
{
sheet
.
SheetName
}
”已完成数据写入"
,
1
,
isSingle
);
}
}
}
}
private
object
GetDataBySheetType
(
SheetType
sheetType
,
List
<
ExtractTransDto
>
extractDto
,
List
<
per_employee
>
employeeDict
)
private
object
GetDataBySheetType
(
int
hospitalId
,
SheetType
sheetType
,
List
<
ExtractTransDto
>
extractDto
,
List
<
per_employee
>
employeeDict
)
{
{
switch
(
sheetType
)
switch
(
sheetType
)
{
{
...
@@ -185,7 +188,7 @@ private object GetDataBySheetType(SheetType sheetType, List<ExtractTransDto> ext
...
@@ -185,7 +188,7 @@ private object GetDataBySheetType(SheetType sheetType, List<ExtractTransDto> ext
return
employeeDict
;
return
employeeDict
;
case
SheetType
.
AccountBasic
:
case
SheetType
.
AccountBasic
:
return
new
List
<
im_accountbasic
>(
);
return
perdeptdicRepository
.
GetAccountBasicAccountingUnit
(
hospitalId
);
default
:
default
:
return
extractDto
;
return
extractDto
;
...
...
performance/Performance.Services/ExtractExcelService/SheetDataWrite/AccountBasicDataWrite.cs
View file @
50089301
...
@@ -8,50 +8,76 @@
...
@@ -8,50 +8,76 @@
namespace
Performance.Services.ExtractExcelService.SheetDataWrite
namespace
Performance.Services.ExtractExcelService.SheetDataWrite
{
{
internal
class
AccountBasicDataWrite
:
ISheetDataWrite
public
class
AccountBasicDataWrite
:
ISheetDataWrite
{
{
public
void
WriteCollectData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
ExcelStyle
style
,
List
<
collect_data
>
collects
)
public
void
WriteCollectData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
ExcelStyle
style
,
List
<
collect_data
>
collects
)
{
{
if
(
collects
==
null
||
!
collects
.
Any
(
t
=>
!
string
.
IsNullOrEmpty
(
t
.
TypeName
)))
return
;
}
var
headerRow
=
sheet
.
GetRow
(
point
.
HeaderFirstRowNum
??
1
);
var
columns
=
headerRow
.
GetCellValues
();
if
(
columns
==
null
||
!
columns
.
Any
())
return
;
collects
.
ForEach
(
t
=>
public
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
ExcelStyle
style
,
object
data
,
Dictionary
<
ExDataDict
,
object
>
exdict
=
null
)
{
if
(
data
is
List
<
per_dept_dic
>
departments
&&
departments
.
Any
())
{
{
t
.
UnitType
=
t
.
UnitType
.
NoBlank
();
int
dataFirstRowNum
=
point
.
DataFirstRowNum
.
Value
;
t
.
AccountingUnitDoctor
=
t
.
AccountingUnitDoctor
.
NoBlank
();
t
.
TypeName
=
t
.
TypeName
.
NoBlank
();
});
var
rownumbers
=
collects
.
Select
(
t
=>
t
.
RowNumber
).
Distinct
().
OrderBy
(
t
=>
t
).
ToList
();
var
accountingUnits
=
departments
.
Select
(
t
=>
new
{
UnitType
=
t
.
UnitType
.
NoBlank
(),
AccountingUnit
=
t
.
AccountingUnit
.
NoBlank
()
}).
ToList
();
for
(
int
i
=
point
.
DataFirstRowNum
.
Value
;
i
<
sheet
.
LastRowNum
+
1
;
i
++)
var
tuples
=
new
List
<
Account
>();
{
var
row
=
sheet
.
GetRow
(
i
);
for
(
int
i
=
point
.
DataFirstRowNum
.
Value
;
i
<
sheet
.
LastRowNum
+
1
;
i
++)
if
(
row
!=
null
)
{
{
string
unittype
=
row
.
GetCell
(
point
.
DataFirstCellNum
.
Value
-
2
).
GetDecodeEscapes
();
var
row
=
sheet
.
GetRow
(
i
);
string
accountingunit
=
row
.
GetCell
(
point
.
DataFirstCellNum
.
Value
-
1
).
GetDecodeEscapes
();
if
(
row
==
null
)
continue
;
int
cellIndex
=
point
.
DataFirstCellNum
.
Value
;
foreach
(
var
column
in
columns
)
var
unittype
=
row
.
GetCell
(
point
.
DataFirstCellNum
.
Value
-
2
).
GetDecodeEscapes
();
var
accountingunit
=
row
.
GetCell
(
point
.
DataFirstCellNum
.
Value
-
2
).
GetDecodeEscapes
();
if
(!
tuples
.
Any
())
tuples
.
Add
(
new
Account
(
unittype
,
i
,
i
));
else
{
{
var
data
=
collects
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
unittype
&&
t
.
AccountingUnitDoctor
==
accountingunit
&&
t
.
TypeName
==
column
);
var
last
=
tuples
.
Last
();
if
(
data
!=
null
)
if
(
last
.
UnitType
==
unittype
)
{
last
.
EndIndex
=
i
;
var
cell
=
row
.
GetCell
(
cellIndex
);
else
if
(
cell
!=
null
)
cell
.
SetCellValue
<
decimal
>(
data
.
CellValue
);
tuples
.
Add
(
new
Account
(
unittype
,
i
,
i
));
collects
.
Remove
(
data
);
}
cellIndex
++;
}
}
var
account
=
accountingUnits
.
FirstOrDefault
(
t
=>
t
.
AccountingUnit
==
accountingunit
&&
t
.
UnitType
==
unittype
);
if
(
account
!=
null
)
accountingUnits
.
Remove
(
account
);
}
if
(
accountingUnits
==
null
||
!
accountingUnits
.
Any
())
return
;
int
number
=
0
;
foreach
(
var
unitType
in
tuples
.
Select
(
t
=>
t
.
UnitType
).
Distinct
())
{
}
}
}
}
}
}
}
public
void
WriteSheetData
(
ISheet
sheet
,
PerSheetPoint
point
,
SheetType
sheetType
,
ExcelStyle
style
,
object
data
,
Dictionary
<
ExDataDict
,
object
>
exdict
=
null
)
public
class
Account
{
public
Account
()
{
{
}
}
public
Account
(
string
unitType
,
int
beginIndex
,
int
endIndex
)
{
UnitType
=
unitType
;
BeginIndex
=
beginIndex
;
EndIndex
=
endIndex
;
}
public
string
UnitType
{
get
;
set
;
}
public
int
BeginIndex
{
get
;
set
;
}
public
int
EndIndex
{
get
;
set
;
}
}
}
}
}
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