Commit 579b37c8 by lcx

Merge branch '读取excel抽取' into 20200618合并分支

# Conflicts:
#	performance/Performance.Api/appsettings.Development.json
#	performance/Performance.Api/appsettings.Localhost.json
parents 06d1887e 6ba8fc88
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.Infrastructure;
using Performance.Services;
namespace Performance.Api.Controllers
{
[Route("api/modextract")]
[ApiController]
public class ExConfigController : Controller
{
private readonly ILogger<ExConfigController> logger;
private ExConfigService configService;
private WebapiUrl url;
public ExConfigController(
ILogger<ExConfigController> logger,
ExConfigService configService,
IOptions<WebapiUrl> url)
{
this.logger = logger;
this.configService = configService;
this.url = url.Value;
}
/// <summary>
/// 绩效数据抽取模板
/// </summary>
/// <returns></returns>
[Route("scheme")]
[HttpPost]
public ApiResponse Extract([CustomizeValidator(RuleSet = "Query"), FromBody] ModModuleRequest request)
{
if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!");
if (request.ExecuteType == null || !request.ExecuteType.Any())
return new ApiResponse(ResponseType.ParameterError, "ExecuteType 不存在,请重新选择!");
var list = configService.ExtractScheme(request.HospitalId.Value, request.ExecuteType);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 费用类型
/// </summary>
/// <returns></returns>
[Route("type")]
[HttpPost]
public ApiResponse FeeType()
{
var list = configService.FeeType();
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 绩效考核项费用来源
/// </summary>
/// <returns></returns>
[Route("source")]
[HttpPost]
public ApiResponse FeeSource([FromBody] ModModuleRequest request)
{
if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
string retJson = HttpHelper.HttpPost(url.HttpPost + "/modextract/source", JsonHelper.Serialize(request), true);
var ret = JsonHelper.Deserialize<ApiResponse>(retJson);
return new ApiResponse(ResponseType.OK, ret.Data);
}
/// <summary>
/// 费用字典新增
/// </summary>
/// <returns></returns>
[Route("addmodule")]
[HttpPost]
public ApiResponse AddModule([CustomizeValidator(RuleSet = "Add"), FromBody] ModModuleRequest request)
{
if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
var entity = configService.AddModule(request);
return new ApiResponse(ResponseType.OK, "添加成功!", entity);
}
/// <summary>
/// 费用字典(绩效模板)
/// </summary>
/// <returns></returns>
[Route("modules")]
[HttpPost]
public ApiResponse Module([CustomizeValidator(RuleSet = "Query"), FromBody] ModModuleRequest request)
{
if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!");
var list = configService.QueryModule(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 绩效模板修改
/// </summary>
/// <returns></returns>
[Route("editmodule")]
[HttpPost]
public ApiResponse EditModule([FromBody] ModModuleRequest request)
{
if (request.ModuleId == null || request.ModuleId == 0)
return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!");
var entity = configService.EditModule(request);
return new ApiResponse(ResponseType.OK, "修改成功!", entity);
}
/// <summary>
/// 绩效模板删除
/// </summary>
/// <returns></returns>
[Route("deletemodule")]
[HttpPost]
public ApiResponse DelModule([FromBody] ModModuleRequest request)
{
if (request.ModuleId == null || request.ModuleId == 0)
return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!");
configService.DelModule(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!");
}
/// <summary>
/// 绩效收入模板配置项新增
/// </summary>
/// <returns></returns>
[Route("additem")]
[HttpPost]
public ApiResponse AddItem([FromBody] ItemListRequest request)
{
if (request.ModuleId == null && request.ModuleId == 0)
return new ApiResponse(ResponseType.ParameterError, "ModuleId 参数错误!");
if (request.Items == null && !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "Items 未发现任添加何项!");
var list = configService.AddItem(request);
return new ApiResponse(ResponseType.OK, "添加成功!", list);
}
/// <summary>
/// 绩效收入模板配置项列表
/// </summary>
/// <returns></returns>
[Route("items")]
[HttpPost]
public ApiResponse Items([FromBody] ModItemRequest request)
{
if (!configService.QueryHosConfigs(request.ModuleId.Value, out int sheetType))
return new ApiResponse(ResponseType.Fail, "当前医院未配置地址");
if (sheetType == (int)SheetType.Income)
{
logger.LogInformation($"绩效收入模板配置项列表 : 请求地址 {url.HttpPost}/modextract/items");
HttpHelper.HttpPost(url.HttpPost + "/modextract/items", JsonHelper.Serialize(request), true);
logger.LogInformation($"绩效收入模板配置项列表在{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss完成请求")}");
}
var list = configService.QueryItems(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 绩效收入模板配置项修改
/// </summary>
/// <returns></returns>
[Route("edititem")]
[HttpPost]
public ApiResponse EditItem([FromBody] ItemListRequest request)
{
if (request.Items == null || !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "请选择需要修改的数据!");
var entity = configService.EditItem(request.Items[0]);
return new ApiResponse(ResponseType.OK, "修改成功!", entity);
}
/// <summary>
/// 绩效收入模板配置项删除
/// </summary>
/// <returns></returns>
[Route("deleteitem")]
[HttpPost]
public ApiResponse DelItem([FromBody] ModItemRequest request)
{
if (request.ItemId == null && request.ItemId == 0)
return new ApiResponse(ResponseType.ParameterError, "ItemId 参数错误!");
configService.DelItem(request.ItemId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!");
}
#region 特殊科室模板
/// <summary>
/// 特殊科室模板配置项新增
/// </summary>
/// <returns></returns>
[Route("addspecial")]
[HttpPost]
public ApiResponse AddSpecial([FromBody] SpecialListRequest request)
{
if (request.HospitalId == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
if (request.Items == null && !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "Items 未发现任添加何项!");
var list = configService.AddSpecial(request);
return new ApiResponse(ResponseType.OK, "添加成功!", list);
}
/// <summary>
/// 特殊科室模板配置项列表
/// </summary>
/// <returns></returns>
[Route("specials")]
[HttpPost]
public ApiResponse Specials([FromBody] ModSpecialRequest request)
{
var list = configService.QuerySpecial(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 特殊科室模板配置项修改
/// </summary>
/// <returns></returns>
[Route("editspecial")]
[HttpPost]
public ApiResponse EditSpecial([FromBody] SpecialListRequest request)
{
if (request.Items == null || !request.Items.Any())
return new ApiResponse(ResponseType.ParameterError, "请选择需要修改的数据!");
var entity = configService.EditSpecial(request.Items[0]);
return new ApiResponse(ResponseType.OK, "修改成功!", entity);
}
/// <summary>
/// 特殊科室模板配置项删除
/// </summary>
/// <returns></returns>
[Route("deletespecial")]
[HttpPost]
public ApiResponse DelSpecial([FromBody] ModSpecialRequest request)
{
if (request.SpecialId == null && request.SpecialId == 0)
return new ApiResponse(ResponseType.ParameterError, "SpecialId 参数错误!");
configService.DelSpecial(request.SpecialId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!");
}
/// <summary>
/// 特殊科室人均
/// </summary>
/// <returns></returns>
[Route("perfortype")]
[HttpPost]
public ApiResponse PerforType()
{
var list = configService.PerforType();
return new ApiResponse(ResponseType.OK, list);
}
#endregion
/// <summary>
/// 数据配置项
/// </summary>
/// <returns></returns>
[Route("config")]
[HttpPost]
public ApiResponse Config([FromBody] ModModuleRequest request)
{
if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 不存在,请重新选择!");
var configs = configService.GetHospitalconfigs(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, "绩效抽取数据地址!", configs);
}
}
}
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 = 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);
......
...@@ -22,13 +22,15 @@ ...@@ -22,13 +22,15 @@
"DirectorRole": "4", "DirectorRole": "4",
//特殊科室二次绩效管理员 //特殊科室二次绩效管理员
"SpecialRole": "9", "SpecialRole": "9",
// 抽取结果Excel文件保存地址
"AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com", "AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com",
// 抽取结果Excel文件保存地址 更替的 网络地址
"HttpPath": "http://testjx.suvalue.com:81" "HttpPath": "http://testjx.suvalue.com:81"
}, },
"WebapiUrl": { "WebapiUrl": {
"ImportFirst": "http://localhost:50997/api/extract/import", // 抽取结果保存地址
"ExtractData": "http://localhost:50997/api/extract/index",
"ImportFile": "http://localhost:5001/api/template/savefile", "ImportFile": "http://localhost:5001/api/template/savefile",
// 抽取uri
"HttpPost": "http://localhost:50997/api" "HttpPost": "http://localhost:50997/api"
} }
} }
...@@ -23,14 +23,16 @@ ...@@ -23,14 +23,16 @@
"DirectorRole": "4", "DirectorRole": "4",
//特殊科室二次绩效管理员 //特殊科室二次绩效管理员
"SpecialRole": "9", "SpecialRole": "9",
// 抽取结果Excel文件保存地址
"AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com", "AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com",
// 抽取结果Excel文件保存地址 更替的 网络地址
"HttpPath": "http://testjx.suvalue.com:81", "HttpPath": "http://testjx.suvalue.com:81",
"SwaggerEndpoint": "/swagger/v1/swagger.json" "SwaggerEndpoint": "/swagger/v1/swagger.json"
}, },
"WebapiUrl": { "WebapiUrl": {
"ImportFirst": "http://localhost:50997/api/extract/import", // 抽取结果保存地址
"ExtractData": "http://localhost:50997/api/extract/index",
"ImportFile": "http://localhost:5001/api/template/savefile", "ImportFile": "http://localhost:5001/api/template/savefile",
// 抽取uri
"HttpPost": "http://localhost:50997/api" "HttpPost": "http://localhost:50997/api"
} }
} }
...@@ -38,14 +38,16 @@ ...@@ -38,14 +38,16 @@
"SpecialRole": "9", "SpecialRole": "9",
//邮件指定接收人 //邮件指定接收人
"Receiver": [ "chengxiang.li@suvalue.com", "486035085@qq.com" ], "Receiver": [ "chengxiang.li@suvalue.com", "486035085@qq.com" ],
// 抽取结果Excel文件保存地址
"AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com", "AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com",
// 抽取结果Excel文件保存地址 更替的 网络地址
"HttpPath": "http://testjx.suvalue.com:81", "HttpPath": "http://testjx.suvalue.com:81",
"SwaggerEndpoint": "/api/swagger/v1/swagger.json" "SwaggerEndpoint": "/api/swagger/v1/swagger.json"
}, },
"WebapiUrl": { "WebapiUrl": {
"ImportFirst": "http://localhost:50997/api/extract/import", // 抽取结果保存地址
"ExtractData": "http://localhost:50997/api/extract/index",
"ImportFile": "http://localhost:5001/api/template/savefile", "ImportFile": "http://localhost:5001/api/template/savefile",
// 抽取uri
"HttpPost": "http://localhost:50997/api" "HttpPost": "http://localhost:50997/api"
} }
} }
...@@ -551,189 +551,189 @@ ...@@ -551,189 +551,189 @@
<param name="allotid"></param> <param name="allotid"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.GuaranteeController.Guarantee(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.GuarantInsert(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.GuarantUpdate(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.GuarantDelete(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.Accounting(Performance.DtoModels.GuaranteeRequest)"> <member name="M:Performance.Api.Controllers.ExConfigController.Module(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.EditModule(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.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.Insert(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.Update(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.Delete(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.HospitalController.Disabled(Performance.DtoModels.HospitalRequest)"> <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.MenuController.MenuList"> <member name="M:Performance.Api.Controllers.ExConfigController.AddSpecial(Performance.DtoModels.SpecialListRequest)">
<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.Specials(Performance.DtoModels.ModSpecialRequest)">
<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.EditSpecial(Performance.DtoModels.SpecialListRequest)">
<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.DelSpecial(Performance.DtoModels.ModSpecialRequest)">
<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.PerforType">
<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.Config(Performance.DtoModels.ModModuleRequest)">
<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.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.DelModule(Performance.DtoModels.ModModuleRequest)"> <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.AddItem(Performance.DtoModels.ItemListRequest)"> <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.Items(Performance.DtoModels.ModItemRequest)"> <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.EditItem(Performance.DtoModels.ItemListRequest)"> <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.DelItem(Performance.DtoModels.ModItemRequest)"> <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.AddSpecial(Performance.DtoModels.SpecialListRequest)"> <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.Specials(Performance.DtoModels.ModSpecialRequest)"> <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.EditSpecial(Performance.DtoModels.SpecialListRequest)"> <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.DelSpecial(Performance.DtoModels.ModSpecialRequest)"> <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.PerforType"> <member name="M:Performance.Api.Controllers.HospitalController.Disabled(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.MenuController.MenuList">
<summary> <summary>
数据配置项 设置用户管辖医院
</summary> </summary>
<param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:Performance.Api.Controllers.OriginalController"> <member name="T:Performance.Api.Controllers.OriginalController">
...@@ -1009,13 +1009,6 @@ ...@@ -1009,13 +1009,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>
提取绩效数据 提取绩效数据
......
...@@ -94,6 +94,24 @@ ...@@ -94,6 +94,24 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_workyear"> <member name="P:Performance.EntityModels.PerformanceDbContext.cof_workyear">
<summary> 工龄对应绩效系数配置 </summary> <summary> 工龄对应绩效系数配置 </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_item">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_module">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_result">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_script">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_special">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ex_type">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.hos_personfee"> <member name="P:Performance.EntityModels.PerformanceDbContext.hos_personfee">
<summary> </summary> <summary> </summary>
</member> </member>
...@@ -124,18 +142,6 @@ ...@@ -124,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>
...@@ -1408,6 +1414,251 @@ ...@@ -1408,6 +1414,251 @@
绩效系数 绩效系数
</summary> </summary>
</member> </member>
<member name="T:Performance.EntityModels.ex_item">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.ModuleId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.ItemName">
<summary>
绩效考核项
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.FactorValue1">
<summary>
默认系数或医生系数
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.FactorValue2">
<summary>
护理系数
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.FactorValue3">
<summary>
医技系数
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.TypeId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="P:Performance.EntityModels.ex_item.ReadOnly">
<summary>
只读 0、否 1、是
</summary>
</member>
<member name="T:Performance.EntityModels.ex_module">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.SheetType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.ModuleName">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.Description">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.TypeId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.ConfigId">
<summary>
数据库地址
</summary>
</member>
<member name="P:Performance.EntityModels.ex_module.ReadOnly">
<summary>
只读 0、否 1、是
</summary>
</member>
<member name="T:Performance.EntityModels.ex_result">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.AllotId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.Category">
<summary>
费用类型
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.Fee">
<summary>
费用
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.Source">
<summary>
来源
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.DatabaseType">
<summary>
数据库类型1、Sql Server 2、Orcale
</summary>
</member>
<member name="P:Performance.EntityModels.ex_result.ConfigId">
<summary>
数据库配置Id
</summary>
</member>
<member name="T:Performance.EntityModels.ex_script">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_script.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_script.ExecScript">
<summary>
执行sql
</summary>
</member>
<member name="P:Performance.EntityModels.ex_script.DatabaseType">
<summary>
数据库类型1、Sql Server 2、Orcale
</summary>
</member>
<member name="P:Performance.EntityModels.ex_script.TypeId">
<summary>
ExTypeId
</summary>
</member>
<member name="P:Performance.EntityModels.ex_script.IsEnable">
<summary>
是否可用 1 可用 2 不可用
</summary>
</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">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_type.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ex_type.HospitalId">
<summary>
医院Id
</summary>
</member>
<member name="P:Performance.EntityModels.ex_type.EName">
<summary>
名称
</summary>
</member>
<member name="P:Performance.EntityModels.ex_type.Description">
<summary>
描述
</summary>
</member>
<member name="P:Performance.EntityModels.ex_type.Source">
<summary>
来源
</summary>
</member>
<member name="T:Performance.EntityModels.hos_personfee"> <member name="T:Performance.EntityModels.hos_personfee">
<summary> <summary>
...@@ -2278,201 +2529,6 @@ ...@@ -2278,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>
...@@ -2595,7 +2651,7 @@ ...@@ -2595,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">
......
...@@ -6,15 +6,15 @@ namespace Performance.DtoModels.AppSettings ...@@ -6,15 +6,15 @@ namespace Performance.DtoModels.AppSettings
{ {
public class WebapiUrl public class WebapiUrl
{ {
/// <summary> ///// <summary>
/// 上传首次模板文件 ///// 上传首次模板文件
/// </summary> ///// </summary>
public string ImportFirst { get; set; } //public string ImportFirst { get; set; }
/// <summary> ///// <summary>
/// 抽取数据地址 ///// 抽取数据地址
/// </summary> ///// </summary>
public string ExtractData { get; set; } //public string ExtractData { get; set; }
/// <summary> /// <summary>
/// 上传文件地址 /// 上传文件地址
......
...@@ -30,7 +30,7 @@ public class ItemListRequest ...@@ -30,7 +30,7 @@ public class ItemListRequest
public Nullable<int> ModuleId { get; set; } public Nullable<int> ModuleId { get; set; }
/// <summary> 新增项 </summary> /// <summary> 新增项 </summary>
public List<mod_item> Items { get; set; } public List<ex_item> Items { get; set; }
} }
} }
...@@ -13,7 +13,7 @@ public class ModModuleRequest ...@@ -13,7 +13,7 @@ public class ModModuleRequest
/// <summary> 医院Id </summary> /// <summary> 医院Id </summary>
public Nullable<int> HospitalId { get; set; } public Nullable<int> HospitalId { get; set; }
public Nullable<int> ExtractId { get; set; } public Nullable<int> TypeId { get; set; }
/// <summary> /// <summary>
/// 数据库地址 /// 数据库地址
......
...@@ -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; }
} }
} }
...@@ -12,151 +12,163 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -12,151 +12,163 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
{ {
} }
/// <summary> 二次分配概览 </summary> /// <summary> 二次分配概览 </summary>
public virtual DbSet<ag_againsituation> ag_againsituation { get; set; } public virtual DbSet<ag_againsituation> ag_againsituation { get; set; }
/// <summary> 二次绩效结果表 </summary> /// <summary> 二次绩效结果表 </summary>
public virtual DbSet<ag_compute> ag_compute { get; set; } public virtual DbSet<ag_compute> ag_compute { get; set; }
/// <summary> 二次分配不固定数据 </summary> /// <summary> 二次分配不固定数据 </summary>
public virtual DbSet<ag_data> ag_data { get; set; } public virtual DbSet<ag_data> ag_data { get; set; }
/// <summary> 二次分配人员名单 </summary> /// <summary> 二次分配人员名单 </summary>
public virtual DbSet<ag_employee> ag_employee { get; set; } public virtual DbSet<ag_employee> ag_employee { get; set; }
/// <summary> 二次绩效固定项 </summary> /// <summary> 二次绩效固定项 </summary>
public virtual DbSet<ag_fixatitem> ag_fixatitem { get; set; } public virtual DbSet<ag_fixatitem> ag_fixatitem { get; set; }
/// <summary> 二次分配不固定列头数据 </summary> /// <summary> 二次分配不固定列头数据 </summary>
public virtual DbSet<ag_header> ag_header { get; set; } public virtual DbSet<ag_header> ag_header { get; set; }
/// <summary> 科室二次绩效录入内容 </summary> /// <summary> 科室二次绩效录入内容 </summary>
public virtual DbSet<ag_itemvalue> ag_itemvalue { get; set; } public virtual DbSet<ag_itemvalue> ag_itemvalue { get; set; }
/// <summary> 二次绩效其他绩效来源 </summary> /// <summary> 二次绩效其他绩效来源 </summary>
public virtual DbSet<ag_othersource> ag_othersource { get; set; } public virtual DbSet<ag_othersource> ag_othersource { get; set; }
/// <summary> 二次绩效列表 </summary> /// <summary> 二次绩效列表 </summary>
public virtual DbSet<ag_secondallot> ag_secondallot { get; set; } public virtual DbSet<ag_secondallot> ag_secondallot { get; set; }
/// <summary> 二次绩效模板 </summary> /// <summary> 二次绩效模板 </summary>
public virtual DbSet<ag_temp> ag_temp { get; set; } public virtual DbSet<ag_temp> ag_temp { get; set; }
/// <summary> 二次绩效模板项 </summary> /// <summary> 二次绩效模板项 </summary>
public virtual DbSet<ag_tempitem> ag_tempitem { get; set; } public virtual DbSet<ag_tempitem> ag_tempitem { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<ag_usetemp> ag_usetemp { get; set; } public virtual DbSet<ag_usetemp> ag_usetemp { get; set; }
/// <summary> 二次绩效工作量绩效 </summary> /// <summary> 二次绩效工作量绩效 </summary>
public virtual DbSet<ag_workload> ag_workload { get; set; } public virtual DbSet<ag_workload> ag_workload { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<ag_workload_type> ag_workload_type { get; set; } public virtual DbSet<ag_workload_type> ag_workload_type { get; set; }
/// <summary> 考核类别 </summary> /// <summary> 考核类别 </summary>
public virtual DbSet<as_assess> as_assess { get; set; } public virtual DbSet<as_assess> as_assess { get; set; }
/// <summary> 考核列头 </summary> /// <summary> 考核列头 </summary>
public virtual DbSet<as_columns> as_columns { get; set; } public virtual DbSet<as_columns> as_columns { get; set; }
/// <summary> 考核数据 </summary> /// <summary> 考核数据 </summary>
public virtual DbSet<as_data> as_data { get; set; } public virtual DbSet<as_data> as_data { get; set; }
/// <summary> 考核类别 </summary> /// <summary> 考核类别 </summary>
public virtual DbSet<as_tempassess> as_tempassess { get; set; } public virtual DbSet<as_tempassess> as_tempassess { get; set; }
/// <summary> 考核列头 </summary> /// <summary> 考核列头 </summary>
public virtual DbSet<as_tempcolumns> as_tempcolumns { get; set; } public virtual DbSet<as_tempcolumns> as_tempcolumns { get; set; }
/// <summary> </summary> /// <summary> </summary>
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> /// <summary> 科室类型 </summary>
public virtual DbSet<cof_depttype> cof_depttype { get; set; } 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>
public virtual DbSet<cof_drugprop> cof_drugprop { get; set; } public virtual DbSet<cof_drugprop> cof_drugprop { get; set; }
/// <summary> 药占比费用列头名称 </summary> /// <summary> 药占比费用列头名称 </summary>
public virtual DbSet<cof_drugtype> cof_drugtype { get; set; } public virtual DbSet<cof_drugtype> cof_drugtype { get; set; }
/// <summary> 保底科室配置 </summary> /// <summary> 保底科室配置 </summary>
public virtual DbSet<cof_guarantee> cof_guarantee { get; set; } public virtual DbSet<cof_guarantee> cof_guarantee { get; set; }
/// <summary> ICU医生护士有效收入汇总计算系数 </summary> /// <summary> ICU医生护士有效收入汇总计算系数 </summary>
public virtual DbSet<cof_income> cof_income { get; set; } public virtual DbSet<cof_income> cof_income { get; set; }
/// <summary> 特殊绩效项指标 </summary> /// <summary> 特殊绩效项指标 </summary>
public virtual DbSet<cof_singlefactor> cof_singlefactor { get; set; } public virtual DbSet<cof_singlefactor> cof_singlefactor { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<cof_workitem> cof_workitem { get; set; } public virtual DbSet<cof_workitem> cof_workitem { get; set; }
/// <summary> 工龄对应绩效系数配置 </summary> /// <summary> 工龄对应绩效系数配置 </summary>
public virtual DbSet<cof_workyear> cof_workyear { get; set; } public virtual DbSet<cof_workyear> cof_workyear { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<ex_item> ex_item { get; set; }
/// <summary> </summary>
public virtual DbSet<ex_module> ex_module { get; set; }
/// <summary> </summary>
public virtual DbSet<ex_result> ex_result { get; set; }
/// <summary> </summary>
public virtual DbSet<ex_script> ex_script { get; set; }
/// <summary> </summary>
public virtual DbSet<ex_special> ex_special { get; set; }
/// <summary> </summary>
public virtual DbSet<ex_type> ex_type { get; set; }
/// <summary> </summary>
public virtual DbSet<hos_personfee> hos_personfee { get; set; } public virtual DbSet<hos_personfee> hos_personfee { get; set; }
/// <summary> 科室核算导入信息 </summary> /// <summary> 科室核算导入信息 </summary>
public virtual DbSet<im_accountbasic> im_accountbasic { get; set; } public virtual DbSet<im_accountbasic> im_accountbasic { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<im_data> im_data { get; set; } public virtual DbSet<im_data> im_data { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<im_employee> im_employee { get; set; } public virtual DbSet<im_employee> im_employee { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<im_employee_clinic> im_employee_clinic { get; set; } public virtual DbSet<im_employee_clinic> im_employee_clinic { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<im_header> im_header { get; set; } public virtual DbSet<im_header> im_header { get; set; }
/// <summary> 特殊科室核算 </summary> /// <summary> 特殊科室核算 </summary>
public virtual DbSet<im_specialunit> im_specialunit { get; set; } public virtual DbSet<im_specialunit> im_specialunit { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<log_check> log_check { get; set; } public virtual DbSet<log_check> log_check { get; set; }
/// <summary> </summary> /// <summary> </summary>
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>
public virtual DbSet<per_allot> per_allot { get; set; } public virtual DbSet<per_allot> per_allot { get; set; }
/// <summary> 预算管理金额 </summary> /// <summary> 预算管理金额 </summary>
public virtual DbSet<per_budget_amount> per_budget_amount { get; set; } public virtual DbSet<per_budget_amount> per_budget_amount { get; set; }
/// <summary> 预算管理占比 </summary> /// <summary> 预算管理占比 </summary>
public virtual DbSet<per_budget_ratio> per_budget_ratio { get; set; } public virtual DbSet<per_budget_ratio> per_budget_ratio { get; set; }
/// <summary> 预算控制年度合计 </summary> /// <summary> 预算控制年度合计 </summary>
public virtual DbSet<per_budget_result> per_budget_result { get; set; } public virtual DbSet<per_budget_result> per_budget_result { get; set; }
/// <summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary> /// <summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary>
public virtual DbSet<per_first> per_first { get; set; } public virtual DbSet<per_first> per_first { get; set; }
/// <summary> 上传数据解析 </summary> /// <summary> 上传数据解析 </summary>
public virtual DbSet<per_sheet> per_sheet { get; set; } public virtual DbSet<per_sheet> per_sheet { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<rep_group> rep_group { get; set; } public virtual DbSet<rep_group> rep_group { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<rep_group_selection> rep_group_selection { get; set; } public virtual DbSet<rep_group_selection> rep_group_selection { get; set; }
/// <summary> 导入报表SQL配置 </summary> /// <summary> 导入报表SQL配置 </summary>
public virtual DbSet<rep_importconfig> rep_importconfig { get; set; } public virtual DbSet<rep_importconfig> rep_importconfig { get; set; }
/// <summary> 报表配置表 </summary> /// <summary> 报表配置表 </summary>
public virtual DbSet<rep_report> rep_report { get; set; } public virtual DbSet<rep_report> rep_report { get; set; }
/// <summary> 条件表 </summary> /// <summary> 条件表 </summary>
public virtual DbSet<rep_selection> rep_selection { get; set; } public virtual DbSet<rep_selection> rep_selection { get; set; }
/// <summary> 科室核算结果 </summary> /// <summary> 科室核算结果 </summary>
public virtual DbSet<res_account> res_account { get; set; } public virtual DbSet<res_account> res_account { get; set; }
/// <summary> 医生科室核算结果 </summary> /// <summary> 医生科室核算结果 </summary>
public virtual DbSet<res_accountdoctor> res_accountdoctor { get; set; } public virtual DbSet<res_accountdoctor> res_accountdoctor { get; set; }
/// <summary> 护理科室核算结果 </summary> /// <summary> 护理科室核算结果 </summary>
public virtual DbSet<res_accountnurse> res_accountnurse { get; set; } public virtual DbSet<res_accountnurse> res_accountnurse { get; set; }
/// <summary> 核算基础标准 </summary> /// <summary> 核算基础标准 </summary>
public virtual DbSet<res_baiscnorm> res_baiscnorm { get; set; } public virtual DbSet<res_baiscnorm> res_baiscnorm { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<res_compute> res_compute { get; set; } public virtual DbSet<res_compute> res_compute { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<res_specialunit> res_specialunit { get; set; } public virtual DbSet<res_specialunit> res_specialunit { get; set; }
/// <summary> 医院数据提取脚本 </summary> /// <summary> 医院数据提取脚本 </summary>
public virtual DbSet<sys_extract> sys_extract { get; set; } public virtual DbSet<sys_extract> sys_extract { get; set; }
/// <summary> 医院信息 </summary> /// <summary> 医院信息 </summary>
public virtual DbSet<sys_hospital> sys_hospital { get; set; } public virtual DbSet<sys_hospital> sys_hospital { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<sys_hospitalconfig> sys_hospitalconfig { get; set; } public virtual DbSet<sys_hospitalconfig> sys_hospitalconfig { get; set; }
/// <summary> 菜单表 </summary> /// <summary> 菜单表 </summary>
public virtual DbSet<sys_menu> sys_menu { get; set; } public virtual DbSet<sys_menu> sys_menu { get; set; }
/// <summary> 角色表 </summary> /// <summary> 角色表 </summary>
public virtual DbSet<sys_role> sys_role { get; set; } public virtual DbSet<sys_role> sys_role { get; set; }
/// <summary> 角色菜单关联表 </summary> /// <summary> 角色菜单关联表 </summary>
public virtual DbSet<sys_role_menu> sys_role_menu { get; set; } public virtual DbSet<sys_role_menu> sys_role_menu { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<sys_sms> sys_sms { get; set; } public virtual DbSet<sys_sms> sys_sms { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<sys_task> sys_task { get; set; } public virtual DbSet<sys_task> sys_task { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<sys_user> sys_user { get; set; } public virtual DbSet<sys_user> sys_user { get; set; }
/// <summary> </summary> /// <summary> </summary>
public virtual DbSet<sys_user_hospital> sys_user_hospital { get; set; } public virtual DbSet<sys_user_hospital> sys_user_hospital { get; set; }
/// <summary> 用户角色关联表 </summary> /// <summary> 用户角色关联表 </summary>
public virtual DbSet<sys_user_role> sys_user_role { get; set; } public virtual DbSet<sys_user_role> sys_user_role { get; set; }
} }
} }
//-----------------------------------------------------------------------
// <copyright file=" ex_item.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("ex_item")]
public class ex_item
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> ModuleId { get; set; }
/// <summary>
/// 绩效考核项
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 默认系数或医生系数
/// </summary>
public Nullable<decimal> FactorValue1 { get; set; }
/// <summary>
/// 护理系数
/// </summary>
public Nullable<decimal> FactorValue2 { get; set; }
/// <summary>
/// 医技系数
/// </summary>
public Nullable<decimal> FactorValue3 { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> TypeId { get; set; }
/// <summary>
/// 数据库地址
/// </summary>
public Nullable<int> ConfigId { get; set; }
/// <summary>
/// 只读 0、否 1、是
/// </summary>
public Nullable<int> ReadOnly { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_module.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("ex_module")]
public class ex_module
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> HospitalId { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> SheetType { get; set; }
/// <summary>
///
/// </summary>
public string ModuleName { get; set; }
/// <summary>
///
/// </summary>
public string Description { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> TypeId { get; set; }
/// <summary>
/// 数据库地址
/// </summary>
public Nullable<int> ConfigId { get; set; }
/// <summary>
/// 只读 0、否 1、是
/// </summary>
public Nullable<int> ReadOnly { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_result.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("ex_result")]
public class ex_result
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
///
/// </summary>
public int AllotId { get; set; }
/// <summary>
/// 科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 费用类型
/// </summary>
public string Category { get; set; }
/// <summary>
/// 费用
/// </summary>
public Nullable<decimal> Fee { get; set; }
/// <summary>
/// 来源
/// </summary>
public string Source { get; set; }
/// <summary>
/// 数据库类型1、Sql Server 2、Orcale
/// </summary>
public int DatabaseType { get; set; }
/// <summary>
/// 数据库配置Id
/// </summary>
public int ConfigId { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_script.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("ex_script")]
public class ex_script
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
/// 执行sql
/// </summary>
public string ExecScript { get; set; }
/// <summary>
/// 数据库类型1、Sql Server 2、Orcale
/// </summary>
public int DatabaseType { get; set; }
/// <summary>
/// ExTypeId
/// </summary>
public int TypeId { get; set; }
/// <summary>
/// 是否可用 1 可用 2 不可用
/// </summary>
public int IsEnable { 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; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_type.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("ex_type")]
public class ex_type
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
/// 医院Id
/// </summary>
public int HospitalId { get; set; }
/// <summary>
/// 名称
/// </summary>
public string EName { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 来源
/// </summary>
public int Source { 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=" ex_item.cs">
// * FileName: ex_item.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// ex_item Repository
/// </summary>
public partial class PerforExitemRepository : PerforRepository<ex_item>
{
public PerforExitemRepository(PerformanceDbContext context) : base(context)
{
}
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_module.cs">
// * FileName: ex_module.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// ex_module Repository
/// </summary>
public partial class PerforExmoduleRepository : PerforRepository<ex_module>
{
public PerforExmoduleRepository(PerformanceDbContext context) : base(context)
{
}
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_result.cs">
// * FileName: ex_result.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// ex_result Repository
/// </summary>
public partial class PerforExresultRepository : PerforRepository<ex_result>
{
public PerforExresultRepository(PerformanceDbContext context) : base(context)
{
}
}
}
//-----------------------------------------------------------------------
// <copyright file=" ex_script.cs">
// * FileName: ex_script.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// ex_script Repository
/// </summary>
public partial class PerforExscriptRepository : PerforRepository<ex_script>
{
public PerforExscriptRepository(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=" ex_type.cs">
// * FileName: ex_type.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// ex_type Repository
/// </summary>
public partial class PerforExtypeRepository : PerforRepository<ex_type>
{
public PerforExtypeRepository(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 Microsoft.Extensions.Logging;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
namespace Performance.Services
{
public class DFExtractService : IAutoInjection
{
#region
private readonly ILogger<ExtractService> logger;
private readonly IEmailService emailService;
private readonly PerSheetService perSheetService;
private readonly PerforHospitalRepository perforHospitalRepository;
private readonly PerforHospitalconfigRepository perforHospitalconfigRepository;
private readonly PerforPerallotRepository perforPerallotRepository;
private readonly PerforImspecialunitRepository perforImspecialunitRepository;
private readonly PerforImdataRepository perforImdataRepository;
private readonly PerforRepimportconfigRepository repimportconfigRepository;
private readonly LogManageService logManageService;
private readonly PerforExitemRepository perforExitemRepository;
private readonly PerforExmoduleRepository perforExmoduleRepository;
private readonly PerforExspecialRepository perforExspecialRepository;
private readonly PerforExresultRepository perforExresultRepository;
private readonly PerforExscriptRepository perforExscriptRepository;
private IWorkbook workbook = null;
private ICellStyle style;
private per_allot Allot;
public DFExtractService(ILogger<ExtractService> logger,
IEmailService emailService,
PerSheetService perSheetService,
PerforHospitalRepository perforHospitalRepository,
PerforHospitalconfigRepository perforHospitalconfigRepository,
PerforPerallotRepository perforPerallotRepository,
PerforImspecialunitRepository perforImspecialunitRepository,
PerforImdataRepository perforImdataRepository,
PerforRepimportconfigRepository repimportconfigRepository,
LogManageService logManageService,
PerforExitemRepository perforExitemRepository,
PerforExmoduleRepository perforExmoduleRepository,
PerforExspecialRepository perforExspecialRepository,
PerforExresultRepository perforExresultRepository,
PerforExscriptRepository perforExscriptRepository)
{
this.logger = logger;
this.emailService = emailService;
this.perSheetService = perSheetService;
this.perforHospitalRepository = perforHospitalRepository;
this.perforHospitalconfigRepository = perforHospitalconfigRepository;
this.perforPerallotRepository = perforPerallotRepository;
this.perforImspecialunitRepository = perforImspecialunitRepository;
this.perforImdataRepository = perforImdataRepository;
this.repimportconfigRepository = repimportconfigRepository;
this.logManageService = logManageService;
this.perforExitemRepository = perforExitemRepository;
this.perforExmoduleRepository = perforExmoduleRepository;
this.perforExspecialRepository = perforExspecialRepository;
this.perforExresultRepository = perforExresultRepository;
this.perforExscriptRepository = perforExscriptRepository;
}
#endregion
#region 抽取
public string ExtractData(int allotId, string email, int hospitalId, string filePath = null)
{
var hospital = perforHospitalRepository.GetEntity(t => t.ID == hospitalId);
try
{
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId);
Allot = allot ?? throw new PerformanceException("");
var statesArray = new int[] { (int)AllotStates.GenerateSucceed, (int)AllotStates.Archive };
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 configs = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
var typeIds = new List<int>();
var modules = perforExmoduleRepository.GetEntities(t => t.HospitalId == hospitalId);
var items = new List<ex_item>();
if (modules != null && modules.Any())
{
typeIds.AddRange(modules.Select(t => t.TypeId ?? 0));
items = perforExitemRepository.GetEntities(t => t.ModuleId.HasValue
&& modules.Where(m => m.SheetType != (int)SheetType.Income).Select(m => m.Id).Contains(t.ModuleId.Value));
typeIds.AddRange(items?.Select(t => t.TypeId ?? 0) ?? new List<int>());
}
var specials = perforExspecialRepository.GetEntities(t => t.HospitalId == hospitalId);
if (specials != null && specials.Any())
typeIds.AddRange(specials.Select(t => t.TypeId ?? 0));
typeIds = typeIds.Distinct().ToList();
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, data)
: AlllotExecute(email, hospital, configs, modules, items, specials, data, lastAllot, filePath);
}
catch (Exception ex)
{
logManageService.WriteMsg("提取数据异常", $"数据写入出现异常", 4, Allot.ID, "ReceiveMessage");
logger.LogError($"提取绩效数据异常 数据写入出现异常{ex.ToString()}");
//SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!");
throw ex;
}
finally
{
Allot.IsExtracting = null;
perforPerallotRepository.Update(Allot);
if (workbook != null)
workbook.Close();
GC.Collect();
}
}
/// <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 data = new List<ex_result>();
var modules = entities as List<ex_module>;
if (modules == null || !modules.Any(t => t.SheetType == (int)SheetType.Income && t.TypeId > 0))
return data;
foreach (var module in modules.Where(t => t.TypeId > 0))
{
foreach (var config in configs)
{
var item = scripts.FirstOrDefault(t => t.TypeId == module.TypeId && t.DatabaseType == config.DataBaseType);
if (item == null) continue;
data.AddRange(QueryData(config, allot, item.ExecScript, module.ModuleName));
}
}
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 as List<ex_item>;
if (items == null || !items.Any(t => t.TypeId > 0))
return data;
foreach (var exitem in items.Where(t => t.TypeId > 0))
{
var module = modules.FirstOrDefault(t => t.Id == exitem.ModuleId);
foreach (var config in configs)
{
var item = scripts.FirstOrDefault(t => t.TypeId == exitem.TypeId && t.DatabaseType == config.DataBaseType);
if (item == null) continue;
var result = QueryData(config, allot, item.ExecScript, module.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 as List<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 config in configs)
{
var item = scripts.FirstOrDefault(t => t.TypeId == special.TypeId && t.DatabaseType == config.DataBaseType);
if (item == null) continue;
var result = QueryData(config, allot, item.ExecScript, "4.2 特殊核算单元绩效测算表");
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>
/// <param name="email"></param>
/// <param name="lastAllot"></param>
/// <param name="hospital"></param>
/// <param name="configs"></param>
/// <param name="modules"></param>
/// <param name="items"></param>
/// <param name="specials"></param>
/// <param name="extracts"></param>
/// <returns></returns>
public string TemplateExecute(string email, sys_hospital hospital, List<sys_hospitalconfig> configs, List<ex_module> modules, List<ex_item> items, List<ex_special> specials, List<ex_result> data)
{
string originalPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Template", "医院绩效模板.xlsx");
var (tempPath, newPath) = CopyOriginalFile(hospital.ID, originalPath);
workbook = new XSSFWorkbook(tempPath);
CreateNotExistSheet(modules, workbook);
style = CellStyle.CreateCellStyle(workbook, StyleType.数据);
List<AccountUnitEntity> unitList = new List<AccountUnitEntity>();
for (int i = 0; i < workbook.NumberOfSheets; i++)
{
var sheet = workbook.GetSheetAt(i);
var sheetType = perSheetService.GetSheetType(sheet.SheetName);
if (sheetType == SheetType.Unidentifiable) continue;
var sheetRead = PerSheetDataFactory.GetDataRead(sheetType);
switch (sheetType)
{
case SheetType.OtherIncome:
WriteOtherIncome(sheet, sheetRead, unitList, configs, modules, items, data);
break;
case SheetType.Income:
WriteIncome(sheet, sheetRead, unitList, configs, modules, items, data);
break;
case SheetType.Expend:
WriteExpend(sheet, sheetRead, unitList, configs, modules, items, data);
break;
case SheetType.Workload:
WriteWorkload(sheet, sheetRead, unitList, configs, modules, items, data);
break;
case SheetType.SpecialUnit:
WriteSpecialUnit(sheet, sheetRead, configs, specials, data);
break;
}
}
using (FileStream file = new FileStream(newPath, FileMode.OpenOrCreate))
{
workbook.Write(file);
}
logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 {hospital.HosName}HIS数据提取成功,文件路径:{newPath}。");
ImportData(Allot, configs);
SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。");
return newPath;
}
/// <summary>
/// 历史绩效为模板
/// </summary>
/// <param name="email"></param>
/// <param name="lastAllot"></param>
/// <param name="hospital"></param>
/// <param name="configs"></param>
/// <param name="modules"></param>
/// <param name="items"></param>
/// <param name="specials"></param>
/// <param name="extracts"></param>
/// <returns></returns>
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("历史绩效文件不存在!");
var (tempPath, newPath) = CopyOriginalFile(hospital.ID, path);
workbook = new XSSFWorkbook(tempPath);
CreateNotExistSheet(modules, workbook);
style = CellStyle.CreateCellStyle(workbook, StyleType.数据);
List<AccountUnitEntity> unitList = new List<AccountUnitEntity>();
if (lastAllot != null)
{
unitList = perforImdataRepository.GetAccountUnit(lastAllot.ID).ToList();
logger.LogInformation($"lastAllot.ID: {lastAllot.ID}, lastAllot date: {lastAllot.Year}-{lastAllot.Month}, unitList count: {unitList?.Count ?? 0}");
}
for (int i = 0; i < workbook.NumberOfSheets; i++)
{
var sheet = workbook.GetSheetAt(i);
var sheetType = perSheetService.GetSheetType(sheet.SheetName);
var sheetRead = PerSheetDataFactory.GetDataRead(sheetType);
switch (sheetType)
{
case SheetType.OtherIncome:
ClearData(sheet, 5, 7);
WriteOtherIncome(sheet, sheetRead, unitList, configs, modules, items, extracts, false);
break;
case SheetType.Income:
ClearData(sheet, 5, 7, true);
WriteIncome(sheet, sheetRead, unitList, configs, modules, items, extracts, false);
break;
case SheetType.Expend:
ClearData(sheet, 5, 7);
WriteExpend(sheet, sheetRead, unitList, configs, modules, items, extracts, false);
break;
case SheetType.Workload:
ClearData(sheet, 3, 3);
WriteWorkload(sheet, sheetRead, unitList, configs, modules, items, extracts, false);
break;
case SheetType.SpecialUnit:
ClearData(sheet, 2, 0);
WriteSpecialUnit(sheet, sheetRead, configs, specials, extracts, false, lastAllot);
break;
}
}
using (FileStream file = new FileStream(newPath, FileMode.OpenOrCreate))
{
workbook.Write(file);
}
logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 {hospital.HosName}HIS数据提取成功,文件路径:{newPath}。");
ImportData(Allot, configs);
SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。");
return newPath;
}
#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,
AllotId = allot.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
private (string TempPath, string NewPath) CopyOriginalFile(int hospitalId, string originalPath)
{
var dpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files", $"{hospitalId}", "autoextract");
FileHelper.CreateDirectory(dpath);
string tempPath = Path.Combine(dpath, $"Template{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx");
FileHelper.Copy(originalPath, tempPath);
string newPath = Path.Combine(dpath, $"绩效提取数据{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx");
return (tempPath, newPath);
}
private static void CreateNotExistSheet(List<ex_module> modulesList, IWorkbook workbook)
{
SortedDictionary<string, int> pairs = new SortedDictionary<string, int>();
for (int i = 0; i < workbook.NumberOfSheets; i++)
{
pairs.Add(workbook.GetSheetAt(i).SheetName, i);
}
int sheetIndex = 0;
foreach (var module in modulesList.Where(t => t.SheetType == (int)SheetType.Income)?.OrderBy(t => t.ModuleName))
{
var sheet = workbook.GetSheet(module.ModuleName);
if (sheet == null)
{
string[] keyArray = new string[] { "开单", "执行" };
if (keyArray.Any(key => module.ModuleName.Contains(key)))
{
var item = pairs.Where(t => t.Key.StartsWith("1.")).OrderByDescending(t => t.Key).First();
if (sheetIndex == 0)
sheetIndex = item.Value + 1;
var copysheet = workbook.GetSheet(item.Key);
var newSheet = copysheet.CopySheet(item.Key, true);
workbook.SetSheetOrder(newSheet.SheetName, sheetIndex);
workbook.SetSheetName(sheetIndex, module.ModuleName);
sheetIndex++;
}
}
}
}
private void ClearData(ISheet sheet, int beginRowNum, int beginCellNum, bool isIncome = false)
{
if (sheet == null)
return;
for (int i = beginRowNum; i < sheet.LastRowNum + 1; i++)
{
var row = sheet.GetRow(i);
if (row != null)
{
//跳过核算单元和科室
for (int j = beginCellNum; j < row.LastCellNum; j++)
{
var cell = row.GetCell(j);
if (cell != null && (cell.CellType != CellType.Formula || isIncome))
{
cell.RemoveCellComment();
row.RemoveCell(cell);
}
}
}
}
sheet.ForceFormulaRecalculation = true;
}
private IRow GetOrCreate(ISheet sheet, int index)
{
var row = sheet.GetRow(index);
if (row == null)
row = sheet.CreateRow(index);
return row;
}
private ICell GetOrCreate(IRow row, int index)
{
var cell = row.GetCell(index);
if (cell == null)
cell = row.CreateCell(index);
//cell.CellStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.Orange.Index;
return cell;
}
#endregion
#region SheetData
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}开始提取.");
var module = modules.FirstOrDefault(t => t.SheetType == (int)SheetType.OtherIncome);
if (module == null) return;
var itemList = items.Where(t => t.ModuleId == module.Id).ToList();
logger.LogInformation($"item有{itemList?.Count ?? 0}个.");
if (itemList == null || !itemList.Any()) return;
WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp);
var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
if (extractdata == null || !extractdata.Any())
return;
//查询数据
List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{
Department = t.Department,
Category = t.Category,
Value = t.Fee ?? 0
}).ToList();
WriteSheetData(sheet, sheetRead, unitList, allExtract, itemList.Select(t => t.ItemName), isNewTemp);
logger.LogInformation($"{sheet.SheetName}提取结束.");
}
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}开始提取.");
var module = modules.FirstOrDefault(t => t.ModuleName.Replace(" ", "") == sheet.SheetName.Replace(" ", ""));
if (module == null) return;
var itemList = items.Where(t => t.ModuleId == module.Id).ToList();
logger.LogInformation($"item有{itemList?.Count ?? 0}个.");
//if (itemList == null || !itemList.Any()) return;
var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
if (extractdata == null || !extractdata.Any())
return;
//查询数据
List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{
Department = t.Department,
Category = t.Category,
Value = t.Fee ?? 0
}).ToList();
//logger.LogInformation($"{sheet.SheetName}合计值为: " + allExtract.Sum(t => t.Value));
var category = allExtract.Select(t => t.Category).Distinct().ToList();
WriteIncomeHeaderAndFactor(sheet, sheetRead, category, isNewTemp);
WriteSheetData(sheet, sheetRead, unitList, allExtract, category, isNewTemp, true);
logger.LogInformation($"{sheet.SheetName}提取结束.");
}
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}开始提取.");
var module = modules.FirstOrDefault(t => t.SheetType == (int)SheetType.Expend);
if (module == null) return;
var itemList = items.Where(t => t.ModuleId == module.Id).ToList();
logger.LogInformation($"item有{itemList?.Count ?? 0}个.");
if (itemList == null || !itemList.Any()) return;
WriteHeaderAndFactor(sheet, sheetRead, itemList, isNewTemp);
var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
if (extractdata == null || !extractdata.Any())
return;
//查询数据
List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{
Department = t.Department,
Category = t.Category,
Value = t.Fee ?? 0
}).ToList();
WriteSheetData(sheet, sheetRead, unitList, allExtract, itemList.Select(t => t.ItemName), isNewTemp);
logger.LogInformation($"{sheet.SheetName}提取结束.");
}
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}开始提取.");
var module = modules.FirstOrDefault(t => t.ModuleName.Replace(" ", "") == sheet.SheetName.Replace(" ", ""));
if (module == null) return;
var itemList = items.Where(t => t.ModuleId == module.Id).ToList();
logger.LogInformation($"item有{itemList?.Count ?? 0}个.");
if (itemList == null || !itemList.Any()) return;
WriteWorkHeader(sheet, sheetRead, itemList, isNewTemp);
var extractdata = data.Where(t => t.AllotId == Allot.ID && t.Source == module.ModuleName);
if (extractdata == null || !extractdata.Any())
return;
//查询数据
List<ExtractDto> allExtract = extractdata.Select(t => new ExtractDto
{
Department = t.Department,
Category = t.Category,
Value = t.Fee ?? 0
}).ToList();
var specialHead = new List<string>();
var extractHead = allExtract?.Select(t => t.Category);
if (extractHead != null && extractHead.Any())
{
specialHead = itemList.Select(t => t.ItemName).Intersect(extractHead.Distinct())?.ToList();
}
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 填充数据 -- {module.ModuleName}");
//写入数据
WriteWorkData(sheet, sheetRead, unitList, allExtract, specialHead, isNewTemp);
logger.LogInformation($"{sheet.SheetName}提取结束.");
}
#region WriteAccountBasic
//private void WriteAccountBasic(ISheet sheet, IPerSheetDataRead sheetRead, int allotLastId)
//{
// var dictionary = new Dictionary<string, Func<im_accountbasic, object>>
// {
// { "核算单元类型", (t) => t.UnitType },
// { "核算单元", (t) => t.DoctorAccountingUnit },
// { "科室名称", (t) => t.Department },
// { "科主任/护士长人数", (t) => t.DoctorDirectorNumber },
// { "核算单元人员数量", (t) => t.DoctorNumber },
// { "预算比例", (t) => t.DoctorBasicFactor },
// { "倾斜系数", (t) => t.DoctorSlopeFactor },
// { "工作量倾斜系数", (t) => t.WorkSlopeFactor },
// { "保底绩效参考标准", (t) => t.MinimumReference },
// { "保底绩效系数", (t) => t.MinimumFactor },
// { "其他绩效1", (t) => t.DoctorOtherPerfor1 },
// { "考核得分率", (t) => t.DoctorScoringAverage },
// { "医院奖罚", (t) => t.DoctorExtra },
// { "其他绩效2", (t) => t.DoctorOtherPerfor2 },
// { "调节系数", (t) => t.DoctorAdjustFactor },
// };
// logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 临床科室医护绩效测算表", 1, Allot.ID, "ReceiveMessage");
// logger.Information($"填充数据 -- 临床科室医护绩效测算表", "提取绩效数据");
// var dataList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allotLastId)?.OrderBy(t => t.UnitType).ThenBy(t => t.DoctorAccountingUnit).ToList();
// for (int i = 0; i < dataList.Count; i++)
// {
// var headIndex = sheetRead.Point.HeaderFirstRowNum;
// var cellList = sheet.GetRow(headIndex.Value).Cells;
// var rowIndex = sheetRead.Point.DataFirstRowNum.Value + i;
// var importRow = sheet.CreateRow(rowIndex);
// foreach (var cell in cellList)
// {
// var item = dictionary.FirstOrDefault(t => t.Key == cell.StringCellValue);
// var value = item.Value.Invoke(dataList[i]) ?? "";
// if (cell.StringCellValue == "核算单元类型")
// {
// value = value.ToString() == "1" ? "医生组" : value.ToString() == "2" ? "护理组" : "医技组";
// }
// var newCell = importRow.CreateCell(cell.ColumnIndex);
// OutToExcelCell(newCell, value);
// newCell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.默认);
// }
// }
//}
#endregion
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}开始提取.");
var dictionary = new Dictionary<string, Func<ex_special, List<im_specialunit>, object>>
{
{ "科室", (special,lastallot) => special.Department },
{ "人数", (special,lastallot) => lastallot.Where(t=>special.Department == t.Department).Max(t=>t.Number) },
{ "量化指标", (special,lastallot) => special.Target},
{ "量化指标绩效分值",(special,lastallot) => special.TargetFactor },
{ "调节系数", (special,lastallot) => special.AdjustFactor },
};
var speaialList = specials?.OrderBy(t => t.Department).ToList();
logger.LogInformation($"item有{speaialList?.Count ?? 0}个.");
if (speaialList == null || !speaialList.Any()) return;
List<im_specialunit> allotDataList = new List<im_specialunit>();
if (lastAllot != null)
allotDataList = perforImspecialunitRepository.GetEntities(t => t.AllotID == lastAllot.ID);
//取消合并单元格
int mergedCount = sheet.NumMergedRegions;
for (int i = mergedCount - 1; i >= 0; i--)
{
var temp = sheet.GetMergedRegion(i);
if (temp.FirstRow > sheetRead.Point.HeaderFirstRowNum)
sheet.RemoveMergedRegion(i);
}
var modDataGroup = speaialList.GroupBy(t => new { t.Department }).Select(group => new
{
Department = group.Key.Department,
Count = group.Count()
})?.OrderBy(t => t.Department);
int mergedBegin = 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");
logger.LogInformation($"提取绩效数据 填充数据 -- 特殊核算单元绩效测算表");
for (int i = 0; i < speaialList.Count; i++)
{
var headIndex = sheetRead.Point.HeaderFirstRowNum;
var cellList = sheet.GetRow(headIndex.Value).Cells;
var rowIndex = sheetRead.Point.DataFirstRowNum.Value + i;
var importRow = sheet.CreateRow(rowIndex);
int cellIndex = 0;
foreach (var cell in cellList)
{
object value = null;
if (dictionary.ContainsKey(cell.StringCellValue))
{
var item = dictionary.First(t => t.Key == cell.StringCellValue);
value = item.Value.Invoke(speaialList[i], allotDataList) ?? "";
if (item.Key == "科室" && rowIndex == mergedBegin)
{
var count = modDataGroup.First(t => t.Department.ToString() == value.ToString()).Count;
mergedEnd = mergedBegin + count - 1;
}
}
if (cell.StringCellValue == "数量" && speaialList[i]?.TypeId > 0)
{
value = extractdata?.FirstOrDefault(t => t.Category == speaialList[i].Target)?.Fee;
}
if (!new List<string> { "量化指标", "数量", "量化指标绩效分值" }.Contains(cell.StringCellValue) && rowIndex == mergedBegin)
{
CellRangeAddress region = new CellRangeAddress(mergedBegin, mergedEnd, cellIndex, cellIndex);
sheet.AddMergedRegion(region); //合并单元格
}
var newCell = importRow.CreateCell(cellIndex);
//newCell.SetCellValue(Verify(value));
OutToExcelCell(newCell, value);
if (dictionary.ContainsKey(cell.StringCellValue) || (cell.StringCellValue == "数量" && !string.IsNullOrEmpty(value?.ToString())))
newCell.CellStyle = style;
cellIndex++;
}
mergedBegin = mergedEnd + 1;
}
logger.LogInformation($"{sheet.SheetName}提取结束.");
}
#region 写入数据
/// <summary>
/// 写入列头
/// </summary>
/// <param name="sheet"></param>
/// <param name="sheetRead"></param>
/// <param name="items">列头数据(列名、系数)</param>
/// <param name="isNewTemp">是否为空白模板</param>
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 doctorFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "医生组").FactorRow.Value);
var technicianFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "医技组").FactorRow.Value);
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value);
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 提取绩效数据 写入列头信息 -- {sheet.SheetName}");
var cellItems = new List<ex_item>();
cellItems.AddRange(items);
if (!isNewTemp)
{
List<string> original = new List<string>();
#region 过滤历史模板中已有的列头
//写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4 + 3;
for (int i = cellStartIndex; i < head.LastCellNum; i++)
{
var cellvalue = head.GetCell(i)?.ToString();
if (string.IsNullOrEmpty(cellvalue)) continue;
cellItems.RemoveAll(t => t.ItemName == cellvalue);
}
#endregion
}
if (cellItems == null || !cellItems.Any()) return;
#region 新增模板中不存在的列头
var lastcellIndex = isNewTemp ? sheetRead.Point.HeaderFirstCellNum.Value + 4 + 3 : head.LastCellNum;
foreach (var item in cellItems)
{
var headcell = GetOrCreate(head, lastcellIndex);
headcell.SetCellValue(item.ItemName);
headcell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.列头);
var doctorcell = GetOrCreate(doctorFactor, lastcellIndex);
doctorcell.SetCellValue(item.FactorValue1 != null ? (double)item.FactorValue1 : 0);
doctorcell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.系数, CellFormat.百分比);
var nursecell = GetOrCreate(nurseFactor, lastcellIndex);
nursecell.SetCellValue(item.FactorValue2 != null ? (double)item.FactorValue2 : 0);
nursecell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.系数, CellFormat.百分比);
var techniciancell = GetOrCreate(technicianFactor, lastcellIndex);
techniciancell.SetCellValue(item.FactorValue3 != null ? (double)item.FactorValue3 : 0);
techniciancell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.系数, CellFormat.百分比);
lastcellIndex++;
}
#endregion
}
/// <summary>
/// 写入列头
/// </summary>
/// <param name="sheet"></param>
/// <param name="sheetRead"></param>
/// <param name="items">列头数据(列名、系数)</param>
/// <param name="isNewTemp">是否为空白模板</param>
private void WriteIncomeHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, List<string> items, bool isNewTemp)
{
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 technicianFactor = sheet.GetRow(sheetRead.Point.AccountingUnit.First(t => t.UnitType == "医技组").FactorRow.Value);
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value);
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 提取绩效数据 写入列头信息 -- {sheet.SheetName}");
logger.LogInformation($"{sheet.SheetName}查询出的列头有:" + string.Join(", ", items));
if (!isNewTemp)
{
List<string> original = new List<string>();
#region 过滤历史模板中已有的列头
//写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
for (int i = cellStartIndex; i < head.LastCellNum; i++)
{
var cellvalue = head.GetCell(i)?.ToString();
if (string.IsNullOrEmpty(cellvalue)) continue;
items.Remove(cellvalue);
}
#endregion
}
if (items == null || !items.Any()) return;
logger.LogInformation($"{sheet.SheetName}需要新增的列头有:" + string.Join(", ", items));
#region 新增模板中不存在的列头
var lastcellIndex = isNewTemp ? sheetRead.Point.HeaderFirstCellNum.Value + 4 : head.LastCellNum;
foreach (var item in items)
{
var headcell = GetOrCreate(head, lastcellIndex);
headcell.SetCellValue(item);
headcell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.列头);
var doctorcell = GetOrCreate(doctorFactor, lastcellIndex);
doctorcell.SetCellValue(0);
doctorcell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.系数, CellFormat.百分比);
var nursecell = GetOrCreate(nurseFactor, lastcellIndex);
nursecell.SetCellValue(0);
nursecell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.系数, CellFormat.百分比);
var techniciancell = GetOrCreate(technicianFactor, lastcellIndex);
techniciancell.SetCellValue(0);
techniciancell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.系数, CellFormat.百分比);
lastcellIndex++;
}
#endregion
}
/// <summary>
/// 写入数据
/// </summary>
/// <param name="sheet"></param>
/// <param name="sheetRead"></param>
/// <param name="unitList">核算单元</param>
/// <param name="allExtract">抽取的数据(科室、列头、数据)</param>
/// <param name="header">设定抽取的列头</param>
/// <param name="isNewTemp">是否为空白模板</param>
/// <param name="isIncom">是否是开单、执行收入</param>
private void WriteSheetData(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<ExtractDto> allExtract, IEnumerable<string> header, bool isNewTemp, bool isIncom = false)
{
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage");
logger.LogInformation($"提取绩效数据 填充数据 -- {sheet.SheetName}");
//写入数据
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value);
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1;
if (!isNewTemp)
{
#region 给历史模板已有科室补充数据
for (int i = rowIndex; i < sheet.LastRowNum + 1; i++)
{
var row = sheet.GetRow(i);
if (row != null)
{
var department = row.GetCell(3)?.ToString(); // 科室名称
if (string.IsNullOrEmpty(department)) continue;
var deptData = allExtract.Where(t => t.Department == department);
if (deptData == null || !deptData.Any()) continue;
for (int j = 7; j < head.LastCellNum; j++)
{
var headName = head.GetCell(j).StringCellValue;
var newCell = GetOrCreate(row, j);
if (newCell == null) continue;
var value = deptData.FirstOrDefault(t => t.Category == headName)?.Value;
if (isIncom)
{
value = value == 0 ? null : value;
OutToExcelCell(newCell, value);
newCell.CellStyle = style;
}
else if (newCell.CellType != CellType.Formula)
{
value = value == 0 ? null : value;
OutToExcelCell(newCell, value);
if (header != null && header.Contains(headName))
newCell.CellStyle = style;
}
}
allExtract.RemoveAll(t => t.Department == department);
}
}
#endregion
}
if (allExtract == null || !allExtract.Any()) return;
#region 补充新的科室及数据
var lastrowIndex = isNewTemp ? rowIndex : sheet.LastRowNum + 1;
foreach (var department in allExtract.Select(t => t.Department).Where(t => !string.IsNullOrEmpty(t)).Distinct())
{
var row = sheet.CreateRow(lastrowIndex);
for (int i = head.FirstCellNum; i < head.LastCellNum; i++)
{
var headName = head.GetCell(i).StringCellValue;
var newCell = row.CreateCell(i);
if (headName.Replace("\n", "") == "核算单元(医生组)")
{
var dept = unitList.FirstOrDefault(t => t.SheetName == sheet.SheetName && t.Department == department && t.UnitType == 1)?.AccountingUnit ?? unitList.FirstOrDefault(t => t.SheetName != sheet.SheetName && t.Department == department && t.UnitType == 1)?.AccountingUnit;
newCell.SetCellValue(dept ?? "");
newCell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.默认);
}
else if (headName.Replace("\n", "") == "核算单元(护理组)")
{
var dept = unitList.FirstOrDefault(t => t.SheetName == sheet.SheetName && t.Department == department && t.UnitType == 2)?.AccountingUnit ?? unitList.FirstOrDefault(t => t.SheetName != sheet.SheetName && t.Department == department && t.UnitType == 2)?.AccountingUnit;
newCell.SetCellValue(dept ?? "");
newCell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.默认);
}
else if (headName.Replace("\n", "") == "核算单元(医技组)")
{
var dept = unitList.FirstOrDefault(t => t.SheetName == sheet.SheetName && t.Department == department && t.UnitType == 3)?.AccountingUnit ?? unitList.FirstOrDefault(t => t.SheetName != sheet.SheetName && t.Department == department && t.UnitType == 3)?.AccountingUnit;
newCell.SetCellValue(dept ?? "");
newCell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.默认);
}
else if (headName == "科室名称")
{
newCell.SetCellValue(department ?? "");
newCell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.默认);
}
else
{
var value = allExtract.FirstOrDefault(t => t.Department == department && t.Category == headName)?.Value;
if (isIncom)
{
value = value == 0 ? null : value;
OutToExcelCell(newCell, value);
newCell.CellStyle = style;
}
else if (header != null && header.Contains(headName))
{
value = value == 0 ? null : value;
OutToExcelCell(newCell, value);
newCell.CellStyle = style;
}
}
}
lastrowIndex++;
}
#endregion
}
/// <summary>
/// 写入工作量列头
/// </summary>
/// <param name="sheet"></param>
/// <param name="sheetRead"></param>
/// <param name="items"></param>
/// <param name="isNewTemp"></param>
private void WriteWorkHeader(ISheet sheet, IPerSheetDataRead sheetRead, List<ex_item> items, bool isNewTemp)
{
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 0);
var factor = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 1);
var cellItems = new List<ex_item>();
cellItems.AddRange(items);
if (!isNewTemp)
{
#region 过滤历史模板中已有的列头
//写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 2;
for (int i = cellStartIndex; i < head.LastCellNum; i++)
{
var cellvalue = head.GetCell(i)?.ToString();
if (string.IsNullOrEmpty(cellvalue)) continue;
cellItems.RemoveAll(t => t.ItemName == cellvalue);
}
#endregion
}
if (cellItems == null || !cellItems.Any()) return;
#region 新增模板中不存在的列头
var lastcellIndex = isNewTemp ? sheetRead.Point.HeaderFirstCellNum.Value + 2 : head.LastCellNum;
foreach (var item in cellItems)
{
var headcell = GetOrCreate(head, lastcellIndex);
headcell.SetCellValue(item.ItemName);
headcell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.列头);
var doctorcell = GetOrCreate(factor, lastcellIndex);
doctorcell.SetCellValue(item.FactorValue1 != null ? (double)item.FactorValue1 : 0);
doctorcell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.列头, CellFormat.数字2);
lastcellIndex++;
}
#endregion
}
/// <summary>
/// 写入工作量数据
/// </summary>
/// <param name="sheet"></param>
/// <param name="sheetRead"></param>
/// <param name="unitList"></param>
/// <param name="allExtract"></param>
/// <param name="header"></param>
/// <param name="isNewTemp"></param>
private void WriteWorkData(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<ExtractDto> allExtract, IEnumerable<string> header, bool isNewTemp)
{
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 0);
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 2;
if (!isNewTemp)
{
#region 给历史模板已有科室补充数据
for (int i = rowIndex; i < sheet.LastRowNum + 1; i++)
{
var row = sheet.GetRow(i);
if (row != null)
{
var department = row.GetCell(1)?.ToString(); // 科室名称
if (string.IsNullOrEmpty(department)) continue;
var deptData = allExtract.Where(t => t.Department == department);
if (deptData == null || !deptData.Any()) continue;
for (int j = 3; j < head.LastCellNum; j++)
{
var headName = head.GetCell(j).StringCellValue;
var newCell = GetOrCreate(row, j);
if (newCell == null) continue;
if (newCell.CellType != CellType.Formula)
{
var extract = deptData.FirstOrDefault(t => t.Category == headName);
var value = extract?.Value == 0 ? null : extract?.Value;
OutToExcelCell(newCell, value);
if (header != null && header.Contains(headName))
newCell.CellStyle = style;
}
}
allExtract.RemoveAll(t => t.Department == department);
}
}
#endregion
}
if (allExtract == null || !allExtract.Any()) return;
#region 补充新的科室及数据
var lastrowIndex = isNewTemp ? rowIndex : sheet.LastRowNum + 1;
foreach (var department in allExtract.Select(t => t.Department).Where(t => !string.IsNullOrEmpty(t)).Distinct())
{
var row = sheet.CreateRow(lastrowIndex);
for (int i = head.FirstCellNum; i < head.LastCellNum; i++)
{
var headName = head.GetCell(i).StringCellValue;
var newCell = row.CreateCell(i);
if (headName == "核算单元")
{
var dept = unitList.FirstOrDefault(t => t.SheetName == sheet.SheetName && t.Department == department)?.AccountingUnit ?? unitList.FirstOrDefault(t => t.SheetName != sheet.SheetName && t.Department == department)?.AccountingUnit;
newCell.SetCellValue(dept ?? "");
newCell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.默认);
}
else if (headName == "科室名称")
{
newCell.SetCellValue(department ?? "");
newCell.CellStyle = CellStyle.CreateCellStyle(workbook, StyleType.默认);
}
else
{
var extract = allExtract.FirstOrDefault(t => t.Department == department && t.Category == headName);
var value = extract?.Value == 0 ? null : extract?.Value;
OutToExcelCell(newCell, value);
if (header != null && header.Contains(headName))
newCell.CellStyle = style;
}
}
lastrowIndex++;
}
#endregion
}
#endregion
#endregion
#region Common
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="path"></param>
/// <param name="subject"></param>
/// <param name="body"></param>
private void SendEmail(string mail, string path, string subject, string body)
{
if (string.IsNullOrEmpty(mail)) return;
var message = new EmailMessage
{
To = new List<string> { mail },
DisplayName = "溯直健康",
Subject = subject,
Body = body
};
if (!string.IsNullOrEmpty(path))
message.Attachments = new List<string> { path };
emailService.Send(message);
}
/// <summary>
/// 校验数据格式,并转换
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public void OutToExcelCell(ICell cell, object obj)
{
string value = obj?.ToString() ?? "";
try
{
var type = obj?.GetType() ?? typeof(string);
switch (type.ToString())
{
case "System.String"://字符串类型
cell.SetCellValue(value);
break;
case "System.DateTime"://日期类型
DateTime dateV;
DateTime.TryParse(value, out dateV);
cell.SetCellValue(dateV.ToString("yyyy/M/d"));
break;
case "System.Boolean"://布尔型
bool boolV = false;
bool.TryParse(value, out boolV);
cell.SetCellValue(boolV);
break;
case "System.Int16"://整型
case "System.Int32":
case "System.Int64":
case "System.Byte":
int intV = 0;
int.TryParse(value, out intV);
cell.SetCellValue(intV);
break;
case "System.Decimal"://浮点型
case "System.Double":
double doubV = 0;
double.TryParse(value, out doubV);
cell.SetCellValue(doubV);
break;
case "System.DBNull"://空值处理
cell.SetCellValue("");
break;
default:
cell.SetCellValue("");
break;
}
}
catch
{
cell.SetCellValue(value);
}
}
#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
}
}
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.Extensions.Logging;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Text.RegularExpressions;
namespace Performance.Services
{
public class ExConfigService : IAutoInjection
{
private readonly PerforExtypeRepository extypeRepository;
private readonly PerforExscriptRepository exscriptRepository;
private readonly PerforExmoduleRepository exmoduleRepository;
private readonly PerforExitemRepository exitemRepository;
private readonly PerforExspecialRepository exspecialRepository;
private readonly PerforPerallotRepository perallotRepository;
private readonly PerforHospitalconfigRepository hospitalconfigRepository;
private readonly PerforExtractRepository extractRepository;
private readonly PerforModdicRepository moddicRepository;
private readonly ILogger logger;
public ExConfigService(PerforExtypeRepository extypeRepository,
PerforExscriptRepository exscriptRepository,
PerforExmoduleRepository exmoduleRepository,
PerforExitemRepository exitemRepository,
PerforExspecialRepository exspecialRepository,
PerforPerallotRepository perallotRepository,
PerforHospitalconfigRepository hospitalconfigRepository,
PerforExtractRepository extractRepository,
PerforModdicRepository moddicRepository,
ILogger<ExConfigService> logger)
{
this.extypeRepository = extypeRepository;
this.exscriptRepository = exscriptRepository;
this.exmoduleRepository = exmoduleRepository;
this.exitemRepository = exitemRepository;
this.exspecialRepository = exspecialRepository;
this.perallotRepository = perallotRepository;
this.hospitalconfigRepository = hospitalconfigRepository;
this.extractRepository = extractRepository;
this.moddicRepository = moddicRepository;
this.logger = logger;
}
#region Modules
public List<ex_module> QueryModule(int hospitalId)
{
//首次添加费用字典默认值
DefaultModules(hospitalId);
var list = exmoduleRepository.GetEntities(t => t.HospitalId == hospitalId).OrderBy(t => t.ModuleName).ToList();
return list;
}
private void DefaultModules(int hospitalId)
{
var moduleList = new ex_module[]
{
new ex_module{ ModuleName = "1.0.1 额外收入", SheetType = (int)SheetType.OtherIncome },
new ex_module{ ModuleName = "1.1.1 门诊开单收入", SheetType = (int)SheetType.Income },
new ex_module{ ModuleName = "1.1.2 门诊执行收入", SheetType = (int)SheetType.Income },
new ex_module{ ModuleName = "1.2.1 住院开单收入", SheetType = (int)SheetType.Income },
new ex_module{ ModuleName = "1.2.2 住院执行收入", SheetType = (int)SheetType.Income },
new ex_module{ ModuleName = "2.1 成本支出统计表", SheetType = (int)SheetType.Expend },
new ex_module{ ModuleName = "3.1 医生组工作量绩效测算表", SheetType = (int)SheetType.Workload },
new ex_module{ ModuleName = "3.2 护理组工作量绩效测算表", SheetType = (int)SheetType.Workload },
};
var data = exmoduleRepository.GetEntities(t => t.HospitalId == hospitalId);
var inexistence = data == null ? moduleList : moduleList.Where(t => !data.Select(p => p.ModuleName).ToArray().Contains(t.ModuleName));
if (inexistence != null && inexistence.Any())
{
List<ex_module> modules = new List<ex_module>();
foreach (var item in inexistence)
{
var module = new ex_module
{
HospitalId = hospitalId,
ModuleName = item.ModuleName,
SheetType = (int)item.SheetType,
ReadOnly = 1,
TypeId = null,
};
modules.Add(module);
}
if (modules.Any())
exmoduleRepository.AddRange(modules.ToArray());
}
}
public ex_module AddModule(ModModuleRequest request)
{
if (request.SheetType != (int)SheetType.Income)
throw new PerformanceException("模块类型错误,只支持收入模板配置");
string[] array = new string[] { "开单收入", "执行收入" };
if (request.ModuleName.IndexOf("开单收入") == -1 && request.ModuleName.IndexOf("执行收入") == -1)
throw new PerformanceException("模块名称规则错误");
//if (!Regex.IsMatch(request.ModuleName, @"^[\u4e00-\u9fa5]+$"))
// throw new PerformanceException("模块名称规则错误,请使用全中文命名");
var incomeList = exmoduleRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.SheetType == (int)SheetType.Income);
if (incomeList.Any(t => Regex.Replace(t.ModuleName, @"\d", "").Replace(".", "").Replace(" ", "") == request.ModuleName))
throw new PerformanceException("绩效模板已存在!");
string addname = "";
var moduleList = exmoduleRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.ModuleName.IndexOf("1.") != -1);
string name = request.ModuleName.Replace("开单收入", "").Replace("执行收入", "");
var exist = moduleList.Where(t => t.ModuleName.Contains(name));
if (exist != null && exist.Any())
{
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));
sort[2] += 1;
addname = string.Join(".", sort) + " " + request.ModuleName;
}
else
{
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));
sort[1] += 1;
addname = $"{sort[0]}.{sort[1]}.1 " + request.ModuleName;
}
ex_module entity = new ex_module
{
ModuleName = addname,
HospitalId = request.HospitalId,
Description = request.Description,
SheetType = request.SheetType,
TypeId = request.TypeId,
ReadOnly = 0,
};
if (!exmoduleRepository.Add(entity))
throw new PerformanceException("添加失败!");
return entity;
}
public ex_module EditModule(ModModuleRequest request)
{
var entity = exmoduleRepository.GetEntity(t => t.Id == request.ModuleId);
if (entity == null)
throw new PerformanceException("该绩效抽取方案不存在!");
//if (entity.ReadOnly == 1)
// throw new PerformanceException("该绩效抽取方案不可编辑!");
var list = exmoduleRepository.GetEntities(t => t.Id != entity.Id && t.HospitalId == entity.HospitalId && t.ModuleName == request.ModuleName);
if (list != null && list.Any())
throw new PerformanceException("绩效模板已存在!");
entity.ModuleName = request.ModuleName ?? entity.ModuleName;
entity.SheetType = request.SheetType;
entity.Description = request.Description;
entity.TypeId = request.TypeId;
entity.ConfigId = request.ConfigId;
if (!exmoduleRepository.Update(entity))
throw new PerformanceException("修改失败!");
return entity;
}
public void DelModule(int moduleId)
{
var entity = exmoduleRepository.GetEntity(t => t.Id == moduleId);
if (entity == null)
throw new PerformanceException("该绩效抽取方案不存在!");
if (!exmoduleRepository.Remove(entity))
throw new PerformanceException("删除失败!");
if (entity.SheetType != (int)SheetType.SpecialUnit)
{
var itemList = exitemRepository.GetEntities(t => t.ModuleId == moduleId);
if (itemList != null && itemList.Any())
exitemRepository.RemoveRange(itemList.ToArray());
}
else
{
var specialList = exspecialRepository.GetEntities(t => t.HospitalId == entity.HospitalId);
if (specialList != null && specialList.Any())
exspecialRepository.RemoveRange(specialList.ToArray());
}
}
#endregion
#region Items
public List<ex_item> QueryItems(int moduleId)
{
var list = exitemRepository.GetEntities(t => t.ModuleId == moduleId);
return list?.OrderBy(t => t.Id).ToList();
}
public List<ex_item> AddItem(ItemListRequest request)
{
var entity = exitemRepository.GetEntity(t => t.Id == request.ModuleId);
if (entity == null)
throw new PerformanceException("选择的绩效抽取方案不存在!");
var list = request.Items;
list.ForEach(t =>
{
t.ModuleId = entity.Id;
//t.ExtractId = entity.ExtractId;
t.ReadOnly = 0;
});
if (!exitemRepository.AddRange(list.ToArray()))
throw new PerformanceException("添加失败!");
return list;
}
public ex_item EditItem(ex_item entity)
{
var item = exitemRepository.GetEntity(t => t.Id == entity.Id); if (item == null)
throw new PerformanceException("选择修改的项不存在!");
item.ItemName = entity.ItemName;
item.FactorValue1 = entity.FactorValue1;
item.FactorValue2 = entity.FactorValue2;
item.FactorValue3 = entity.FactorValue3;
item.TypeId = entity.TypeId;
item.ConfigId = entity.ConfigId;
if (!exitemRepository.Update(item))
throw new PerformanceException("修改失败!");
return item;
}
public void DelItem(int itemId)
{
var item = exitemRepository.GetEntity(t => t.Id == itemId);
if (item == null)
throw new PerformanceException("Item项不存在!");
exitemRepository.Remove(item);
}
#endregion
#region 特殊科室
/// <summary>
/// 特殊科室模板配置项列表
/// </summary>
/// <returns></returns>
public List<ex_special> QuerySpecial(int hospitalId)
{
var list = exspecialRepository.GetEntities(t => t.HospitalId == hospitalId);
return list;
}
/// <summary>
/// 特殊科室模板配置项新增
/// </summary>
/// <returns></returns>
public List<ex_special> AddSpecial(SpecialListRequest request)
{
var list = request.Items;
list.ForEach(t => t.HospitalId = request.HospitalId);
if (!exspecialRepository.AddRange(list.ToArray()))
throw new PerformanceException("添加失败!");
return list;
}
/// <summary>
/// 特殊科室模板配置项修改
/// </summary>
/// <returns></returns>
public ex_special EditSpecial(ex_special entity)
{
var special = exspecialRepository.GetEntity(t => t.Id == entity.Id);
if (special == null)
throw new PerformanceException("选择修改的数据不存在!");
special.Department = entity.Department ?? special.Department;
special.Target = entity.Target;
special.TargetFactor = entity.TargetFactor;
special.AdjustFactor = entity.AdjustFactor;
special.TypeId = entity.TypeId;
special.ConfigId = entity.ConfigId;
if (!exspecialRepository.Update(special))
throw new PerformanceException("修改失败!");
return special;
}
/// <summary>
/// 特殊科室模板配置项删除
/// </summary>
/// <returns></returns>
public void DelSpecial(int specialId)
{
var special = exspecialRepository.GetEntity(t => t.Id == specialId);
if (special == null)
throw new PerformanceException("需要删除的项不存在!");
exspecialRepository.Remove(special);
}
#endregion
public bool QueryHosConfigs(int moduleId, out int sheetType)
{
var module = exmoduleRepository.GetEntity(t => t.Id == moduleId);
if (module == null)
throw new PerformanceException("绩效模板不存在,请重新选择!");
sheetType = (int)SheetType.Income;
//if (module.SheetType != (int)SheetType.Income)
// throw new PerformanceException("当前模板不能进行考核项目自动添加");
var hospitalConfigs = hospitalconfigRepository.GetEntities(t => t.HospitalId == module.HospitalId);
if (hospitalConfigs != null && hospitalConfigs.Any())
return true;
return false;
}
/// <summary>
/// 添加默认绩效模板配置
/// </summary>
/// <param name="moduleId"></param>
public void AddItems(int moduleId)
{
var module = exmoduleRepository.GetEntity(t => t.Id == moduleId);
if (module == null)
throw new PerformanceException("绩效模板不存在,请重新选择!");
if (module.SheetType != (int)SheetType.Income)
return;
var sqlconfig = moddicRepository.GetEntity(w => w.HospitalId == module.HospitalId && w.Type.Trim().ToLower() == "itemsql");
if (sqlconfig != null)
{
var hospitalConfig = hospitalconfigRepository.GetEntity(t => t.HospitalId == module.HospitalId && t.Id == sqlconfig.ConfigId);
if (hospitalConfig == null)
{
logger.LogInformation("添加默认收费项时,医院配置信息未设置");
return;
}
QueryAndAddItem(new List<sys_hospitalconfig> { hospitalConfig }, sqlconfig.Content, module);
}
else
{
logger.LogInformation("添加默认收费项时医院未设置sql");
var hospitalConfigs = hospitalconfigRepository.GetEntities(t => t.HospitalId == module.HospitalId);
if (hospitalConfigs == null || !hospitalConfigs.Any())
{
logger.LogInformation("医院未设置数据库连接信息");
return;
}
string sql = "SELECT ITEM_TYPE FROM DIC_FEE GROUP BY ITEM_TYPE ORDER BY ITEM_TYPE";
QueryAndAddItem(hospitalConfigs, sql, module);
}
}
private bool QueryAndAddItem(List<sys_hospitalconfig> hospitalconfigs, string sql, ex_module module)
{
logger.LogInformation("创建数据库连接");
List<string> itemNames = new List<string>();
foreach (var hospitalConfig in hospitalconfigs)
{
var connection = ConnectionBuilder.Create((DatabaseType)hospitalConfig.DataBaseType, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
logger.LogInformation($"执行sql:{sql}");
var dataList = extractRepository.ExecuteScript(connection, sql, null);
logger.LogInformation($"获取数据{dataList?.Count ?? 0}条");
if (dataList != null && dataList.Any())
itemNames.AddRange(dataList.Select(t => t.Value.ToString()));
}
var items = exitemRepository.GetEntities(t => t.ModuleId == module.Id);
if (items == null && (itemNames == null || !itemNames.Any()))
return true;
if (itemNames != null && itemNames.Any())
{
if (items != null)
itemNames = itemNames.Except(items.Select(t => t.ItemName)).ToList();
logger.LogInformation($"添加默认收费项 去重后数据有{itemNames.Distinct().Count()}");
var itemList = itemNames.Distinct().Select(t => new ex_item
{
ItemName = t,
FactorValue1 = 0m,
FactorValue2 = 0m,
FactorValue3 = 0m,
ModuleId = module.Id,
TypeId = module.TypeId,
ReadOnly = 1
});
logger.LogInformation($"添加默认收费项 受影响行数{itemList.Count()}");
return exitemRepository.AddRange(itemList.ToArray());
}
return true;
}
/// <summary>
/// 特殊科室人均
/// </summary>
/// <returns></returns>
public List<TitleValue> PerforType()
{
var list = EnumHelper.GetItems<PerforType>();
var result = list.Select(t => new TitleValue
{
Title = t.Description,
Value = t.Description
});
return result.ToList();
}
/// <summary>
/// 获取抽取的配置
/// </summary>
/// <param name="hospitalId"></param>
/// <returns></returns>
public List<sys_hospitalconfig> GetHospitalconfigs(int hospitalId)
{
var configs = hospitalconfigRepository.GetEntities(t => t.HospitalId == hospitalId);
return configs;
}
/// <summary>
/// 绩效数据抽取模板
/// </summary>
/// <returns></returns>
public List<TitleValue> ExtractScheme(int hospitalId, List<int> executeType)
{
var titlevalue = new List<TitleValue>();
Expression<Func<ex_type, bool>> exp = t => new List<int> { 0, hospitalId }.Contains(t.HospitalId);
if (executeType.FirstOrDefault() == 1)
exp = exp.And(t => t.Source == (int)SheetType.Income);
else
exp = exp.And(t => t.Source != (int)SheetType.Income);
var list = extypeRepository.GetEntities(exp);
if (list != null && list.Any())
{
//var scripts = exscriptRepository.GetEntities(t => list.Select(w => w.Id).Contains(t.TypeId));
//titlevalue = list.Where(t => scripts.Select(w => w.TypeId).Contains(t.Id)).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.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;
}
/// <summary>
/// 费用类型
/// </summary>
/// <returns></returns>
public List<TitleValue> FeeType()
{
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));
if (type != null && type.Any())
{
titlevalue = type.Select(t => new TitleValue
{
Title = t.Description,
Value = t.Value.ToString()
}).ToList();
}
return titlevalue;
}
/// <summary>
/// 绩效考核项费用来源
/// </summary>
/// <returns></returns>
public ModFeeResponse FeeSource(ModModuleRequest request)
{
var configList = hospitalconfigRepository.GetEntities(t => t.HospitalId == request.HospitalId);
if (configList != null && configList.Any())
{
var hospitalConfig = configList.First();
var connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
int pagesize = 500, pagenum = 0;
if (request.PageNum != 0)
pagenum = request.PageNum - 1;
if (request.PageSize >= 500 && request.PageSize <= 10000)
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};";
var dataList = extractRepository.ExecuteScript(connection, sql, null);
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 list; // 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.
...@@ -27,7 +27,6 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) ...@@ -27,7 +27,6 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
string[] headers = new string[] string[] headers = new string[]
{ {
"核算单元", "核算单元",
"核算单元",
"人员工号", "人员工号",
"医生姓名", "医生姓名",
"职务分类", "职务分类",
......
...@@ -17,29 +17,29 @@ public class PerSheetDataReadExpend : IPerSheetDataRead ...@@ -17,29 +17,29 @@ public class PerSheetDataReadExpend : IPerSheetDataRead
{ {
HeaderFirstRowNum = 4, HeaderFirstRowNum = 4,
HeaderLastRowNum = 4, HeaderLastRowNum = 4,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 3,
DataFirstRowNum = 5, DataFirstRowNum = 5,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
{ {
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 3,
UnitType = "医技组", UnitType = "医技组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 3, FactorRow = 3,
}, },
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 1, AccountingUnitCellNum = 4,
UnitType = "医生组", UnitType = "医生组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 2, FactorRow = 2,
}, },
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 2, AccountingUnitCellNum = 5,
UnitType = "护理组", UnitType = "护理组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 1, FactorRow = 1,
}, },
} }
......
...@@ -17,32 +17,32 @@ public class PerSheetDataReadIncome : IPerSheetDataRead ...@@ -17,32 +17,32 @@ public class PerSheetDataReadIncome : IPerSheetDataRead
{ {
HeaderFirstRowNum = 4, HeaderFirstRowNum = 4,
HeaderLastRowNum = 4, HeaderLastRowNum = 4,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 3,
DataFirstRowNum = 5, DataFirstRowNum = 5,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
{ {
//核算单元(医技组) //核算单元(医技组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 3,
UnitType = "医技组", UnitType = "医技组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 3, FactorRow = 3,
}, },
//核算单元(医生组) //核算单元(医生组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 1, AccountingUnitCellNum = 4,
UnitType = "医生组", UnitType = "医生组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 2, FactorRow = 2,
}, },
//核算单元(护理组) //核算单元(护理组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 2, AccountingUnitCellNum = 5,
UnitType = "护理组", UnitType = "护理组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 1, FactorRow = 1,
} }
} }
......
...@@ -17,32 +17,32 @@ public class PerSheetDataReadOtherIncome : IPerSheetDataRead ...@@ -17,32 +17,32 @@ public class PerSheetDataReadOtherIncome : IPerSheetDataRead
{ {
HeaderFirstRowNum = 4, HeaderFirstRowNum = 4,
HeaderLastRowNum = 4, HeaderLastRowNum = 4,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 3,
DataFirstRowNum = 5, DataFirstRowNum = 5,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
{ {
//核算单元(医技组) //核算单元(医技组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 3,
UnitType = "医技组", UnitType = "医技组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 3, FactorRow = 3,
}, },
//核算单元(医生组) //核算单元(医生组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 1, AccountingUnitCellNum = 4,
UnitType = "医生组", UnitType = "医生组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 2, FactorRow = 2,
}, },
//核算单元(护理组) //核算单元(护理组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 2, AccountingUnitCellNum = 5,
UnitType = "护理组", UnitType = "护理组",
DeptCellNum = 3, DeptCellNum = 6,
FactorRow = 1, FactorRow = 1,
} }
} }
......
...@@ -17,14 +17,14 @@ public class PerSheetDataReadWorkload : IPerSheetDataRead ...@@ -17,14 +17,14 @@ public class PerSheetDataReadWorkload : IPerSheetDataRead
{ {
HeaderFirstRowNum = 1, HeaderFirstRowNum = 1,
HeaderLastRowNum = 1, HeaderLastRowNum = 1,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 1,
DataFirstRowNum = 3, DataFirstRowNum = 3,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
{ {
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 1,
DeptCellNum = 1, DeptCellNum = 2,
FactorRow = 2 FactorRow = 2
} }
} }
......
...@@ -107,6 +107,25 @@ public SheetExportResponse SheetExport(int sheetID) ...@@ -107,6 +107,25 @@ public SheetExportResponse SheetExport(int sheetID)
else else
{ {
CommonExport(sheetID, response); CommonExport(sheetID, response);
if (new int[] { (int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend, (int)SheetType.Workload }.Contains(sheet.SheetType.Value))
{
var point = 0;
if (new int[] { (int)SheetType.Income, (int)SheetType.OtherIncome, (int)SheetType.Expend }.Contains(sheet.SheetType.Value))
point = -3;
else
point = -1;
response.Header.ForEach(t => t.Data.ForEach(data =>
{
if (data.PointCell != 0)
data.PointCell += point;
}));
response.Row.ForEach(t => t.Data.ForEach(data =>
{
if (data.PointCell != 0)
data.PointCell += point;
}));
}
} }
if (response.Row != null && response.Row.Any()) if (response.Row != null && response.Row.Any())
......
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