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
edd8bc96
Commit
edd8bc96
authored
Jul 09, 2020
by
lcx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
注释代码
parent
e455320b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
713 additions
and
713 deletions
+713
-713
performance/Performance.Services/DFExtractService.cs
+2
-2
performance/Performance.Services/ExtractService.cs
+711
-711
No files found.
performance/Performance.Services/DFExtractService.cs
View file @
edd8bc96
...
@@ -18,7 +18,7 @@ namespace Performance.Services
...
@@ -18,7 +18,7 @@ namespace Performance.Services
public
class
DFExtractService
:
IAutoInjection
public
class
DFExtractService
:
IAutoInjection
{
{
#
region
#
region
private
readonly
ILogger
<
ExtractService
>
logger
;
private
readonly
ILogger
<
DF
ExtractService
>
logger
;
private
readonly
IEmailService
emailService
;
private
readonly
IEmailService
emailService
;
private
readonly
PerSheetService
perSheetService
;
private
readonly
PerSheetService
perSheetService
;
private
readonly
PerforHospitalRepository
perforHospitalRepository
;
private
readonly
PerforHospitalRepository
perforHospitalRepository
;
...
@@ -39,7 +39,7 @@ public class DFExtractService : IAutoInjection
...
@@ -39,7 +39,7 @@ public class DFExtractService : IAutoInjection
private
ICellStyle
style
;
private
ICellStyle
style
;
private
per_allot
Allot
;
private
per_allot
Allot
;
public
DFExtractService
(
ILogger
<
ExtractService
>
logger
,
public
DFExtractService
(
ILogger
<
DF
ExtractService
>
logger
,
IEmailService
emailService
,
IEmailService
emailService
,
PerSheetService
perSheetService
,
PerSheetService
perSheetService
,
PerforHospitalRepository
perforHospitalRepository
,
PerforHospitalRepository
perforHospitalRepository
,
...
...
performance/Performance.Services/ExtractService.cs
View file @
edd8bc96
using
Dapper
;
//
using Dapper;
using
Microsoft.AspNetCore.Hosting
;
//
using Microsoft.AspNetCore.Hosting;
using
Microsoft.Extensions.Logging
;
//
using Microsoft.Extensions.Logging;
using
Microsoft.Extensions.Options
;
//
using Microsoft.Extensions.Options;
using
NPOI.HSSF.UserModel
;
//
using NPOI.HSSF.UserModel;
using
NPOI.SS.UserModel
;
//
using NPOI.SS.UserModel;
using
NPOI.SS.Util
;
//
using NPOI.SS.Util;
using
NPOI.XSSF.UserModel
;
//
using NPOI.XSSF.UserModel;
using
Performance.DtoModels
;
//
using Performance.DtoModels;
using
Performance.DtoModels.AppSettings
;
//
using Performance.DtoModels.AppSettings;
using
Performance.EntityModels
;
//
using Performance.EntityModels;
using
Performance.Infrastructure
;
//
using Performance.Infrastructure;
using
Performance.Repository
;
//
using Performance.Repository;
using
System
;
//
using System;
using
System.Collections.Generic
;
//
using System.Collections.Generic;
using
System.Data
;
//
using System.Data;
using
System.IO
;
//
using System.IO;
using
System.Linq
;
//
using System.Linq;
using
System.Text
;
//
using System.Text;
using
System.Text.RegularExpressions
;
//
using System.Text.RegularExpressions;
namespace
Performance.Services
//
namespace Performance.Services
{
//
{
/// <summary>
//
/// <summary>
/// 数据抽取服务
//
/// 数据抽取服务
/// </summary>
//
/// </summary>
public
class
ExtractService
:
IAutoInjection
//
public class ExtractService : IAutoInjection
{
//
{
private
readonly
ILogger
<
ExtractService
>
logger
;
//
private readonly ILogger<ExtractService> logger;
private
readonly
IHostingEnvironment
environment
;
//
private readonly IHostingEnvironment environment;
private
readonly
IEmailService
emailService
;
//
private readonly IEmailService emailService;
private
readonly
PerSheetService
perSheetService
;
//
private readonly PerSheetService perSheetService;
private
readonly
PerHeaderService
perHeaderService
;
//
private readonly PerHeaderService perHeaderService;
private
readonly
PerforPersheetRepository
perforPersheetRepository
;
//
private readonly PerforPersheetRepository perforPersheetRepository;
private
readonly
PerforImheaderRepository
perforImheaderRepository
;
//
private readonly PerforImheaderRepository perforImheaderRepository;
private
readonly
PerforImemployeeRepository
perforImemployeeRepository
;
//
private readonly PerforImemployeeRepository perforImemployeeRepository;
private
readonly
PerforImdataRepository
perforImdataRepository
;
//
private readonly PerforImdataRepository perforImdataRepository;
private
readonly
PerforImaccountbasicRepository
perforImaccountbasicRepository
;
//
private readonly PerforImaccountbasicRepository perforImaccountbasicRepository;
private
readonly
PerforExtractRepository
perforExtractRepository
;
//
private readonly PerforExtractRepository perforExtractRepository;
private
readonly
PerforPerfirstRepository
perforPerfirstRepository
;
//
private readonly PerforPerfirstRepository perforPerfirstRepository;
private
readonly
PerforPerallotRepository
perforPerallotRepository
;
//
private readonly PerforPerallotRepository perforPerallotRepository;
private
readonly
PerforRepimportconfigRepository
repimportconfigRepository
;
//
private readonly PerforRepimportconfigRepository repimportconfigRepository;
private
readonly
PerforHospitalconfigRepository
perforHospitalconfigRepository
;
//
private readonly PerforHospitalconfigRepository perforHospitalconfigRepository;
public
ExtractService
(
ILogger
<
ExtractService
>
logger
,
//
public ExtractService(ILogger<ExtractService> logger,
IHostingEnvironment
environment
,
//
IHostingEnvironment environment,
IEmailService
emailService
,
//
IEmailService emailService,
PerSheetService
perSheetService
,
//
PerSheetService perSheetService,
PerHeaderService
perHeaderService
,
//
PerHeaderService perHeaderService,
PerforPersheetRepository
perforPersheetRepository
,
//
PerforPersheetRepository perforPersheetRepository,
PerforImheaderRepository
perforImheaderRepository
,
//
PerforImheaderRepository perforImheaderRepository,
PerforImemployeeRepository
perforImemployeeRepository
,
//
PerforImemployeeRepository perforImemployeeRepository,
PerforImdataRepository
perforImdataRepository
,
//
PerforImdataRepository perforImdataRepository,
PerforImaccountbasicRepository
perforImaccountbasicRepository
,
//
PerforImaccountbasicRepository perforImaccountbasicRepository,
PerforExtractRepository
perforExtractRepository
,
//
PerforExtractRepository perforExtractRepository,
PerforPerfirstRepository
perforPerfirstRepository
,
//
PerforPerfirstRepository perforPerfirstRepository,
PerforPerallotRepository
perforPerallotRepository
,
//
PerforPerallotRepository perforPerallotRepository,
PerforRepimportconfigRepository
repimportconfigRepository
,
//
PerforRepimportconfigRepository repimportconfigRepository,
PerforHospitalconfigRepository
perforHospitalconfigRepository
)
//
PerforHospitalconfigRepository perforHospitalconfigRepository)
{
//
{
this
.
logger
=
logger
;
//
this.logger = logger;
this
.
environment
=
environment
;
//
this.environment = environment;
this
.
emailService
=
emailService
;
//
this.emailService = emailService;
this
.
perSheetService
=
perSheetService
;
//
this.perSheetService = perSheetService;
this
.
perHeaderService
=
perHeaderService
;
//
this.perHeaderService = perHeaderService;
this
.
perforPersheetRepository
=
perforPersheetRepository
;
//
this.perforPersheetRepository = perforPersheetRepository;
this
.
perforImheaderRepository
=
perforImheaderRepository
;
//
this.perforImheaderRepository = perforImheaderRepository;
this
.
perforImemployeeRepository
=
perforImemployeeRepository
;
//
this.perforImemployeeRepository = perforImemployeeRepository;
this
.
perforImdataRepository
=
perforImdataRepository
;
//
this.perforImdataRepository = perforImdataRepository;
this
.
perforImaccountbasicRepository
=
perforImaccountbasicRepository
;
//
this.perforImaccountbasicRepository = perforImaccountbasicRepository;
this
.
perforExtractRepository
=
perforExtractRepository
;
//
this.perforExtractRepository = perforExtractRepository;
this
.
perforPerfirstRepository
=
perforPerfirstRepository
;
//
this.perforPerfirstRepository = perforPerfirstRepository;
this
.
perforPerallotRepository
=
perforPerallotRepository
;
//
this.perforPerallotRepository = perforPerallotRepository;
this
.
repimportconfigRepository
=
repimportconfigRepository
;
//
this.repimportconfigRepository = repimportconfigRepository;
this
.
perforHospitalconfigRepository
=
perforHospitalconfigRepository
;
//
this.perforHospitalconfigRepository = perforHospitalconfigRepository;
}
//
}
/// <summary>
//
/// <summary>
/// 获得首次模板路径
//
/// 获得首次模板路径
/// </summary>
//
/// </summary>
/// <param name="hospitalId"></param>
//
/// <param name="hospitalId"></param>
/// <param name="type">1、历史绩效文件 2、首次模板文件</param>
//
/// <param name="type">1、历史绩效文件 2、首次模板文件</param>
/// <returns></returns>
//
/// <returns></returns>
public
string
GetFilepath
(
int
hospitalId
,
out
int
type
)
//
public string GetFilepath(int hospitalId, out int type)
{
//
{
try
//
try
{
//
{
var
firstList
=
perforPerfirstRepository
.
GetEntities
(
t
=>
t
.
HospitalId
==
hospitalId
);
//
var firstList = perforPerfirstRepository.GetEntities(t => t.HospitalId == hospitalId);
var
allotList
=
perforPerallotRepository
.
GetEntities
(
t
=>
t
.
HospitalId
==
hospitalId
);
//
var allotList = perforPerallotRepository.GetEntities(t => t.HospitalId == hospitalId);
type
=
2
;
//
type = 2;
if
((
allotList
==
null
||
!
allotList
.
Any
(
t
=>
t
.
States
>
0
))
&&
(
firstList
!=
null
||
!
firstList
.
Any
()))
//
if ((allotList == null || !allotList.Any(t => t.States > 0)) && (firstList != null || !firstList.Any()))
return
firstList
.
OrderByDescending
(
t
=>
t
.
CreateDate
).
FirstOrDefault
().
Path
;
//
return firstList.OrderByDescending(t => t.CreateDate).FirstOrDefault().Path;
else
//
else
{
//
{
type
=
1
;
//
type = 1;
var
allot
=
allotList
.
Where
(
t
=>
t
.
Path
!=
null
&&
t
.
Path
!=
""
).
OrderByDescending
(
t
=>
t
.
Year
).
ThenByDescending
(
t
=>
t
.
Month
).
First
();
//
var allot = allotList.Where(t => t.Path != null && t.Path != "").OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First();
return
allot
.
Path
;
//
return allot.Path;
}
//
}
}
//
}
catch
(
Exception
ex
)
//
catch (Exception ex)
{
//
{
logger
.
LogError
(
"获取提取模板文件路径"
+
ex
.
ToString
());
//
logger.LogError("获取提取模板文件路径" + ex.ToString());
type
=
0
;
//
type = 0;
return
""
;
//
return "";
}
//
}
}
//
}
public
string
ExtractData
(
int
allotId
,
string
mail
,
sys_hospital
hospital
,
string
firstPath
)
//
public string ExtractData(int allotId, string mail, sys_hospital hospital, string firstPath)
{
//
{
logger
.
LogInformation
(
$"提取绩效数据开始执行绩效数据提取任务
{
new
{
allotId
,
mail
,
hospital
}}
"
);
//
logger.LogInformation($"提取绩效数据开始执行绩效数据提取任务{new { allotId, mail, hospital }}");
List
<
PerSheet
>
sheetList
=
new
List
<
PerSheet
>();
//
List<PerSheet> sheetList = new List<PerSheet>();
string
filepath
=
""
;
//
string filepath = "";
try
//
try
{
//
{
var
allotList
=
perforPerallotRepository
.
GetEntities
(
t
=>
t
.
HospitalId
==
hospital
.
ID
);
//
var allotList = perforPerallotRepository.GetEntities(t => t.HospitalId == hospital.ID);
var
configList
=
perforHospitalconfigRepository
.
GetEntities
(
t
=>
t
.
HospitalId
==
hospital
.
ID
);
//
var configList = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == hospital.ID);
var
firstList
=
perforPerfirstRepository
.
GetEntities
(
t
=>
t
.
HospitalId
==
hospital
.
ID
);
//
var firstList = perforPerfirstRepository.GetEntities(t => t.HospitalId == hospital.ID);
var
scriptList
=
perforExtractRepository
.
GetEntities
(
t
=>
t
.
HospitalId
==
hospital
.
ID
);
//
var scriptList = perforExtractRepository.GetEntities(t => t.HospitalId == hospital.ID);
if
(
configList
==
null
||
!
configList
.
Any
())
//
if (configList == null || !configList.Any())
{
//
{
logger
.
LogError
(
"提取绩效数据 暂不支持自动提取绩效数据"
,
""
);
//
logger.LogError("提取绩效数据 暂不支持自动提取绩效数据", "");
throw
new
PerformanceException
(
$"暂不支持自动提取绩效数据"
);
//
throw new PerformanceException($"暂不支持自动提取绩效数据");
}
//
}
if
(
scriptList
==
null
||
!
scriptList
.
Any
())
//
if (scriptList == null || !scriptList.Any())
{
//
{
logger
.
LogError
(
$"提取绩效数据 暂无该医院的配置信息和执行sql,无法进行数据提取"
,
""
);
//
logger.LogError($"提取绩效数据 暂无该医院的配置信息和执行sql,无法进行数据提取", "");
throw
new
PerformanceException
(
$"暂无该医院的配置信息和执行sql,无法进行数据提取"
);
//
throw new PerformanceException($"暂无该医院的配置信息和执行sql,无法进行数据提取");
}
//
}
var
hospitalConfig
=
configList
.
First
();
//
var hospitalConfig = configList.First();
string
originalPath
=
""
;
//
string originalPath = "";
//判断是否是首次
//
//判断是否是首次
if
((
allotList
==
null
||
!
allotList
.
Any
(
t
=>
t
.
States
>
0
))
&&
(
firstList
!=
null
||
!
firstList
.
Any
()))
//
if ((allotList == null || !allotList.Any(t => t.States > 0)) && (firstList != null || !firstList.Any()))
{
//
{
logger
.
LogInformation
(
$"提取绩效数据 当前绩效为首次提取,从EXCEL中获取信息"
,
""
);
//
logger.LogInformation($"提取绩效数据 当前绩效为首次提取,从EXCEL中获取信息", "");
//var first = firstList.OrderByDescending(t => t.CreateDate).FirstOrDefault();
//
//var first = firstList.OrderByDescending(t => t.CreateDate).FirstOrDefault();
//首次 从excel中获取人员信息,SHEET页信息,列头信息
//
//首次 从excel中获取人员信息,SHEET页信息,列头信息
sheetList
=
GetFileData
(
firstPath
);
//
sheetList = GetFileData(firstPath);
originalPath
=
firstPath
;
//
originalPath = firstPath;
}
//
}
else
//
else
{
//
{
logger
.
LogInformation
(
$"提取绩效数据 当前绩效为非首次提取,从数据库中获取信息"
,
""
);
//
logger.LogInformation($"提取绩效数据 当前绩效为非首次提取,从数据库中获取信息", "");
//非首次 从数据库中获取人员信息,SHEET页信息,列头信息
//
//非首次 从数据库中获取人员信息,SHEET页信息,列头信息
if
(
allotList
.
Any
(
t
=>
t
.
Path
!=
null
&&
t
.
Path
!=
""
))
//
if (allotList.Any(t => t.Path != null && t.Path != ""))
{
//
{
var
allot
=
allotList
.
Where
(
t
=>
t
.
Path
!=
null
&&
t
.
Path
!=
""
).
OrderByDescending
(
t
=>
t
.
Year
).
ThenByDescending
(
t
=>
t
.
Month
).
First
();
//
var allot = allotList.Where(t => t.Path != null && t.Path != "").OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First();
sheetList
=
GetRepositoryData
(
allot
.
ID
);
//
sheetList = GetRepositoryData(allot.ID);
originalPath
=
firstPath
;
//
originalPath = firstPath;
}
//
}
else
//
else
{
//
{
logger
.
LogError
(
$"提取绩效数据 历史绩效未上传文件"
,
""
);
//
logger.LogError($"提取绩效数据 历史绩效未上传文件", "");
throw
new
PerformanceException
(
$"历史绩效未上传文件"
);
//
throw new PerformanceException($"历史绩效未上传文件");
}
//
}
}
//
}
logger
.
LogInformation
(
$"提取绩效数据 基础数据提取完成,"
,
""
);
//
logger.LogInformation($"提取绩效数据 基础数据提取完成,", "");
var
dpath
=
Path
.
Combine
(
environment
.
ContentRootPath
,
"Files"
,
$"
{
hospital
.
ID
}
"
,
"autoextract"
);
//
var dpath = Path.Combine(environment.ContentRootPath, "Files", $"{hospital.ID}", "autoextract");
FileHelper
.
CreateDirectory
(
dpath
);
//
FileHelper.CreateDirectory(dpath);
string
path
=
Path
.
Combine
(
dpath
,
$"绩效数据
{
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)}
.xlsx"
);
//
string path = Path.Combine(dpath, $"绩效数据{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx");
//根据SHEET页信息,列头信息,创建EXCEL文件
//
//根据SHEET页信息,列头信息,创建EXCEL文件
if
(
WriteExcel
(
path
,
originalPath
,
sheetList
,
hospitalConfig
,
hospital
.
ID
,
allotList
.
First
(
t
=>
t
.
ID
==
allotId
),
out
filepath
))
//
if (WriteExcel(path, originalPath, sheetList, hospitalConfig, hospital.ID, allotList.First(t => t.ID == allotId), out filepath))
{
//
{
logger
.
LogInformation
(
$"提取绩效数据 基础数据提取完成,文件保存成功
{
filepath
}
"
,
""
);
//
logger.LogInformation($"提取绩效数据 基础数据提取完成,文件保存成功{filepath}", "");
var
allot
=
allotList
.
First
(
t
=>
t
.
ID
==
allotId
);
//
var allot = allotList.First(t => t.ID == allotId);
//allot.ExtractPath = filepath;
//
//allot.ExtractPath = filepath;
//if (!string.IsNullOrEmpty(filepath))
//
//if (!string.IsNullOrEmpty(filepath))
// perforPerallotRepository.Update(allot);
//
// perforPerallotRepository.Update(allot);
ImportData
(
allot
,
configList
);
//
ImportData(allot, configList);
SendEmail
(
mail
,
filepath
,
$"
{
hospital
.
HosName
}
HIS数据提取成功"
,
$"
{
hospital
.
HosName
}
在
{
DateTime
.
Now
.
ToString
(
"yyyy-MM-dd HH:mm:ss"
)}
成功提取。"
);
//
SendEmail(mail, filepath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}在{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。");
}
//
}
}
//
}
catch
(
PerformanceException
ex
)
//
catch (PerformanceException ex)
{
//
{
logger
.
LogError
(
"提取绩效数据"
+
ex
.
ToString
());
//
logger.LogError("提取绩效数据" + ex.ToString());
SendEmail
(
mail
,
""
,
$"
{
hospital
.
HosName
}
HIS数据提取失败"
,
$"
{
hospital
.
HosName
}
提取数据失败,
{
ex
.
Message
}
!"
);
//
SendEmail(mail, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据失败,{ex.Message}!");
}
//
}
catch
(
Exception
ex
)
//
catch (Exception ex)
{
//
{
logger
.
LogError
(
"提取绩效数据"
+
ex
.
ToString
());
//
logger.LogError("提取绩效数据" + ex.ToString());
SendEmail
(
mail
,
""
,
$"
{
hospital
.
HosName
}
HIS数据提取失败"
,
$"
{
hospital
.
HosName
}
提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!"
);
//
SendEmail(mail, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!");
}
//
}
finally
//
finally
{
//
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
t
=>
t
.
ID
==
allotId
);
//
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId);
if
(
allot
!=
null
)
//
if (allot != null)
{
//
{
allot
.
IsExtracting
=
null
;
//
allot.IsExtracting = null;
perforPerallotRepository
.
Update
(
allot
);
//
perforPerallotRepository.Update(allot);
}
//
}
}
//
}
return
filepath
;
//
return filepath;
}
//
}
/// <summary>
//
/// <summary>
/// 从HIS抽取报表数据
//
/// 从HIS抽取报表数据
/// </summary>
//
/// </summary>
/// <param name="allot"></param>
//
/// <param name="allot"></param>
/// <param name="configs"></param>
//
/// <param name="configs"></param>
public
void
ImportData
(
per_allot
allot
,
List
<
sys_hospitalconfig
>
configs
)
//
public void ImportData(per_allot allot, List<sys_hospitalconfig> configs)
{
//
{
Dictionary
<
string
,
object
>
pairs
=
new
Dictionary
<
string
,
object
>
//
Dictionary<string, object> pairs = new Dictionary<string, object>
{
//
{
{
"@allotid"
,
allot
.
ID
},
//
{ "@allotid", allot.ID },
{
"@hospitalid"
,
allot
.
HospitalId
},
//
{ "@hospitalid", allot.HospitalId },
};
//
};
var
imports
=
repimportconfigRepository
.
GetEntities
(
w
=>
w
.
ScriptType
==
1
);
//
var imports = repimportconfigRepository.GetEntities(w => w.ScriptType == 1);
foreach
(
var
import
in
imports
)
//
foreach (var import in imports)
{
//
{
var
conf
=
configs
.
FirstOrDefault
(
w
=>
w
.
HospitalId
==
allot
.
HospitalId
&&
w
.
Id
==
import
.
ConfigId
);
//
var conf = configs.FirstOrDefault(w => w.HospitalId == allot.HospitalId && w.Id == import.ConfigId);
if
(
conf
!=
null
)
//
if (conf != null)
{
//
{
if
(
import
.
TimeRange
==
"1"
)
//
if (import.TimeRange == "1")
{
//
{
pairs
.
Add
(
"@year"
,
allot
.
Year
);
//
pairs.Add("@year", allot.Year);
pairs
.
Add
(
"@month"
,
allot
.
Month
);
//
pairs.Add("@month", allot.Month);
}
//
}
else
if
(
import
.
TimeRange
==
"2"
)
//
else if (import.TimeRange == "2")
{
//
{
pairs
.
Add
(
"@year"
,
allot
.
Year
-
1
);
//
pairs.Add("@year", allot.Year - 1);
pairs
.
Add
(
"@month"
,
allot
.
Month
);
//
pairs.Add("@month", allot.Month);
}
//
}
else
if
(
import
.
TimeRange
==
"3"
)
//
else if (import.TimeRange == "3")
{
//
{
pairs
.
Add
(
"@year"
,
allot
.
Year
);
//
pairs.Add("@year", allot.Year);
pairs
.
Add
(
"@month"
,
allot
.
Month
-
1
);
//
pairs.Add("@month", allot.Month - 1);
}
//
}
try
//
try
{
//
{
DatabaseType
type
=
(
DatabaseType
)
conf
.
DataBaseType
;
//
DatabaseType type = (DatabaseType)conf.DataBaseType;
var
connection
=
ConnectionBuilder
.
Create
(
type
,
conf
.
DbSource
,
conf
.
DbName
,
conf
.
DbUser
,
conf
.
DbPassword
);
//
var connection = ConnectionBuilder.Create(type, conf.DbSource, conf.DbName, conf.DbUser, conf.DbPassword);
var
data
=
connection
.
Query
(
import
.
ImportScript
,
new
DynamicParameters
(
pairs
),
commandTimeout
:
60
*
60
);
//
var data = connection.Query(import.ImportScript, new DynamicParameters(pairs), commandTimeout: 60 * 60);
perforPerallotRepository
.
ImportData
(
import
,
pairs
,
data
);
//
perforPerallotRepository.ImportData(import, pairs, data);
}
//
}
catch
(
Exception
ex
)
//
catch (Exception ex)
{
//
{
logger
.
LogError
(
ex
.
ToString
());
//
logger.LogError(ex.ToString());
}
//
}
}
//
}
}
//
}
}
//
}
/// <summary>
//
/// <summary>
/// 发送邮件
//
/// 发送邮件
/// </summary>
//
/// </summary>
/// <param name="path"></param>
//
/// <param name="path"></param>
/// <param name="subject"></param>
//
/// <param name="subject"></param>
/// <param name="body"></param>
//
/// <param name="body"></param>
private
void
SendEmail
(
string
mail
,
string
path
,
string
subject
,
string
body
)
//
private void SendEmail(string mail, string path, string subject, string body)
{
//
{
var
message
=
new
EmailMessage
//
var message = new EmailMessage
{
//
{
To
=
new
List
<
string
>
{
mail
},
//
To = new List<string> { mail },
DisplayName
=
"溯直健康"
,
//
DisplayName = "溯直健康",
Subject
=
subject
,
//
Subject = subject,
Body
=
body
//
Body = body
};
//
};
if
(!
string
.
IsNullOrEmpty
(
path
))
//
if (!string.IsNullOrEmpty(path))
message
.
Attachments
=
new
List
<
string
>
{
path
};
//
message.Attachments = new List<string> { path };
emailService
.
Send
(
message
);
//
emailService.Send(message);
}
//
}
/// <summary>
//
/// <summary>
/// 向EXCEL中写入数据
//
/// 向EXCEL中写入数据
/// 人员信息由EXCEL中提供,或从上次绩效中提供
//
/// 人员信息由EXCEL中提供,或从上次绩效中提供
/// SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充
//
/// SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充
/// 向EXCEL中填充数据,填充时值与列头必须匹配
//
/// 向EXCEL中填充数据,填充时值与列头必须匹配
/// </summary>
//
/// </summary>
/// <param name="newpath"></param>
//
/// <param name="newpath"></param>
/// <param name="originalPath"></param>
//
/// <param name="originalPath"></param>
/// <param name="sheetList"></param>
//
/// <param name="sheetList"></param>
/// <param name="hospitalConfig"></param>
//
/// <param name="hospitalConfig"></param>
/// <param name="hospitalId"></param>
//
/// <param name="hospitalId"></param>
private
bool
WriteExcel
(
string
newpath
,
string
originalPath
,
List
<
PerSheet
>
sheetList
,
sys_hospitalconfig
hospitalConfig
,
int
hospitalId
,
per_allot
allot
,
out
string
filepath
)
//
private bool WriteExcel(string newpath, string originalPath, List<PerSheet> sheetList, sys_hospitalconfig hospitalConfig, int hospitalId, per_allot allot, out string filepath)
{
//
{
logger
.
LogInformation
(
$"提取绩效数据 开始向EXCEL中写入数据,"
,
""
);
//
logger.LogInformation($"提取绩效数据 开始向EXCEL中写入数据,", "");
if
(
string
.
IsNullOrEmpty
(
originalPath
))
//
if (string.IsNullOrEmpty(originalPath))
{
//
{
logger
.
LogError
(
$"提取绩效数据
{
originalPath
}
文件路径无效"
,
""
);
//
logger.LogError($"提取绩效数据{originalPath}文件路径无效", "");
throw
new
PerformanceException
(
$"
{
originalPath
}
文件路径无效"
);
//
throw new PerformanceException($"{originalPath}文件路径无效");
}
//
}
var
scriptList
=
perforExtractRepository
.
GetEntities
(
t
=>
t
.
HospitalId
==
hospitalId
&&
t
.
IsEnable
==
1
);
//
var scriptList = perforExtractRepository.GetEntities(t => t.HospitalId == hospitalId && t.IsEnable == 1);
//根据SHEET页信息,列头信息,创建EXCEL文件
//
//根据SHEET页信息,列头信息,创建EXCEL文件
IWorkbook
workbook
=
null
;
//
IWorkbook workbook = null;
FileStream
file
=
null
;
//
FileStream file = null;
try
//
try
{
//
{
workbook
=
new
XSSFWorkbook
(
originalPath
);
//
workbook = new XSSFWorkbook(originalPath);
foreach
(
var
sheet
in
sheetList
)
//
foreach (var sheet in sheetList)
{
//
{
var
importSheet
=
workbook
.
GetSheet
(
sheet
.
SheetName
);
//
var importSheet = workbook.GetSheet(sheet.SheetName);
if
(
importSheet
==
null
)
continue
;
//
if (importSheet == null) continue;
if
(
sheet
.
PerHeader
==
null
)
continue
;
//
if (sheet.PerHeader == null) continue;
logger
.
LogInformation
(
$"提取绩效数据列头信息写入,"
,
""
);
//
logger.LogInformation($"提取绩效数据列头信息写入,", "");
var
maxHeaderRowNumber
=
sheet
.
PerHeader
.
Max
(
t
=>
t
.
PointRow
);
//
var maxHeaderRowNumber = sheet.PerHeader.Max(t => t.PointRow);
sheet
.
PerHeader
?.
ForEach
(
t
=>
//
sheet.PerHeader?.ForEach(t =>
{
//
{
if
(
t
.
IsHasChildren
)
//
if (t.IsHasChildren)
{
//
{
var
maxnum
=
t
.
Children
.
Max
(
c
=>
c
.
PointRow
);
//
var maxnum = t.Children.Max(c => c.PointRow);
maxHeaderRowNumber
=
maxHeaderRowNumber
>
maxnum
?
maxHeaderRowNumber
:
maxnum
;
//
maxHeaderRowNumber = maxHeaderRowNumber > maxnum ? maxHeaderRowNumber : maxnum;
}
//
}
});
//
});
if
(
sheet
.
SheetType
==
SheetType
.
Workload
)
//
if (sheet.SheetType == SheetType.Workload)
maxHeaderRowNumber
+=
1
;
//
maxHeaderRowNumber += 1;
//清空数据行
//
//清空数据行
for
(
int
i
=
maxHeaderRowNumber
+
1
;
i
<
importSheet
.
LastRowNum
+
1
;
i
++)
//
for (int i = maxHeaderRowNumber + 1; i < importSheet.LastRowNum + 1; i++)
{
//
{
var
importRow
=
importSheet
.
GetRow
(
i
);
//
var importRow = importSheet.GetRow(i);
if
(
importRow
!=
null
)
//
if (importRow != null)
importSheet
.
RemoveRow
(
importRow
);
//
importSheet.RemoveRow(importRow);
}
//
}
//取消合并单元格
//
//取消合并单元格
int
mergedCount
=
importSheet
.
NumMergedRegions
;
//
int mergedCount = importSheet.NumMergedRegions;
for
(
int
i
=
mergedCount
-
1
;
i
>=
0
;
i
--)
//
for (int i = mergedCount - 1; i >= 0; i--)
{
//
{
var
temp
=
importSheet
.
GetMergedRegion
(
i
);
//
var temp = importSheet.GetMergedRegion(i);
if
(
temp
.
FirstRow
>
maxHeaderRowNumber
)
//
if (temp.FirstRow > maxHeaderRowNumber)
importSheet
.
RemoveMergedRegion
(
i
);
//
importSheet.RemoveMergedRegion(i);
}
//
}
//填充人员信息
//
//填充人员信息
if
(
SheetType
.
Employee
==
sheet
.
SheetType
&&
sheet
.
PerData
!=
null
&&
sheet
.
PerData
.
Any
())
//
if (SheetType.Employee == sheet.SheetType && sheet.PerData != null && sheet.PerData.Any())
{
//
{
logger
.
LogInformation
(
$"提取绩效数据填充人员信息,"
,
""
);
//
logger.LogInformation($"提取绩效数据填充人员信息,", "");
var
dataList
=
sheet
.
PerData
.
ConvertAll
(
new
Converter
<
IPerData
,
PerDataEmployee
>(
t
=>
(
PerDataEmployee
)
t
));
//
var dataList = sheet.PerData.ConvertAll(new Converter<IPerData, PerDataEmployee>(t => (PerDataEmployee)t));
for
(
int
i
=
0
;
i
<
dataList
.
Count
;
i
++)
//
for (int i = 0; i < dataList.Count; i++)
{
//
{
var
importRow
=
importSheet
.
CreateRow
(
maxHeaderRowNumber
+
i
+
1
);
//
var importRow = importSheet.CreateRow(maxHeaderRowNumber + i + 1);
Dictionary
<
string
,
Func
<
PerDataEmployee
,
object
>>
keyValues
=
new
Dictionary
<
string
,
Func
<
PerDataEmployee
,
object
>>
//
Dictionary<string, Func<PerDataEmployee, object>> keyValues = new Dictionary<string, Func<PerDataEmployee, object>>
{
//
{
{
"核算单元"
,
(
t
)
=>
t
.
AccountingUnit
},
//
{ "核算单元", (t) => t.AccountingUnit },
{
"医生姓名"
,
(
t
)
=>
t
.
DoctorName
},
//
{ "医生姓名", (t) => t.DoctorName },
{
"职称"
,
(
t
)
=>
t
.
JobTitle
},
//
{ "职称", (t) => t.JobTitle },
{
"绩效基数核算参考对象"
,
(
t
)
=>
t
.
FitPeople
},
//
{ "绩效基数核算参考对象", (t) => t.FitPeople },
{
"绩效基数核算系数"
,
(
t
)
=>
t
.
FitPeopleRatio
},
//
{ "绩效基数核算系数", (t) => t.FitPeopleRatio },
{
"核算单元分类"
,
(
t
)
=>
t
.
AccountType
},
//
{ "核算单元分类", (t) => t.AccountType },
{
"岗位系数"
,
(
t
)
=>
t
.
PostCoefficient
},
//
{ "岗位系数", (t) => t.PostCoefficient },
{
"参加工作时间"
,
(
t
)
=>
t
.
WorkTime
},
//
{ "参加工作时间", (t) => t.WorkTime },
{
"考核得分率"
,
(
t
)
=>
t
.
ScoreAverageRate
},
//
{ "考核得分率", (t) => t.ScoreAverageRate },
{
"出勤率"
,
(
t
)
=>
t
.
Attendance
},
//
{ "出勤率", (t) => t.Attendance },
//{ "核算单元医生数", (t) => t.PeopleNumber },
//
//{ "核算单元医生数", (t) => t.PeopleNumber },
//{ "工作量绩效", (t) => t.Workload },
//
//{ "工作量绩效", (t) => t.Workload },
{
"其他绩效"
,
(
t
)
=>
t
.
OthePerfor
},
//
{ "其他绩效", (t) => t.OthePerfor },
{
"医院奖罚"
,
(
t
)
=>
t
.
Punishment
},
//
{ "医院奖罚", (t) => t.Punishment },
{
"调节系数"
,
(
t
)
=>
t
.
Adjust
},
//
{ "调节系数", (t) => t.Adjust },
//{ "发放系数", (t) => t.Grant },
//
//{ "发放系数", (t) => t.Grant },
};
//
};
foreach
(
var
item
in
keyValues
.
Keys
)
//
foreach (var item in keyValues.Keys)
{
//
{
var
headInfo
=
sheet
.
PerHeader
.
FirstOrDefault
(
t
=>
t
.
CellValue
==
item
);
//
var headInfo = sheet.PerHeader.FirstOrDefault(t => t.CellValue == item);
if
(
headInfo
!=
null
)
//
if (headInfo != null)
{
//
{
var
value
=
(
keyValues
[
item
].
Invoke
(
dataList
[
i
])
??
""
).
ToString
();
//
var value = (keyValues[item].Invoke(dataList[i]) ?? "").ToString();
importRow
.
CreateCell
(
headInfo
.
PointCell
).
SetCellValue
(
Verify
(
value
));
//
importRow.CreateCell(headInfo.PointCell).SetCellValue(Verify(value));
}
//
}
}
//
}
}
//
}
}
//
}
//临床科室医护绩效测算表
//
//临床科室医护绩效测算表
else
if
(
SheetType
.
AccountBasic
==
sheet
.
SheetType
&&
sheet
.
PerData
!=
null
&&
sheet
.
PerData
.
Any
())
//
else if (SheetType.AccountBasic == sheet.SheetType && sheet.PerData != null && sheet.PerData.Any())
{
//
{
logger
.
LogInformation
(
$"提取绩效数据 填充临床科室医护绩效测算表,"
,
""
);
//
logger.LogInformation($"提取绩效数据 填充临床科室医护绩效测算表,", "");
var
dataList
=
sheet
.
PerData
.
ConvertAll
(
new
Converter
<
IPerData
,
PerDataAccountBaisc
>(
t
=>
(
PerDataAccountBaisc
)
t
));
//
var dataList = sheet.PerData.ConvertAll(new Converter<IPerData, PerDataAccountBaisc>(t => (PerDataAccountBaisc)t));
var
children
=
new
List
<
PerHeader
>();
//
var children = new List<PerHeader>();
foreach
(
var
item
in
sheet
.
PerHeader
)
//
foreach (var item in sheet.PerHeader)
{
//
{
var
childItem
=
item
.
Children
;
//
var childItem = item.Children;
if
(
childItem
!=
null
)
//
if (childItem != null)
{
//
{
childItem
.
ForEach
(
t
=>
t
.
CellValue
=
item
.
CellValue
+
t
.
CellValue
);
//
childItem.ForEach(t => t.CellValue = item.CellValue + t.CellValue);
children
=
children
.
Union
(
childItem
).
ToList
();
//
children = children.Union(childItem).ToList();
}
//
}
}
//
}
for
(
int
i
=
0
;
i
<
dataList
.
Count
;
i
++)
//
for (int i = 0; i < dataList.Count; i++)
{
//
{
var
importRow
=
importSheet
.
CreateRow
(
maxHeaderRowNumber
+
i
+
1
);
//
var importRow = importSheet.CreateRow(maxHeaderRowNumber + i + 1);
Dictionary
<
string
,
Func
<
PerDataAccountBaisc
,
object
>>
keyValues
=
new
Dictionary
<
string
,
Func
<
PerDataAccountBaisc
,
object
>>
//
Dictionary<string, Func<PerDataAccountBaisc, object>> keyValues = new Dictionary<string, Func<PerDataAccountBaisc, object>>
{
//
{
{
"核算单元类型"
,
(
t
)
=>
t
.
UnitType
},
//
{ "核算单元类型", (t) => t.UnitType },
{
"核算单元"
,
(
t
)
=>
t
.
AccountingUnit
},
//
{ "核算单元", (t) => t.AccountingUnit },
{
"科室名称"
,
(
t
)
=>
t
.
Department
},
//
{ "科室名称", (t) => t.Department },
{
"医生组核算单元医生数量"
,
(
t
)
=>
t
.
Number
},
//
{ "医生组核算单元医生数量", (t) => t.Number },
{
"医生组基础系数"
,
(
t
)
=>
t
.
BasicFactor
},
//
{ "医生组基础系数", (t) => t.BasicFactor },
{
"医生组倾斜系数"
,
(
t
)
=>
t
.
SlopeFactor
},
//
{ "医生组倾斜系数", (t) => t.SlopeFactor },
{
"医生组其他绩效1"
,
(
t
)
=>
t
.
OtherPerfor1
},
//
{ "医生组其他绩效1", (t) => t.OtherPerfor1 },
{
"医生组考核得分率"
,
(
t
)
=>
t
.
ScoringAverage
},
//
{ "医生组考核得分率", (t) => t.ScoringAverage },
{
"医生组医院奖罚"
,
(
t
)
=>
t
.
Extra
},
//
{ "医生组医院奖罚", (t) => t.Extra },
{
"医生组其他绩效2"
,
(
t
)
=>
t
.
OtherPerfor2
},
//
{ "医生组其他绩效2", (t) => t.OtherPerfor2 },
{
"医生组调节系数"
,
(
t
)
=>
t
.
AdjustFactor
},
//
{ "医生组调节系数", (t) => t.AdjustFactor },
};
//
};
foreach
(
var
item
in
keyValues
.
Keys
)
//
foreach (var item in keyValues.Keys)
{
//
{
var
headInfo
=
sheet
.
PerHeader
.
FirstOrDefault
(
t
=>
t
.
CellValue
==
item
)
//
var headInfo = sheet.PerHeader.FirstOrDefault(t => t.CellValue == item)
??
children
?.
FirstOrDefault
(
t
=>
t
.
CellValue
==
item
);
//
?? children?.FirstOrDefault(t => t.CellValue == item);
if
(
headInfo
!=
null
)
//
if (headInfo != null)
{
//
{
var
value
=
(
keyValues
[
item
].
Invoke
(
dataList
[
i
])
??
""
).
ToString
();
//
var value = (keyValues[item].Invoke(dataList[i]) ?? "").ToString();
if
(
Regex
.
Match
(
value
.
Trim
(),
@"(0*.0*)|0"
).
ToString
()
!=
value
.
Trim
())
//
if (Regex.Match(value.Trim(), @"(0*.0*)|0").ToString() != value.Trim())
importRow
.
CreateCell
(
headInfo
.
PointCell
).
SetCellValue
(
Verify
(
value
));
//
importRow.CreateCell(headInfo.PointCell).SetCellValue(Verify(value));
}
//
}
}
//
}
}
//
}
}
//
}
//SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充
//
//SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充
else
if
(
scriptList
.
Any
(
t
=>
sheet
.
SheetName
.
Contains
(
t
.
SheetName
)))
//
else if (scriptList.Any(t => sheet.SheetName.Contains(t.SheetName)))
{
//
{
logger
.
LogInformation
(
$"提取绩效数据 执行SQL脚本获取数据,"
,
""
);
//
logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据,", "");
var
script
=
scriptList
.
First
(
t
=>
sheet
.
SheetName
.
Contains
(
t
.
SheetName
));
//
var script = scriptList.First(t => sheet.SheetName.Contains(t.SheetName));
if
(!
string
.
IsNullOrEmpty
(
script
.
ExecuteScript
))
//
if (!string.IsNullOrEmpty(script.ExecuteScript))
{
//
{
script
.
ExecuteScript
=
ReplaceParameter
(
script
.
ExecuteScript
,
allot
);
//
script.ExecuteScript = ReplaceParameter(script.ExecuteScript, allot);
logger
.
LogInformation
(
$"提取绩效数据 SQL脚本
{
script
.
ExecuteScript
}
,"
,
""
);
//
logger.LogInformation($"提取绩效数据 SQL脚本{script.ExecuteScript},", "");
var
children
=
new
List
<
PerHeader
>();
//
var children = new List<PerHeader>();
foreach
(
var
item
in
sheet
.
PerHeader
?.
Select
(
t
=>
t
.
Children
))
//
foreach (var item in sheet.PerHeader?.Select(t => t.Children))
{
//
{
if
(
item
!=
null
)
//
if (item != null)
children
=
children
.
Union
(
item
).
ToList
();
//
children = children.Union(item).ToList();
}
//
}
var
connection
=
ConnectionBuilder
.
Create
(
DatabaseType
.
SqlServer
,
hospitalConfig
.
DbSource
,
hospitalConfig
.
DbName
,
hospitalConfig
.
DbUser
,
hospitalConfig
.
DbPassword
);
//
var connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
var
dataList
=
perforExtractRepository
.
ExecuteScript
(
connection
,
script
.
ExecuteScript
,
null
);
//
var dataList = perforExtractRepository.ExecuteScript(connection, script.ExecuteScript, null);
logger
.
LogInformation
(
$"提取绩效数据 写入SQL脚本执行结果"
,
""
);
//
logger.LogInformation($"提取绩效数据 写入SQL脚本执行结果", "");
//用于查询核算单元
//
//用于查询核算单元
var
deptList
=
dataList
.
Where
(
t
=>
t
.
ColumnName
==
"科室名称"
).
Select
(
t
=>
t
.
Value
.
ToString
()).
Distinct
().
ToList
();
//
var deptList = dataList.Where(t => t.ColumnName == "科室名称").Select(t => t.Value.ToString()).Distinct().ToList();
var
imdata
=
perforImdataRepository
.
GetAccountingUnit
(
hospitalId
,
(
int
)
sheet
.
SheetType
,
deptList
);
//
var imdata = perforImdataRepository.GetAccountingUnit(hospitalId, (int)sheet.SheetType, deptList);
//创建数据行
//
//创建数据行
foreach
(
var
pointRow
in
dataList
.
Select
(
t
=>
t
.
RowNumber
).
Distinct
().
OrderBy
(
t
=>
t
))
//
foreach (var pointRow in dataList.Select(t => t.RowNumber).Distinct().OrderBy(t => t))
{
//
{
var
importRow
=
importSheet
.
CreateRow
(
maxHeaderRowNumber
+
pointRow
+
1
);
//
var importRow = importSheet.CreateRow(maxHeaderRowNumber + pointRow + 1);
//写入单元格
//
//写入单元格
foreach
(
var
data
in
dataList
.
Where
(
t
=>
t
.
RowNumber
==
pointRow
))
//
foreach (var data in dataList.Where(t => t.RowNumber == pointRow))
{
//
{
var
headInfo
=
sheet
.
PerHeader
.
FirstOrDefault
(
t
=>
t
.
CellValue
==
data
.
ColumnName
)
//
var headInfo = sheet.PerHeader.FirstOrDefault(t => t.CellValue == data.ColumnName)
??
children
?.
FirstOrDefault
(
t
=>
t
.
CellValue
==
data
.
ColumnName
);
//
?? children?.FirstOrDefault(t => t.CellValue == data.ColumnName);
if
(
headInfo
!=
null
)
//
if (headInfo != null)
{
//
{
importRow
.
CreateCell
(
headInfo
.
PointCell
).
SetCellValue
(
Verify
(
data
.
Value
.
ToString
()));
//
importRow.CreateCell(headInfo.PointCell).SetCellValue(Verify(data.Value.ToString()));
}
//
}
if
(
data
.
ColumnName
==
"科室名称"
)
//
if (data.ColumnName == "科室名称")
{
//
{
//补充核算单元
//
//补充核算单元
if
(
sheet
.
SheetType
==
SheetType
.
Income
)
//
if (sheet.SheetType == SheetType.Income)
{
//
{
var
doctor
=
imdata
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
1
&&
t
.
Department
==
data
.
Value
.
ToString
());
//
var doctor = imdata.FirstOrDefault(t => t.UnitType == 1 && t.Department == data.Value.ToString());
if
(
doctor
!=
null
)
//
if (doctor != null)
importRow
.
CreateCell
(
0
).
SetCellValue
(
doctor
.
AccountingUnit
);
//
importRow.CreateCell(0).SetCellValue(doctor.AccountingUnit);
var
nurse
=
imdata
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
2
&&
t
.
Department
==
data
.
Value
.
ToString
());
//
var nurse = imdata.FirstOrDefault(t => t.UnitType == 2 && t.Department == data.Value.ToString());
if
(
nurse
!=
null
)
//
if (nurse != null)
importRow
.
CreateCell
(
1
).
SetCellValue
(
nurse
.
AccountingUnit
);
//
importRow.CreateCell(1).SetCellValue(nurse.AccountingUnit);
}
//
}
else
if
(
sheet
.
SheetType
==
SheetType
.
Workload
)
//
else if (sheet.SheetType == SheetType.Workload)
{
//
{
if
(
sheet
.
SheetName
.
Contains
(
"医生"
))
//
if (sheet.SheetName.Contains("医生"))
{
//
{
var
doctor
=
imdata
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
1
&&
t
.
Department
==
data
.
Value
.
ToString
());
//
var doctor = imdata.FirstOrDefault(t => t.UnitType == 1 && t.Department == data.Value.ToString());
if
(
doctor
!=
null
)
//
if (doctor != null)
importRow
.
CreateCell
(
0
).
SetCellValue
(
doctor
.
AccountingUnit
);
//
importRow.CreateCell(0).SetCellValue(doctor.AccountingUnit);
}
//
}
else
//
else
{
//
{
var
nurse
=
imdata
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
2
&&
t
.
Department
==
data
.
Value
.
ToString
());
//
var nurse = imdata.FirstOrDefault(t => t.UnitType == 2 && t.Department == data.Value.ToString());
if
(
nurse
!=
null
)
//
if (nurse != null)
importRow
.
CreateCell
(
0
).
SetCellValue
(
nurse
.
AccountingUnit
);
//
importRow.CreateCell(0).SetCellValue(nurse.AccountingUnit);
}
//
}
}
//
}
}
//
}
}
//
}
}
//
}
}
//
}
}
//
}
}
//
}
logger
.
LogInformation
(
$"提取绩效数据 数据写入完成,开始保存文件
{
newpath
}
"
,
""
);
//
logger.LogInformation($"提取绩效数据 数据写入完成,开始保存文件{newpath}", "");
file
=
new
FileStream
(
newpath
,
FileMode
.
Create
);
//
file = new FileStream(newpath, FileMode.Create);
workbook
.
Write
(
file
);
//
workbook.Write(file);
filepath
=
newpath
;
//
filepath = newpath;
return
true
;
//
return true;
}
//
}
catch
(
Exception
ex
)
//
catch (Exception ex)
{
//
{
logger
.
LogError
(
$"提取绩效数据 数据写入出现异常
{
ex
.
ToString
()}
"
);
//
logger.LogError($"提取绩效数据 数据写入出现异常{ex.ToString()}");
throw
ex
;
//
throw ex;
}
//
}
finally
//
finally
{
//
{
workbook
.
Close
();
//
workbook.Close();
file
.
Close
();
//
file.Close();
file
.
Dispose
();
//
file.Dispose();
GC
.
Collect
();
//
GC.Collect();
}
//
}
}
//
}
/// <summary>
//
/// <summary>
/// 替换SQL参数
//
/// 替换SQL参数
/// </summary>
//
/// </summary>
/// <param name="executeScript"></param>
//
/// <param name="executeScript"></param>
/// <param name="allot"></param>
//
/// <param name="allot"></param>
/// <returns></returns>
//
/// <returns></returns>
private
string
ReplaceParameter
(
string
executeScript
,
per_allot
allot
)
//
private string ReplaceParameter(string executeScript, per_allot allot)
{
//
{
var
basicTime
=
new
DateTime
(
allot
.
Year
,
allot
.
Month
,
1
);
//
var basicTime = new DateTime(allot.Year, allot.Month, 1);
string
beginTime
=
basicTime
.
ToString
(
"yyyy-MM-dd HH:mm:ss"
);
//
string beginTime = basicTime.ToString("yyyy-MM-dd HH:mm:ss");
string
endTime
=
basicTime
.
AddMonths
(
1
).
AddSeconds
(-
1
).
ToString
(
"yyyy-MM-dd HH:mm:ss"
);
//
string endTime = basicTime.AddMonths(1).AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss");
executeScript
=
Regex
.
Replace
(
executeScript
,
"@beginTime"
,
$"'
{
beginTime
}
'"
,
RegexOptions
.
IgnoreCase
);
//
executeScript = Regex.Replace(executeScript, "@beginTime", $"'{beginTime}'", RegexOptions.IgnoreCase);
executeScript
=
Regex
.
Replace
(
executeScript
,
"@endTime"
,
$"'
{
endTime
}
'"
,
RegexOptions
.
IgnoreCase
);
//
executeScript = Regex.Replace(executeScript, "@endTime", $"'{endTime}'", RegexOptions.IgnoreCase);
return
executeScript
;
//
return executeScript;
}
//
}
/// <summary>
//
/// <summary>
/// 从数据库中获取sheet及列头
//
/// 从数据库中获取sheet及列头
/// </summary>
//
/// </summary>
/// <param name="allotId"></param>
//
/// <param name="allotId"></param>
/// <returns></returns>
//
/// <returns></returns>
private
List
<
PerSheet
>
GetRepositoryData
(
int
allotId
)
//
private List<PerSheet> GetRepositoryData(int allotId)
{
//
{
List
<
PerSheet
>
sheetList
=
new
List
<
PerSheet
>();
//
List<PerSheet> sheetList = new List<PerSheet>();
//获取最近一次绩效
//
//获取最近一次绩效
var
perSheetList
=
perforPersheetRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allotId
);
//
var perSheetList = perforPersheetRepository.GetEntities(t => t.AllotID == allotId);
if
(
perSheetList
==
null
||
perSheetList
.
Count
==
0
)
//
if (perSheetList == null || perSheetList.Count == 0)
return
sheetList
;
//
return sheetList;
foreach
(
var
sheet
in
perSheetList
)
//
foreach (var sheet in perSheetList)
{
//
{
PerSheet
perSheet
=
new
PerSheet
()
//
PerSheet perSheet = new PerSheet()
{
//
{
SheetName
=
sheet
.
SheetName
,
//
SheetName = sheet.SheetName,
SheetType
=
(
SheetType
)
sheet
.
SheetType
,
//
SheetType = (SheetType)sheet.SheetType,
ModuleName
=
EnumHelper
.
GetDescription
((
SheetType
)
sheet
.
SheetType
),
//
ModuleName = EnumHelper.GetDescription((SheetType)sheet.SheetType),
};
//
};
var
perHeadList
=
perforImheaderRepository
.
GetEntities
(
t
=>
t
.
SheetID
==
sheet
.
ID
);
//
var perHeadList = perforImheaderRepository.GetEntities(t => t.SheetID == sheet.ID);
perSheet
.
PerHeader
=
AutoMapper
.
Mapper
.
Map
<
List
<
PerHeader
>>(
perHeadList
);
//
perSheet.PerHeader = AutoMapper.Mapper.Map<List<PerHeader>>(perHeadList);
if
(
SheetType
.
Employee
==
(
SheetType
)
sheet
.
SheetType
)
//
if (SheetType.Employee == (SheetType)sheet.SheetType)
{
//
{
perSheet
.
PerHeader
=
GetHeader
((
SheetType
)
sheet
.
SheetType
);
//
perSheet.PerHeader = GetHeader((SheetType)sheet.SheetType);
var
employeeList
=
perforImemployeeRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
sheet
.
AllotID
);
//
var employeeList = perforImemployeeRepository.GetEntities(t => t.AllotID == sheet.AllotID);
var
perEmployeeList
=
AutoMapper
.
Mapper
.
Map
<
List
<
PerDataEmployee
>>(
employeeList
);
//
var perEmployeeList = AutoMapper.Mapper.Map<List<PerDataEmployee>>(employeeList);
perSheet
.
PerData
=
perEmployeeList
?.
ConvertAll
(
new
Converter
<
PerDataEmployee
,
IPerData
>(
m
=>
m
));
//
perSheet.PerData = perEmployeeList?.ConvertAll(new Converter<PerDataEmployee, IPerData>(m => m));
}
//
}
else
if
(
SheetType
.
SpecialUnit
==
(
SheetType
)
sheet
.
SheetType
)
//
else if (SheetType.SpecialUnit == (SheetType)sheet.SheetType)
{
//
{
perSheet
.
PerHeader
=
GetHeader
((
SheetType
)
sheet
.
SheetType
);
//
perSheet.PerHeader = GetHeader((SheetType)sheet.SheetType);
}
//
}
else
if
(
SheetType
.
AccountBasic
==
(
SheetType
)
sheet
.
SheetType
)
//
else if (SheetType.AccountBasic == (SheetType)sheet.SheetType)
{
//
{
perSheet
.
PerHeader
=
GetHeader
((
SheetType
)
sheet
.
SheetType
);
//
perSheet.PerHeader = GetHeader((SheetType)sheet.SheetType);
var
basicList
=
perforImaccountbasicRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
sheet
.
AllotID
);
//
var basicList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == sheet.AllotID);
var
perBasicList
=
AutoMapper
.
Mapper
.
Map
<
List
<
PerDataAccountBaisc
>>(
basicList
);
//
var perBasicList = AutoMapper.Mapper.Map<List<PerDataAccountBaisc>>(basicList);
perSheet
.
PerData
=
perBasicList
?.
ConvertAll
(
new
Converter
<
PerDataAccountBaisc
,
IPerData
>(
m
=>
m
));
//
perSheet.PerData = perBasicList?.ConvertAll(new Converter<PerDataAccountBaisc, IPerData>(m => m));
}
//
}
sheetList
.
Add
(
perSheet
);
//
sheetList.Add(perSheet);
}
//
}
return
sheetList
;
//
return sheetList;
}
//
}
/// <summary>
//
/// <summary>
/// 获取sheet及列头
//
/// 获取sheet及列头
/// </summary>
//
/// </summary>
/// <param name="path"></param>
//
/// <param name="path"></param>
/// <returns></returns>
//
/// <returns></returns>
private
List
<
PerSheet
>
GetFileData
(
string
path
)
//
private List<PerSheet> GetFileData(string path)
{
//
{
if
(!
FileHelper
.
IsExistFile
(
path
))
//
if (!FileHelper.IsExistFile(path))
throw
new
PerformanceException
(
$"
{
path
}
文件不存在"
);
//
throw new PerformanceException($"{path}文件不存在");
List
<
PerSheet
>
sheetList
=
new
List
<
PerSheet
>();
//
List<PerSheet> sheetList = new List<PerSheet>();
FileStream
fs
=
null
;
//
FileStream fs = null;
IWorkbook
workbook
=
null
;
//
IWorkbook workbook = null;
try
//
try
{
//
{
fs
=
new
FileStream
(
path
,
FileMode
.
Open
,
FileAccess
.
Read
);
//
fs = new FileStream(path, FileMode.Open, FileAccess.Read);
var
version
=
FileHelper
.
GetExtension
(
path
)
==
".xlsx"
?
ExcelVersion
.
xlsx
:
ExcelVersion
.
xls
;
//
var version = FileHelper.GetExtension(path) == ".xlsx" ? ExcelVersion.xlsx : ExcelVersion.xls;
workbook
=
(
version
==
ExcelVersion
.
xlsx
)
?
(
IWorkbook
)(
new
XSSFWorkbook
(
fs
))
:
(
IWorkbook
)(
new
HSSFWorkbook
(
fs
));
//
workbook = (version == ExcelVersion.xlsx) ? (IWorkbook)(new XSSFWorkbook(fs)) : (IWorkbook)(new HSSFWorkbook(fs));
for
(
int
i
=
0
;
i
<
workbook
.
NumberOfSheets
;
i
++)
//
for (int i = 0; i < workbook.NumberOfSheets; i++)
{
//
{
var
sheet
=
workbook
.
GetSheetAt
(
i
);
//
var sheet = workbook.GetSheetAt(i);
var
sheetType
=
perSheetService
.
GetSheetType
(
sheet
.
SheetName
);
//
var sheetType = perSheetService.GetSheetType(sheet.SheetName);
if
(
SheetType
.
Unidentifiable
!=
sheetType
)
//
if (SheetType.Unidentifiable != sheetType)
{
//
{
var
sheetRead
=
PerSheetDataFactory
.
GetDataRead
(
sheetType
);
//
var sheetRead = PerSheetDataFactory.GetDataRead(sheetType);
var
perHeader
=
perHeaderService
.
GetPerHeader
(
sheet
,
sheetRead
.
Point
);
//
var perHeader = perHeaderService.GetPerHeader(sheet, sheetRead.Point);
PerSheet
perSheet
=
new
PerSheet
()
//
PerSheet perSheet = new PerSheet()
{
//
{
SheetName
=
sheet
.
SheetName
,
//
SheetName = sheet.SheetName,
SheetType
=
sheetType
,
//
SheetType = sheetType,
ModuleName
=
EnumHelper
.
GetDescription
(
sheetType
),
//
ModuleName = EnumHelper.GetDescription(sheetType),
PerHeader
=
perHeader
//
PerHeader = perHeader
};
//
};
if
(
SheetType
.
Employee
==
sheetType
)
//
if (SheetType.Employee == sheetType)
{
//
{
var
headerReverse
=
perHeaderService
.
GetPerHeaderReverse
(
perHeader
);
//
var headerReverse = perHeaderService.GetPerHeaderReverse(perHeader);
perSheet
.
PerData
=
sheetRead
.
ReadData
(
sheet
,
headerReverse
);
//
perSheet.PerData = sheetRead.ReadData(sheet, headerReverse);
}
//
}
if
(
SheetType
.
AccountBasic
==
sheetType
)
//
if (SheetType.AccountBasic == sheetType)
{
//
{
var
headerReverse
=
perHeaderService
.
GetPerHeaderReverse
(
perHeader
);
//
var headerReverse = perHeaderService.GetPerHeaderReverse(perHeader);
perSheet
.
PerData
=
sheetRead
.
ReadData
(
sheet
,
headerReverse
);
//
perSheet.PerData = sheetRead.ReadData(sheet, headerReverse);
}
//
}
sheetList
.
Add
(
perSheet
);
//
sheetList.Add(perSheet);
}
//
}
}
//
}
}
//
}
catch
(
Exception
ex
)
//
catch (Exception ex)
{
//
{
throw
ex
;
//
throw ex;
}
//
}
finally
//
finally
{
//
{
workbook
.
Close
();
//
workbook.Close();
fs
.
Close
();
//
fs.Close();
fs
.
Dispose
();
//
fs.Dispose();
}
//
}
return
sheetList
;
//
return sheetList;
}
//
}
#
region
校验数据格式
//
#region 校验数据格式
/// <summary>
//
/// <summary>
/// 校验数据格式,并转换
//
/// 校验数据格式,并转换
/// </summary>
//
/// </summary>
/// <param name="obj"></param>
//
/// <param name="obj"></param>
/// <returns></returns>
//
/// <returns></returns>
public
dynamic
Verify
(
string
obj
)
//
public dynamic Verify(string obj)
{
//
{
try
//
try
{
//
{
//判断值是否为double类型
//
//判断值是否为double类型
if
(!
string
.
IsNullOrEmpty
(
obj
)
&&
Regex
.
Match
(
obj
.
Trim
(),
@"([1-9]\d*\.?\d*)|(0\.\d*[1-9]?\d*)|0"
).
ToString
()
==
obj
.
Trim
())
//
if (!string.IsNullOrEmpty(obj) && Regex.Match(obj.Trim(), @"([1-9]\d*\.?\d*)|(0\.\d*[1-9]?\d*)|0").ToString() == obj.Trim())
return
ConvertHelper
.
To
<
double
>(
obj
);
//
return ConvertHelper.To<double>(obj);
//判断值是否为日期格式
//
//判断值是否为日期格式
else
if
(!
string
.
IsNullOrEmpty
(
obj
)
&&
Regex
.
Match
(
obj
.
Trim
(),
@"(19|20)\d{2}(-|/)[01]?\d(-|/)[0123]?\d( [012]?\d\:\d{2}\:\d{2})?"
).
ToString
()
==
obj
.
Trim
())
//
else if (!string.IsNullOrEmpty(obj) && Regex.Match(obj.Trim(), @"(19|20)\d{2}(-|/)[01]?\d(-|/)[0123]?\d( [012]?\d\:\d{2}\:\d{2})?").ToString() == obj.Trim())
return
ConvertHelper
.
To
<
DateTime
>(
obj
).
ToString
(
"yyyy/M/d"
);
//
return ConvertHelper.To<DateTime>(obj).ToString("yyyy/M/d");
else
//
else
return
obj
;
//
return obj;
}
//
}
catch
//
catch
{
//
{
return
obj
;
//
return obj;
}
//
}
}
//
}
#
endregion
//
#endregion
#
region
获取列头
//
#region 获取列头
/// <summary>
//
/// <summary>
/// 获取列头
//
/// 获取列头
/// </summary>
//
/// </summary>
/// <param name="sheetType">sheet页类型</param>
//
/// <param name="sheetType">sheet页类型</param>
/// <returns></returns>
//
/// <returns></returns>
public
List
<
PerHeader
>
GetHeader
(
SheetType
sheetType
)
//
public List<PerHeader> GetHeader(SheetType sheetType)
{
//
{
List
<
PerHeader
>
header
=
new
List
<
PerHeader
>();
//
List<PerHeader> header = new List<PerHeader>();
if
(
SheetType
.
Employee
==
sheetType
)
//
if (SheetType.Employee == sheetType)
{
//
{
header
=
new
List
<
PerHeader
>
//
header = new List<PerHeader>
{
//
{
new
PerHeader
{
CellValue
=
"核算单元分类"
,
//列名
//
new PerHeader { CellValue = "核算单元分类", //列名
MergeCell
=
1
,
//单元格占据的列数
//
MergeCell = 1, //单元格占据的列数
MergeRow
=
1
,
//单元格占据的行数
//
MergeRow = 1, //单元格占据的行数
PointCell
=
0
,
//单元格列
//
PointCell = 0, //单元格列
PointRow
=
1
//单元格行
//
PointRow = 1 //单元格行
},
//
},
new
PerHeader
{
CellValue
=
"核算单元"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
1
,
PointRow
=
1
},
//
new PerHeader { CellValue = "核算单元", MergeCell = 1, MergeRow = 1, PointCell = 1, PointRow = 1 },
new
PerHeader
{
CellValue
=
"绩效基数核算参考对象"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
2
,
PointRow
=
1
},
//
new PerHeader { CellValue = "绩效基数核算参考对象", MergeCell = 1, MergeRow = 1, PointCell = 2, PointRow = 1 },
new
PerHeader
{
CellValue
=
"绩效基数核算系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
3
,
PointRow
=
1
},
//
new PerHeader { CellValue = "绩效基数核算系数", MergeCell = 1, MergeRow = 1, PointCell = 3, PointRow = 1 },
new
PerHeader
{
CellValue
=
"医生姓名"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
4
,
PointRow
=
1
},
//
new PerHeader { CellValue = "医生姓名", MergeCell = 1, MergeRow = 1, PointCell = 4, PointRow = 1 },
new
PerHeader
{
CellValue
=
"职称"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
5
,
PointRow
=
1
},
//
new PerHeader { CellValue = "职称", MergeCell = 1, MergeRow = 1, PointCell = 5, PointRow = 1 },
new
PerHeader
{
CellValue
=
"岗位系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
6
,
PointRow
=
1
},
//
new PerHeader { CellValue = "岗位系数", MergeCell = 1, MergeRow = 1, PointCell = 6, PointRow = 1 },
new
PerHeader
{
CellValue
=
"参加工作时间"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
7
,
PointRow
=
1
},
//
new PerHeader { CellValue = "参加工作时间", MergeCell = 1, MergeRow = 1, PointCell = 7, PointRow = 1 },
new
PerHeader
{
CellValue
=
"考核得分率"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
8
,
PointRow
=
1
},
//
new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 8, PointRow = 1 },
new
PerHeader
{
CellValue
=
"出勤率"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
9
,
PointRow
=
1
},
//
new PerHeader { CellValue = "出勤率", MergeCell = 1, MergeRow = 1, PointCell = 9, PointRow = 1 },
new
PerHeader
{
CellValue
=
"核算单元医生数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
10
,
PointRow
=
1
},
//
new PerHeader { CellValue = "核算单元医生数", MergeCell = 1, MergeRow = 1, PointCell = 10, PointRow = 1 },
new
PerHeader
{
CellValue
=
"工作量绩效"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
11
,
PointRow
=
1
},
//
new PerHeader { CellValue = "工作量绩效", MergeCell = 1, MergeRow = 1, PointCell = 11, PointRow = 1 },
new
PerHeader
{
CellValue
=
"其他绩效"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
12
,
PointRow
=
1
},
//
new PerHeader { CellValue = "其他绩效", MergeCell = 1, MergeRow = 1, PointCell = 12, PointRow = 1 },
new
PerHeader
{
CellValue
=
"医院奖罚"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
13
,
PointRow
=
1
},
//
new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 13, PointRow = 1 },
new
PerHeader
{
CellValue
=
"调节系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
14
,
PointRow
=
1
},
//
new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 14, PointRow = 1 },
new
PerHeader
{
CellValue
=
"发放系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
15
,
PointRow
=
1
},
//
new PerHeader { CellValue = "发放系数", MergeCell = 1, MergeRow = 1, PointCell = 15, PointRow = 1 },
};
//
};
}
//
}
else
if
(
SheetType
.
AccountBasic
==
sheetType
)
//
else if (SheetType.AccountBasic == sheetType)
{
//
{
header
=
new
List
<
PerHeader
>
//
header = new List<PerHeader>
{
//
{
new
PerHeader
{
CellValue
=
"核算单元(医生组)"
,
MergeCell
=
1
,
MergeRow
=
2
,
PointCell
=
0
,
PointRow
=
1
},
//
new PerHeader { CellValue = "核算单元(医生组)", MergeCell = 1, MergeRow = 2, PointCell = 0, PointRow = 1 },
new
PerHeader
{
CellValue
=
"核算单元(护理组)"
,
MergeCell
=
1
,
MergeRow
=
2
,
PointCell
=
1
,
PointRow
=
1
},
//
new PerHeader { CellValue = "核算单元(护理组)", MergeCell = 1, MergeRow = 2, PointCell = 1, PointRow = 1 },
new
PerHeader
{
CellValue
=
"医生组"
,
MergeCell
=
8
,
MergeRow
=
1
,
PointCell
=
2
,
PointRow
=
1
,
//
new PerHeader { CellValue = "医生组", MergeCell = 8, MergeRow = 1, PointCell = 2, PointRow = 1,
Children
=
new
List
<
PerHeader
>{
//
Children = new List<PerHeader>{
new
PerHeader
{
CellValue
=
"核算单元医生数量"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
2
,
PointRow
=
2
},
//
new PerHeader { CellValue = "核算单元医生数量", MergeCell = 1, MergeRow = 1, PointCell = 2, PointRow = 2 },
new
PerHeader
{
CellValue
=
"基础系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
3
,
PointRow
=
2
},
//
new PerHeader { CellValue = "基础系数", MergeCell = 1, MergeRow = 1, PointCell = 3, PointRow = 2 },
new
PerHeader
{
CellValue
=
"倾斜系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
4
,
PointRow
=
2
},
//
new PerHeader { CellValue = "倾斜系数", MergeCell = 1, MergeRow = 1, PointCell = 4, PointRow = 2 },
new
PerHeader
{
CellValue
=
"其他绩效1"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
5
,
PointRow
=
2
},
//
new PerHeader { CellValue = "其他绩效1", MergeCell = 1, MergeRow = 1, PointCell = 5, PointRow = 2 },
new
PerHeader
{
CellValue
=
"考核得分率"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
6
,
PointRow
=
2
},
//
new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 6, PointRow = 2 },
new
PerHeader
{
CellValue
=
"医院奖罚"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
7
,
PointRow
=
2
},
//
new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 7, PointRow = 2 },
new
PerHeader
{
CellValue
=
"其他绩效2"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
8
,
PointRow
=
2
},
//
new PerHeader { CellValue = "其他绩效2", MergeCell = 1, MergeRow = 1, PointCell = 8, PointRow = 2 },
new
PerHeader
{
CellValue
=
"调节系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
9
,
PointRow
=
2
},
//
new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 9, PointRow = 2 },
}
//
}
},
//
},
new
PerHeader
{
CellValue
=
"护理组"
,
MergeCell
=
8
,
MergeRow
=
1
,
PointCell
=
3
,
PointRow
=
1
,
//
new PerHeader { CellValue = "护理组", MergeCell = 8, MergeRow = 1, PointCell = 3, PointRow = 1,
Children
=
new
List
<
PerHeader
>{
//
Children = new List<PerHeader>{
new
PerHeader
{
CellValue
=
"核算单元护士数量"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
10
,
PointRow
=
2
},
//
new PerHeader { CellValue = "核算单元护士数量", MergeCell = 1, MergeRow = 1, PointCell = 10, PointRow = 2 },
new
PerHeader
{
CellValue
=
"基础系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
11
,
PointRow
=
2
},
//
new PerHeader { CellValue = "基础系数", MergeCell = 1, MergeRow = 1, PointCell = 11, PointRow = 2 },
new
PerHeader
{
CellValue
=
"倾斜系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
12
,
PointRow
=
2
},
//
new PerHeader { CellValue = "倾斜系数", MergeCell = 1, MergeRow = 1, PointCell = 12, PointRow = 2 },
new
PerHeader
{
CellValue
=
"其他绩效1"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
13
,
PointRow
=
2
},
//
new PerHeader { CellValue = "其他绩效1", MergeCell = 1, MergeRow = 1, PointCell = 13, PointRow = 2 },
new
PerHeader
{
CellValue
=
"考核得分率"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
14
,
PointRow
=
2
},
//
new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 14, PointRow = 2 },
new
PerHeader
{
CellValue
=
"医院奖罚"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
15
,
PointRow
=
2
},
//
new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 15, PointRow = 2 },
new
PerHeader
{
CellValue
=
"其他绩效2"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
16
,
PointRow
=
2
},
//
new PerHeader { CellValue = "其他绩效2", MergeCell = 1, MergeRow = 1, PointCell = 16, PointRow = 2 },
new
PerHeader
{
CellValue
=
"调节系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
17
,
PointRow
=
2
},
//
new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 17, PointRow = 2 },
}
//
}
},
//
},
};
//
};
}
//
}
else
if
(
SheetType
.
SpecialUnit
==
sheetType
)
//
else if (SheetType.SpecialUnit == sheetType)
{
//
{
header
=
new
List
<
PerHeader
>
//
header = new List<PerHeader>
{
//
{
new
PerHeader
{
CellValue
=
"科室"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
0
,
PointRow
=
1
},
//
new PerHeader { CellValue = "科室", MergeCell = 1, MergeRow = 1, PointCell = 0, PointRow = 1 },
new
PerHeader
{
CellValue
=
"人数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
1
,
PointRow
=
1
},
//
new PerHeader { CellValue = "人数", MergeCell = 1, MergeRow = 1, PointCell = 1, PointRow = 1 },
new
PerHeader
{
CellValue
=
"量化指标"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
2
,
PointRow
=
1
},
//
new PerHeader { CellValue = "量化指标", MergeCell = 1, MergeRow = 1, PointCell = 2, PointRow = 1 },
new
PerHeader
{
CellValue
=
"数量"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
3
,
PointRow
=
1
},
//
new PerHeader { CellValue = "数量", MergeCell = 1, MergeRow = 1, PointCell = 3, PointRow = 1 },
new
PerHeader
{
CellValue
=
"量化指标绩效分值"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
4
,
PointRow
=
1
},
//
new PerHeader { CellValue = "量化指标绩效分值", MergeCell = 1, MergeRow = 1, PointCell = 4, PointRow = 1 },
new
PerHeader
{
CellValue
=
"考核得分率"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
5
,
PointRow
=
1
},
//
new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 5, PointRow = 1 },
new
PerHeader
{
CellValue
=
"医院奖罚"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
6
,
PointRow
=
1
},
//
new PerHeader { CellValue = "医院奖罚", MergeCell = 1, MergeRow = 1, PointCell = 6, PointRow = 1 },
new
PerHeader
{
CellValue
=
"考核得分率"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
7
,
PointRow
=
1
},
//
new PerHeader { CellValue = "考核得分率", MergeCell = 1, MergeRow = 1, PointCell = 7, PointRow = 1 },
new
PerHeader
{
CellValue
=
"调节系数"
,
MergeCell
=
1
,
MergeRow
=
1
,
PointCell
=
8
,
PointRow
=
1
},
//
new PerHeader { CellValue = "调节系数", MergeCell = 1, MergeRow = 1, PointCell = 8, PointRow = 1 },
};
//
};
}
//
}
return
header
;
//
return header;
}
//
}
#
endregion
//
#endregion
}
//
}
}
//
}
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