Commit 0bcf471a by lcx

抽取相关修改

parent 04817020
...@@ -17,11 +17,11 @@ namespace Performance.Api.Controllers ...@@ -17,11 +17,11 @@ namespace Performance.Api.Controllers
[ApiController] [ApiController]
public class ExConfigController : Controller public class ExConfigController : Controller
{ {
private readonly ILogger<ModExtractController> logger; private readonly ILogger<ExConfigController> logger;
private ExConfigService configService; private ExConfigService configService;
private WebapiUrl url; private WebapiUrl url;
public ExConfigController( public ExConfigController(
ILogger<ModExtractController> logger, ILogger<ExConfigController> logger,
ExConfigService configService, ExConfigService configService,
IOptions<WebapiUrl> url) IOptions<WebapiUrl> url)
{ {
......
using FluentValidation.AspNetCore; //using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc; //using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; //using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; //using Microsoft.Extensions.Options;
using Performance.DtoModels; //using Performance.DtoModels;
using Performance.DtoModels.AppSettings; //using Performance.DtoModels.AppSettings;
using Performance.Infrastructure; //using Performance.Infrastructure;
using Performance.Services; //using Performance.Services;
using System; //using System;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Linq; //using System.Linq;
using System.Threading.Tasks; //using System.Threading.Tasks;
namespace Performance.Api.Controllers //namespace Performance.Api.Controllers
{ //{
[Route("api/[controller]")] // [Route("api/[controller]")]
public class ModExtractController : Controller // public class ModExtractController : Controller
{ // {
private readonly ILogger<ModExtractController> logger; // private readonly ILogger<ModExtractController> logger;
private ModExtractService modExtractService; // private ModExtractService modExtractService;
private WebapiUrl url; // private WebapiUrl url;
public ModExtractController( // public ModExtractController(
ILogger<ModExtractController> logger, // ILogger<ModExtractController> logger,
ModExtractService modExtractService, // ModExtractService modExtractService,
IOptions<WebapiUrl> url) // IOptions<WebapiUrl> url)
{ // {
this.logger = logger; // this.logger = logger;
this.modExtractService = modExtractService; // this.modExtractService = modExtractService;
this.url = url.Value; // this.url = url.Value;
} // }
/// <summary> // /// <summary>
/// 绩效数据抽取模板 // /// 绩效数据抽取模板
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("scheme")] // [Route("scheme")]
[HttpPost] // [HttpPost]
public ApiResponse Extract([CustomizeValidator(RuleSet = "Query"), FromBody] ModModuleRequest request) // public ApiResponse Extract([CustomizeValidator(RuleSet = "Query"), FromBody] ModModuleRequest request)
{ // {
if (request.HospitalId == null || request.HospitalId.Value == 0) // if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!"); // return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!");
if (request.ExecuteType == null || !request.ExecuteType.Any()) // if (request.ExecuteType == null || !request.ExecuteType.Any())
return new ApiResponse(ResponseType.ParameterError, "ExecuteType 不存在,请重新选择!"); // return new ApiResponse(ResponseType.ParameterError, "ExecuteType 不存在,请重新选择!");
var list = modExtractService.ExtractScheme(request.HospitalId.Value, request.ExecuteType); // var list = modExtractService.ExtractScheme(request.HospitalId.Value, request.ExecuteType);
return new ApiResponse(ResponseType.OK, list); // return new ApiResponse(ResponseType.OK, list);
} // }
/// <summary> // /// <summary>
/// 费用类型 // /// 费用类型
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("type")] // [Route("type")]
[HttpPost] // [HttpPost]
public ApiResponse FeeType() // public ApiResponse FeeType()
{ // {
var list = modExtractService.FeeType(); // var list = modExtractService.FeeType();
return new ApiResponse(ResponseType.OK, list); // return new ApiResponse(ResponseType.OK, list);
} // }
/// <summary> // /// <summary>
/// 绩效考核项费用来源 // /// 绩效考核项费用来源
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("source")] // [Route("source")]
[HttpPost] // [HttpPost]
public ApiResponse FeeSource([FromBody] ModModuleRequest request) // public ApiResponse FeeSource([FromBody] ModModuleRequest request)
{ // {
if (request.HospitalId == null || request.HospitalId.Value == 0) // if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
string retJson = HttpHelper.HttpPost(url.HttpPost + "/modextract/source", JsonHelper.Serialize(request), true); // string retJson = HttpHelper.HttpPost(url.HttpPost + "/modextract/source", JsonHelper.Serialize(request), true);
var ret = JsonHelper.Deserialize<ApiResponse>(retJson); // var ret = JsonHelper.Deserialize<ApiResponse>(retJson);
return new ApiResponse(ResponseType.OK, ret.Data); // return new ApiResponse(ResponseType.OK, ret.Data);
} // }
/// <summary> // /// <summary>
/// 费用字典新增 // /// 费用字典新增
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("addmodule")] // [Route("addmodule")]
[HttpPost] // [HttpPost]
public ApiResponse AddModule([CustomizeValidator(RuleSet = "Add"), FromBody] ModModuleRequest request) // public ApiResponse AddModule([CustomizeValidator(RuleSet = "Add"), FromBody] ModModuleRequest request)
{ // {
if (request.HospitalId == null || request.HospitalId.Value == 0) // if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
var entity = modExtractService.AddModule(request); // var entity = modExtractService.AddModule(request);
return new ApiResponse(ResponseType.OK, "添加成功!", entity); // return new ApiResponse(ResponseType.OK, "添加成功!", entity);
} // }
/// <summary> // /// <summary>
/// 费用字典(绩效模板) // /// 费用字典(绩效模板)
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("modules")] // [Route("modules")]
[HttpPost] // [HttpPost]
public ApiResponse Module([CustomizeValidator(RuleSet = "Query"), FromBody] ModModuleRequest request) // public ApiResponse Module([CustomizeValidator(RuleSet = "Query"), FromBody] ModModuleRequest request)
{ // {
if (request.HospitalId == null || request.HospitalId.Value == 0) // if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!"); // return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!");
var list = modExtractService.Module(request.HospitalId.Value); // var list = modExtractService.Module(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, list); // return new ApiResponse(ResponseType.OK, list);
} // }
/// <summary> // /// <summary>
/// 绩效模板修改 // /// 绩效模板修改
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("editmodule")] // [Route("editmodule")]
[HttpPost] // [HttpPost]
public ApiResponse EditModule([FromBody] ModModuleRequest request) // public ApiResponse EditModule([FromBody] ModModuleRequest request)
{ // {
if (request.ModuleId == null || request.ModuleId == 0) // if (request.ModuleId == null || request.ModuleId == 0)
return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!");
var entity = modExtractService.EditModule(request); // var entity = modExtractService.EditModule(request);
return new ApiResponse(ResponseType.OK, "修改成功!", entity); // return new ApiResponse(ResponseType.OK, "修改成功!", entity);
} // }
/// <summary> // /// <summary>
/// 绩效模板删除 // /// 绩效模板删除
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("deletemodule")] // [Route("deletemodule")]
[HttpPost] // [HttpPost]
public ApiResponse DelModule([FromBody] ModModuleRequest request) // public ApiResponse DelModule([FromBody] ModModuleRequest request)
{ // {
if (request.ModuleId == null || request.ModuleId == 0) // if (request.ModuleId == null || request.ModuleId == 0)
return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!");
modExtractService.DelModule(request.ModuleId.Value); // modExtractService.DelModule(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!"); // return new ApiResponse(ResponseType.OK, "删除成功!");
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项新增 // /// 绩效收入模板配置项新增
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("additem")] // [Route("additem")]
[HttpPost] // [HttpPost]
public ApiResponse AddItem([FromBody] ItemListRequest request) // public ApiResponse AddItem([FromBody] ItemListRequest request)
{ // {
if (request.ModuleId == null && request.ModuleId == 0) // if (request.ModuleId == null && request.ModuleId == 0)
return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!");
if (request.Items == null && !request.Items.Any()) // if (request.Items == null && !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "Items 未发现任添加何项!"); // return new ApiResponse(ResponseType.ParameterError, "Items 未发现任添加何项!");
var list = modExtractService.AddItem(request); // var list = modExtractService.AddItem(request);
return new ApiResponse(ResponseType.OK, "添加成功!", list); // return new ApiResponse(ResponseType.OK, "添加成功!", list);
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项列表 // /// 绩效收入模板配置项列表
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("items")] // [Route("items")]
[HttpPost] // [HttpPost]
public ApiResponse Items([FromBody] ModItemRequest request) // public ApiResponse Items([FromBody] ModItemRequest request)
{ // {
logger.LogInformation($"绩效收入模板配置项列表 : 请求地址 {url.HttpPost}/modextract/items"); // logger.LogInformation($"绩效收入模板配置项列表 : 请求地址 {url.HttpPost}/modextract/items");
HttpHelper.HttpPost(url.HttpPost + "/modextract/items", JsonHelper.Serialize(request), true); // HttpHelper.HttpPost(url.HttpPost + "/modextract/items", JsonHelper.Serialize(request), true);
logger.LogInformation($"绩效收入模板配置项列表在{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss完成请求")}"); // logger.LogInformation($"绩效收入模板配置项列表在{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss完成请求")}");
var list = modExtractService.Items(request.ModuleId.Value); // var list = modExtractService.Items(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK, list); // return new ApiResponse(ResponseType.OK, list);
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项修改 // /// 绩效收入模板配置项修改
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("edititem")] // [Route("edititem")]
[HttpPost] // [HttpPost]
public ApiResponse EditItem([FromBody] ItemListRequest request) // public ApiResponse EditItem([FromBody] ItemListRequest request)
{ // {
if (request.Items == null || !request.Items.Any()) // if (request.Items == null || !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "请选择需要修改的数据!"); // return new ApiResponse(ResponseType.ParameterError, "请选择需要修改的数据!");
var entity = 0;//= modExtractService.EditItem(request.Items[0]); // var entity = 0;//= modExtractService.EditItem(request.Items[0]);
return new ApiResponse(ResponseType.OK, "修改成功!", entity); // return new ApiResponse(ResponseType.OK, "修改成功!", entity);
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项删除 // /// 绩效收入模板配置项删除
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("deleteitem")] // [Route("deleteitem")]
[HttpPost] // [HttpPost]
public ApiResponse DelItem([FromBody] ModItemRequest request) // public ApiResponse DelItem([FromBody] ModItemRequest request)
{ // {
if (request.ItemId == null && request.ItemId == 0) // if (request.ItemId == null && request.ItemId == 0)
return new ApiResponse(ResponseType.ParameterError, "ItemId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "ItemId 参数错误!");
modExtractService.DelItem(request.ItemId.Value); // modExtractService.DelItem(request.ItemId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!"); // return new ApiResponse(ResponseType.OK, "删除成功!");
} // }
#region 特殊科室模板 // #region 特殊科室模板
/// <summary> // /// <summary>
/// 特殊科室模板配置项新增 // /// 特殊科室模板配置项新增
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("addspecial")] // [Route("addspecial")]
[HttpPost] // [HttpPost]
public ApiResponse AddSpecial([FromBody] SpecialListRequest request) // public ApiResponse AddSpecial([FromBody] SpecialListRequest request)
{ // {
if (request.HospitalId == 0) // if (request.HospitalId == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
if (request.Items == null && !request.Items.Any()) // if (request.Items == null && !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "Items 未发现任添加何项!"); // return new ApiResponse(ResponseType.ParameterError, "Items 未发现任添加何项!");
var list = modExtractService.AddSpecial(request); // var list = modExtractService.AddSpecial(request);
return new ApiResponse(ResponseType.OK, "添加成功!", list); // return new ApiResponse(ResponseType.OK, "添加成功!", list);
} // }
/// <summary> // /// <summary>
/// 特殊科室模板配置项列表 // /// 特殊科室模板配置项列表
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("specials")] // [Route("specials")]
[HttpPost] // [HttpPost]
public ApiResponse Specials([FromBody] ModSpecialRequest request) // public ApiResponse Specials([FromBody] ModSpecialRequest request)
{ // {
var list = modExtractService.Special(request.HospitalId.Value); // var list = modExtractService.Special(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, list); // return new ApiResponse(ResponseType.OK, list);
} // }
/// <summary> // /// <summary>
/// 特殊科室模板配置项修改 // /// 特殊科室模板配置项修改
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("editspecial")] // [Route("editspecial")]
[HttpPost] // [HttpPost]
public ApiResponse EditSpecial([FromBody] SpecialListRequest request) // public ApiResponse EditSpecial([FromBody] SpecialListRequest request)
{ // {
if (request.Items == null || !request.Items.Any()) // if (request.Items == null || !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "请选择需要修改的数据!"); // return new ApiResponse(ResponseType.ParameterError, "请选择需要修改的数据!");
var entity = modExtractService.EditSpecial(request.Items[0]); // var entity = modExtractService.EditSpecial(request.Items[0]);
return new ApiResponse(ResponseType.OK, "修改成功!", entity); // return new ApiResponse(ResponseType.OK, "修改成功!", entity);
} // }
/// <summary> // /// <summary>
/// 特殊科室模板配置项删除 // /// 特殊科室模板配置项删除
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("deletespecial")] // [Route("deletespecial")]
[HttpPost] // [HttpPost]
public ApiResponse DelSpecial([FromBody] ModSpecialRequest request) // public ApiResponse DelSpecial([FromBody] ModSpecialRequest request)
{ // {
if (request.SpecialId == null && request.SpecialId == 0) // if (request.SpecialId == null && request.SpecialId == 0)
return new ApiResponse(ResponseType.ParameterError, "SpecialId 参数错误!"); // return new ApiResponse(ResponseType.ParameterError, "SpecialId 参数错误!");
modExtractService.DelSpecial(request.SpecialId.Value); // modExtractService.DelSpecial(request.SpecialId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!"); // return new ApiResponse(ResponseType.OK, "删除成功!");
} // }
/// <summary> // /// <summary>
/// 特殊科室人均 // /// 特殊科室人均
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("perfortype")] // [Route("perfortype")]
[HttpPost] // [HttpPost]
public ApiResponse PerforType() // public ApiResponse PerforType()
{ // {
var list = modExtractService.PerforType(); // var list = modExtractService.PerforType();
return new ApiResponse(ResponseType.OK, list); // return new ApiResponse(ResponseType.OK, list);
} // }
#endregion // #endregion
/// <summary> // /// <summary>
/// 数据配置项 // /// 数据配置项
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
[Route("config")] // [Route("config")]
[HttpPost] // [HttpPost]
public ApiResponse Config([FromBody] ModModuleRequest request) // public ApiResponse Config([FromBody] ModModuleRequest request)
{ // {
if (request.HospitalId == null || request.HospitalId.Value == 0) // if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!"); // return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!");
var configs = modExtractService.GetHospitalconfigs(request.HospitalId.Value); // var configs = modExtractService.GetHospitalconfigs(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, "绩效抽取数据地址!", configs); // return new ApiResponse(ResponseType.OK, "绩效抽取数据地址!", configs);
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
...@@ -24,8 +24,7 @@ namespace Performance.Api.Controllers ...@@ -24,8 +24,7 @@ namespace Performance.Api.Controllers
public class TemplateController : Controller public class TemplateController : Controller
{ {
private readonly TemplateService templateService; private readonly TemplateService templateService;
private readonly ExtractService extractService; private readonly DFExtractService extractService;
private readonly NewExtractService newExtractService;
private HospitalService hospitalService; private HospitalService hospitalService;
private IHostingEnvironment env; private IHostingEnvironment env;
private ClaimService claim; private ClaimService claim;
...@@ -36,8 +35,7 @@ public class TemplateController : Controller ...@@ -36,8 +35,7 @@ public class TemplateController : Controller
public TemplateController(TemplateService templateService, public TemplateController(TemplateService templateService,
HospitalService hospitalService, HospitalService hospitalService,
ExtractService extractService, DFExtractService extractService,
NewExtractService newExtractService,
IHostingEnvironment env, IHostingEnvironment env,
ClaimService claim, ClaimService claim,
IOptions<Application> options, IOptions<Application> options,
...@@ -47,7 +45,6 @@ public class TemplateController : Controller ...@@ -47,7 +45,6 @@ public class TemplateController : Controller
{ {
this.templateService = templateService; this.templateService = templateService;
this.extractService = extractService; this.extractService = extractService;
this.newExtractService = newExtractService;
this.hospitalService = hospitalService; this.hospitalService = hospitalService;
this.env = env; this.env = env;
this.claim = claim; this.claim = claim;
...@@ -145,66 +142,66 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -145,66 +142,66 @@ public ApiResponse Import([FromForm] IFormCollection form)
} }
#region 老版提取 #region 老版提取
/// <summary> ///// <summary>
/// 提取绩效数据 ///// 提取绩效数据
/// </summary> ///// </summary>
/// <param name="request"></param> ///// <param name="request"></param>
/// <returns></returns> ///// <returns></returns>
[Route("extractdata")] //[Route("extractdata")]
[HttpPost] //[HttpPost]
public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBody]AllotRequest request) //public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBody]AllotRequest request)
{ //{
try // try
{ // {
var allot = allotService.GetAllot(request.ID); // var allot = allotService.GetAllot(request.ID);
if (allot == null) // if (allot == null)
return new ApiResponse(ResponseType.Fail, "该绩效无效"); // return new ApiResponse(ResponseType.Fail, "该绩效无效");
allot.IsExtracting = allot.IsExtracting ?? 0; // allot.IsExtracting = allot.IsExtracting ?? 0;
if (allot.IsExtracting == 1) // if (allot.IsExtracting == 1)
return new ApiResponse(ResponseType.Fail, "正在提取数据,请稍等。"); // return new ApiResponse(ResponseType.Fail, "正在提取数据,请稍等。");
var hospital = hospitalService.GetHopital(request.HospitalId.Value); // var hospital = hospitalService.GetHopital(request.HospitalId.Value);
if (hospital == null) // if (hospital == null)
return new ApiResponse(ResponseType.Fail, "医院无效"); // return new ApiResponse(ResponseType.Fail, "医院无效");
var email = claim.GetUserClaim(JwtClaimTypes.Mail); // var email = claim.GetUserClaim(JwtClaimTypes.Mail);
allot.IsExtracting = 1; // allot.IsExtracting = 1;
allotService.Update(allot); // allotService.Update(allot);
string path = extractService.GetFilepath(hospital.ID, out int type); // string path = extractService.GetFilepath(hospital.ID, out int type);
if (!string.IsNullOrEmpty(path) && type != 0) // if (!string.IsNullOrEmpty(path) && type != 0)
{ // {
//发送请求,返回路径 // //发送请求,返回路径
string retJson = HttpHelper.HttpClient(url.ImportFirst + $"?type={type}&hospitalId={hospital.ID}&year={allot.Year}&month={allot.Month}", path); // string retJson = HttpHelper.HttpClient(url.ImportFirst + $"?type={type}&hospitalId={hospital.ID}&year={allot.Year}&month={allot.Month}", path);
var ret = JsonHelper.Deserialize<ApiResponse>(retJson); // var ret = JsonHelper.Deserialize<ApiResponse>(retJson);
if ((int)ret.State != 1) // if ((int)ret.State != 1)
return new ApiResponse(ResponseType.Fail, "首次模板地址无效!"); // return new ApiResponse(ResponseType.Fail, "首次模板地址无效!");
path = ret.Message; // path = ret.Message;
} // }
string param = JsonHelper.Serialize(new // string param = JsonHelper.Serialize(new
{ // {
id = request.ID, // id = request.ID,
hospitalId = hospital.ID, // hospitalId = hospital.ID,
mail = email, // mail = email,
path = path // path = path
}); // });
HttpHelper.HttpPostNoRequest(url.ExtractData, param, true); // HttpHelper.HttpPostNoRequest(url.ExtractData, param, true);
//extractService.ExtractData(request.ID, user.Mail, hospital); // //extractService.ExtractData(request.ID, user.Mail, hospital);
//BackgroundJob.Enqueue(() => extractService.ExtractData(request.ID, user.Mail, hospital)); // //BackgroundJob.Enqueue(() => extractService.ExtractData(request.ID, user.Mail, hospital));
return new ApiResponse(ResponseType.OK, "HIS绩效数据提取任务正在执行,稍后我们将以邮件的通知您!"); // return new ApiResponse(ResponseType.OK, "HIS绩效数据提取任务正在执行,稍后我们将以邮件的通知您!");
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
var allot = allotService.GetAllot(request.ID); // var allot = allotService.GetAllot(request.ID);
if (allot != null) // if (allot != null)
{ // {
allot.IsExtracting = 3; // allot.IsExtracting = 3;
allotService.Update(allot); // allotService.Update(allot);
} // }
throw ex; // throw ex;
} // }
} //}
#endregion #endregion
#region 新版提取 #region 新版提取
...@@ -223,7 +220,7 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody]ExtractRequest r ...@@ -223,7 +220,7 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody]ExtractRequest r
// 判断是那种抽取 // 判断是那种抽取
try try
{ {
string message = newExtractService.Judge(request.AllotId, request.HospitalId, request.UseScheme, out string filePath); string message = extractService.Judge(request.AllotId, request.HospitalId, request.UseScheme, out string filePath);
if (!string.IsNullOrEmpty(message)) if (!string.IsNullOrEmpty(message))
return new ApiResponse(ResponseType.Fail, message); return new ApiResponse(ResponseType.Fail, message);
......
...@@ -200,6 +200,13 @@ ...@@ -200,6 +200,13 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AllotController.UpdateAllotShowFormula(Performance.DtoModels.AllotRequest)">
<summary>
绩效详情计算公式显示/隐藏
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)"> <member name="M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)">
<summary> <summary>
预算管理查询(包含金额、占比) 预算管理查询(包含金额、占比)
...@@ -509,189 +516,196 @@ ...@@ -509,189 +516,196 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.GuaranteeController.Guarantee(Performance.DtoModels.GuaranteeRequest)"> <member name="M:Performance.Api.Controllers.EmployeeController.Audit(System.Int32)">
<summary> <summary>
保底绩效配置列表 人事科修改参数后提交
</summary> </summary>
<param name="request"></param> <param name="allotid"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.GuaranteeController.GuarantInsert(Performance.DtoModels.GuaranteeRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.Extract(Performance.DtoModels.ModModuleRequest)">
<summary> <summary>
新增保底绩效配置 绩效数据抽取模板
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.GuaranteeController.GuarantUpdate(Performance.DtoModels.GuaranteeRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.FeeType">
<summary> <summary>
修改保底绩效配置 费用类型
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.GuaranteeController.GuarantDelete(Performance.DtoModels.GuaranteeRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.FeeSource(Performance.DtoModels.ModModuleRequest)">
<summary> <summary>
删除保底绩效配置 绩效考核项费用来源
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.GuaranteeController.Accounting(Performance.DtoModels.GuaranteeRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.AddModule(Performance.DtoModels.ModModuleRequest)">
<summary> <summary>
医院核算单元 费用字典新增
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.GuaranteeController.UnitType"> <member name="M:Performance.Api.Controllers.ExConfigController.Module(Performance.DtoModels.ModModuleRequest)">
<summary> <summary>
医院核算单元 费用字典(绩效模板)
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.HospitalController.GetHospitalList"> <member name="M:Performance.Api.Controllers.ExConfigController.EditModule(Performance.DtoModels.ModModuleRequest)">
<summary> <summary>
获取当前登录用户管辖医院列表 绩效模板修改
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.HospitalController.Insert(Performance.DtoModels.HospitalRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.DelModule(Performance.DtoModels.ModModuleRequest)">
<summary> <summary>
新增医院 绩效模板删除
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.HospitalController.Update(Performance.DtoModels.HospitalRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.AddItem(Performance.DtoModels.ItemListRequest)">
<summary> <summary>
修改医院信息 绩效收入模板配置项新增
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.HospitalController.Delete(Performance.DtoModels.HospitalRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.Items(Performance.DtoModels.ModItemRequest)">
<summary> <summary>
删除医院 绩效收入模板配置项列表
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.HospitalController.Disabled(Performance.DtoModels.HospitalRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.EditItem(Performance.DtoModels.ItemListRequest)">
<summary> <summary>
启用/禁用医院 绩效收入模板配置项修改
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.MenuController.MenuList"> <member name="M:Performance.Api.Controllers.ExConfigController.DelItem(Performance.DtoModels.ModItemRequest)">
<summary> <summary>
设置用户管辖医院 绩效收入模板配置项删除
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.Extract(Performance.DtoModels.ModModuleRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.AddSpecial(Performance.DtoModels.SpecialListRequest)">
<summary> <summary>
绩效数据抽取模板 特殊科室模板配置项新增
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.FeeType"> <member name="M:Performance.Api.Controllers.ExConfigController.Specials(Performance.DtoModels.ModSpecialRequest)">
<summary> <summary>
费用类型 特殊科室模板配置项列表
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.FeeSource(Performance.DtoModels.ModModuleRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.EditSpecial(Performance.DtoModels.SpecialListRequest)">
<summary> <summary>
绩效考核项费用来源 特殊科室模板配置项修改
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.AddModule(Performance.DtoModels.ModModuleRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.DelSpecial(Performance.DtoModels.ModSpecialRequest)">
<summary> <summary>
费用字典新增 特殊科室模板配置项删除
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.Module(Performance.DtoModels.ModModuleRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.PerforType">
<summary> <summary>
费用字典(绩效模板) 特殊科室人均
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.EditModule(Performance.DtoModels.ModModuleRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.Config(Performance.DtoModels.ModModuleRequest)">
<summary> <summary>
绩效模板修改 数据配置项
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.DelModule(Performance.DtoModels.ModModuleRequest)"> <member name="M:Performance.Api.Controllers.GuaranteeController.Guarantee(Performance.DtoModels.GuaranteeRequest)">
<summary> <summary>
绩效模板删除 保底绩效配置列表
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.AddItem(Performance.DtoModels.ItemListRequest)"> <member name="M:Performance.Api.Controllers.GuaranteeController.GuarantInsert(Performance.DtoModels.GuaranteeRequest)">
<summary> <summary>
绩效收入模板配置项新增 新增保底绩效配置
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.Items(Performance.DtoModels.ModItemRequest)"> <member name="M:Performance.Api.Controllers.GuaranteeController.GuarantUpdate(Performance.DtoModels.GuaranteeRequest)">
<summary> <summary>
绩效收入模板配置项列表 修改保底绩效配置
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.EditItem(Performance.DtoModels.ItemListRequest)"> <member name="M:Performance.Api.Controllers.GuaranteeController.GuarantDelete(Performance.DtoModels.GuaranteeRequest)">
<summary> <summary>
绩效收入模板配置项修改 删除保底绩效配置
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.DelItem(Performance.DtoModels.ModItemRequest)"> <member name="M:Performance.Api.Controllers.GuaranteeController.Accounting(Performance.DtoModels.GuaranteeRequest)">
<summary> <summary>
绩效收入模板配置项删除 医院核算单元
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.AddSpecial(Performance.DtoModels.SpecialListRequest)"> <member name="M:Performance.Api.Controllers.GuaranteeController.UnitType">
<summary> <summary>
特殊科室模板配置项新增 医院核算单元
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.Specials(Performance.DtoModels.ModSpecialRequest)"> <member name="M:Performance.Api.Controllers.HospitalController.GetHospitalList">
<summary> <summary>
特殊科室模板配置项列表 获取当前登录用户管辖医院列表
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.EditSpecial(Performance.DtoModels.SpecialListRequest)"> <member name="M:Performance.Api.Controllers.HospitalController.Insert(Performance.DtoModels.HospitalRequest)">
<summary> <summary>
特殊科室模板配置项修改 新增医院
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.DelSpecial(Performance.DtoModels.ModSpecialRequest)"> <member name="M:Performance.Api.Controllers.HospitalController.Update(Performance.DtoModels.HospitalRequest)">
<summary> <summary>
特殊科室模板配置项删除 修改医院信息
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.PerforType"> <member name="M:Performance.Api.Controllers.HospitalController.Delete(Performance.DtoModels.HospitalRequest)">
<summary> <summary>
特殊科室人均 删除医院
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ModExtractController.Config(Performance.DtoModels.ModModuleRequest)"> <member name="M:Performance.Api.Controllers.HospitalController.Disabled(Performance.DtoModels.HospitalRequest)">
<summary> <summary>
数据配置项 启用/禁用医院
</summary> </summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.MenuList">
<summary>
设置用户管辖医院
</summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:Performance.Api.Controllers.ReportController"> <member name="T:Performance.Api.Controllers.ReportController">
...@@ -942,13 +956,6 @@ ...@@ -942,13 +956,6 @@
<param name="form"></param> <param name="form"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.TemplateController.ExtractData(Performance.DtoModels.AllotRequest)">
<summary>
提取绩效数据
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.TemplateController.NewExtractData(Performance.DtoModels.ExtractRequest)"> <member name="M:Performance.Api.Controllers.TemplateController.NewExtractData(Performance.DtoModels.ExtractRequest)">
<summary> <summary>
提取绩效数据 提取绩效数据
......
...@@ -67,6 +67,9 @@ ...@@ -67,6 +67,9 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_check"> <member name="P:Performance.EntityModels.PerformanceDbContext.cof_check">
<summary> 上传excel文件校验配置 </summary> <summary> 上传excel文件校验配置 </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_depttype">
<summary> 科室类型 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_director"> <member name="P:Performance.EntityModels.PerformanceDbContext.cof_director">
<summary> 规模绩效、效率绩效计算系数配置 </summary> <summary> 规模绩效、效率绩效计算系数配置 </summary>
</member> </member>
...@@ -103,6 +106,9 @@ ...@@ -103,6 +106,9 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_script"> <member name="P:Performance.EntityModels.PerformanceDbContext.ex_script">
<summary> </summary> <summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_special">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_type"> <member name="P:Performance.EntityModels.PerformanceDbContext.ex_type">
<summary> </summary> <summary> </summary>
</member> </member>
...@@ -136,18 +142,6 @@ ...@@ -136,18 +142,6 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_dic"> <member name="P:Performance.EntityModels.PerformanceDbContext.mod_dic">
<summary> 部分公共数据抽取SQL </summary> <summary> 部分公共数据抽取SQL </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_extract">
<summary> 医院数据提取脚本 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_item">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_module">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.mod_special">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_againallot"> <member name="P:Performance.EntityModels.PerformanceDbContext.per_againallot">
<summary> </summary> <summary> </summary>
</member> </member>
...@@ -960,6 +954,16 @@ ...@@ -960,6 +954,16 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ag_workload_type.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.ag_workload_type.UnitType">
<summary>
科室类型
</summary>
</member>
<member name="T:Performance.EntityModels.as_assess"> <member name="T:Performance.EntityModels.as_assess">
<summary> <summary>
考核类别 考核类别
...@@ -1145,6 +1149,31 @@ ...@@ -1145,6 +1149,31 @@
单元格列头名称 单元格列头名称
</summary> </summary>
</member> </member>
<member name="T:Performance.EntityModels.cof_depttype">
<summary>
科室类型
</summary>
</member>
<member name="P:Performance.EntityModels.cof_depttype.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_depttype.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_depttype.Charge">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.cof_depttype.ChargeType">
<summary>
可是分类
</summary>
</member>
<member name="T:Performance.EntityModels.cof_director"> <member name="T:Performance.EntityModels.cof_director">
<summary> <summary>
规模绩效、效率绩效计算系数配置 规模绩效、效率绩效计算系数配置
...@@ -1490,6 +1519,11 @@ ...@@ -1490,6 +1519,11 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ex_result.AllotId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.Department"> <member name="P:Performance.EntityModels.ex_result.Department">
<summary> <summary>
科室 科室
...@@ -1515,6 +1549,11 @@ ...@@ -1515,6 +1549,11 @@
数据库类型1、Sql Server 2、Orcale 数据库类型1、Sql Server 2、Orcale
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ex_result.ConfigId">
<summary>
数据库配置Id
</summary>
</member>
<member name="T:Performance.EntityModels.ex_script"> <member name="T:Performance.EntityModels.ex_script">
<summary> <summary>
...@@ -1545,6 +1584,51 @@ ...@@ -1545,6 +1584,51 @@
是否可用 1 可用 2 不可用 是否可用 1 可用 2 不可用
</summary> </summary>
</member> </member>
<member name="T:Performance.EntityModels.ex_special">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.Target">
<summary>
量化指标
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.TargetFactor">
<summary>
量化指标绩效分值
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.AdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.TypeId">
<summary>
抽取绩效值SQL
</summary>
</member>
<member name="P:Performance.EntityModels.ex_special.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="T:Performance.EntityModels.ex_type"> <member name="T:Performance.EntityModels.ex_type">
<summary> <summary>
...@@ -1820,6 +1904,16 @@ ...@@ -1820,6 +1904,16 @@
工作量倾斜系数 工作量倾斜系数
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.im_accountbasic.UpdateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.UpdateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.im_data"> <member name="T:Performance.EntityModels.im_data">
<summary> <summary>
...@@ -1905,6 +1999,16 @@ ...@@ -1905,6 +1999,16 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.im_data.UpdateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.UpdateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.im_employee"> <member name="T:Performance.EntityModels.im_employee">
<summary> <summary>
...@@ -2020,6 +2124,16 @@ ...@@ -2020,6 +2124,16 @@
发放系数 发放系数
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.im_employee.UpdateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.UpdateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.im_employee_clinic"> <member name="T:Performance.EntityModels.im_employee_clinic">
<summary> <summary>
...@@ -2140,6 +2254,16 @@ ...@@ -2140,6 +2254,16 @@
发放系数 发放系数
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.im_employee_clinic.UpdateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee_clinic.UpdateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.im_header"> <member name="T:Performance.EntityModels.im_header">
<summary> <summary>
...@@ -2205,6 +2329,16 @@ ...@@ -2205,6 +2329,16 @@
1 汇总 2原始数据 1 汇总 2原始数据
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.im_header.UpdateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.UpdateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.im_specialunit"> <member name="T:Performance.EntityModels.im_specialunit">
<summary> <summary>
特殊科室核算 特殊科室核算
...@@ -2275,6 +2409,16 @@ ...@@ -2275,6 +2409,16 @@
调节系数 调节系数
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.im_specialunit.UpdateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.UpdateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.log_check"> <member name="T:Performance.EntityModels.log_check">
<summary> <summary>
...@@ -2385,201 +2529,6 @@ ...@@ -2385,201 +2529,6 @@
</summary> </summary>
</member> </member>
<member name="T:Performance.EntityModels.mod_extract">
<summary>
医院数据提取脚本
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.EName">
<summary>
当前脚本提取内容名称
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.ExecuteScript">
<summary>
执行脚本
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.ExecuteType">
<summary>
当前脚本类型 1 收入整表 2 单项数据提取
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.SourceType">
<summary>
数据库来源类型 1 标准库 2 绩效库
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.Description">
<summary>
描述
</summary>
</member>
<member name="P:Performance.EntityModels.mod_extract.IsEnable">
<summary>
是否可用 1 可用 2 不可用
</summary>
</member>
<member name="T:Performance.EntityModels.mod_item">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ModuleId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ItemName">
<summary>
绩效考核项
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.FactorValue1">
<summary>
默认系数或医生系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.FactorValue2">
<summary>
护理系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.FactorValue3">
<summary>
医技系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ExtractId">
<summary>
抽取绩效值SQL
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.SelectionRange">
<summary>
用户选定抽取范围
</summary>
</member>
<member name="P:Performance.EntityModels.mod_item.ReadOnly">
<summary>
只读 0、否 1、是
</summary>
</member>
<member name="T:Performance.EntityModels.mod_module">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.SheetType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ModuleName">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.Description">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ExtractId">
<summary>
提取脚本ID
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.ReadOnly">
<summary>
只读 0、否 1、是
</summary>
</member>
<member name="P:Performance.EntityModels.mod_module.IsGenerated">
<summary>
是否生成Item 0、否 1、是
</summary>
</member>
<member name="T:Performance.EntityModels.mod_special">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.Target">
<summary>
量化指标
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.TargetFactor">
<summary>
量化指标绩效分值
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.AdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.ExtractId">
<summary>
抽取绩效值SQL
</summary>
</member>
<member name="P:Performance.EntityModels.mod_special.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="T:Performance.EntityModels.per_againallot"> <member name="T:Performance.EntityModels.per_againallot">
<summary> <summary>
...@@ -2702,7 +2651,7 @@ ...@@ -2702,7 +2651,7 @@
</member> </member>
<member name="P:Performance.EntityModels.per_allot.Generate"> <member name="P:Performance.EntityModels.per_allot.Generate">
<summary> <summary>
1、人事科提交重新生成 1、人事科提交重新生成 2、生成成功 3、原始数据修改
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.per_allot.ShowFormula"> <member name="P:Performance.EntityModels.per_allot.ShowFormula">
......
...@@ -21,6 +21,6 @@ public class SpecialListRequest ...@@ -21,6 +21,6 @@ public class SpecialListRequest
public int HospitalId { get; set; } public int HospitalId { get; set; }
/// <summary> 特殊考核项 </summary> /// <summary> 特殊考核项 </summary>
public List<mod_special> Items { get; set; } public List<ex_special> Items { get; set; }
} }
} }
...@@ -54,6 +54,8 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -54,6 +54,8 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<cof_again> cof_again { get; set; } public virtual DbSet<cof_again> cof_again { get; set; }
/// <summary> 上传excel文件校验配置 </summary> /// <summary> 上传excel文件校验配置 </summary>
public virtual DbSet<cof_check> cof_check { get; set; } public virtual DbSet<cof_check> cof_check { get; set; }
/// <summary> 科室类型 </summary>
public virtual DbSet<cof_depttype> cof_depttype { get; set; }
/// <summary> 规模绩效、效率绩效计算系数配置 </summary> /// <summary> 规模绩效、效率绩效计算系数配置 </summary>
public virtual DbSet<cof_director> cof_director { get; set; } public virtual DbSet<cof_director> cof_director { get; set; }
/// <summary> 工作量门诊药占比系数 </summary> /// <summary> 工作量门诊药占比系数 </summary>
...@@ -79,6 +81,8 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -79,6 +81,8 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<ex_script> ex_script { get; set; } public virtual DbSet<ex_script> ex_script { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<ex_special> ex_special { get; set; }
/// <summary> </summary>
public virtual DbSet<ex_type> ex_type { get; set; } public virtual DbSet<ex_type> ex_type { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<hos_personfee> hos_personfee { get; set; } public virtual DbSet<hos_personfee> hos_personfee { get; set; }
...@@ -100,14 +104,14 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -100,14 +104,14 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<log_dbug> log_dbug { get; set; } public virtual DbSet<log_dbug> log_dbug { get; set; }
/// <summary> 部分公共数据抽取SQL </summary> /// <summary> 部分公共数据抽取SQL </summary>
public virtual DbSet<mod_dic> mod_dic { get; set; } public virtual DbSet<mod_dic> mod_dic { get; set; }
/// <summary> 医院数据提取脚本 </summary> ///// <summary> 医院数据提取脚本 </summary>
public virtual DbSet<mod_extract> mod_extract { get; set; } // public virtual DbSet<mod_extract> mod_extract { get; set; }
/// <summary> </summary> ///// <summary> </summary>
public virtual DbSet<mod_item> mod_item { get; set; } // public virtual DbSet<mod_item> mod_item { get; set; }
/// <summary> </summary> ///// <summary> </summary>
public virtual DbSet<mod_module> mod_module { get; set; } // public virtual DbSet<mod_module> mod_module { get; set; }
/// <summary> </summary> ///// <summary> </summary>
public virtual DbSet<mod_special> mod_special { get; set; } // public virtual DbSet<mod_special> mod_special { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<per_againallot> per_againallot { get; set; } public virtual DbSet<per_againallot> per_againallot { get; set; }
/// <summary> 医院绩效分配 </summary> /// <summary> 医院绩效分配 </summary>
......
...@@ -30,5 +30,15 @@ public class ag_workload_type ...@@ -30,5 +30,15 @@ public class ag_workload_type
/// ///
/// </summary> /// </summary>
public string TypeName { get; set; } public string TypeName { get; set; }
/// <summary>
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 科室类型
/// </summary>
public string UnitType { get; set; }
} }
} }
//-----------------------------------------------------------------------
// <copyright file=" cof_depttype.cs">
// * FileName: 科室类型.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
/// 科室类型
/// </summary>
[Table("cof_depttype")]
public class cof_depttype
{
/// <summary>
///
/// </summary>
[Key]
public int ID { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> AllotID { get; set; }
/// <summary>
/// 科室
/// </summary>
public string Charge { get; set; }
/// <summary>
/// 可是分类
/// </summary>
public string ChargeType { get; set; }
}
}
...@@ -22,6 +22,11 @@ public class ex_result ...@@ -22,6 +22,11 @@ public class ex_result
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
///
/// </summary>
public int AllotId { get; set; }
/// <summary>
/// 科室 /// 科室
/// </summary> /// </summary>
public string Department { get; set; } public string Department { get; set; }
...@@ -39,11 +44,16 @@ public class ex_result ...@@ -39,11 +44,16 @@ public class ex_result
/// <summary> /// <summary>
/// 来源 /// 来源
/// </summary> /// </summary>
public int Source { get; set; } public string Source { get; set; }
/// <summary> /// <summary>
/// 数据库类型1、Sql Server 2、Orcale /// 数据库类型1、Sql Server 2、Orcale
/// </summary> /// </summary>
public int DatabaseType { get; set; } public int DatabaseType { get; set; }
/// <summary>
/// 数据库配置Id
/// </summary>
public int ConfigId { get; set; }
} }
} }
//-----------------------------------------------------------------------
// <copyright file=" ex_special.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("ex_special")]
public class ex_special
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> HospitalId { get; set; }
/// <summary>
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 量化指标
/// </summary>
public string Target { get; set; }
/// <summary>
/// 量化指标绩效分值
/// </summary>
public Nullable<decimal> TargetFactor { get; set; }
/// <summary>
/// 调节系数
/// </summary>
public Nullable<decimal> AdjustFactor { get; set; }
/// <summary>
/// 抽取绩效值SQL
/// </summary>
public Nullable<int> TypeId { get; set; }
/// <summary>
/// 数据库地址
/// </summary>
public Nullable<int> ConfigId { get; set; }
}
}
...@@ -205,5 +205,15 @@ public class im_accountbasic ...@@ -205,5 +205,15 @@ public class im_accountbasic
/// 工作量倾斜系数 /// 工作量倾斜系数
/// </summary> /// </summary>
public Nullable<decimal> WorkSlopeFactor { get; set; } public Nullable<decimal> WorkSlopeFactor { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> UpdateDate { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
} }
} }
...@@ -95,5 +95,15 @@ public class im_data ...@@ -95,5 +95,15 @@ public class im_data
/// ///
/// </summary> /// </summary>
public string SignID { get; set; } public string SignID { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> UpdateDate { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
} }
} }
...@@ -125,5 +125,15 @@ public class im_employee ...@@ -125,5 +125,15 @@ public class im_employee
/// 发放系数 /// 发放系数
/// </summary> /// </summary>
public Nullable<decimal> Grant { get; set; } public Nullable<decimal> Grant { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> UpdateDate { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
} }
} }
...@@ -130,5 +130,15 @@ public class im_employee_clinic ...@@ -130,5 +130,15 @@ public class im_employee_clinic
/// 发放系数 /// 发放系数
/// </summary> /// </summary>
public Nullable<decimal> Grant { get; set; } public Nullable<decimal> Grant { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> UpdateDate { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
} }
} }
...@@ -75,5 +75,15 @@ public class im_header ...@@ -75,5 +75,15 @@ public class im_header
/// 1 汇总 2原始数据 /// 1 汇总 2原始数据
/// </summary> /// </summary>
public Nullable<int> IsTotal { get; set; } public Nullable<int> IsTotal { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> UpdateDate { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
} }
} }
...@@ -80,5 +80,15 @@ public class im_specialunit ...@@ -80,5 +80,15 @@ public class im_specialunit
/// 调节系数 /// 调节系数
/// </summary> /// </summary>
public Nullable<decimal> Adjust { get; set; } public Nullable<decimal> Adjust { get; set; }
/// <summary>
///
/// </summary>
public Nullable<DateTime> UpdateDate { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> UpdateUser { get; set; }
} }
} }
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_extract.cs"> //// <copyright file=" mod_extract.cs">
// * FileName: 医院数据提取脚本.cs //// * FileName: 医院数据提取脚本.cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using System.ComponentModel.DataAnnotations; //using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; //using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels //namespace Performance.EntityModels
{ //{
/// <summary> // /// <summary>
/// 医院数据提取脚本 // /// 医院数据提取脚本
/// </summary> // /// </summary>
[Table("mod_extract")] // [Table("mod_extract")]
public class mod_extract // public class mod_extract
{ // {
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Key] // [Key]
public int Id { get; set; } // public int Id { get; set; }
/// <summary> // /// <summary>
/// 医院ID // /// 医院ID
/// </summary> // /// </summary>
public Nullable<int> HospitalId { get; set; } // public Nullable<int> HospitalId { get; set; }
/// <summary> // /// <summary>
/// 当前脚本提取内容名称 // /// 当前脚本提取内容名称
/// </summary> // /// </summary>
public string EName { get; set; } // public string EName { get; set; }
/// <summary> // /// <summary>
/// 执行脚本 // /// 执行脚本
/// </summary> // /// </summary>
public string ExecuteScript { get; set; } // public string ExecuteScript { get; set; }
/// <summary> // /// <summary>
/// 当前脚本类型 1 收入整表 2 单项数据提取 // /// 当前脚本类型 1 收入整表 2 单项数据提取
/// </summary> // /// </summary>
public Nullable<int> ExecuteType { get; set; } // public Nullable<int> ExecuteType { get; set; }
/// <summary> // /// <summary>
/// 数据库来源类型 1 标准库 2 绩效库 // /// 数据库来源类型 1 标准库 2 绩效库
/// </summary> // /// </summary>
public Nullable<int> SourceType { get; set; } // public Nullable<int> SourceType { get; set; }
/// <summary> // /// <summary>
/// 描述 // /// 描述
/// </summary> // /// </summary>
public string Description { get; set; } // public string Description { get; set; }
/// <summary> // /// <summary>
/// 是否可用 1 可用 2 不可用 // /// 是否可用 1 可用 2 不可用
/// </summary> // /// </summary>
public Nullable<int> IsEnable { get; set; } // public Nullable<int> IsEnable { get; set; }
} // }
} //}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_item.cs"> //// <copyright file=" mod_item.cs">
// * FileName: .cs //// * FileName: .cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using System.ComponentModel.DataAnnotations; //using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; //using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels //namespace Performance.EntityModels
{ //{
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Table("mod_item")] // [Table("mod_item")]
public class mod_item // public class mod_item
{ // {
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Key] // [Key]
public int Id { get; set; } // public int Id { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> ModuleId { get; set; } // public Nullable<int> ModuleId { get; set; }
/// <summary> // /// <summary>
/// 绩效考核项 // /// 绩效考核项
/// </summary> // /// </summary>
public string ItemName { get; set; } // public string ItemName { get; set; }
/// <summary> // /// <summary>
/// 默认系数或医生系数 // /// 默认系数或医生系数
/// </summary> // /// </summary>
public Nullable<decimal> FactorValue1 { get; set; } // public Nullable<decimal> FactorValue1 { get; set; }
/// <summary> // /// <summary>
/// 护理系数 // /// 护理系数
/// </summary> // /// </summary>
public Nullable<decimal> FactorValue2 { get; set; } // public Nullable<decimal> FactorValue2 { get; set; }
/// <summary> // /// <summary>
/// 医技系数 // /// 医技系数
/// </summary> // /// </summary>
public Nullable<decimal> FactorValue3 { get; set; } // public Nullable<decimal> FactorValue3 { get; set; }
/// <summary> // /// <summary>
/// 抽取绩效值SQL // /// 抽取绩效值SQL
/// </summary> // /// </summary>
public Nullable<int> ExtractId { get; set; } // public Nullable<int> ExtractId { get; set; }
/// <summary> // /// <summary>
/// 数据库地址 // /// 数据库地址
/// </summary> // /// </summary>
public Nullable<int> ConfigId { get; set; } // public Nullable<int> ConfigId { get; set; }
/// <summary> // /// <summary>
/// 用户选定抽取范围 // /// 用户选定抽取范围
/// </summary> // /// </summary>
public string SelectionRange { get; set; } // public string SelectionRange { get; set; }
/// <summary> // /// <summary>
/// 只读 0、否 1、是 // /// 只读 0、否 1、是
/// </summary> // /// </summary>
public Nullable<int> ReadOnly { get; set; } // public Nullable<int> ReadOnly { get; set; }
} // }
} //}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_module.cs"> //// <copyright file=" mod_module.cs">
// * FileName: .cs //// * FileName: .cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using System.ComponentModel.DataAnnotations; //using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; //using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels //namespace Performance.EntityModels
{ //{
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Table("mod_module")] // [Table("mod_module")]
public class mod_module // public class mod_module
{ // {
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Key] // [Key]
public int Id { get; set; } // public int Id { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> HospitalId { get; set; } // public Nullable<int> HospitalId { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> SheetType { get; set; } // public Nullable<int> SheetType { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public string ModuleName { get; set; } // public string ModuleName { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public string Description { get; set; } // public string Description { get; set; }
/// <summary> // /// <summary>
/// 提取脚本ID // /// 提取脚本ID
/// </summary> // /// </summary>
public Nullable<int> ExtractId { get; set; } // public Nullable<int> ExtractId { get; set; }
/// <summary> // /// <summary>
/// 数据库地址 // /// 数据库地址
/// </summary> // /// </summary>
public Nullable<int> ConfigId { get; set; } // public Nullable<int> ConfigId { get; set; }
/// <summary> // /// <summary>
/// 只读 0、否 1、是 // /// 只读 0、否 1、是
/// </summary> // /// </summary>
public Nullable<int> ReadOnly { get; set; } // public Nullable<int> ReadOnly { get; set; }
/// <summary> // /// <summary>
/// 是否生成Item 0、否 1、是 // /// 是否生成Item 0、否 1、是
/// </summary> // /// </summary>
public Nullable<int> IsGenerated { get; set; } // public Nullable<int> IsGenerated { get; set; }
} // }
} //}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_special.cs"> //// <copyright file=" mod_special.cs">
// * FileName: .cs //// * FileName: .cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using System.ComponentModel.DataAnnotations; //using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; //using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels //namespace Performance.EntityModels
{ //{
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Table("mod_special")] // [Table("mod_special")]
public class mod_special // public class mod_special
{ // {
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Key] // [Key]
public int Id { get; set; } // public int Id { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> HospitalId { get; set; } // public Nullable<int> HospitalId { get; set; }
/// <summary> // /// <summary>
/// 科室 // /// 科室
/// </summary> // /// </summary>
public string Department { get; set; } // public string Department { get; set; }
/// <summary> // /// <summary>
/// 量化指标 // /// 量化指标
/// </summary> // /// </summary>
public string Target { get; set; } // public string Target { get; set; }
/// <summary> // /// <summary>
/// 量化指标绩效分值 // /// 量化指标绩效分值
/// </summary> // /// </summary>
public Nullable<decimal> TargetFactor { get; set; } // public Nullable<decimal> TargetFactor { get; set; }
/// <summary> // /// <summary>
/// 调节系数 // /// 调节系数
/// </summary> // /// </summary>
public Nullable<decimal> AdjustFactor { get; set; } // public Nullable<decimal> AdjustFactor { get; set; }
/// <summary> // /// <summary>
/// 抽取绩效值SQL // /// 抽取绩效值SQL
/// </summary> // /// </summary>
public Nullable<int> ExtractId { get; set; } // public Nullable<int> ExtractId { get; set; }
/// <summary> // /// <summary>
/// 数据库地址 // /// 数据库地址
/// </summary> // /// </summary>
public Nullable<int> ConfigId { get; set; } // public Nullable<int> ConfigId { get; set; }
} // }
} //}
...@@ -82,7 +82,7 @@ public class per_allot ...@@ -82,7 +82,7 @@ public class per_allot
public Nullable<int> IsExtracting { get; set; } public Nullable<int> IsExtracting { get; set; }
/// <summary> /// <summary>
/// 1、人事科提交重新生成 /// 1、人事科提交重新生成 2、生成成功 3、原始数据修改
/// </summary> /// </summary>
public int Generate { get; set; } public int Generate { get; set; }
......
...@@ -21,24 +21,18 @@ namespace Performance.Extract.Api.Controllers ...@@ -21,24 +21,18 @@ namespace Performance.Extract.Api.Controllers
[Route("api/[controller]")] [Route("api/[controller]")]
public class ExtractController : Controller public class ExtractController : Controller
{ {
private readonly ExtractService extractService; private readonly DFExtractService extractService;
private readonly NewExtractService newExtractService;
private readonly DFExtractService dfExtractService;
private readonly HospitalService hospitalService; private readonly HospitalService hospitalService;
private readonly WebapiUrl url; private readonly WebapiUrl url;
private readonly ILogger<ExtractController> logger; private readonly ILogger<ExtractController> logger;
private readonly IHostingEnvironment evn; private readonly IHostingEnvironment evn;
public ExtractController(ExtractService extractService, public ExtractController(DFExtractService extractService,
NewExtractService newExtractService,
DFExtractService dfExtractService,
HospitalService hospitalService, HospitalService hospitalService,
IOptions<WebapiUrl> url, IOptions<WebapiUrl> url,
ILogger<ExtractController> logger, ILogger<ExtractController> logger,
IHostingEnvironment evn) IHostingEnvironment evn)
{ {
this.extractService = extractService; this.extractService = extractService;
this.newExtractService = newExtractService;
this.dfExtractService = dfExtractService;
this.hospitalService = hospitalService; this.hospitalService = hospitalService;
this.url = url.Value; this.url = url.Value;
this.logger = logger; this.logger = logger;
...@@ -80,34 +74,34 @@ public ApiResponse Import([FromForm] IFormCollection form, int type, int hospita ...@@ -80,34 +74,34 @@ public ApiResponse Import([FromForm] IFormCollection form, int type, int hospita
return new ApiResponse(ResponseType.Error, "获取首次文件失败!"); return new ApiResponse(ResponseType.Error, "获取首次文件失败!");
} }
/// <summary> ///// <summary>
/// 提取数据 ///// 提取数据
/// </summary> ///// </summary>
/// <param name="request"></param> ///// <param name="request"></param>
[HttpPost] //[HttpPost]
[Route("index")] //[Route("index")]
public void Index([FromBody]AllotRequest request) //public void Index([FromBody]AllotRequest request)
{ //{
var token = Guid.NewGuid().ToString("N"); // var token = Guid.NewGuid().ToString("N");
logger.LogInformation(token + ",开始提取数据,请求参数:" + JsonHelper.Serialize(request)); // logger.LogInformation(token + ",开始提取数据,请求参数:" + JsonHelper.Serialize(request));
var hospital = hospitalService.GetHopital(request.HospitalId.Value); // var hospital = hospitalService.GetHopital(request.HospitalId.Value);
var filepath = extractService.ExtractData(request.ID, request.Mail, hospital, request.Path); // var filepath = extractService.ExtractData(request.ID, request.Mail, hospital, request.Path);
if (!string.IsNullOrEmpty(filepath) && FileHelper.IsExistFile(filepath)) // if (!string.IsNullOrEmpty(filepath) && FileHelper.IsExistFile(filepath))
{ // {
int i = 1; // int i = 1;
while (i <= 5) // while (i <= 5)
{ // {
string retJson = HttpHelper.HttpClient(url.ImportFile + $"?allotId={request.ID}&hospitalId={hospital.ID}", filepath); // string retJson = HttpHelper.HttpClient(url.ImportFile + $"?allotId={request.ID}&hospitalId={hospital.ID}", filepath);
logger.LogInformation(retJson); // logger.LogInformation(retJson);
var ret = JsonHelper.Deserialize<ApiResponse>(retJson); // var ret = JsonHelper.Deserialize<ApiResponse>(retJson);
if ((int)ret.State == 1) // if ((int)ret.State == 1)
break; // break;
i++; // i++;
} // }
} // }
logger.LogInformation(token + ",提取结束,请求参数:" + JsonHelper.Serialize(request)); // logger.LogInformation(token + ",提取结束,请求参数:" + JsonHelper.Serialize(request));
} //}
#region 新版提取 #region 新版提取
...@@ -155,7 +149,7 @@ public void ExtractData([FromForm] IFormCollection form, int allotId, int hospit ...@@ -155,7 +149,7 @@ public void ExtractData([FromForm] IFormCollection form, int allotId, int hospit
#endregion #endregion
//string filePath = newExtractService.ExtractData(allotId, request.Email, hospitalId); //string filePath = newExtractService.ExtractData(allotId, request.Email, hospitalId);
string filePath = dfExtractService.ExtractData(allotId, email, hospitalId, path); //抽取 string filePath = extractService.ExtractData(allotId, email, hospitalId, path); //抽取
#region 保存文件到网站下 #region 保存文件到网站下
......
...@@ -15,13 +15,13 @@ namespace Performance.Extract.Api.Controllers ...@@ -15,13 +15,13 @@ namespace Performance.Extract.Api.Controllers
public class ModExtractController : Controller public class ModExtractController : Controller
{ {
private readonly ILogger<ModExtractController> logger; private readonly ILogger<ModExtractController> logger;
private ModExtractService modExtractService; private ExConfigService service;
public ModExtractController( public ModExtractController(
ILogger<ModExtractController> logger, ILogger<ModExtractController> logger,
ModExtractService modExtractService) ExConfigService service)
{ {
this.logger = logger; this.logger = logger;
this.modExtractService = modExtractService; this.service = service;
} }
/// <summary> /// <summary>
...@@ -37,7 +37,7 @@ public ApiResponse Extract([CustomizeValidator(RuleSet = "Query"), FromBody]ModM ...@@ -37,7 +37,7 @@ public ApiResponse Extract([CustomizeValidator(RuleSet = "Query"), FromBody]ModM
if (request.ExecuteType == null || !request.ExecuteType.Any()) if (request.ExecuteType == null || !request.ExecuteType.Any())
return new ApiResponse(ResponseType.ParameterError, "ExecuteType 不存在,请重新选择!"); return new ApiResponse(ResponseType.ParameterError, "ExecuteType 不存在,请重新选择!");
var list = modExtractService.ExtractScheme(request.HospitalId.Value, request.ExecuteType); var list = service.ExtractScheme(request.HospitalId.Value, request.ExecuteType);
return new ApiResponse(ResponseType.OK, list); return new ApiResponse(ResponseType.OK, list);
} }
...@@ -49,7 +49,7 @@ public ApiResponse Extract([CustomizeValidator(RuleSet = "Query"), FromBody]ModM ...@@ -49,7 +49,7 @@ public ApiResponse Extract([CustomizeValidator(RuleSet = "Query"), FromBody]ModM
[HttpPost] [HttpPost]
public ApiResponse FeeType() public ApiResponse FeeType()
{ {
var list = modExtractService.FeeType(); var list = service.FeeType();
return new ApiResponse(ResponseType.OK, list); return new ApiResponse(ResponseType.OK, list);
} }
...@@ -65,7 +65,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request) ...@@ -65,7 +65,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!"); return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
logger.LogInformation($"请求参数绩效考核项费用来源:{JsonHelper.Serialize(request)}"); logger.LogInformation($"请求参数绩效考核项费用来源:{JsonHelper.Serialize(request)}");
var list = modExtractService.FeeSource(request); var list = service.FeeSource(request);
return new ApiResponse(ResponseType.OK, list); return new ApiResponse(ResponseType.OK, list);
} }
...@@ -78,7 +78,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request) ...@@ -78,7 +78,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request)
public ApiResponse Items([FromBody]ModItemRequest request) public ApiResponse Items([FromBody]ModItemRequest request)
{ {
logger.LogInformation($"绩效收入模板配置项列表:{JsonHelper.Serialize(request)}"); logger.LogInformation($"绩效收入模板配置项列表:{JsonHelper.Serialize(request)}");
modExtractService.AddItems(request.ModuleId.Value); service.AddItems(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" /> <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" /> <PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
......
//-----------------------------------------------------------------------
// <copyright file=" cof_depttype.cs">
// * FileName: cof_depttype.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// cof_depttype Repository
/// </summary>
public partial class PerforCofdepttypeRepository : PerforRepository<cof_depttype>
{
public PerforCofdepttypeRepository(PerformanceDbContext context) : base(context)
{
}
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_special.cs">
// * FileName: ex_special.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// ex_special Repository
/// </summary>
public partial class PerforExspecialRepository : PerforRepository<ex_special>
{
public PerforExspecialRepository(PerformanceDbContext context) : base(context)
{
}
}
}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_extract.cs"> //// <copyright file=" mod_extract.cs">
// * FileName: mod_extract.cs //// * FileName: mod_extract.cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using Performance.EntityModels; //using Performance.EntityModels;
namespace Performance.Repository //namespace Performance.Repository
{ //{
/// <summary> // /// <summary>
/// mod_extract Repository // /// mod_extract Repository
/// </summary> // /// </summary>
public partial class PerforModextractRepository : PerforRepository<mod_extract> // public partial class PerforModextractRepository : PerforRepository<mod_extract>
{ // {
public PerforModextractRepository(PerformanceDbContext context) : base(context) // public PerforModextractRepository(PerformanceDbContext context) : base(context)
{ // {
} // }
} // }
} //}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_item.cs"> //// <copyright file=" mod_item.cs">
// * FileName: mod_item.cs //// * FileName: mod_item.cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using Performance.EntityModels; //using Performance.EntityModels;
namespace Performance.Repository //namespace Performance.Repository
{ //{
/// <summary> // /// <summary>
/// mod_item Repository // /// mod_item Repository
/// </summary> // /// </summary>
public partial class PerforModitemRepository : PerforRepository<mod_item> // public partial class PerforModitemRepository : PerforRepository<mod_item>
{ // {
public PerforModitemRepository(PerformanceDbContext context) : base(context) // public PerforModitemRepository(PerformanceDbContext context) : base(context)
{ // {
} // }
} // }
} //}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_module.cs"> //// <copyright file=" mod_module.cs">
// * FileName: mod_module.cs //// * FileName: mod_module.cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using Performance.EntityModels; //using Performance.EntityModels;
namespace Performance.Repository //namespace Performance.Repository
{ //{
/// <summary> // /// <summary>
/// mod_module Repository // /// mod_module Repository
/// </summary> // /// </summary>
public partial class PerforModmoduleRepository : PerforRepository<mod_module> // public partial class PerforModmoduleRepository : PerforRepository<mod_module>
{ // {
public PerforModmoduleRepository(PerformanceDbContext context) : base(context) // public PerforModmoduleRepository(PerformanceDbContext context) : base(context)
{ // {
} // }
} // }
} //}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" mod_special.cs"> //// <copyright file=" mod_special.cs">
// * FileName: mod_special.cs //// * FileName: mod_special.cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using Performance.EntityModels; //using Performance.EntityModels;
namespace Performance.Repository //namespace Performance.Repository
{ //{
/// <summary> // /// <summary>
/// mod_special Repository // /// mod_special Repository
/// </summary> // /// </summary>
public partial class PerforModspecialRepository : PerforRepository<mod_special> // public partial class PerforModspecialRepository : PerforRepository<mod_special>
{ // {
public PerforModspecialRepository(PerformanceDbContext context) : base(context) // public PerforModspecialRepository(PerformanceDbContext context) : base(context)
{ // {
} // }
} // }
} //}
This source diff could not be displayed because it is too large. You can view the blob instead.
using Dapper;
using Dapper; using Dapper;
using FluentValidation.Validators;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using NPOI.SS.UserModel; using NPOI.SS.UserModel;
using NPOI.SS.Util; using NPOI.SS.Util;
...@@ -13,12 +11,11 @@ ...@@ -13,12 +11,11 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
namespace Performance.Services namespace Performance.Services
{ {
public class DFExtractService1 : IAutoInjection public class DFExtractService : IAutoInjection
{ {
#region #region
private readonly ILogger<ExtractService> logger; private readonly ILogger<ExtractService> logger;
...@@ -26,57 +23,44 @@ public class DFExtractService1 : IAutoInjection ...@@ -26,57 +23,44 @@ public class DFExtractService1 : IAutoInjection
private readonly PerSheetService perSheetService; private readonly PerSheetService perSheetService;
private readonly PerforHospitalRepository perforHospitalRepository; private readonly PerforHospitalRepository perforHospitalRepository;
private readonly PerforHospitalconfigRepository perforHospitalconfigRepository; private readonly PerforHospitalconfigRepository perforHospitalconfigRepository;
private readonly PerforModmoduleRepository perforModmoduleRepository;
private readonly PerforModextractRepository perforModextractRepository;
private readonly PerforModitemRepository perforModitemRepository;
private readonly PerforModspecialRepository perforModspecialRepository;
private readonly PerforPerallotRepository perforPerallotRepository; private readonly PerforPerallotRepository perforPerallotRepository;
private readonly PerforImspecialunitRepository perforImspecialunitRepository; private readonly PerforImspecialunitRepository perforImspecialunitRepository;
private readonly PerforImdataRepository perforImdataRepository; private readonly PerforImdataRepository perforImdataRepository;
private readonly PerforRepimportconfigRepository repimportconfigRepository; private readonly PerforRepimportconfigRepository repimportconfigRepository;
private readonly LogManageService logManageService; private readonly LogManageService logManageService;
private readonly PerforExitemRepository perforExitemRepository; private readonly PerforExitemRepository perforExitemRepository;
private readonly PerforExmoduleRepository perforExmoduleRepository; private readonly PerforExmoduleRepository perforExmoduleRepository;
private readonly PerforExspecialRepository perforExspecialRepository;
private readonly PerforExresultRepository perforExresultRepository; private readonly PerforExresultRepository perforExresultRepository;
private readonly PerforExscriptRepository perforExscriptRepository; private readonly PerforExscriptRepository perforExscriptRepository;
private readonly PerforExtypeRepository perforExtypeRepository;
private IWorkbook workbook = null; private IWorkbook workbook = null;
private ICellStyle style; private ICellStyle style;
private per_allot Allot; private per_allot Allot;
public DFExtractService1(ILogger<ExtractService> logger, public DFExtractService(ILogger<ExtractService> logger,
IEmailService emailService, IEmailService emailService,
PerSheetService perSheetService, PerSheetService perSheetService,
PerforHospitalRepository perforHospitalRepository, PerforHospitalRepository perforHospitalRepository,
PerforHospitalconfigRepository perforHospitalconfigRepository, PerforHospitalconfigRepository perforHospitalconfigRepository,
PerforModmoduleRepository perforModmoduleRepository,
PerforModextractRepository perforModextractRepository,
PerforModitemRepository perforModitemRepository,
PerforModspecialRepository perforModspecialRepository,
PerforPerallotRepository perforPerallotRepository, PerforPerallotRepository perforPerallotRepository,
PerforImspecialunitRepository perforImspecialunitRepository, PerforImspecialunitRepository perforImspecialunitRepository,
PerforImdataRepository perforImdataRepository, PerforImdataRepository perforImdataRepository,
PerforRepimportconfigRepository repimportconfigRepository, PerforRepimportconfigRepository repimportconfigRepository,
LogManageService logManageService, LogManageService logManageService,
PerforExitemRepository perforExitemRepository, PerforExitemRepository perforExitemRepository,
PerforExmoduleRepository perforExmoduleRepository, PerforExmoduleRepository perforExmoduleRepository,
PerforExspecialRepository perforExspecialRepository,
PerforExresultRepository perforExresultRepository, PerforExresultRepository perforExresultRepository,
PerforExscriptRepository perforExscriptRepository, PerforExscriptRepository perforExscriptRepository)
PerforExtypeRepository perforExtypeRepository)
{ {
this.logger = logger; this.logger = logger;
this.emailService = emailService; this.emailService = emailService;
this.perSheetService = perSheetService; this.perSheetService = perSheetService;
this.perforHospitalRepository = perforHospitalRepository; this.perforHospitalRepository = perforHospitalRepository;
this.perforHospitalconfigRepository = perforHospitalconfigRepository; this.perforHospitalconfigRepository = perforHospitalconfigRepository;
this.perforModmoduleRepository = perforModmoduleRepository;
this.perforModextractRepository = perforModextractRepository;
this.perforModitemRepository = perforModitemRepository;
this.perforModspecialRepository = perforModspecialRepository;
this.perforPerallotRepository = perforPerallotRepository; this.perforPerallotRepository = perforPerallotRepository;
this.perforImspecialunitRepository = perforImspecialunitRepository; this.perforImspecialunitRepository = perforImspecialunitRepository;
this.perforImdataRepository = perforImdataRepository; this.perforImdataRepository = perforImdataRepository;
...@@ -85,9 +69,9 @@ public class DFExtractService1 : IAutoInjection ...@@ -85,9 +69,9 @@ public class DFExtractService1 : IAutoInjection
this.perforExitemRepository = perforExitemRepository; this.perforExitemRepository = perforExitemRepository;
this.perforExmoduleRepository = perforExmoduleRepository; this.perforExmoduleRepository = perforExmoduleRepository;
this.perforExspecialRepository = perforExspecialRepository;
this.perforExresultRepository = perforExresultRepository; this.perforExresultRepository = perforExresultRepository;
this.perforExscriptRepository = perforExscriptRepository; this.perforExscriptRepository = perforExscriptRepository;
this.perforExtypeRepository = perforExtypeRepository;
} }
#endregion #endregion
...@@ -101,12 +85,12 @@ public string ExtractData(int allotId, string email, int hospitalId, string file ...@@ -101,12 +85,12 @@ public string ExtractData(int allotId, string email, int hospitalId, string file
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId); var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId);
Allot = allot ?? throw new PerformanceException(""); Allot = allot ?? throw new PerformanceException("");
var configs = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
var statesArray = new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive }; var statesArray = new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive };
var allots = perforPerallotRepository.GetEntities(t => t.HospitalId == hospitalId && statesArray.Contains(t.States)); var allots = perforPerallotRepository.GetEntities(t => t.HospitalId == hospitalId && statesArray.Contains(t.States));
var lastAllot = allots?.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First(); var lastAllot = allots?.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First();
var configs = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
var typeIds = new List<int>(); var typeIds = new List<int>();
var modules = perforExmoduleRepository.GetEntities(t => t.HospitalId == hospitalId); var modules = perforExmoduleRepository.GetEntities(t => t.HospitalId == hospitalId);
var items = new List<ex_item>(); var items = new List<ex_item>();
...@@ -118,15 +102,23 @@ public string ExtractData(int allotId, string email, int hospitalId, string file ...@@ -118,15 +102,23 @@ public string ExtractData(int allotId, string email, int hospitalId, string file
typeIds.AddRange(items?.Select(t => t.TypeId ?? 0) ?? new List<int>()); typeIds.AddRange(items?.Select(t => t.TypeId ?? 0) ?? new List<int>());
} }
var specials = perforModspecialRepository.GetEntities(t => t.HospitalId == hospitalId); var specials = perforExspecialRepository.GetEntities(t => t.HospitalId == hospitalId);
if (specials != null && specials.Any()) if (specials != null && specials.Any())
typeIds.AddRange(specials.Select(t => t.ExtractId ?? 0)); typeIds.AddRange(specials.Select(t => t.TypeId ?? 0));
typeIds = typeIds.Distinct().ToList(); typeIds = typeIds.Distinct().ToList();
var extracts = perforModextractRepository.GetEntities(t => typeIds.Contains(t.Id)); var data = new List<ex_result>();
var scripts = perforExscriptRepository.GetEntities(t => typeIds.Contains(t.TypeId));
ClearHistData(allot);
if (scripts != null && scripts.Any())
{
data.AddRange(ExtractIncome(modules, scripts, configs, allot));
data.AddRange(ExtractItems(items, scripts, configs, allot, modules));
data.AddRange(ExtractSpcial(specials, scripts, configs, allot));
}
return lastAllot == null ? TemplateExecute(email, hospital, configs, modules, items, specials, extracts) return lastAllot == null ? TemplateExecute(email, hospital, configs, modules, items, specials, data)
: AlllotExecute(email, hospital, configs, modules, items, specials, extracts, lastAllot, filePath); : AlllotExecute(email, hospital, configs, modules, items, specials, data, lastAllot, filePath);
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -145,42 +137,125 @@ public string ExtractData(int allotId, string email, int hospitalId, string file ...@@ -145,42 +137,125 @@ public string ExtractData(int allotId, string email, int hospitalId, string file
} }
} }
private void ExtractData(List<int> typeIds, List<sys_hospitalconfig> configs, per_allot allot) /// <summary>
/// 抽取收入费用
/// </summary>
/// <typeparam name="TEntity">ex_module</typeparam>
/// <param name="entities"></param>
/// <param name="scripts">抽取配置项</param>
/// <param name="configs">数据连接项</param>
/// <param name="allot">绩效</param>
/// <returns></returns>
private List<ex_result> ExtractIncome<TEntity>(List<TEntity> entities, List<ex_script> scripts, List<sys_hospitalconfig> configs, per_allot allot)
{ {
var type = perforExtypeRepository.GetEntities(t => typeIds.Contains(t.Id)); var data = new List<ex_result>();
var scripts = perforExscriptRepository.GetEntities(t => typeIds.Contains(t.TypeId)); var modules = entities?.Select(t => t as ex_module);
if (configs == null || !configs.Any()) return; if (modules == null || !modules.Any(t => t.SheetType == (int)SheetType.Income && t.TypeId > 0))
foreach (var item in scripts) return data;
foreach (var module in modules.Where(t => t.TypeId > 0))
{
foreach (var item in scripts.Where(t => t.TypeId == module.TypeId))
{ {
foreach (var config in configs) foreach (var config in configs)
{ {
string executeScript = item.ExecScript; data.AddRange(QueryData(config, allot, item.ExecScript, module.ModuleName));
var parameters = GetParameters(allot);
using (var connection = ConnectionBuilder.Create((DatabaseType)config.DataBaseType, config.DbSource, config.DbName, config.DbUser, config.DbPassword))
//{
// foreach (var param in parameters)
// {
// executeScript = Regex.Replace(executeScript, param.Key, param.Value, RegexOptions.IgnoreCase);
// }
// logger.LogInformation($"提取绩效数据 {category ?? ""}SQL脚本{executeScript}");
// var result = connection.Query<ExtractDto>(executeScript, commandTimeout: 20000);
// logger.LogInformation($"提取绩效数据 {category ?? ""} 执行脚本获取数据{result?.Count() ?? 0}条记录");
// if (result != null && result.Count() > 0)
// {
// if (extract.ExecuteType == 2)
// {
// foreach (var item in result)
// {
// item.Category = category;
// }
// }
// return result.Where(t => !string.IsNullOrEmpty(t.Category)).ToList();
// }
//}
//return null;
} }
} }
} }
if (data != null && data.Any())
perforExresultRepository.AddRange(data.ToArray());
return data;
}
/// <summary>
/// 抽取支出、工作量等费用
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="entities"></param>
/// <param name="scripts"></param>
/// <param name="configs"></param>
/// <param name="allot"></param>
/// <param name="modules"></param>
/// <returns></returns>
private List<ex_result> ExtractItems<TEntity>(List<TEntity> entities, List<ex_script> scripts, List<sys_hospitalconfig> configs, per_allot allot, List<ex_module> modules)
{
var data = new List<ex_result>();
var items = entities?.Select(t => t as ex_item);
if (items == null || !items.Any(t => t.TypeId > 0))
return data;
foreach (var exitem in items.Where(t => t.TypeId > 0))
{
var model = modules.FirstOrDefault(t => t.Id == exitem.ModuleId);
foreach (var item in scripts.Where(t => t.TypeId == exitem.TypeId))
{
foreach (var config in configs)
{
var result = QueryData(config, allot, item.ExecScript, model.ModuleName);
result.ForEach(t => t.Category = exitem.ItemName);
data.AddRange(result);
}
}
}
if (data != null && data.Any())
perforExresultRepository.AddRange(data.ToArray());
return data;
}
/// <summary>
/// 抽取特殊科室数据
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="entities"></param>
/// <param name="scripts"></param>
/// <param name="configs"></param>
/// <param name="allot"></param>
/// <returns></returns>
private List<ex_result> ExtractSpcial<TEntity>(List<TEntity> entities, List<ex_script> scripts, List<sys_hospitalconfig> configs, per_allot allot)
{
var data = new List<ex_result>();
var specials = entities?.Select(t => t as ex_special);
if (specials == null || !specials.Any(t => t.TypeId > 0))
return data;
foreach (var special in specials.Where(t => t.TypeId > 0))
{
foreach (var item in scripts.Where(t => t.TypeId == special.TypeId))
{
foreach (var config in configs)
{
var result = QueryData(config, allot, item.ExecScript, "");
result.ForEach(t =>
{
t.Category = special.Target;
t.Department = special.Department;
});
data.AddRange(result);
}
}
}
if (data != null && data.Any())
perforExresultRepository.AddRange(data.ToArray());
return data;
}
/// <summary>
/// 清除历史抽取数据
/// </summary>
/// <param name="allot"></param>
private void ClearHistData(per_allot allot)
{
logger.LogInformation($"开始清除历史提取数据");
var data = perforExresultRepository.GetEntities(t => t.AllotId == allot.ID);
if (data == null || !data.Any(t => t.Id > 0))
return;
perforExresultRepository.RemoveRange(data.ToArray());
}
/// <summary> /// <summary>
/// 空白模板 /// 空白模板
...@@ -194,7 +269,7 @@ private void ExtractData(List<int> typeIds, List<sys_hospitalconfig> configs, pe ...@@ -194,7 +269,7 @@ private void ExtractData(List<int> typeIds, List<sys_hospitalconfig> configs, pe
/// <param name="specials"></param> /// <param name="specials"></param>
/// <param name="extracts"></param> /// <param name="extracts"></param>
/// <returns></returns> /// <returns></returns>
public string TemplateExecute(string email, sys_hospital hospital, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<mod_special> specials, List<mod_extract> extracts) public string TemplateExecute(string email, sys_hospital hospital, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<ex_special> specials, List<ex_result> data)
{ {
string originalPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Template", "东方医院绩效模板.xlsx"); string originalPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Template", "东方医院绩效模板.xlsx");
var (tempPath, newPath) = CopyOriginalFile(hospital.ID, originalPath); var (tempPath, newPath) = CopyOriginalFile(hospital.ID, originalPath);
...@@ -216,19 +291,19 @@ public string TemplateExecute(string email, sys_hospital hospital, List<sys_hosp ...@@ -216,19 +291,19 @@ public string TemplateExecute(string email, sys_hospital hospital, List<sys_hosp
switch (sheetType) switch (sheetType)
{ {
case SheetType.OtherIncome: case SheetType.OtherIncome:
WriteOtherIncome(sheet, sheetRead, unitList, configs, modules, items, extracts); WriteOtherIncome(sheet, sheetRead, unitList, configs, modules, items, data);
break; break;
case SheetType.Income: case SheetType.Income:
WriteIncome(sheet, sheetRead, unitList, configs, modules, items, extracts); WriteIncome(sheet, sheetRead, unitList, configs, modules, items, data);
break; break;
case SheetType.Expend: case SheetType.Expend:
WriteExpend(sheet, sheetRead, unitList, configs, modules, items, extracts); WriteExpend(sheet, sheetRead, unitList, configs, modules, items, data);
break; break;
case SheetType.Workload: case SheetType.Workload:
WriteWorkload(sheet, sheetRead, unitList, configs, modules, items, extracts); WriteWorkload(sheet, sheetRead, unitList, configs, modules, items, data);
break; break;
case SheetType.SpecialUnit: case SheetType.SpecialUnit:
WriteSpecialUnit(sheet, sheetRead, configs, specials, extracts); WriteSpecialUnit(sheet, sheetRead, configs, specials, data);
break; break;
} }
} }
...@@ -255,7 +330,7 @@ public string TemplateExecute(string email, sys_hospital hospital, List<sys_hosp ...@@ -255,7 +330,7 @@ public string TemplateExecute(string email, sys_hospital hospital, List<sys_hosp
/// <param name="specials"></param> /// <param name="specials"></param>
/// <param name="extracts"></param> /// <param name="extracts"></param>
/// <returns></returns> /// <returns></returns>
public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<mod_special> specials, List<mod_extract> extracts, per_allot lastAllot, string path) public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<ex_special> specials, List<ex_result> extracts, per_allot lastAllot, string path)
{ {
if (string.IsNullOrEmpty(path)) throw new PerformanceException("历史绩效文件不存在!"); if (string.IsNullOrEmpty(path)) throw new PerformanceException("历史绩效文件不存在!");
...@@ -316,6 +391,123 @@ public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospit ...@@ -316,6 +391,123 @@ public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospit
#endregion #endregion
#region QueryData
/// <summary>
/// 查询数据
/// </summary>
/// <param name="config"></param>
/// <param name="allot"></param>
/// <param name="execsql"></param>
/// <param name="source"></param>
/// <param name="category"></param>
/// <returns></returns>
private List<ex_result> QueryData(sys_hospitalconfig config, per_allot allot, string execsql, string source, string category = "")
{
var data = new List<ex_result>();
var parameters = GetParameters(allot);
using (var connection = ConnectionBuilder.Create((DatabaseType)config.DataBaseType, config.DbSource, config.DbName, config.DbUser, config.DbPassword))
{
foreach (var item in parameters)
{
execsql = Regex.Replace(execsql, item.Key, item.Value, RegexOptions.IgnoreCase);
}
logger.LogInformation($"提取绩效数据 {category ?? ""}SQL脚本{execsql}");
var result = connection.Query<ExtractDto>(execsql, commandTimeout: 20000);
logger.LogInformation($"提取绩效数据 {category ?? ""} 执行脚本获取数据{result?.Count() ?? 0}条记录");
if (result != null && result.Count() > 0)
{
data = result.Select(t => new ex_result
{
Department = t.Department,
Category = t.Category,
Fee = t.Value,
Source = source,
DatabaseType = config.DataBaseType,
ConfigId = config.Id,
}).ToList();
}
return data;
}
}
/// <summary>
/// 获取参数
/// </summary>
/// <param name="allot"></param>
/// <returns></returns>
private Dictionary<string, string> GetParameters(per_allot allot)
{
DateTime beginTime = new DateTime(allot.Year, allot.Month, 1);
Dictionary<string, string> pairs = new Dictionary<string, string>
{
{ "@beginTime", $"'{beginTime.ToString("yyyy-MM-dd")}'" },
{ "@endTime", $"'{beginTime.AddMonths(1).ToString("yyyy-MM-dd")}'"},
};
return pairs;
}
/// <summary>
/// 从HIS抽取报表数据
/// </summary>
/// <param name="allot"></param>
/// <param name="configs"></param>
public void ImportData(per_allot allot, List<sys_hospitalconfig> configs)
{
Dictionary<string, object> pairs = new Dictionary<string, object>
{
{ "@allotid", allot.ID },
{ "@hospitalid", allot.HospitalId },
{ "@year", allot.Year },
{ "@month", allot.Month },
};
var imports = repimportconfigRepository.GetEntities(w => w.ScriptType == 1);
if (imports == null || !imports.Any()) return;
foreach (var import in imports)
{
var conf = configs.FirstOrDefault(w => w.HospitalId == allot.HospitalId && w.Id == import.ConfigId);
if (conf != null)
{
var timeRanges = import.TimeRange.SplitRemoveEmpty(",");
if (timeRanges == null || !timeRanges.Any()) continue;
foreach (var item in timeRanges)
{
if (item == "1")
{
pairs["@year"] = allot.Year;
pairs["@month"] = allot.Month;
}
else if (item == "2")
{
pairs["@year"] = allot.Year - 1;
pairs["@month"] = allot.Month;
}
else if (item == "3")
{
pairs["@year"] = allot.Year;
pairs["@month"] = allot.Month - 1;
}
try
{
DatabaseType type = (DatabaseType)conf.DataBaseType;
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);
perforPerallotRepository.ImportData(import, pairs, data);
}
catch (Exception ex)
{
logger.LogError(ex.ToString());
}
}
}
}
}
#endregion
#region Excel #region Excel
private (string TempPath, string NewPath) CopyOriginalFile(int hospitalId, string originalPath) private (string TempPath, string NewPath) CopyOriginalFile(int hospitalId, string originalPath)
...@@ -329,7 +521,7 @@ public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospit ...@@ -329,7 +521,7 @@ public string AlllotExecute(string email, sys_hospital hospital, List<sys_hospit
return (tempPath, newPath); return (tempPath, newPath);
} }
private static void CreateNotExistSheet(List<mod_module> modulesList, IWorkbook workbook) private static void CreateNotExistSheet(List<ex_module> modulesList, IWorkbook workbook)
{ {
SortedDictionary<string, int> pairs = new SortedDictionary<string, int>(); SortedDictionary<string, int> pairs = new SortedDictionary<string, int>();
for (int i = 0; i < workbook.NumberOfSheets; i++) for (int i = 0; i < workbook.NumberOfSheets; i++)
...@@ -408,7 +600,7 @@ private ICell GetOrCreate(IRow row, int index) ...@@ -408,7 +600,7 @@ private ICell GetOrCreate(IRow row, int index)
#region SheetData #region SheetData
private void WriteOtherIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<mod_module> modules, List<mod_item> items, List<mod_extract> extracts, bool isNewTemp = true) private void WriteOtherIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<ex_result> data, bool isNewTemp = true)
{ {
logger.LogInformation($"{sheet.SheetName}开始提取."); logger.LogInformation($"{sheet.SheetName}开始提取.");
var module = modules.FirstOrDefault(t => t.SheetType == (int)SheetType.OtherIncome); var module = modules.FirstOrDefault(t => t.SheetType == (int)SheetType.OtherIncome);
...@@ -420,34 +612,23 @@ private void WriteOtherIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Ac ...@@ -420,34 +612,23 @@ private void WriteOtherIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Ac
WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp); WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp);
//查询数据 var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
var extractIdList = itemList.Select(t => t.ExtractId).Distinct().ToList(); if (extractdata == null || !extractdata.Any())
var extractList = extracts.Where(t => extractIdList.Contains(t.Id)).ToList(); return;
if (extractList == null || extractList.Count == 0) return;
List<ExtractDto> allExtract = new List<ExtractDto>(); //查询数据
foreach (var item in extractList) List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{
var category = itemList.Where(t => t.ExtractId == item.Id);
if (category == null || category.Count() == 0) continue;
foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); Department = t.Department,
logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName},"); Category = t.Category,
Value = t.Fee ?? 0
var config = configs.FirstOrDefault(t => t.Id == moditem.ConfigId); }).ToList();
if (config == null) continue;
var result = QueryDatabase(config, item, Allot, moditem.ItemName);
if (result != null)
allExtract.AddRange(result);
}
}
WriteSheetData(sheet, sheetRead, unitList, allExtract, itemList.Select(t => t.ItemName), isNewTemp); WriteSheetData(sheet, sheetRead, unitList, allExtract, itemList.Select(t => t.ItemName), isNewTemp);
logger.LogInformation($"{sheet.SheetName}提取结束."); logger.LogInformation($"{sheet.SheetName}提取结束.");
} }
private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<mod_module> modules, List<mod_item> items, List<mod_extract> extracts, bool isNewTemp = true) private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<ex_result> data, bool isNewTemp = true)
{ {
logger.LogInformation($"{sheet.SheetName}开始提取."); logger.LogInformation($"{sheet.SheetName}开始提取.");
var module = modules.FirstOrDefault(t => t.ModuleName.Replace(" ", "") == sheet.SheetName.Replace(" ", "")); var module = modules.FirstOrDefault(t => t.ModuleName.Replace(" ", "") == sheet.SheetName.Replace(" ", ""));
...@@ -457,22 +638,17 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account ...@@ -457,22 +638,17 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account
logger.LogInformation($"item有{itemList?.Count ?? 0}个."); logger.LogInformation($"item有{itemList?.Count ?? 0}个.");
if (itemList == null || !itemList.Any()) return; if (itemList == null || !itemList.Any()) return;
//查询数据 var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
var extractList = extracts.Where(t => module.ExtractId == t.Id).ToList(); if (extractdata == null || !extractdata.Any())
if (extractList == null || extractList.Count == 0) return; return;
List<ExtractDto> allExtract = new List<ExtractDto>(); //查询数据
foreach (var item in extractList) List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); Department = t.Department,
logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}"); Category = t.Category,
Value = t.Fee ?? 0
var config = configs.FirstOrDefault(t => t.Id == module.ConfigId); }).ToList();
if (config == null) continue;
var result = QueryDatabase(config, item, Allot);
if (result != null)
allExtract.AddRange(result);
}
logger.LogInformation($"{sheet.SheetName}合计值为: " + allExtract.Sum(t => t.Value)); logger.LogInformation($"{sheet.SheetName}合计值为: " + allExtract.Sum(t => t.Value));
...@@ -482,7 +658,7 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account ...@@ -482,7 +658,7 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account
logger.LogInformation($"{sheet.SheetName}提取结束."); logger.LogInformation($"{sheet.SheetName}提取结束.");
} }
private void WriteExpend(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<mod_module> modules, List<mod_item> items, List<mod_extract> extracts, bool isNewTemp = true) private void WriteExpend(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<ex_result> data, bool isNewTemp = true)
{ {
logger.LogInformation($"{sheet.SheetName}开始提取."); logger.LogInformation($"{sheet.SheetName}开始提取.");
var module = modules.FirstOrDefault(t => t.SheetType == (int)SheetType.Expend); var module = modules.FirstOrDefault(t => t.SheetType == (int)SheetType.Expend);
...@@ -494,34 +670,23 @@ private void WriteExpend(ISheet sheet, IPerSheetDataRead sheetRead, List<Account ...@@ -494,34 +670,23 @@ private void WriteExpend(ISheet sheet, IPerSheetDataRead sheetRead, List<Account
WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp); WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp);
//查询数据 var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
var extractIdList = itemList.Select(t => t.ExtractId).Distinct().ToList(); if (extractdata == null || !extractdata.Any())
var extractList = extracts.Where(t => extractIdList.Contains(t.Id)).ToList(); return;
if (extractList == null || extractList.Count == 0) return;
List<ExtractDto> allExtract = new List<ExtractDto>(); //查询数据
foreach (var item in extractList) List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{
var category = itemList.Where(t => t.ExtractId == item.Id);
if (category == null || category.Count() == 0) continue;
foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); Department = t.Department,
logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName},"); Category = t.Category,
Value = t.Fee ?? 0
var config = configs.FirstOrDefault(t => t.Id == moditem.ConfigId); }).ToList();
if (config == null) continue;
var result = QueryDatabase(config, item, Allot, moditem.ItemName);
if (result != null)
allExtract.AddRange(result);
}
}
WriteSheetData(sheet, sheetRead, unitList, allExtract, itemList.Select(t => t.ItemName), isNewTemp); WriteSheetData(sheet, sheetRead, unitList, allExtract, itemList.Select(t => t.ItemName), isNewTemp);
logger.LogInformation($"{sheet.SheetName}提取结束."); logger.LogInformation($"{sheet.SheetName}提取结束.");
} }
private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<mod_module> modules, List<mod_item> items, List<mod_extract> extracts, bool isNewTemp = true) private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<ex_result> data, bool isNewTemp = true)
{ {
logger.LogInformation($"{sheet.SheetName}开始提取."); logger.LogInformation($"{sheet.SheetName}开始提取.");
var module = modules.FirstOrDefault(t => t.ModuleName.Replace(" ", "") == sheet.SheetName.Replace(" ", "")); var module = modules.FirstOrDefault(t => t.ModuleName.Replace(" ", "") == sheet.SheetName.Replace(" ", ""));
...@@ -533,29 +698,17 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou ...@@ -533,29 +698,17 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
WriteWorkHeader(sheet, sheetRead, itemList, isNewTemp); WriteWorkHeader(sheet, sheetRead, itemList, isNewTemp);
//查询数据 var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
var extractIdList = itemList.Select(t => t.ExtractId).Distinct().ToList(); if (extractdata == null || !extractdata.Any())
var extractList = extracts.Where(t => extractIdList.Contains(t.Id)).ToList(); return;
if (extractList == null || extractList.Count == 0) return;
List<ExtractDto> allExtract = new List<ExtractDto>(); //查询数据
foreach (var item in extractList) List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{
var category = itemList.Where(t => t.ExtractId == item.Id);
if (category == null || category.Count() == 0) continue;
foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); Department = t.Department,
logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}"); Category = t.Category,
Value = t.Fee ?? 0
var config = configs.FirstOrDefault(t => t.Id == moditem.ConfigId); }).ToList();
if (config == null) continue;
var result = QueryDatabase(config, item, Allot, moditem.ItemName);
if (result != null)
allExtract.AddRange(result);
logger.LogInformation($"{module.ModuleName}提取{moditem.ItemName}的合计值为: " + allExtract.Sum(t => t.Value));
}
}
var specialHead = new List<string>(); var specialHead = new List<string>();
var extractHead = allExtract?.Select(t => t.Category); var extractHead = allExtract?.Select(t => t.Category);
...@@ -622,10 +775,10 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou ...@@ -622,10 +775,10 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
#endregion #endregion
private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sys_hospitalconfig> configs, List<mod_special> specials, List<mod_extract> extracts, bool IsWriteHead = true, per_allot lastAllot = null) private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sys_hospitalconfig> configs, List<ex_special> specials, List<ex_result> data, bool IsWriteHead = true, per_allot lastAllot = null)
{ {
logger.LogInformation($"{sheet.SheetName}开始提取."); logger.LogInformation($"{sheet.SheetName}开始提取.");
var dictionary = new Dictionary<string, Func<mod_special, List<im_specialunit>, object>> var dictionary = new Dictionary<string, Func<ex_special, List<im_specialunit>, object>>
{ {
{ "科室", (special,lastallot) => special.Department }, { "科室", (special,lastallot) => special.Department },
{ "人数", (special,lastallot) => lastallot.Where(t=>special.Department == t.Department).Max(t=>t.Number) }, { "人数", (special,lastallot) => lastallot.Where(t=>special.Department == t.Department).Max(t=>t.Number) },
...@@ -642,28 +795,6 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy ...@@ -642,28 +795,6 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy
if (lastAllot != null) if (lastAllot != null)
allotDataList = perforImspecialunitRepository.GetEntities(t => t.AllotID == lastAllot.ID); allotDataList = perforImspecialunitRepository.GetEntities(t => t.AllotID == lastAllot.ID);
////查询数据
//var extractIdList = speaialList.Select(t => t.ExtractId).Distinct().ToList();
//var extractList = extracts.Where(t => extractIdList.Contains(t.Id)).ToList();
//List<ExtractDto> allExtract = new List<ExtractDto>();
//foreach (var item in extractList)
//{
// var category = speaialList.Where(t => t.ExtractId == item.Id);
// if (category == null || category.Count() == 0) continue;
// foreach (var specialitem in category)
// {
// logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage");
// logger.Information($"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表,", "提取绩效数据");
// var config = configs.FirstOrDefault(t => t.Id == specialitem.ConfigId);
// if (config == null) continue;
// var result = QueryDatabase(config, item, Allot, specialitem.Target);
// if (result != null)
// allExtract.AddRange(result);
// }
//}
//取消合并单元格 //取消合并单元格
int mergedCount = sheet.NumMergedRegions; int mergedCount = sheet.NumMergedRegions;
for (int i = mergedCount - 1; i >= 0; i--) for (int i = mergedCount - 1; i >= 0; i--)
...@@ -682,6 +813,8 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy ...@@ -682,6 +813,8 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy
int mergedBegin = sheetRead.Point.DataFirstRowNum.Value; int mergedBegin = sheetRead.Point.DataFirstRowNum.Value;
int mergedEnd = sheetRead.Point.DataFirstRowNum.Value; int mergedEnd = sheetRead.Point.DataFirstRowNum.Value;
var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == "4.2 特殊核算单元绩效测算表");
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 填充数据 -- 特殊核算单元绩效测算表"); logger.LogInformation($"提取绩效数据 填充数据 -- 特殊核算单元绩效测算表");
for (int i = 0; i < speaialList.Count; i++) for (int i = 0; i < speaialList.Count; i++)
...@@ -708,17 +841,9 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy ...@@ -708,17 +841,9 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy
mergedEnd = mergedBegin + count - 1; mergedEnd = mergedBegin + count - 1;
} }
} }
if (cell.StringCellValue == "数量" && speaialList[i]?.ExtractId > 0) if (cell.StringCellValue == "数量" && speaialList[i]?.TypeId > 0)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage"); value = extractdata?.FirstOrDefault(t => t.Category == speaialList[i].Target)?.Fee;
logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- 特殊核算单元绩效测算表 ");
var config = configs.FirstOrDefault(t => t.Id == speaialList[i].ConfigId);
if (config == null) continue;
var ext = extracts.FirstOrDefault(w => w.Id == speaialList[i]?.ExtractId);
var result = QueryDatabase(config, ext, Allot);
value = result?.FirstOrDefault()?.Value;
} }
if (!new List<string> { "量化指标", "数量", "量化指标绩效分值" }.Contains(cell.StringCellValue) && rowIndex == mergedBegin) if (!new List<string> { "量化指标", "数量", "量化指标绩效分值" }.Contains(cell.StringCellValue) && rowIndex == mergedBegin)
...@@ -748,7 +873,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy ...@@ -748,7 +873,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy
/// <param name="sheetRead"></param> /// <param name="sheetRead"></param>
/// <param name="items">列头数据(列名、系数)</param> /// <param name="items">列头数据(列名、系数)</param>
/// <param name="isNewTemp">是否为空白模板</param> /// <param name="isNewTemp">是否为空白模板</param>
private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, List<mod_item> items, bool isNewTemp) private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_item> items, bool isNewTemp)
{ {
var nurseFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "护理组").FactorRow.Value); var nurseFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "护理组").FactorRow.Value);
var doctorFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "医生组").FactorRow.Value); var doctorFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "医生组").FactorRow.Value);
...@@ -758,7 +883,7 @@ private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, Lis ...@@ -758,7 +883,7 @@ private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, Lis
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 提取绩效数据 写入列头信息 -- {sheet.SheetName}"); logger.LogInformation($"提取绩效数据 提取绩效数据 写入列头信息 -- {sheet.SheetName}");
var cellItems = new List<mod_item>(); var cellItems = new List<ex_item>();
cellItems.AddRange(items); cellItems.AddRange(items);
if (!isNewTemp) if (!isNewTemp)
{ {
...@@ -986,12 +1111,12 @@ private void WriteSheetData(ISheet sheet, IPerSheetDataRead sheetRead, List<Acco ...@@ -986,12 +1111,12 @@ private void WriteSheetData(ISheet sheet, IPerSheetDataRead sheetRead, List<Acco
/// <param name="sheetRead"></param> /// <param name="sheetRead"></param>
/// <param name="items"></param> /// <param name="items"></param>
/// <param name="isNewTemp"></param> /// <param name="isNewTemp"></param>
private void WriteWorkHeader(ISheet sheet, IPerSheetDataRead sheetRead, List<mod_item> items, bool isNewTemp) private void WriteWorkHeader(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_item> items, bool isNewTemp)
{ {
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 0); var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 0);
var factor = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 1); var factor = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 1);
var cellItems = new List<mod_item>(); var cellItems = new List<ex_item>();
cellItems.AddRange(items); cellItems.AddRange(items);
if (!isNewTemp) if (!isNewTemp)
{ {
...@@ -1113,111 +1238,6 @@ private void WriteWorkData(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou ...@@ -1113,111 +1238,6 @@ private void WriteWorkData(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
#endregion #endregion
#region QueryData
private List<ExtractDto> QueryDatabase(sys_hospitalconfig config, mod_extract extract, per_allot allot, string category = null)
{
//var config = configs.FirstOrDefault(t => t.Id == extract.ConfigId);
//if (config == null) return null;
string executeScript = extract.ExecuteScript;
var parameters = GetParameters(allot);
using (var connection = ConnectionBuilder.Create((DatabaseType)config.DataBaseType, config.DbSource, config.DbName, config.DbUser, config.DbPassword))
{
foreach (var item in parameters)
{
executeScript = Regex.Replace(executeScript, item.Key, item.Value, RegexOptions.IgnoreCase);
}
//logManageService.WriteMsg("提取绩效数据", $"SQL脚本:{executeScript}", 1, AllotId, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 {category ?? ""}SQL脚本{executeScript}");
var result = connection.Query<ExtractDto>(executeScript, commandTimeout: 20000);
logger.LogInformation($"提取绩效数据 {category ?? ""} 执行脚本获取数据{result?.Count() ?? 0}条记录");
if (result != null && result.Count() > 0)
{
if (extract.ExecuteType == 2)
{
foreach (var item in result)
{
item.Category = category;
}
}
return result.Where(t => !string.IsNullOrEmpty(t.Category)).ToList();
}
}
return null;
}
private Dictionary<string, string> GetParameters(per_allot allot)
{
DateTime beginTime = new DateTime(allot.Year, allot.Month, 1);
Dictionary<string, string> pairs = new Dictionary<string, string>
{
{ "@beginTime", $"'{beginTime.ToString("yyyy-MM-dd")}'" },
{ "@endTime", $"'{beginTime.AddMonths(1).ToString("yyyy-MM-dd")}'"},
};
return pairs;
}
/// <summary>
/// 从HIS抽取报表数据
/// </summary>
/// <param name="allot"></param>
/// <param name="configs"></param>
public void ImportData(per_allot allot, List<sys_hospitalconfig> configs)
{
Dictionary<string, object> pairs = new Dictionary<string, object>
{
{ "@allotid", allot.ID },
{ "@hospitalid", allot.HospitalId },
{ "@year", allot.Year },
{ "@month", allot.Month },
};
var imports = repimportconfigRepository.GetEntities(w => w.ScriptType == 1);
if (imports == null || !imports.Any()) return;
foreach (var import in imports)
{
var conf = configs.FirstOrDefault(w => w.HospitalId == allot.HospitalId && w.Id == import.ConfigId);
if (conf != null)
{
var timeRanges = import.TimeRange.SplitRemoveEmpty(",");
if (timeRanges == null || !timeRanges.Any()) continue;
foreach (var item in timeRanges)
{
if (item == "1")
{
pairs["@year"] = allot.Year;
pairs["@month"] = allot.Month;
}
else if (item == "2")
{
pairs["@year"] = allot.Year - 1;
pairs["@month"] = allot.Month;
}
else if (item == "3")
{
pairs["@year"] = allot.Year;
pairs["@month"] = allot.Month - 1;
}
try
{
DatabaseType type = (DatabaseType)conf.DataBaseType;
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);
perforPerallotRepository.ImportData(import, pairs, data);
}
catch (Exception ex)
{
logger.LogError(ex.ToString());
}
}
}
}
}
#endregion
#region Common #region Common
/// <summary> /// <summary>
...@@ -1298,5 +1318,65 @@ public void OutToExcelCell(ICell cell, object obj) ...@@ -1298,5 +1318,65 @@ public void OutToExcelCell(ICell cell, object obj)
} }
#endregion #endregion
#region 配置校验
/// <summary>
/// 配置校验
/// </summary>
/// <param name="allotId"></param>
/// <param name="hospitalId"></param>
/// <param name="useTemplate"></param>
public string Judge(int allotId, int hospitalId, int useTemplate, out string filePath)
{
string result = null;
filePath = "";
try
{
// 获取绩效信息
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId);
if (allot == null)
throw new PerformanceException("AllotID错误");
// 获取医院信息
var hospital = perforHospitalRepository.GetEntity(t => t.ID == hospitalId);
if (hospital == null)
throw new PerformanceException("医院ID错误");
// 获取医院配置信息
var hospitalConfigList = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
if (hospitalConfigList == null || hospitalConfigList.Count == 0)
throw new PerformanceException("当前医院暂不支持HIS数据抽取");
// 获取最近一次绩效
var statesArray = new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive };
var allotList = perforPerallotRepository.GetEntities(t => t.HospitalId == hospitalId && statesArray.Contains(t.States));
var allotLast = allotList?.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).First();
if (allotLast != null)
filePath = allotLast.Path;
// 获取当前医院模版信息
var modulesList = perforExmoduleRepository.GetEntities(t => t.HospitalId == hospitalId);
if (modulesList == null || modulesList.Count == 0)
throw new PerformanceException("当前医院还未配置模版");
// 获取模板项
var moduleIdList = modulesList.Select(t => t.Id).ToList();
var itemsList = perforExitemRepository.GetEntities(t => t.ModuleId.HasValue && moduleIdList.Contains(t.ModuleId.Value));
if (itemsList == null || itemsList.Count == 0)
throw new PerformanceException("当前医院还未配置模版项");
// 获取当前模板所有相关抽取SQL语句
var extypeIds = itemsList.Select(t => t.TypeId).Union(modulesList.Select(t => t.TypeId)).Distinct().ToList();
var extractList = perforExscriptRepository.GetEntities(t => extypeIds.Contains(t.TypeId));
if (extractList == null || extractList.Count == 0)
throw new PerformanceException("当前医院配置模板无需抽取");
}
catch (PerformanceException ex)
{
logger.LogError($"提取绩效数据异常 {ex.ToString()}");
result = ex.Message;
}
catch (Exception ex)
{
logger.LogError($"提取绩效数据异常 {ex.ToString()}");
throw new Exception(ex.Message);
}
return result;
}
#endregion
} }
} }
...@@ -19,7 +19,7 @@ public class ExConfigService : IAutoInjection ...@@ -19,7 +19,7 @@ public class ExConfigService : IAutoInjection
private readonly PerforExscriptRepository exscriptRepository; private readonly PerforExscriptRepository exscriptRepository;
private readonly PerforExmoduleRepository exmoduleRepository; private readonly PerforExmoduleRepository exmoduleRepository;
private readonly PerforExitemRepository exitemRepository; private readonly PerforExitemRepository exitemRepository;
private readonly PerforModspecialRepository modspecialRepository; private readonly PerforExspecialRepository exspecialRepository;
private readonly PerforPerallotRepository perallotRepository; private readonly PerforPerallotRepository perallotRepository;
private readonly PerforHospitalconfigRepository hospitalconfigRepository; private readonly PerforHospitalconfigRepository hospitalconfigRepository;
private readonly PerforExtractRepository extractRepository; private readonly PerforExtractRepository extractRepository;
...@@ -30,7 +30,7 @@ public class ExConfigService : IAutoInjection ...@@ -30,7 +30,7 @@ public class ExConfigService : IAutoInjection
PerforExscriptRepository exscriptRepository, PerforExscriptRepository exscriptRepository,
PerforExmoduleRepository exmoduleRepository, PerforExmoduleRepository exmoduleRepository,
PerforExitemRepository exitemRepository, PerforExitemRepository exitemRepository,
PerforModspecialRepository modspecialRepository, PerforExspecialRepository exspecialRepository,
PerforPerallotRepository perallotRepository, PerforPerallotRepository perallotRepository,
PerforHospitalconfigRepository hospitalconfigRepository, PerforHospitalconfigRepository hospitalconfigRepository,
PerforExtractRepository extractRepository, PerforExtractRepository extractRepository,
...@@ -41,7 +41,7 @@ public class ExConfigService : IAutoInjection ...@@ -41,7 +41,7 @@ public class ExConfigService : IAutoInjection
this.exscriptRepository = exscriptRepository; this.exscriptRepository = exscriptRepository;
this.exmoduleRepository = exmoduleRepository; this.exmoduleRepository = exmoduleRepository;
this.exitemRepository = exitemRepository; this.exitemRepository = exitemRepository;
this.modspecialRepository = modspecialRepository; this.exspecialRepository = exspecialRepository;
this.perallotRepository = perallotRepository; this.perallotRepository = perallotRepository;
this.hospitalconfigRepository = hospitalconfigRepository; this.hospitalconfigRepository = hospitalconfigRepository;
this.extractRepository = extractRepository; this.extractRepository = extractRepository;
...@@ -185,9 +185,9 @@ public void DelModule(int moduleId) ...@@ -185,9 +185,9 @@ public void DelModule(int moduleId)
} }
else else
{ {
var specialList = modspecialRepository.GetEntities(t => t.HospitalId == entity.HospitalId); var specialList = exspecialRepository.GetEntities(t => t.HospitalId == entity.HospitalId);
if (specialList != null && specialList.Any()) if (specialList != null && specialList.Any())
modspecialRepository.RemoveRange(specialList.ToArray()); exspecialRepository.RemoveRange(specialList.ToArray());
} }
} }
...@@ -254,9 +254,9 @@ public void DelItem(int itemId) ...@@ -254,9 +254,9 @@ public void DelItem(int itemId)
/// 特殊科室模板配置项列表 /// 特殊科室模板配置项列表
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public List<mod_special> QuerySpecial(int hospitalId) public List<ex_special> QuerySpecial(int hospitalId)
{ {
var list = modspecialRepository.GetEntities(t => t.HospitalId == hospitalId); var list = exspecialRepository.GetEntities(t => t.HospitalId == hospitalId);
return list; return list;
} }
...@@ -264,11 +264,11 @@ public List<mod_special> QuerySpecial(int hospitalId) ...@@ -264,11 +264,11 @@ public List<mod_special> QuerySpecial(int hospitalId)
/// 特殊科室模板配置项新增 /// 特殊科室模板配置项新增
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public List<mod_special> AddSpecial(SpecialListRequest request) public List<ex_special> AddSpecial(SpecialListRequest request)
{ {
var list = request.Items; var list = request.Items;
list.ForEach(t => t.HospitalId = request.HospitalId); list.ForEach(t => t.HospitalId = request.HospitalId);
if (!modspecialRepository.AddRange(list.ToArray())) if (!exspecialRepository.AddRange(list.ToArray()))
throw new PerformanceException("添加失败!"); throw new PerformanceException("添加失败!");
return list; return list;
...@@ -278,9 +278,9 @@ public List<mod_special> AddSpecial(SpecialListRequest request) ...@@ -278,9 +278,9 @@ public List<mod_special> AddSpecial(SpecialListRequest request)
/// 特殊科室模板配置项修改 /// 特殊科室模板配置项修改
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public mod_special EditSpecial(mod_special entity) public ex_special EditSpecial(ex_special entity)
{ {
var special = modspecialRepository.GetEntity(t => t.Id == entity.Id); var special = exspecialRepository.GetEntity(t => t.Id == entity.Id);
if (special == null) if (special == null)
throw new PerformanceException("选择修改的数据不存在!"); throw new PerformanceException("选择修改的数据不存在!");
...@@ -288,9 +288,9 @@ public mod_special EditSpecial(mod_special entity) ...@@ -288,9 +288,9 @@ public mod_special EditSpecial(mod_special entity)
special.Target = entity.Target; special.Target = entity.Target;
special.TargetFactor = entity.TargetFactor; special.TargetFactor = entity.TargetFactor;
special.AdjustFactor = entity.AdjustFactor; special.AdjustFactor = entity.AdjustFactor;
special.ExtractId = entity.ExtractId; special.TypeId = entity.TypeId;
special.ConfigId = entity.ConfigId; special.ConfigId = entity.ConfigId;
if (!modspecialRepository.Update(special)) if (!exspecialRepository.Update(special))
throw new PerformanceException("修改失败!"); throw new PerformanceException("修改失败!");
return special; return special;
...@@ -302,11 +302,11 @@ public mod_special EditSpecial(mod_special entity) ...@@ -302,11 +302,11 @@ public mod_special EditSpecial(mod_special entity)
/// <returns></returns> /// <returns></returns>
public void DelSpecial(int specialId) public void DelSpecial(int specialId)
{ {
var special = modspecialRepository.GetEntity(t => t.Id == specialId); var special = exspecialRepository.GetEntity(t => t.Id == specialId);
if (special == null) if (special == null)
throw new PerformanceException("需要删除的项不存在!"); throw new PerformanceException("需要删除的项不存在!");
modspecialRepository.Remove(special); exspecialRepository.Remove(special);
} }
#endregion #endregion
...@@ -472,26 +472,51 @@ public List<TitleValue> FeeType() ...@@ -472,26 +472,51 @@ public List<TitleValue> FeeType()
return titlevalue; return titlevalue;
} }
public enum ExtractResultClassify /// <summary>
{ /// 绩效考核项费用来源
[Description("门诊开单")] /// </summary>
OutIncome = 1, /// <returns></returns>
[Description("门诊执行")] public ModFeeResponse FeeSource(ModModuleRequest request)
OutExecIncome = 2, {
[Description("住院开单")] var configList = hospitalconfigRepository.GetEntities(t => t.HospitalId == request.HospitalId);
InpatIncome = 3, if (configList != null && configList.Any())
[Description("住院执行")] {
InpatExecIncome = 4, var hospitalConfig = configList.First();
[Description("额外收入")] var connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
OtherIncome = 5, int pagesize = 500, pagenum = 0;
[Description("支出")] if (request.PageNum != 0)
Expend = 6, pagenum = request.PageNum - 1;
[Description("医生工作量")] if (request.PageSize >= 500 && request.PageSize <= 10000)
DoctorWorkload = 7, pagesize = request.PageSize;
[Description("护理工作量")]
NurseWorkload = 8, string sql = $"select top {pagesize} t1.* from (select row_number() over(order by charge_name) as rownumber,* from (select min(code) code,charge_name from dic_fee where charge_name is not null and charge_name != '' group by charge_name)t )t1 where rownumber> {pagenum} * {pagesize};";
[Description("特殊核算科室")] var dataList = extractRepository.ExecuteScript(connection, sql, null);
SpecialUnit = 7, if (dataList != null && dataList.Any())
{
var list = new List<TitleValue>();
foreach (var num in dataList.Select(t => t.RowNumber).Distinct())
{
var data = new TitleValue
{
Title = dataList.First(t => t.RowNumber == num && t.ColumnName.ToLower() == "charge_name").Value.ToString(),
Value = dataList.First(t => t.RowNumber == num && t.ColumnName.ToLower() == "code").Value.ToString(),
};
list.Add(data);
}
sql = $"select count(*) num from (select min(code) code,charge_name from dic_fee where charge_name is not null and charge_name != '' group by charge_name)t ;";
connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
dataList = extractRepository.ExecuteScript(connection, sql, null);
return new ModFeeResponse
{
Total = (int)dataList.FirstOrDefault().Value,
PageNum = pagenum + 1,
PageSize = pagesize,
Data = list
};
}
}
return new ModFeeResponse();
} }
} }
} }
using Microsoft.Extensions.Logging; //using Microsoft.Extensions.Logging;
using Performance.DtoModels; //using Performance.DtoModels;
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.Linq; //using System.Linq;
using System.Text; //using System.Text;
using System.Text.RegularExpressions; //using System.Text.RegularExpressions;
namespace Performance.Services //namespace Performance.Services
{ //{
public class ModExtractService : IAutoInjection // public class ModExtractService : IAutoInjection
{ // {
private readonly ILogger<ModExtractService> logger; // private readonly ILogger<ModExtractService> logger;
private PerforModextractRepository perforModextractRepository; // private PerforModextractRepository perforModextractRepository;
private PerforModitemRepository perforModitemRepository; // private PerforModitemRepository perforModitemRepository;
private PerforModmoduleRepository perforModmoduleRepository; // private PerforModmoduleRepository perforModmoduleRepository;
private PerforModspecialRepository perforModspecialRepository; // private PerforModspecialRepository perforModspecialRepository;
private PerforHospitalconfigRepository perforHospitalconfigRepository; // private PerforHospitalconfigRepository perforHospitalconfigRepository;
private PerforExtractRepository perforExtractRepository; // private PerforExtractRepository perforExtractRepository;
private PerforModdicRepository moddicRepository; // private PerforModdicRepository moddicRepository;
public ModExtractService( // public ModExtractService(
ILogger<ModExtractService> logger, // ILogger<ModExtractService> logger,
PerforModextractRepository perforModextractRepository, // PerforModextractRepository perforModextractRepository,
PerforModitemRepository perforModitemRepository, // PerforModitemRepository perforModitemRepository,
PerforModmoduleRepository perforModmoduleRepository, // PerforModmoduleRepository perforModmoduleRepository,
PerforModspecialRepository perforModspecialRepository, // PerforModspecialRepository perforModspecialRepository,
PerforHospitalconfigRepository perforHospitalconfigRepository, // PerforHospitalconfigRepository perforHospitalconfigRepository,
PerforExtractRepository perforExtractRepository, // PerforExtractRepository perforExtractRepository,
PerforModdicRepository moddicRepository) // PerforModdicRepository moddicRepository)
{ // {
this.logger = logger; // this.logger = logger;
this.perforModextractRepository = perforModextractRepository; // this.perforModextractRepository = perforModextractRepository;
this.perforModitemRepository = perforModitemRepository; // this.perforModitemRepository = perforModitemRepository;
this.perforModmoduleRepository = perforModmoduleRepository; // this.perforModmoduleRepository = perforModmoduleRepository;
this.perforModspecialRepository = perforModspecialRepository; // this.perforModspecialRepository = perforModspecialRepository;
this.perforHospitalconfigRepository = perforHospitalconfigRepository; // this.perforHospitalconfigRepository = perforHospitalconfigRepository;
this.perforExtractRepository = perforExtractRepository; // this.perforExtractRepository = perforExtractRepository;
this.moddicRepository = moddicRepository; // this.moddicRepository = moddicRepository;
} // }
/// <summary> // /// <summary>
/// 绩效数据抽取模板 // /// 绩效数据抽取模板
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<TitleValue> ExtractScheme(int hospitalId, List<int> executeType) // public List<TitleValue> ExtractScheme(int hospitalId, List<int> executeType)
{ // {
var titlevalue = new List<TitleValue>(); // var titlevalue = new List<TitleValue>();
var list = perforModextractRepository.GetEntities(t => (t.HospitalId == hospitalId || t.HospitalId == null) && executeType.Contains(t.ExecuteType.Value) && t.IsEnable == 1); // var list = perforModextractRepository.GetEntities(t => (t.HospitalId == hospitalId || t.HospitalId == null) && executeType.Contains(t.ExecuteType.Value) && t.IsEnable == 1);
if (list != null && list.Any()) // if (list != null && list.Any())
titlevalue = list.OrderBy(t => t.EName).Select(t => new TitleValue { Title = string.IsNullOrEmpty(t.Description) ? t.EName : $"{t.EName}({t.Description})", Value = t.Id.ToString() }).OrderBy(t => t.Title).ToList(); // titlevalue = list.OrderBy(t => t.EName).Select(t => new TitleValue { Title = string.IsNullOrEmpty(t.Description) ? t.EName : $"{t.EName}({t.Description})", Value = t.Id.ToString() }).OrderBy(t => t.Title).ToList();
return titlevalue; // return titlevalue;
} // }
/// <summary> // /// <summary>
/// 费用类型 // /// 费用类型
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<TitleValue> FeeType() // public List<TitleValue> FeeType()
{ // {
var titlevalue = new List<TitleValue>(); // var titlevalue = new List<TitleValue>();
var type = EnumHelper.GetItems<SheetType>().Where(t => new List<int> { (int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend, (int)SheetType.Workload, (int)SheetType.SpecialUnit }.Contains(t.Value)); // var type = EnumHelper.GetItems<SheetType>().Where(t => new List<int> { (int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend, (int)SheetType.Workload, (int)SheetType.SpecialUnit }.Contains(t.Value));
if (type != null && type.Any()) // if (type != null && type.Any())
{ // {
titlevalue = type.Select(t => new TitleValue // titlevalue = type.Select(t => new TitleValue
{ // {
Title = t.Description, // Title = t.Description,
Value = t.Value.ToString() // Value = t.Value.ToString()
}).ToList(); // }).ToList();
} // }
return titlevalue; // return titlevalue;
} // }
/// <summary> // /// <summary>
/// 费用字典新增 // /// 费用字典新增
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public mod_module AddModule(ModModuleRequest request) // public mod_module AddModule(ModModuleRequest request)
{ // {
if (request.SheetType != (int)SheetType.Income) // if (request.SheetType != (int)SheetType.Income)
throw new PerformanceException("模块类型错误,只支持收入模板配置"); // throw new PerformanceException("模块类型错误,只支持收入模板配置");
string[] array = new string[] { "开单收入", "执行收入" }; // string[] array = new string[] { "开单收入", "执行收入" };
if (request.ModuleName.IndexOf("开单收入") == -1 && request.ModuleName.IndexOf("执行收入") == -1) // if (request.ModuleName.IndexOf("开单收入") == -1 && request.ModuleName.IndexOf("执行收入") == -1)
throw new PerformanceException("模块名称规则错误"); // throw new PerformanceException("模块名称规则错误");
//if (!Regex.IsMatch(request.ModuleName, @"^[\u4e00-\u9fa5]+$")) // //if (!Regex.IsMatch(request.ModuleName, @"^[\u4e00-\u9fa5]+$"))
// throw new PerformanceException("模块名称规则错误,请使用全中文命名"); // // throw new PerformanceException("模块名称规则错误,请使用全中文命名");
var incomeList = perforModmoduleRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.SheetType == (int)SheetType.Income); // var incomeList = perforModmoduleRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.SheetType == (int)SheetType.Income);
if (incomeList.Any(t => Regex.Replace(t.ModuleName, @"\d", "").Replace(".", "").Replace(" ", "") == request.ModuleName)) // if (incomeList.Any(t => Regex.Replace(t.ModuleName, @"\d", "").Replace(".", "").Replace(" ", "") == request.ModuleName))
throw new PerformanceException("绩效模板已存在!"); // throw new PerformanceException("绩效模板已存在!");
string addname = ""; // string addname = "";
var moduleList = perforModmoduleRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.ModuleName.IndexOf("1.") != -1); // var moduleList = perforModmoduleRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.ModuleName.IndexOf("1.") != -1);
string name = request.ModuleName.Replace("开单收入", "").Replace("执行收入", ""); // string name = request.ModuleName.Replace("开单收入", "").Replace("执行收入", "");
var exist = moduleList.Where(t => t.ModuleName.Contains(name)); // var exist = moduleList.Where(t => t.ModuleName.Contains(name));
if (exist != null && exist.Any()) // if (exist != null && exist.Any())
{ // {
string modulename = exist.OrderByDescending(t => t.ModuleName).First().ModuleName; // string modulename = exist.OrderByDescending(t => t.ModuleName).First().ModuleName;
int[] sort = Array.ConvertAll(modulename.Split(' ')[0].Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries), t => ConvertHelper.TryInt(t)); // int[] sort = Array.ConvertAll(modulename.Split(' ')[0].Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries), t => ConvertHelper.TryInt(t));
sort[2] += 1; // sort[2] += 1;
addname = string.Join(".", sort) + " " + request.ModuleName; // addname = string.Join(".", sort) + " " + request.ModuleName;
} // }
else // else
{ // {
string modulename = moduleList.OrderByDescending(t => t.ModuleName).First().ModuleName; // string modulename = moduleList.OrderByDescending(t => t.ModuleName).First().ModuleName;
int[] sort = Array.ConvertAll(modulename.Split(' ')[0].Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries), t => ConvertHelper.TryInt(t)); // int[] sort = Array.ConvertAll(modulename.Split(' ')[0].Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries), t => ConvertHelper.TryInt(t));
sort[1] += 1; // sort[1] += 1;
addname = $"{sort[0]}.{sort[1]}.1 " + request.ModuleName; // addname = $"{sort[0]}.{sort[1]}.1 " + request.ModuleName;
} // }
mod_module entity = new mod_module // mod_module entity = new mod_module
{ // {
ModuleName = addname, // ModuleName = addname,
HospitalId = request.HospitalId, // HospitalId = request.HospitalId,
Description = request.Description, // Description = request.Description,
SheetType = request.SheetType, // SheetType = request.SheetType,
ExtractId = request.ExtractId, // ExtractId = request.ExtractId,
ReadOnly = 0, // ReadOnly = 0,
IsGenerated = 0 // IsGenerated = 0
}; // };
if (!perforModmoduleRepository.Add(entity)) // if (!perforModmoduleRepository.Add(entity))
throw new PerformanceException("添加失败!"); // throw new PerformanceException("添加失败!");
return entity; // return entity;
} // }
/// <summary> // /// <summary>
/// 费用字典 // /// 费用字典
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<mod_module> Module(int hospitalId) // public List<mod_module> Module(int hospitalId)
{ // {
//首次添加费用字典默认值 // //首次添加费用字典默认值
AddModule(hospitalId); // AddModule(hospitalId);
var list = perforModmoduleRepository.GetEntities(t => t.HospitalId == hospitalId).OrderBy(t => t.ModuleName).ToList(); // var list = perforModmoduleRepository.GetEntities(t => t.HospitalId == hospitalId).OrderBy(t => t.ModuleName).ToList();
return list; // return list;
} // }
/// <summary> // /// <summary>
/// 首次添加费用字典默认值 // /// 首次添加费用字典默认值
/// </summary> // /// </summary>
/// <param name="hospitalId"></param> // /// <param name="hospitalId"></param>
private void AddModule(int hospitalId) // private void AddModule(int hospitalId)
{ // {
var moduleList = new mod_module[] // var moduleList = new mod_module[]
{ // {
new mod_module{ ModuleName = "1.0.1 额外收入", SheetType = (int)SheetType.OtherIncome }, // new mod_module{ ModuleName = "1.0.1 额外收入", SheetType = (int)SheetType.OtherIncome },
new mod_module{ ModuleName = "1.1.1 门诊开单收入", SheetType = (int)SheetType.Income }, // new mod_module{ ModuleName = "1.1.1 门诊开单收入", SheetType = (int)SheetType.Income },
new mod_module{ ModuleName = "1.1.2 门诊执行收入", SheetType = (int)SheetType.Income }, // new mod_module{ ModuleName = "1.1.2 门诊执行收入", SheetType = (int)SheetType.Income },
new mod_module{ ModuleName = "1.2.1 住院开单收入", SheetType = (int)SheetType.Income }, // new mod_module{ ModuleName = "1.2.1 住院开单收入", SheetType = (int)SheetType.Income },
new mod_module{ ModuleName = "1.2.2 住院执行收入", SheetType = (int)SheetType.Income }, // new mod_module{ ModuleName = "1.2.2 住院执行收入", SheetType = (int)SheetType.Income },
new mod_module{ ModuleName = "2.1 成本支出统计表", SheetType = (int)SheetType.Expend }, // new mod_module{ ModuleName = "2.1 成本支出统计表", SheetType = (int)SheetType.Expend },
new mod_module{ ModuleName = "3.1 医生组工作量绩效测算表", SheetType = (int)SheetType.Workload }, // new mod_module{ ModuleName = "3.1 医生组工作量绩效测算表", SheetType = (int)SheetType.Workload },
new mod_module{ ModuleName = "3.2 护理组工作量绩效测算表", SheetType = (int)SheetType.Workload }, // new mod_module{ ModuleName = "3.2 护理组工作量绩效测算表", SheetType = (int)SheetType.Workload },
}; // };
var data = perforModmoduleRepository.GetEntities(t => t.HospitalId == hospitalId); // var data = perforModmoduleRepository.GetEntities(t => t.HospitalId == hospitalId);
var inexistence = data == null ? moduleList : moduleList.Where(t => !data.Select(p => p.ModuleName).ToArray().Contains(t.ModuleName)); // var inexistence = data == null ? moduleList : moduleList.Where(t => !data.Select(p => p.ModuleName).ToArray().Contains(t.ModuleName));
if (inexistence != null && inexistence.Any()) // if (inexistence != null && inexistence.Any())
{ // {
List<mod_module> modules = new List<mod_module>(); // List<mod_module> modules = new List<mod_module>();
foreach (var item in inexistence) // foreach (var item in inexistence)
{ // {
var module = new mod_module // var module = new mod_module
{ // {
HospitalId = hospitalId, // HospitalId = hospitalId,
ModuleName = item.ModuleName, // ModuleName = item.ModuleName,
SheetType = (int)item.SheetType, // SheetType = (int)item.SheetType,
ReadOnly = 1, // ReadOnly = 1,
ExtractId = null, // ExtractId = null,
IsGenerated = 0 // IsGenerated = 0
}; // };
modules.Add(module); // modules.Add(module);
} // }
if (modules.Any()) // if (modules.Any())
perforModmoduleRepository.AddRange(modules.ToArray()); // perforModmoduleRepository.AddRange(modules.ToArray());
} // }
} // }
/// <summary> // /// <summary>
/// 绩效模板修改 // /// 绩效模板修改
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public mod_module EditModule(ModModuleRequest request) // public mod_module EditModule(ModModuleRequest request)
{ // {
var entity = perforModmoduleRepository.GetEntity(t => t.Id == request.ModuleId); // var entity = perforModmoduleRepository.GetEntity(t => t.Id == request.ModuleId);
if (entity == null) // if (entity == null)
throw new PerformanceException("该绩效抽取方案不存在!"); // throw new PerformanceException("该绩效抽取方案不存在!");
//if (entity.ReadOnly == 1) // //if (entity.ReadOnly == 1)
// throw new PerformanceException("该绩效抽取方案不可编辑!"); // // throw new PerformanceException("该绩效抽取方案不可编辑!");
var list = perforModmoduleRepository.GetEntities(t => t.Id != entity.Id && t.HospitalId == entity.HospitalId && t.ModuleName == request.ModuleName); // var list = perforModmoduleRepository.GetEntities(t => t.Id != entity.Id && t.HospitalId == entity.HospitalId && t.ModuleName == request.ModuleName);
if (list != null && list.Any()) // if (list != null && list.Any())
throw new PerformanceException("绩效模板已存在!"); // throw new PerformanceException("绩效模板已存在!");
entity.ModuleName = request.ModuleName ?? entity.ModuleName; // entity.ModuleName = request.ModuleName ?? entity.ModuleName;
entity.SheetType = request.SheetType; // entity.SheetType = request.SheetType;
entity.Description = request.Description; // entity.Description = request.Description;
entity.ExtractId = request.ExtractId; // entity.ExtractId = request.ExtractId;
entity.ConfigId = request.ConfigId; // entity.ConfigId = request.ConfigId;
if (!perforModmoduleRepository.Update(entity)) // if (!perforModmoduleRepository.Update(entity))
throw new PerformanceException("修改失败!"); // throw new PerformanceException("修改失败!");
return entity; // return entity;
} // }
/// <summary> // /// <summary>
/// 绩效模板删除 // /// 绩效模板删除
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public void DelModule(int moduleId) // public void DelModule(int moduleId)
{ // {
var entity = perforModmoduleRepository.GetEntity(t => t.Id == moduleId); // var entity = perforModmoduleRepository.GetEntity(t => t.Id == moduleId);
if (entity == null) // if (entity == null)
throw new PerformanceException("该绩效抽取方案不存在!"); // throw new PerformanceException("该绩效抽取方案不存在!");
if (!perforModmoduleRepository.Remove(entity)) // if (!perforModmoduleRepository.Remove(entity))
throw new PerformanceException("删除失败!"); // throw new PerformanceException("删除失败!");
if (entity.SheetType != (int)SheetType.SpecialUnit) // if (entity.SheetType != (int)SheetType.SpecialUnit)
{ // {
var itemList = perforModitemRepository.GetEntities(t => t.ModuleId == moduleId); // var itemList = perforModitemRepository.GetEntities(t => t.ModuleId == moduleId);
if (itemList != null && itemList.Any()) // if (itemList != null && itemList.Any())
perforModitemRepository.RemoveRange(itemList.ToArray()); // perforModitemRepository.RemoveRange(itemList.ToArray());
} // }
else // else
{ // {
var specialList = perforModspecialRepository.GetEntities(t => t.HospitalId == entity.HospitalId); // var specialList = perforModspecialRepository.GetEntities(t => t.HospitalId == entity.HospitalId);
if (specialList != null && specialList.Any()) // if (specialList != null && specialList.Any())
perforModspecialRepository.RemoveRange(specialList.ToArray()); // perforModspecialRepository.RemoveRange(specialList.ToArray());
} // }
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项列表 // /// 绩效收入模板配置项列表
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<mod_item> Items(int moduleId) // public List<mod_item> Items(int moduleId)
{ // {
var list = perforModitemRepository.GetEntities(t => t.ModuleId == moduleId); // var list = perforModitemRepository.GetEntities(t => t.ModuleId == moduleId);
return list?.OrderBy(t => t.Id).ToList(); // return list?.OrderBy(t => t.Id).ToList();
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项新增 // /// 绩效收入模板配置项新增
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<mod_item> AddItem(ItemListRequest request) // public List<mod_item> AddItem(ItemListRequest request)
{ // {
var entity = perforModmoduleRepository.GetEntity(t => t.Id == request.ModuleId); // var entity = perforModmoduleRepository.GetEntity(t => t.Id == request.ModuleId);
if (entity == null) // if (entity == null)
throw new PerformanceException("选择的绩效抽取方案不存在!"); // throw new PerformanceException("选择的绩效抽取方案不存在!");
var list = request.Items; // var list = request.Items;
list.ForEach(t => // list.ForEach(t =>
{ // {
t.ModuleId = entity.Id; // t.ModuleId = entity.Id;
//t.ExtractId = entity.ExtractId; // //t.ExtractId = entity.ExtractId;
t.ReadOnly = 0; // t.ReadOnly = 0;
}); // });
//if (!perforModitemRepository.AddRange(list.ToArray())) // //if (!perforModitemRepository.AddRange(list.ToArray()))
// throw new PerformanceException("添加失败!"); // // throw new PerformanceException("添加失败!");
return new List<mod_item>(); // return new List<mod_item>();
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项修改 // /// 绩效收入模板配置项修改
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public mod_item EditItem(mod_item entity) // public mod_item EditItem(mod_item entity)
{ // {
var item = perforModitemRepository.GetEntity(t => t.Id == entity.Id); if (item == null) // var item = perforModitemRepository.GetEntity(t => t.Id == entity.Id); if (item == null)
throw new PerformanceException("选择修改的项不存在!"); // throw new PerformanceException("选择修改的项不存在!");
item.ItemName = entity.ItemName; // item.ItemName = entity.ItemName;
item.FactorValue1 = entity.FactorValue1; // item.FactorValue1 = entity.FactorValue1;
item.FactorValue2 = entity.FactorValue2; // item.FactorValue2 = entity.FactorValue2;
item.FactorValue3 = entity.FactorValue3; // item.FactorValue3 = entity.FactorValue3;
item.ExtractId = entity.ExtractId; // item.ExtractId = entity.ExtractId;
item.SelectionRange = entity.SelectionRange; // item.SelectionRange = entity.SelectionRange;
item.ConfigId = entity.ConfigId; // item.ConfigId = entity.ConfigId;
if (!perforModitemRepository.Update(item)) // if (!perforModitemRepository.Update(item))
throw new PerformanceException("修改失败!"); // throw new PerformanceException("修改失败!");
return item; // return item;
} // }
/// <summary> // /// <summary>
/// 绩效收入模板配置项删除 // /// 绩效收入模板配置项删除
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public void DelItem(int itemId) // public void DelItem(int itemId)
{ // {
var item = perforModitemRepository.GetEntity(t => t.Id == itemId); // var item = perforModitemRepository.GetEntity(t => t.Id == itemId);
if (item == null) // if (item == null)
throw new PerformanceException("Item项不存在!"); // throw new PerformanceException("Item项不存在!");
perforModitemRepository.Remove(item); // perforModitemRepository.Remove(item);
} // }
/// <summary> // /// <summary>
/// 特殊科室模板配置项列表 // /// 特殊科室模板配置项列表
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<mod_special> Special(int hospitalId) // public List<mod_special> Special(int hospitalId)
{ // {
var list = perforModspecialRepository.GetEntities(t => t.HospitalId == hospitalId); // var list = perforModspecialRepository.GetEntities(t => t.HospitalId == hospitalId);
return list; // return list;
} // }
/// <summary> // /// <summary>
/// 特殊科室模板配置项新增 // /// 特殊科室模板配置项新增
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<mod_special> AddSpecial(SpecialListRequest request) // public List<mod_special> AddSpecial(SpecialListRequest request)
{ // {
var list = request.Items; // var list = request.Items;
list.ForEach(t => t.HospitalId = request.HospitalId); // list.ForEach(t => t.HospitalId = request.HospitalId);
if (!perforModspecialRepository.AddRange(list.ToArray())) // if (!perforModspecialRepository.AddRange(list.ToArray()))
throw new PerformanceException("添加失败!"); // throw new PerformanceException("添加失败!");
return list; // return list;
} // }
/// <summary> // /// <summary>
/// 特殊科室模板配置项修改 // /// 特殊科室模板配置项修改
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public mod_special EditSpecial(mod_special entity) // public mod_special EditSpecial(mod_special entity)
{ // {
var special = perforModspecialRepository.GetEntity(t => t.Id == entity.Id); // var special = perforModspecialRepository.GetEntity(t => t.Id == entity.Id);
if (special == null) // if (special == null)
throw new PerformanceException("选择修改的数据不存在!"); // throw new PerformanceException("选择修改的数据不存在!");
special.Department = entity.Department ?? special.Department; // special.Department = entity.Department ?? special.Department;
special.Target = entity.Target; // special.Target = entity.Target;
special.TargetFactor = entity.TargetFactor; // special.TargetFactor = entity.TargetFactor;
special.AdjustFactor = entity.AdjustFactor; // special.AdjustFactor = entity.AdjustFactor;
special.ExtractId = entity.ExtractId; // special.ExtractId = entity.ExtractId;
special.ConfigId = entity.ConfigId; // special.ConfigId = entity.ConfigId;
if (!perforModspecialRepository.Update(special)) // if (!perforModspecialRepository.Update(special))
throw new PerformanceException("修改失败!"); // throw new PerformanceException("修改失败!");
return special; // return special;
} // }
/// <summary> // /// <summary>
/// 特殊科室模板配置项删除 // /// 特殊科室模板配置项删除
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public void DelSpecial(int specialId) // public void DelSpecial(int specialId)
{ // {
var special = perforModspecialRepository.GetEntity(t => t.Id == specialId); // var special = perforModspecialRepository.GetEntity(t => t.Id == specialId);
if (special == null) // if (special == null)
throw new PerformanceException("需要删除的项不存在!"); // throw new PerformanceException("需要删除的项不存在!");
perforModspecialRepository.Remove(special); // perforModspecialRepository.Remove(special);
} // }
/// <summary> // /// <summary>
/// 绩效考核项费用来源 // /// 绩效考核项费用来源
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public ModFeeResponse FeeSource(ModModuleRequest request) // public ModFeeResponse FeeSource(ModModuleRequest request)
{ // {
var configList = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == request.HospitalId); // var configList = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == request.HospitalId);
if (configList != null && configList.Any()) // if (configList != null && configList.Any())
{ // {
var hospitalConfig = configList.First(); // var hospitalConfig = configList.First();
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);
int pagesize = 500, pagenum = 0; // int pagesize = 500, pagenum = 0;
if (request.PageNum != 0) // if (request.PageNum != 0)
pagenum = request.PageNum - 1; // pagenum = request.PageNum - 1;
if (request.PageSize >= 500 && request.PageSize <= 10000) // if (request.PageSize >= 500 && request.PageSize <= 10000)
pagesize = request.PageSize; // pagesize = request.PageSize;
string sql = $"select top {pagesize} t1.* from (select row_number() over(order by charge_name) as rownumber,* from (select min(code) code,charge_name from dic_fee where charge_name is not null and charge_name != '' group by charge_name)t )t1 where rownumber> {pagenum} * {pagesize};"; // string sql = $"select top {pagesize} t1.* from (select row_number() over(order by charge_name) as rownumber,* from (select min(code) code,charge_name from dic_fee where charge_name is not null and charge_name != '' group by charge_name)t )t1 where rownumber> {pagenum} * {pagesize};";
var dataList = perforExtractRepository.ExecuteScript(connection, sql, null); // var dataList = perforExtractRepository.ExecuteScript(connection, sql, null);
if (dataList != null && dataList.Any()) // if (dataList != null && dataList.Any())
{ // {
var list = new List<TitleValue>(); // var list = new List<TitleValue>();
foreach (var num in dataList.Select(t => t.RowNumber).Distinct()) // foreach (var num in dataList.Select(t => t.RowNumber).Distinct())
{ // {
var data = new TitleValue // var data = new TitleValue
{ // {
Title = dataList.First(t => t.RowNumber == num && t.ColumnName.ToLower() == "charge_name").Value.ToString(), // Title = dataList.First(t => t.RowNumber == num && t.ColumnName.ToLower() == "charge_name").Value.ToString(),
Value = dataList.First(t => t.RowNumber == num && t.ColumnName.ToLower() == "code").Value.ToString(), // Value = dataList.First(t => t.RowNumber == num && t.ColumnName.ToLower() == "code").Value.ToString(),
}; // };
list.Add(data); // list.Add(data);
} // }
sql = $"select count(*) num from (select min(code) code,charge_name from dic_fee where charge_name is not null and charge_name != '' group by charge_name)t ;"; // sql = $"select count(*) num from (select min(code) code,charge_name from dic_fee where charge_name is not null and charge_name != '' group by charge_name)t ;";
connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword); // connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
dataList = perforExtractRepository.ExecuteScript(connection, sql, null); // dataList = perforExtractRepository.ExecuteScript(connection, sql, null);
return new ModFeeResponse // return new ModFeeResponse
{ // {
Total = (int)dataList.FirstOrDefault().Value, // Total = (int)dataList.FirstOrDefault().Value,
PageNum = pagenum + 1, // PageNum = pagenum + 1,
PageSize = pagesize, // PageSize = pagesize,
Data = list // Data = list
}; // };
} // }
} // }
return new ModFeeResponse(); // return new ModFeeResponse();
} // }
/// <summary> // /// <summary>
/// 添加默认绩效模板配置 // /// 添加默认绩效模板配置
/// </summary> // /// </summary>
/// <param name="moduleId"></param> // /// <param name="moduleId"></param>
public void AddItems(int moduleId) // public void AddItems(int moduleId)
{ // {
var module = perforModmoduleRepository.GetEntity(t => t.Id == moduleId); // var module = perforModmoduleRepository.GetEntity(t => t.Id == moduleId);
if (module == null) // if (module == null)
throw new PerformanceException("绩效模板不存在,请重新选择!"); // throw new PerformanceException("绩效模板不存在,请重新选择!");
//收入 默认添加收费项 // //收入 默认添加收费项
if ((int)SheetType.Income == module.SheetType && module.IsGenerated == 0) // if ((int)SheetType.Income == module.SheetType && module.IsGenerated == 0)
{ // {
var sqlconfig = moddicRepository.GetEntity(w => w.HospitalId == module.HospitalId && w.Type.Trim().ToLower() == "itemsql"); // var sqlconfig = moddicRepository.GetEntity(w => w.HospitalId == module.HospitalId && w.Type.Trim().ToLower() == "itemsql");
if (sqlconfig == null) // if (sqlconfig == null)
{ // {
logger.LogInformation("{0} 医院配置信息未设置", "添加默认收费项"); // logger.LogInformation("{0} 医院配置信息未设置", "添加默认收费项");
throw new PerformanceException($"医院配置信息未设置"); // throw new PerformanceException($"医院配置信息未设置");
} // }
var hospitalConfig = perforHospitalconfigRepository.GetEntity(t => t.HospitalId == module.HospitalId && t.Id == sqlconfig.ConfigId); // var hospitalConfig = perforHospitalconfigRepository.GetEntity(t => t.HospitalId == module.HospitalId && t.Id == sqlconfig.ConfigId);
if (hospitalConfig == null) // if (hospitalConfig == null)
{ // {
logger.LogInformation("{0} 医院配置信息未设置", "添加默认收费项"); // logger.LogInformation("{0} 医院配置信息未设置", "添加默认收费项");
throw new PerformanceException($"医院配置信息未设置"); // throw new PerformanceException($"医院配置信息未设置");
} // }
logger.LogInformation("创建数据库连接"); // logger.LogInformation("创建数据库连接");
var connection = ConnectionBuilder.Create(DatabaseType.Oracle, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword); // var connection = ConnectionBuilder.Create(DatabaseType.Oracle, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
string sql = sqlconfig.Content; // string sql = sqlconfig.Content;
logger.LogInformation($"执行sql:{sql}"); // logger.LogInformation($"执行sql:{sql}");
var dataList = perforExtractRepository.ExecuteScript(connection, sql, null); // var dataList = perforExtractRepository.ExecuteScript(connection, sql, null);
logger.LogInformation($"获取数据{dataList?.Count ?? 0}条"); // logger.LogInformation($"获取数据{dataList?.Count ?? 0}条");
if (dataList != null && dataList.Any()) // if (dataList != null && dataList.Any())
{ // {
var itemList = dataList.Select(t => new mod_item // var itemList = dataList.Select(t => new mod_item
{ // {
ItemName = t.Value.ToString(), // ItemName = t.Value.ToString(),
FactorValue1 = 0m, // FactorValue1 = 0m,
FactorValue2 = 0m, // FactorValue2 = 0m,
FactorValue3 = 0m, // FactorValue3 = 0m,
ModuleId = module.Id, // ModuleId = module.Id,
ExtractId = module.ExtractId, // ExtractId = module.ExtractId,
ReadOnly = 1 // ReadOnly = 1
}); // });
logger.LogInformation($"添加默认收费项 受影响行数{itemList.Count()}"); // logger.LogInformation($"添加默认收费项 受影响行数{itemList.Count()}");
perforModitemRepository.AddRange(itemList.ToArray()); // perforModitemRepository.AddRange(itemList.ToArray());
module.IsGenerated = 1; // module.IsGenerated = 1;
perforModmoduleRepository.Update(module); // perforModmoduleRepository.Update(module);
} // }
} // }
} // }
/// <summary> // /// <summary>
/// 特殊科室人均 // /// 特殊科室人均
/// </summary> // /// </summary>
/// <returns></returns> // /// <returns></returns>
public List<TitleValue> PerforType() // public List<TitleValue> PerforType()
{ // {
var list = EnumHelper.GetItems<PerforType>(); // var list = EnumHelper.GetItems<PerforType>();
var result = list.Select(t => new TitleValue // var result = list.Select(t => new TitleValue
{ // {
Title = t.Description, // Title = t.Description,
Value = t.Description // Value = t.Description
}); // });
return result.ToList(); // return result.ToList();
} // }
/// <summary> // /// <summary>
/// 获取抽取的配置 // /// 获取抽取的配置
/// </summary> // /// </summary>
/// <param name="hospitalId"></param> // /// <param name="hospitalId"></param>
/// <returns></returns> // /// <returns></returns>
public List<sys_hospitalconfig> GetHospitalconfigs(int hospitalId) // public List<sys_hospitalconfig> GetHospitalconfigs(int hospitalId)
{ // {
var configs = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId); // var configs = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
return configs; // return configs;
} // }
} // }
} //}
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment