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
cd35ee66
Commit
cd35ee66
authored
Oct 15, 2020
by
ruyun.zhang@suvalue.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
导出历史数据报表
parent
b07e1b8e
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
763 additions
and
8 deletions
+763
-8
performance/Performance.Api/Controllers/AccountController.cs
+13
-0
performance/Performance.Api/Controllers/HistoryController.cs
+68
-0
performance/Performance.Api/appsettings.Localhost.json
+1
-1
performance/Performance.Api/wwwroot/Performance.Api.xml
+25
-5
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+35
-0
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+150
-0
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
+10
-0
performance/Performance.DtoModels/HistoryData.cs
+45
-0
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
+4
-1
performance/Performance.EntityModels/Entity/report_original_persontime.cs
+64
-0
performance/Performance.EntityModels/Entity/report_original_stays.cs
+64
-0
performance/Performance.EntityModels/Entity/report_original_surgery.cs
+64
-0
performance/Performance.EntityModels/Entity/report_original_workload.cs
+1
-1
performance/Performance.Repository/BaseRepository.cs
+8
-0
performance/Performance.Repository/Repository/PerforReportoriginalpersontimeRepository.cs
+20
-0
performance/Performance.Repository/Repository/PerforReportoriginalstaysRepository.cs
+19
-0
performance/Performance.Repository/Repository/PerforReportoriginalsurgeryRepository.cs
+19
-0
performance/Performance.Services/HistoryService.cs
+153
-0
No files found.
performance/Performance.Api/Controllers/AccountController.cs
View file @
cd35ee66
...
...
@@ -44,6 +44,19 @@ public class AccountController : Controller
/// <summary>
/// 登录
/// </summary>
/// <remarks>
/// Sample request:
///
/// POST /Todo
/// {
/// "logintype": 2,
/// "account": "admin",
/// "password": "1111",
/// "appname": "string",
/// "device": "web"
/// }
///
/// </remarks>
/// <param name="request"></param>
/// <returns></returns>
[
HttpPost
]
...
...
performance/Performance.Api/Controllers/HistoryController.cs
0 → 100644
View file @
cd35ee66
using
System
;
using
System.Collections.Generic
;
using
System.IO
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
Microsoft.AspNetCore.Hosting
;
using
Microsoft.AspNetCore.Http
;
using
Microsoft.AspNetCore.Http.Internal
;
using
Microsoft.AspNetCore.Mvc
;
using
Performance.DtoModels
;
using
Performance.Infrastructure
;
using
Performance.Services
;
namespace
Performance.Api.Controllers
{
[
Route
(
"api/[controller]"
)]
[
ApiController
]
public
class
HistoryController
:
ControllerBase
{
private
readonly
HistoryService
historyService
;
private
readonly
ClaimService
claim
;
private
readonly
IHostingEnvironment
evn
;
public
HistoryController
(
HistoryService
historyService
,
ClaimService
claim
,
IHostingEnvironment
evn
)
{
this
.
historyService
=
historyService
;
this
.
claim
=
claim
;
this
.
evn
=
evn
;
}
/// <summary>
/// 上传历史绩效数据
/// </summary>
/// <param name="form"></param>
/// <returns></returns>
[
Route
(
"import"
)]
[
HttpPost
]
public
ApiResponse
Import
([
FromForm
]
IFormCollection
form
)
{
var
hospitalid
=
form
.
ToDictionary
().
GetValue
(
"hospitalid"
,
0
);
if
(
hospitalid
<=
0
)
return
new
ApiResponse
(
ResponseType
.
Fail
,
"参数错误"
,
"hospitalid无效"
);
var
file
=
((
FormFileCollection
)
form
.
Files
).
FirstOrDefault
();
if
(
file
==
null
)
return
new
ApiResponse
(
ResponseType
.
Fail
,
"参数错误"
,
"文件无效"
);
var
name
=
$"History_
{
FileHelper
.
GetFileNameNoExtension
(
file
.
FileName
)}{
DateTime
.
Now
:
yyyyMMddHHmmssfff
}
"
;
var
ext
=
FileHelper
.
GetExtension
(
file
.
FileName
);
var
dpath
=
Path
.
Combine
(
evn
.
ContentRootPath
,
"Files"
,
hospitalid
.
ToString
());
FileHelper
.
CreateDirectory
(
dpath
);
var
path
=
Path
.
Combine
(
dpath
,
$"
{
name
}{
ext
}
"
);
using
(
var
stream
=
file
.
OpenReadStream
())
{
byte
[]
bytes
=
new
byte
[
stream
.
Length
];
stream
.
Read
(
bytes
,
0
,
bytes
.
Length
);
if
(!
FileHelper
.
CreateFile
(
path
,
bytes
))
return
new
ApiResponse
(
ResponseType
.
Fail
,
$"
{
file
.
FileName
}
上传失败"
);
}
historyService
.
ImportHistoryData
(
hospitalid
,
path
);
return
new
ApiResponse
(
ResponseType
.
OK
);
}
}
}
performance/Performance.Api/appsettings.Localhost.json
View file @
cd35ee66
...
...
@@ -14,7 +14,7 @@
},
"Application"
:
{
//登录过期时间
"ExpirationMinutes"
:
"120"
,
"ExpirationMinutes"
:
"120
0
"
,
//验证码过期
"SmsCodeMinutes"
:
"5"
,
//护士长二次绩效管理员
...
...
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
cd35ee66
...
...
@@ -5,11 +5,24 @@
</assembly>
<members>
<member
name=
"M:Performance.Api.Controllers.AccountController.Login(Performance.DtoModels.LoginRequest)"
>
<summary>
登录
</summary>
<param
name=
"request"
></param>
<returns></returns>
<summary>
登录
</summary>
<remarks>
Sample request:
POST /Todo
{
"logintype": 2,
"account": "admin",
"password": "1111",
"appname": "string",
"device": "web"
}
</remarks>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AccountController.Refresh"
>
<summary>
...
...
@@ -824,6 +837,13 @@
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.HistoryController.Import(Microsoft.AspNetCore.Http.IFormCollection)"
>
<summary>
上传历史绩效数据
</summary>
<param
name=
"form"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.HospitalController.GetHospitalList"
>
<summary>
获取当前登录用户管辖医院列表
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
cd35ee66
...
...
@@ -153,6 +153,41 @@
工作量
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HistoryData.Year"
>
<summary>
年
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HistoryData.Month"
>
<summary>
月
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HistoryData.HospitalID"
>
<summary>
医院ID
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HistoryData.SourceType"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HistoryData.AccountingUnit"
>
<summary>
科室核算单元
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HistoryData.Department"
>
<summary>
科室
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HistoryData.ResultData"
>
<summary>
结果值
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAgainData.RowNumber"
>
<summary>
行号
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
cd35ee66
...
...
@@ -3657,6 +3657,156 @@
数据来源 1 excel 导入 2 计算
</summary>
</member>
<member
name=
"T:Performance.EntityModels.report_original_persontime"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.Id"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.AllotID"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.Year"
>
<summary>
年
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.Month"
>
<summary>
月
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.HospitalID"
>
<summary>
医院ID
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.SourceType"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.AccountingUnit"
>
<summary>
科室核算单元
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.Department"
>
<summary>
科室
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_persontime.PersonTime"
>
<summary>
人次
</summary>
</member>
<member
name=
"T:Performance.EntityModels.report_original_stays"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.Id"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.AllotID"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.Year"
>
<summary>
年
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.Month"
>
<summary>
月
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.HospitalID"
>
<summary>
医院ID
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.SourceType"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.AccountingUnit"
>
<summary>
科室核算单元
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.Department"
>
<summary>
科室
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_stays.Stays"
>
<summary>
住院时长
</summary>
</member>
<member
name=
"T:Performance.EntityModels.report_original_surgery"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.Id"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.AllotID"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.Year"
>
<summary>
年
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.Month"
>
<summary>
月
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.HospitalID"
>
<summary>
医院ID
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.SourceType"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.AccountingUnit"
>
<summary>
科室核算单元
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.Department"
>
<summary>
科室
</summary>
</member>
<member
name=
"P:Performance.EntityModels.report_original_surgery.PersonTime"
>
<summary>
人次
</summary>
</member>
<member
name=
"T:Performance.EntityModels.report_original_workload"
>
<summary>
...
...
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
View file @
cd35ee66
...
...
@@ -229,6 +229,16 @@ public AutoMapperConfigs()
CreateMap
<
res_compute
,
SecondPerforResponse
>()
.
ReverseMap
();
CreateMap
<
HistoryData
,
report_original_persontime
>()
.
ForMember
(
dest
=>
dest
.
PersonTime
,
opt
=>
opt
.
MapFrom
(
src
=>
src
.
ResultData
))
.
ReverseMap
();
CreateMap
<
HistoryData
,
report_original_stays
>()
.
ForMember
(
dest
=>
dest
.
Stays
,
opt
=>
opt
.
MapFrom
(
src
=>
src
.
ResultData
))
.
ReverseMap
();
CreateMap
<
HistoryData
,
report_original_surgery
>()
.
ForMember
(
dest
=>
dest
.
PersonTime
,
opt
=>
opt
.
MapFrom
(
src
=>
src
.
ResultData
))
.
ReverseMap
();
}
public
void
xx
()
...
...
performance/Performance.DtoModels/HistoryData.cs
0 → 100644
View file @
cd35ee66
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Performance.DtoModels
{
public
class
HistoryData
{
/// <summary>
/// 年
/// </summary>
public
int
Year
{
get
;
set
;
}
/// <summary>
/// 月
/// </summary>
public
int
Month
{
get
;
set
;
}
/// <summary>
/// 医院ID
/// </summary>
public
int
HospitalID
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
string
SourceType
{
get
;
set
;
}
/// <summary>
/// 科室核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 科室
/// </summary>
public
string
Department
{
get
;
set
;
}
/// <summary>
/// 结果值
/// </summary>
public
Nullable
<
decimal
>
ResultData
{
get
;
set
;
}
public
string
SheetName
{
get
;
set
;
}
}
}
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
View file @
cd35ee66
...
...
@@ -146,7 +146,10 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public
virtual
DbSet
<
rep_report
>
rep_report
{
get
;
set
;
}
/// <summary> 条件表 </summary>
public
virtual
DbSet
<
rep_selection
>
rep_selection
{
get
;
set
;
}
/// <summary> 科室核算结果 </summary>
public
virtual
DbSet
<
report_original_surgery
>
report_original_surgery
{
get
;
set
;
}
public
virtual
DbSet
<
report_original_stays
>
report_original_stays
{
get
;
set
;
}
public
virtual
DbSet
<
report_original_persontime
>
report_original_persontime
{
get
;
set
;
}
/// <summary> 科室核算结果 </summary>
public
virtual
DbSet
<
res_account
>
res_account
{
get
;
set
;
}
/// <summary> 医生科室核算结果 </summary>
public
virtual
DbSet
<
res_accountdoctor
>
res_accountdoctor
{
get
;
set
;
}
...
...
performance/Performance.EntityModels/Entity/report_original_persontime.cs
0 → 100644
View file @
cd35ee66
//-----------------------------------------------------------------------
// <copyright file=" report_original_workload.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using
System
;
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
namespace
Performance.EntityModels
{
/// <summary>
///
/// </summary>
[
Table
(
"report_original_persontime"
)]
public
class
report_original_persontime
{
/// <summary>
///
/// </summary>
[
Key
]
public
int
Id
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
Nullable
<
int
>
AllotID
{
get
;
set
;
}
/// <summary>
/// 年
/// </summary>
public
int
Year
{
get
;
set
;
}
/// <summary>
/// 月
/// </summary>
public
int
Month
{
get
;
set
;
}
/// <summary>
/// 医院ID
/// </summary>
public
int
HospitalID
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
string
SourceType
{
get
;
set
;
}
/// <summary>
/// 科室核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 科室
/// </summary>
public
string
Department
{
get
;
set
;
}
/// <summary>
/// 人次
/// </summary>
public
Nullable
<
int
>
PersonTime
{
get
;
set
;
}
}
}
performance/Performance.EntityModels/Entity/report_original_stays.cs
0 → 100644
View file @
cd35ee66
//-----------------------------------------------------------------------
// <copyright file=" report_original_workload.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using
System
;
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
namespace
Performance.EntityModels
{
/// <summary>
///
/// </summary>
[
Table
(
"report_original_stays"
)]
public
class
report_original_stays
{
/// <summary>
///
/// </summary>
[
Key
]
public
int
Id
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
Nullable
<
int
>
AllotID
{
get
;
set
;
}
/// <summary>
/// 年
/// </summary>
public
int
Year
{
get
;
set
;
}
/// <summary>
/// 月
/// </summary>
public
int
Month
{
get
;
set
;
}
/// <summary>
/// 医院ID
/// </summary>
public
int
HospitalID
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
string
SourceType
{
get
;
set
;
}
/// <summary>
/// 科室核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 科室
/// </summary>
public
string
Department
{
get
;
set
;
}
/// <summary>
/// 住院时长
/// </summary>
public
Nullable
<
decimal
>
Stays
{
get
;
set
;
}
}
}
performance/Performance.EntityModels/Entity/report_original_surgery.cs
0 → 100644
View file @
cd35ee66
//-----------------------------------------------------------------------
// <copyright file=" report_original_workload.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using
System
;
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
namespace
Performance.EntityModels
{
/// <summary>
///
/// </summary>
[
Table
(
"report_original_surgery"
)]
public
class
report_original_surgery
{
/// <summary>
///
/// </summary>
[
Key
]
public
int
Id
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
Nullable
<
int
>
AllotID
{
get
;
set
;
}
/// <summary>
/// 年
/// </summary>
public
int
Year
{
get
;
set
;
}
/// <summary>
/// 月
/// </summary>
public
int
Month
{
get
;
set
;
}
/// <summary>
/// 医院ID
/// </summary>
public
int
HospitalID
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
string
SourceType
{
get
;
set
;
}
/// <summary>
/// 科室核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 科室
/// </summary>
public
string
Department
{
get
;
set
;
}
/// <summary>
/// 人次
/// </summary>
public
Nullable
<
int
>
PersonTime
{
get
;
set
;
}
}
}
performance/Performance.EntityModels/Entity/report_original_workload.cs
View file @
cd35ee66
...
...
@@ -7,7 +7,7 @@
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
namespace
Performance.EntityModels
namespace
Performance.EntityModels
{
/// <summary>
///
...
...
performance/Performance.Repository/BaseRepository.cs
View file @
cd35ee66
...
...
@@ -84,6 +84,14 @@ public bool RemoveRange(params TEntity[] entities)
context
.
Set
<
TEntity
>().
RemoveRange
(
entities
);
return
context
.
SaveChanges
()
>
0
;
}
public
bool
RemoveRange
(
Expression
<
Func
<
TEntity
,
bool
>>
exp
)
{
var
query
=
CompileQuery
(
exp
);
var
entities
=
query
==
null
||
query
.
Count
()
==
0
?
null
:
query
.
ToList
();
if
(
entities
!=
null
)
context
.
Set
<
TEntity
>().
RemoveRange
(
entities
);
return
context
.
SaveChanges
()
>
0
;
}
public
bool
Update
(
TEntity
entity
)
{
...
...
performance/Performance.Repository/Repository/PerforReportoriginalpersontimeRepository.cs
0 → 100644
View file @
cd35ee66
//-----------------------------------------------------------------------
// <copyright file=" ag_header.cs">
// * FileName: ag_header.cs
// </copyright>
//-----------------------------------------------------------------------
using
System
;
using
Performance.EntityModels
;
namespace
Performance.Repository
{
/// <summary>
/// report_original_persontime Repository
/// </summary>
public
partial
class
PerforReportoriginalpersontimeRepository
:
PerforRepository
<
report_original_persontime
>
{
public
PerforReportoriginalpersontimeRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
{
}
}
}
performance/Performance.Repository/Repository/PerforReportoriginalstaysRepository.cs
0 → 100644
View file @
cd35ee66
//-----------------------------------------------------------------------
// <copyright file=" ag_header.cs">
// * FileName: ag_header.cs
// </copyright>
//-----------------------------------------------------------------------
using
Performance.EntityModels
;
namespace
Performance.Repository
{
/// <summary>
/// report_original_stays Repository
/// </summary>
public
partial
class
PerforReportoriginalstaysRepository
:
PerforRepository
<
report_original_stays
>
{
public
PerforReportoriginalstaysRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
{
}
}
}
performance/Performance.Repository/Repository/PerforReportoriginalsurgeryRepository.cs
0 → 100644
View file @
cd35ee66
//-----------------------------------------------------------------------
// <copyright file=" ag_header.cs">
// * FileName: ag_header.cs
// </copyright>
//-----------------------------------------------------------------------
using
Performance.EntityModels
;
namespace
Performance.Repository
{
/// <summary>
/// report_original_surgery Repository
/// </summary>
public
partial
class
PerforReportoriginalsurgeryRepository
:
PerforRepository
<
report_original_surgery
>
{
public
PerforReportoriginalsurgeryRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
{
}
}
}
performance/Performance.Services/HistoryService.cs
0 → 100644
View file @
cd35ee66
using
Microsoft.Extensions.Logging
;
using
NPOI.HSSF.UserModel
;
using
NPOI.SS.UserModel
;
using
NPOI.XSSF.UserModel
;
using
Performance.DtoModels
;
using
Performance.EntityModels
;
using
Performance.Infrastructure
;
using
Performance.Repository
;
using
System
;
using
System.Collections.Generic
;
using
System.IO
;
using
System.Linq
;
using
System.Text
;
namespace
Performance.Services
{
public
class
HistoryService
:
IAutoInjection
{
private
readonly
ILogger
<
EmployeeService
>
logger
;
private
readonly
PerforReportoriginalsurgeryRepository
reportoriginalsurgeryRepository
;
private
readonly
PerforReportoriginalstaysRepository
reportoriginalstaysRepository
;
private
readonly
PerforReportoriginalpersontimeRepository
reportoriginalpersontimeRepository
;
public
HistoryService
(
ILogger
<
EmployeeService
>
logger
,
PerforReportoriginalsurgeryRepository
reportoriginalsurgeryRepository
,
PerforReportoriginalstaysRepository
reportoriginalstaysRepository
,
PerforReportoriginalpersontimeRepository
reportoriginalpersontimeRepository
)
{
this
.
logger
=
logger
;
this
.
reportoriginalsurgeryRepository
=
reportoriginalsurgeryRepository
;
this
.
reportoriginalstaysRepository
=
reportoriginalstaysRepository
;
this
.
reportoriginalpersontimeRepository
=
reportoriginalpersontimeRepository
;
}
public
void
ImportHistoryData
(
int
hospitalid
,
string
path
)
{
try
{
var
entities
=
ReadExcelData
(
hospitalid
,
path
);
var
@data1
=
entities
.
Where
(
w
=>
w
.
SheetName
==
"工作量"
);
if
(
@data1
.
Any
())
{
var
years
=
@data1
.
Select
(
s
=>
s
.
Year
).
Distinct
().
ToList
();
var
months
=
@data1
.
Select
(
s
=>
s
.
Month
).
Distinct
().
ToList
();
reportoriginalpersontimeRepository
.
RemoveRange
(
w
=>
w
.
HospitalID
==
hospitalid
&&
years
.
Contains
(
w
.
Year
)
&&
months
.
Contains
(
w
.
Month
));
var
@data
=
AutoMapper
.
Mapper
.
Map
<
List
<
report_original_persontime
>>(
@data1
);
reportoriginalpersontimeRepository
.
AddRange
(
@data
.
ToArray
());
}
var
@data2
=
entities
.
Where
(
w
=>
w
.
SheetName
==
"手术量"
);
if
(
@data2
.
Any
())
{
var
years
=
@data2
.
Select
(
s
=>
s
.
Year
).
Distinct
().
ToList
();
var
months
=
@data2
.
Select
(
s
=>
s
.
Month
).
Distinct
().
ToList
();
reportoriginalsurgeryRepository
.
RemoveRange
(
w
=>
w
.
HospitalID
==
hospitalid
&&
years
.
Contains
(
w
.
Year
)
&&
months
.
Contains
(
w
.
Month
));
var
@data
=
AutoMapper
.
Mapper
.
Map
<
List
<
report_original_surgery
>>(
@data2
);
reportoriginalsurgeryRepository
.
AddRange
(
@data
.
ToArray
());
}
var
@data3
=
entities
.
Where
(
w
=>
w
.
SheetName
==
"住院天数"
);
if
(
@data3
.
Any
())
{
var
years
=
@data3
.
Select
(
s
=>
s
.
Year
).
Distinct
().
ToList
();
var
months
=
@data3
.
Select
(
s
=>
s
.
Month
).
Distinct
().
ToList
();
reportoriginalstaysRepository
.
RemoveRange
(
w
=>
w
.
HospitalID
==
hospitalid
&&
years
.
Contains
(
w
.
Year
)
&&
months
.
Contains
(
w
.
Month
));
var
@data
=
AutoMapper
.
Mapper
.
Map
<
List
<
report_original_stays
>>(
@data3
);
reportoriginalstaysRepository
.
AddRange
(
@data
.
ToArray
());
}
}
catch
(
Exception
ex
)
{
logger
.
LogError
(
ex
.
ToString
());
}
}
private
List
<
HistoryData
>
ReadExcelData
(
int
hospitalid
,
string
path
)
{
var
entities
=
new
List
<
HistoryData
>();
var
config
=
new
[]
{
new
{
sheetName
=
"工作量"
,
columnNames
=
new
string
[]
{
"年份"
,
"月份"
,
"来源"
,
"核算单元"
,
"科室"
,
"数量"
}
},
new
{
sheetName
=
"手术量"
,
columnNames
=
new
string
[]
{
"年份"
,
"月份"
,
"来源"
,
"核算单元"
,
"科室"
,
"数量"
}
},
new
{
sheetName
=
"住院天数"
,
columnNames
=
new
string
[]
{
"年份"
,
"月份"
,
"来源"
,
"核算单元"
,
"科室"
,
"数量"
}
},
};
IWorkbook
workbook
=
null
;
var
version
=
FileHelper
.
GetExtension
(
path
)
==
".xlsx"
?
ExcelVersion
.
xlsx
:
ExcelVersion
.
xls
;
using
(
FileStream
fs
=
new
FileStream
(
path
,
FileMode
.
OpenOrCreate
))
{
workbook
=
(
version
==
ExcelVersion
.
xlsx
)
?
(
IWorkbook
)(
new
XSSFWorkbook
(
fs
))
:
(
IWorkbook
)(
new
HSSFWorkbook
(
fs
));
}
if
(
workbook
==
null
)
return
entities
;
foreach
(
var
cfg
in
config
)
{
var
sheet
=
workbook
.
GetSheet
(
cfg
.
sheetName
);
if
(
sheet
==
null
)
continue
;
var
firstRow
=
sheet
.
GetRow
(
0
);
List
<(
string
,
int
)>
excelheader
=
new
List
<(
string
,
int
)>();
for
(
int
cellindex
=
0
;
cellindex
<
firstRow
.
LastCellNum
+
1
;
cellindex
++)
{
var
cell
=
firstRow
.
GetCell
(
cellindex
);
if
(
cell
==
null
)
continue
;
if
(!
string
.
IsNullOrEmpty
(
cell
.
ToString
()))
excelheader
.
Add
((
cell
.
ToString
(),
cellindex
));
}
if
(
excelheader
==
null
||
!
excelheader
.
Any
())
throw
new
PerformanceException
(
"上传excel内容错误"
);
Dictionary
<
string
,
int
>
dict
=
new
Dictionary
<
string
,
int
>();
cfg
.
columnNames
.
ToList
().
ForEach
(
w
=>
dict
.
Add
(
w
,
-
1
));
List
<
string
>
errorHeaders
=
new
List
<
string
>();
foreach
(
var
key
in
dict
.
Keys
.
ToList
())
{
if
(!
excelheader
.
Select
(
t
=>
t
.
Item1
).
Contains
(
key
))
errorHeaders
.
Add
(
key
);
else
dict
[
key
]
=
excelheader
.
First
(
t
=>
t
.
Item1
==
key
).
Item2
;
}
if
(
errorHeaders
!=
null
&&
errorHeaders
.
Any
())
throw
new
PerformanceException
(
$"excel缺少列
{
string
.
Join
(
", "
,
errorHeaders
)}
"
);
for
(
int
rowindex
=
1
;
rowindex
<
sheet
.
LastRowNum
+
1
;
rowindex
++)
{
var
row
=
sheet
.
GetRow
(
rowindex
);
if
(
row
==
null
)
continue
;
var
entity
=
new
HistoryData
{
SheetName
=
cfg
.
sheetName
,
HospitalID
=
hospitalid
,
Year
=
ConvertHelper
.
To
<
int
>(
row
.
GetCell
(
dict
[
"年份"
]).
GetValue
()),
Month
=
ConvertHelper
.
To
<
int
>(
row
.
GetCell
(
dict
[
"月份"
]).
GetValue
()),
SourceType
=
row
.
GetCell
(
dict
[
"来源"
]).
GetValue
(),
AccountingUnit
=
row
.
GetCell
(
dict
[
"核算单元"
]).
GetValue
(),
Department
=
row
.
GetCell
(
dict
[
"科室"
]).
GetValue
(),
ResultData
=
ConvertHelper
.
To
<
decimal
>(
row
.
GetCell
(
dict
[
"数量"
]).
GetValue
()),
};
entities
.
Add
(
entity
);
}
}
return
entities
;
}
}
}
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