Commit 366f0b36 by 李承祥

抽取方案接口调整

parent 52f75cb8
......@@ -156,8 +156,8 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody]Al
if (null == allot || string.IsNullOrEmpty(allot.Path))
throw new PerformanceException("当前绩效记录不存在或没有上传数据文件");
var user = _claim.At(request);
_allotService.Generate(allot, user.Mail);
//BackgroundJob.Enqueue(() => _allotService.Generate(allot, user.Mail));
//_allotService.Generate(allot, user.Mail);
BackgroundJob.Enqueue(() => _allotService.Generate(allot, user.Mail));
return new ApiResponse(ResponseType.OK);
}
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.Infrastructure;
using Performance.Services;
namespace Performance.Api.Controllers
{
[Route("api/[controller]")]
public class ModExtractController : Controller
{
private ModExtractService modExtractService;
private WebapiUrl url;
public ModExtractController(ModExtractService modExtractService,
IOptions<WebapiUrl> url)
{
this.modExtractService = modExtractService;
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 不存在,请重新选择!");
var list = modExtractService.ExtractScheme(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 费用类型
/// </summary>
/// <returns></returns>
[Route("type")]
[HttpPost]
public ApiResponse FeeType([FromBody]ApiRequest request)
{
var list = modExtractService.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 = modExtractService.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 = modExtractService.Module(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 = modExtractService.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 参数错误!");
modExtractService.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 = modExtractService.AddItem(request);
return new ApiResponse(ResponseType.OK, "添加成功!", list);
}
/// <summary>
/// 绩效收入模板配置项列表
/// </summary>
/// <returns></returns>
[Route("items")]
[HttpPost]
public ApiResponse Items([FromBody]ModItemRequest request)
{
HttpHelper.HttpPost(url.HttpPost + "/modextract/items", JsonHelper.Serialize(request), true);
var list = modExtractService.Items(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 = modExtractService.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 参数错误!");
modExtractService.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 = modExtractService.AddSpecial(request);
return new ApiResponse(ResponseType.OK, "添加成功!", list);
}
/// <summary>
/// 特殊科室模板配置项列表
/// </summary>
/// <returns></returns>
[Route("specials")]
[HttpPost]
public ApiResponse Specials([FromBody]ModSpecialRequest request)
{
var list = modExtractService.Special(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 = modExtractService.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 参数错误!");
modExtractService.DelSpecial(request.SpecialId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!");
}
#endregion
}
}
\ No newline at end of file
......@@ -41,6 +41,7 @@
"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",
"HttpPost": "http://localhost:50997/api"
}
}
......@@ -20,5 +20,10 @@ public class WebapiUrl
/// 上传文件地址
/// </summary>
public string ImportFile { get; set; }
/// <summary>
/// Post请求地址
/// </summary>
public string HttpPost { get; set; }
}
}
......@@ -45,5 +45,15 @@ public class mod_module
/// 提取脚本ID
/// </summary>
public Nullable<int> ExtractId { get; set; }
/// <summary>
/// 只读 0、否 1、是
/// </summary>
public Nullable<int> ReadOnly { get; set; }
/// <summary>
/// 是否生成Item 0、否 1、是
/// </summary>
public Nullable<int> IsGenerated { get; set; }
}
}
......@@ -19,33 +19,6 @@ public ModExtractController(ModExtractService modExtractService)
}
/// <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 不存在,请重新选择!");
var list = modExtractService.ExtractScheme(request.HospitalId.Value);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 费用类型
/// </summary>
/// <returns></returns>
[Route("type")]
[HttpPost]
public ApiResponse FeeType([FromBody]ApiRequest request)
{
var list = modExtractService.FeeType();
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 绩效考核项费用来源
/// </summary>
/// <returns></returns>
......@@ -61,84 +34,6 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request)
}
/// <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 = modExtractService.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 = modExtractService.Module(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 = modExtractService.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 参数错误!");
modExtractService.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 未发现任添加何项!");
modExtractService.AddItem(request);
return new ApiResponse(ResponseType.OK, "添加成功!");
}
/// <summary>
/// 绩效收入模板配置项列表
/// </summary>
/// <returns></returns>
......@@ -146,98 +41,8 @@ public ApiResponse AddItem([FromBody]ItemListRequest request)
[HttpPost]
public ApiResponse Items([FromBody]ModItemRequest request)
{
var list = modExtractService.Items(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, "请选择需要修改的数据!");
modExtractService.EditItem(request.Items[0]);
return new ApiResponse(ResponseType.OK, "修改成功!");
}
/// <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 参数错误!");
modExtractService.DelItem(request.ItemId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!");
}
/// <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 未发现任添加何项!");
modExtractService.AddSpecial(request);
return new ApiResponse(ResponseType.OK, "添加成功!");
}
/// <summary>
/// 特殊科室模板配置项列表
/// </summary>
/// <returns></returns>
[Route("specials")]
[HttpPost]
public ApiResponse Specials([FromBody]ModSpecialRequest request)
{
var list = modExtractService.Special(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, "请选择需要修改的数据!");
modExtractService.EditSpecial(request.Items[0]);
return new ApiResponse(ResponseType.OK, "修改成功!");
}
/// <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 参数错误!");
modExtractService.DelSpecial(request.SpecialId.Value);
return new ApiResponse(ResponseType.OK, "删除成功!");
modExtractService.AddItems(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK);
}
}
}
\ No newline at end of file
......@@ -46,7 +46,7 @@ public class BaiscNormService : IAutoInjection
PositionName = EnumHelper.GetDescription(item.reference),
TotelNumber = count,
TotelValue = dataList?.Sum(t => t.GiveFee),
AvgValue = dataList?.Sum(t => t.GiveFee) / count
AvgValue = count != 0 ? dataList?.Sum(t => t.GiveFee) / count : 0
};
baiscnormList.Add(baiscnorm);
}
......
......@@ -54,7 +54,7 @@ public List<TitleValue> ExtractScheme(int hospitalId)
public List<TitleValue> FeeType()
{
var titlevalue = new List<TitleValue>();
var type = EnumHelper.GetItems<SheetType>().Where(t => new List<int> { (int)SheetType.Income, (int)SheetType.Expend, (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())
{
titlevalue = type.Select(t => new TitleValue
......@@ -67,93 +67,27 @@ public List<TitleValue> FeeType()
}
/// <summary>
/// 绩效考核项费用来源
/// </summary>
/// <returns></returns>
public ModFeeResponse FeeSource(ModModuleRequest request)
{
var configList = perforHospitalconfigRepository.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 = perforExtractRepository.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 = perforExtractRepository.ExecuteScript(connection, sql, null);
return new ModFeeResponse
{
Total = (int)dataList.FirstOrDefault().Value,
PageNum = pagenum + 1,
PageSize = pagesize,
Data = list
};
}
}
return new ModFeeResponse();
}
/// <summary>
/// 费用字典新增
/// </summary>
/// <returns></returns>
public mod_module AddModule(ModModuleRequest request)
{
var data = perforModmoduleRepository.GetEntity(t => t.ModuleName == request.ModuleName && t.HospitalId == request.HospitalId);
if (data != null)
throw new PerformanceException("绩效模板已存在!");
mod_module entity = new mod_module
{
ModuleName = request.ModuleName,
HospitalId = request.HospitalId,
Description = request.Description,
SheetType = request.SheetType,
ExtractId = request.ExtractId
ExtractId = request.ExtractId,
ReadOnly = 0,
IsGenerated = 0
};
if (!perforModmoduleRepository.Add(entity))
throw new PerformanceException("添加失败!");
//收入 默认添加收费项
if ((int)SheetType.Income == request.SheetType.Value)
{
var configList = perforHospitalconfigRepository.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);
string sql = "select distinct category from inpat_fee where category is not null union select distinct category from out_fee where category is not null;";
var dataList = perforExtractRepository.ExecuteScript(connection, sql, null);
if (dataList != null && dataList.Any())
{
var list = dataList.Select(t => new mod_item
{
ItemName = t.Value.ToString(),
FactorValue1 = 0m,
FactorValue2 = 0m,
ModuleId = entity.Id,
ExtractId = entity.ExtractId,
});
perforModitemRepository.AddRange(list.ToArray());
}
}
}
return entity;
}
......@@ -163,11 +97,52 @@ public mod_module AddModule(ModModuleRequest request)
/// <returns></returns>
public List<mod_module> Module(int hospitalId)
{
//首次添加费用字典默认值
AddModule(hospitalId);
var list = perforModmoduleRepository.GetEntities(t => t.HospitalId == hospitalId);
return list;
}
/// <summary>
/// 首次添加费用字典默认值
/// </summary>
/// <param name="hospitalId"></param>
private void AddModule(int hospitalId)
{
var moduleList = new[]
{
new { ModuleName = "额外收入", SheetType = SheetType.OtherIncome },
new { ModuleName = "门诊就诊收入", SheetType = SheetType.Income },
new { ModuleName = "门诊执行收入", SheetType = SheetType.Income },
new { ModuleName = "住院就诊收入", SheetType = SheetType.Income },
new { ModuleName = "住院执行收入", SheetType = SheetType.Income },
new { ModuleName = "成本支出统计表", SheetType = SheetType.Expend },
new { ModuleName = "医生组工作量绩效测算表", SheetType = SheetType.Workload },
new { ModuleName = "护理组工作量绩效测算表", SheetType = SheetType.Workload },
};
var data = perforModmoduleRepository.GetEntities(t => moduleList.Select(p => p.ModuleName).Contains(t.ModuleName) && t.HospitalId == hospitalId);
if (data != null && data.Any())
return;
List<mod_module> modules = new List<mod_module>();
foreach (var item in moduleList)
{
var module = new mod_module
{
HospitalId = hospitalId,
ModuleName = item.ModuleName,
SheetType = (int)item.SheetType,
ReadOnly = 1,
IsGenerated = 0
};
modules.Add(module);
}
perforModmoduleRepository.AddRange(modules.ToArray());
}
/// <summary>
/// 绩效模板修改
/// </summary>
/// <returns></returns>
......@@ -176,10 +151,17 @@ public mod_module EditModule(ModModuleRequest request)
var entity = perforModmoduleRepository.GetEntity(t => t.Id == request.ModuleId);
if (entity == null)
throw new PerformanceException("该绩效抽取方案不存在!");
if (entity.ReadOnly == 1)
throw new PerformanceException("该绩效抽取方案不可编辑!");
var list = perforModmoduleRepository.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.SheetType;
entity.Description = request.Description ?? entity.Description;
entity.ExtractId = request.ExtractId ?? entity.ExtractId;
if (!perforModmoduleRepository.Update(entity))
throw new PerformanceException("修改失败!");
......@@ -226,7 +208,7 @@ public List<mod_item> Items(int moduleId)
/// 绩效收入模板配置项新增
/// </summary>
/// <returns></returns>
public void AddItem(ItemListRequest request)
public List<mod_item> AddItem(ItemListRequest request)
{
var entity = perforModmoduleRepository.GetEntity(t => t.Id == request.ModuleId);
if (entity == null)
......@@ -236,6 +218,8 @@ public void AddItem(ItemListRequest request)
list.ForEach(t => { t.ModuleId = entity.Id; t.ExtractId = entity.ExtractId; });
if (!perforModitemRepository.AddRange(list.ToArray()))
throw new PerformanceException("添加失败!");
return list;
}
/// <summary>
......@@ -247,8 +231,11 @@ public mod_item EditItem(mod_item entity)
var item = perforModitemRepository.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.SelectionRange = entity.SelectionRange;
if (!perforModitemRepository.Update(item))
throw new PerformanceException("修改失败!");
......@@ -282,12 +269,14 @@ public List<mod_special> Special(int hospitalId)
/// 特殊科室模板配置项新增
/// </summary>
/// <returns></returns>
public void AddSpecial(SpecialListRequest request)
public List<mod_special> AddSpecial(SpecialListRequest request)
{
var list = request.Items;
list.ForEach(t => t.HospitalId = request.HospitalId);
if (!perforModspecialRepository.AddRange(list.ToArray()))
throw new PerformanceException("添加失败!");
return list;
}
/// <summary>
......@@ -322,5 +311,93 @@ public void DelSpecial(int specialId)
perforModspecialRepository.Remove(special);
}
/// <summary>
/// 绩效考核项费用来源
/// </summary>
/// <returns></returns>
public ModFeeResponse FeeSource(ModModuleRequest request)
{
var configList = perforHospitalconfigRepository.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 = perforExtractRepository.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 = perforExtractRepository.ExecuteScript(connection, sql, null);
return new ModFeeResponse
{
Total = (int)dataList.FirstOrDefault().Value,
PageNum = pagenum + 1,
PageSize = pagesize,
Data = list
};
}
}
return new ModFeeResponse();
}
/// <summary>
/// 添加默认绩效模板配置
/// </summary>
/// <param name="moduleId"></param>
public void AddItems(int moduleId)
{
var module = perforModmoduleRepository.GetEntity(t => t.Id == moduleId);
if (module == null)
throw new PerformanceException("绩效模板不存在,请重新选择!");
//收入 默认添加收费项
if ((int)SheetType.Income == module.SheetType && module.IsGenerated == 0)
{
var configList = perforHospitalconfigRepository.GetEntities(t => t.HospitalId == module.HospitalId);
if (configList != null && configList.Any())
{
var hospitalConfig = configList.First();
var connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
string sql = "select distinct category from inpat_fee where category is not null union select distinct category from out_fee where category is not null;";
var dataList = perforExtractRepository.ExecuteScript(connection, sql, null);
if (dataList != null && dataList.Any())
{
var itemList = dataList.Select(t => new mod_item
{
ItemName = t.Value.ToString(),
FactorValue1 = 0m,
FactorValue2 = 0m,
ModuleId = module.Id,
ExtractId = module.ExtractId,
});
perforModitemRepository.AddRange(itemList.ToArray());
module.IsGenerated = 1;
perforModmoduleRepository.Update(module);
}
}
}
}
}
}
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