Commit fb866850 by 799284587@qq.com

Merge branch 'develop' into feature/0724

# Conflicts:
#	performance/Performance.Api/Controllers/TemplateController.cs
#	performance/Performance.Api/Template/医院绩效模板.xlsx
parents 042ce8fe 960c5538
using FluentValidation.AspNetCore; using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
...@@ -11,6 +12,7 @@ ...@@ -11,6 +12,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Performance.Api.Controllers namespace Performance.Api.Controllers
...@@ -43,43 +45,73 @@ public class AccountController : Controller ...@@ -43,43 +45,73 @@ public class AccountController : Controller
/// 登录 /// 登录
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[NoVerify]
[HttpPost] [HttpPost]
[Route("login")] [Route("login")]
public ApiResponse<UserIdentity> Login([FromBody]LoginRequest request) [AllowAnonymous]
public ApiResponse<JwtToken> Login([FromBody]LoginRequest request)
{ {
var user = _userService.Login(request); var user = _userService.Login(request);
if (user == null) if (user == null)
return new ApiResponse<UserIdentity>(ResponseType.Fail, "用户不存在"); return new ApiResponse<JwtToken>(ResponseType.Fail, "用户不存在");
int[] roleArray = new int[] { _options.NurseRole, _options.DirectorRole };
user.Hospital = _hospitalService.GetUserHopital(user.UserID); var claims = new Claim[]
user.Role = _roleService.GetUserRole(user.UserID); {
user.IsAgainAdmin = user.Role != null ? roleArray.Contains(user.Role.First().RoleID) : false; new Claim(JwtClaimTypes.Id, user.UserID.ToString()),
new Claim(JwtClaimTypes.Login, user.Login),
new Claim(JwtClaimTypes.RealName, user.RealName),
new Claim(JwtClaimTypes.Mail, user.Mail),
new Claim(JwtClaimTypes.AppName, request.AppName ?? ""),
new Claim(JwtClaimTypes.Device, request.Device ?? ""),
new Claim(JwtClaimTypes.Department, user.Department ?? ""),
};
if (string.IsNullOrEmpty(user.Token)) var jwtToken = JwtTokenHelper.GenerateToken(claims, _options.ExpirationMinutes);
user.Token = Guid.NewGuid().ToString("N"); return new ApiResponse<JwtToken>(ResponseType.OK, jwtToken);
}
var option = new MemoryCacheEntryOptions() /// <summary>
/// 刷新登录JWT TOKEN
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("refresh")]
public ApiResponse<JwtToken> Refresh()
{
var userClaim = _claim.GetUserClaim();
var claims = new Claim[]
{ {
SlidingExpiration = TimeSpan.FromMinutes(_options.ExpirationMinutes) new Claim(JwtClaimTypes.Id, userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.Id).Value),
new Claim(JwtClaimTypes.Login, userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.Login).Value),
new Claim(JwtClaimTypes.RealName, userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.RealName).Value),
new Claim(JwtClaimTypes.Mail, userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.Mail).Value),
new Claim(JwtClaimTypes.AppName, userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.AppName).Value),
new Claim(JwtClaimTypes.Device, userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.Device).Value),
new Claim(JwtClaimTypes.Department, userClaim.FirstOrDefault(t => t.Type == JwtClaimTypes.Department).Value),
}; };
_memoryCache.Set(user.Token, user, option);
return new ApiResponse<UserIdentity>(ResponseType.OK, user); var jwtToken = JwtTokenHelper.GenerateToken(claims, _options.ExpirationMinutes);
} // 设置当前请求Jwt失效
var jwt = _claim.GetJwtToken();
//claimService.SetJwtBlacklist(jwt);
return new ApiResponse<JwtToken>(ResponseType.OK, jwtToken);
}
/// <summary> /// <summary>
/// 查询个人信息 /// 查询个人信息
/// </summary> /// </summary>
/// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Route("selfinfo")] [Route("selfinfo")]
[HttpPost] [HttpPost]
public ApiResponse SelfInfo([FromBody]ApiRequest request) public ApiResponse SelfInfo()
{ {
var user = _claim.At(request.Token); var userid = _claim.GetUserId();
var user = _userService.GetUser(userid);
user.Role = _roleService.GetUserRole(user.UserID);
user.Hospital = _hospitalService.GetUserHopital(user.UserID);
int[] roleArray = new int[] { _options.NurseRole, _options.DirectorRole };
user.IsAgainAdmin = user.Role != null ? roleArray.Contains(user.Role.First().RoleID) : false;
return new ApiResponse(ResponseType.OK, user); return new ApiResponse(ResponseType.OK, user);
} }
...@@ -92,7 +124,7 @@ public ApiResponse SelfInfo([FromBody]ApiRequest request) ...@@ -92,7 +124,7 @@ public ApiResponse SelfInfo([FromBody]ApiRequest request)
[HttpPost] [HttpPost]
public ApiResponse<UserResponse> UpdateSelf([CustomizeValidator(RuleSet = "Self"), FromBody]UserRequest request) public ApiResponse<UserResponse> UpdateSelf([CustomizeValidator(RuleSet = "Self"), FromBody]UserRequest request)
{ {
request.ID = _claim.At(request.Token).UserID; request.ID = _claim.GetUserId();
var user = _userService.UpdateSelf(request); var user = _userService.UpdateSelf(request);
return new ApiResponse<UserResponse>(ResponseType.OK, user); return new ApiResponse<UserResponse>(ResponseType.OK, user);
} }
...@@ -100,13 +132,12 @@ public ApiResponse<UserResponse> UpdateSelf([CustomizeValidator(RuleSet = "Self" ...@@ -100,13 +132,12 @@ public ApiResponse<UserResponse> UpdateSelf([CustomizeValidator(RuleSet = "Self"
/// <summary> /// <summary>
/// 用户列表 /// 用户列表
/// </summary> /// </summary>
/// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Route("list")] [Route("list")]
[HttpPost] [HttpPost]
public ApiResponse<List<UserResponse>> List([FromBody]ApiRequest request) public ApiResponse<List<UserResponse>> List()
{ {
var userList = _userService.GetUserList(_claim.At(request.Token).UserID); var userList = _userService.GetUserList(_claim.GetUserId());
return new ApiResponse<List<UserResponse>>(ResponseType.OK, "ok", userList); return new ApiResponse<List<UserResponse>>(ResponseType.OK, "ok", userList);
} }
...@@ -119,8 +150,8 @@ public ApiResponse<List<UserResponse>> List([FromBody]ApiRequest request) ...@@ -119,8 +150,8 @@ public ApiResponse<List<UserResponse>> List([FromBody]ApiRequest request)
[HttpPost] [HttpPost]
public ApiResponse<UserResponse> Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]UserRequest request) public ApiResponse<UserResponse> Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]UserRequest request)
{ {
var userIdentity = _claim.At(request.Token); var userId = _claim.GetUserId();
var user = _userService.Insert(request, userIdentity.UserID); var user = _userService.Insert(request, userId);
user.Role = request.Role; user.Role = request.Role;
return new ApiResponse<UserResponse>(ResponseType.OK, user); return new ApiResponse<UserResponse>(ResponseType.OK, user);
} }
...@@ -146,8 +177,13 @@ public ApiResponse Delete([CustomizeValidator(RuleSet = "Delete"), FromBody]User ...@@ -146,8 +177,13 @@ public ApiResponse Delete([CustomizeValidator(RuleSet = "Delete"), FromBody]User
[HttpPost] [HttpPost]
public ApiResponse<UserResponse> Update([CustomizeValidator(RuleSet = "Update"), FromBody]UserRequest request) public ApiResponse<UserResponse> Update([CustomizeValidator(RuleSet = "Update"), FromBody]UserRequest request)
{ {
var userIdentity = _claim.At(request.Token); var userId = _claim.GetUserId();
var user = _userService.Update(request, userIdentity.IsAgainAdmin);
int[] roleArray = new int[] { _options.NurseRole, _options.DirectorRole };
var roles = _roleService.GetUserRole(userId);
var isAgainAdmin = roles != null ? roleArray.Contains(roles.First().RoleID) : false;
var user = _userService.Update(request, isAgainAdmin);
user.Role = request.Role; user.Role = request.Role;
return new ApiResponse<UserResponse>(ResponseType.OK, user); return new ApiResponse<UserResponse>(ResponseType.OK, user);
} }
...@@ -161,7 +197,7 @@ public ApiResponse<UserResponse> Update([CustomizeValidator(RuleSet = "Update"), ...@@ -161,7 +197,7 @@ public ApiResponse<UserResponse> Update([CustomizeValidator(RuleSet = "Update"),
[HttpPost] [HttpPost]
public ApiResponse<UserResponse> Password([FromBody]PasswordRequest request) public ApiResponse<UserResponse> Password([FromBody]PasswordRequest request)
{ {
var userid = _claim.At(request.Token).UserID; var userid = _claim.GetUserId();
var user = _userService.UpdatePwd(request, userid); var user = _userService.UpdatePwd(request, userid);
return new ApiResponse<UserResponse>(ResponseType.OK, user); return new ApiResponse<UserResponse>(ResponseType.OK, user);
} }
...@@ -169,11 +205,10 @@ public ApiResponse<UserResponse> Password([FromBody]PasswordRequest request) ...@@ -169,11 +205,10 @@ public ApiResponse<UserResponse> Password([FromBody]PasswordRequest request)
/// <summary> /// <summary>
/// 角色列表 /// 角色列表
/// </summary> /// </summary>
/// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Route("rolelist")] [Route("rolelist")]
[HttpPost] [HttpPost]
public ApiResponse<List<sys_role>> RoleList([FromBody]ApiRequest request) public ApiResponse<List<sys_role>> RoleList()
{ {
var roleList = _userService.RoleList(); var roleList = _userService.RoleList();
return new ApiResponse<List<sys_role>>(ResponseType.OK, "ok", roleList); return new ApiResponse<List<sys_role>>(ResponseType.OK, "ok", roleList);
......
...@@ -29,6 +29,7 @@ namespace Performance.Api.Controllers ...@@ -29,6 +29,7 @@ namespace Performance.Api.Controllers
public class AgainAllotController : Controller public class AgainAllotController : Controller
{ {
private AgainAllotService againAllotService; private AgainAllotService againAllotService;
private RoleService roleService;
private ComputeService computeService; private ComputeService computeService;
private ClaimService claimService; private ClaimService claimService;
private AllotService allotService; private AllotService allotService;
...@@ -36,6 +37,7 @@ public class AgainAllotController : Controller ...@@ -36,6 +37,7 @@ public class AgainAllotController : Controller
private ConfigService configService; private ConfigService configService;
private Application application; private Application application;
public AgainAllotController(AgainAllotService againAllotService, public AgainAllotController(AgainAllotService againAllotService,
RoleService roleService,
ClaimService claimService, ClaimService claimService,
AllotService allotService, AllotService allotService,
IHostingEnvironment env, IHostingEnvironment env,
...@@ -44,6 +46,7 @@ public class AgainAllotController : Controller ...@@ -44,6 +46,7 @@ public class AgainAllotController : Controller
IOptions<Application> options) IOptions<Application> options)
{ {
this.againAllotService = againAllotService; this.againAllotService = againAllotService;
this.roleService = roleService;
this.claimService = claimService; this.claimService = claimService;
this.allotService = allotService; this.allotService = allotService;
this.env = env; this.env = env;
...@@ -58,10 +61,10 @@ public class AgainAllotController : Controller ...@@ -58,10 +61,10 @@ public class AgainAllotController : Controller
/// <returns></returns> /// <returns></returns>
[Route("allotlist")] [Route("allotlist")]
[HttpPost] [HttpPost]
public ApiResponse AllotList([FromBody]ApiRequest request) public ApiResponse AllotList()
{ {
var user = claimService.At(request); var userId = claimService.GetUserId();
var list = againAllotService.GetAllotList(user.UserID); var list = againAllotService.GetAllotList(userId);
return new ApiResponse(ResponseType.OK, list); return new ApiResponse(ResponseType.OK, list);
} }
...@@ -122,19 +125,21 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -122,19 +125,21 @@ public ApiResponse Import([FromForm] IFormCollection form)
[HttpPost] [HttpPost]
public ApiResponse DepartmentDetail([CustomizeValidator(RuleSet = "Generate"), FromBody]AgainAllotRequest request) public ApiResponse DepartmentDetail([CustomizeValidator(RuleSet = "Generate"), FromBody]AgainAllotRequest request)
{ {
var user = claimService.At(request); var userId = claimService.GetUserId();
var roles = roleService.GetUserRole(userId);
var department = claimService.GetUserClaim(JwtClaimTypes.Department);
var again = againAllotService.GetAgainallot(request.AgainAllotID); var again = againAllotService.GetAgainallot(request.AgainAllotID);
if (again == null) if (again == null)
return new ApiResponse(ResponseType.Fail, "当前二次绩效ID无效"); return new ApiResponse(ResponseType.Fail, "当前二次绩效ID无效");
if (user.Role.First().RoleID == application.DirectorRole) if (roles.First().RoleID == application.DirectorRole)
{ {
var detail = computeService.GetDepartmentDetail(again.AllotID.Value, user.Department, 1); var detail = computeService.GetDepartmentDetail(again.AllotID.Value, department, 1);
return new ApiResponse(ResponseType.OK, detail); return new ApiResponse(ResponseType.OK, detail);
} }
else if (user.Role.First().RoleID == application.NurseRole) else if (roles.First().RoleID == application.NurseRole)
{ {
var detail = computeService.GetDepartmentDetail(again.AllotID.Value, user.Department, 2); var detail = computeService.GetDepartmentDetail(again.AllotID.Value, department, 2);
return new ApiResponse(ResponseType.OK, detail); return new ApiResponse(ResponseType.OK, detail);
} }
return new ApiResponse(ResponseType.Fail, "当前用户角色无法识别"); return new ApiResponse(ResponseType.Fail, "当前用户角色无法识别");
...@@ -149,8 +154,9 @@ public ApiResponse DepartmentDetail([CustomizeValidator(RuleSet = "Generate"), F ...@@ -149,8 +154,9 @@ public ApiResponse DepartmentDetail([CustomizeValidator(RuleSet = "Generate"), F
[HttpPost] [HttpPost]
public ApiResponse Generate([CustomizeValidator(RuleSet = "Generate"), FromBody]AgainAllotRequest request) public ApiResponse Generate([CustomizeValidator(RuleSet = "Generate"), FromBody]AgainAllotRequest request)
{ {
var user = claimService.At(request); var userId = claimService.GetUserId();
var result = againAllotService.Generate(request, user); var department = claimService.GetUserClaim(JwtClaimTypes.Department);
var result = againAllotService.Generate(request, userId, department);
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
...@@ -163,8 +169,7 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Generate"), FromBody] ...@@ -163,8 +169,7 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Generate"), FromBody]
[HttpPost] [HttpPost]
public ApiResponse Detail([CustomizeValidator(RuleSet = "Generate"), FromBody]AgainAllotRequest request) public ApiResponse Detail([CustomizeValidator(RuleSet = "Generate"), FromBody]AgainAllotRequest request)
{ {
var user = claimService.At(request); var result = againAllotService.Detail(request);
var result = againAllotService.Detail(request, user);
return new ApiResponse(ResponseType.OK, new { result.AgainSituation, result.SheetExport }); return new ApiResponse(ResponseType.OK, new { result.AgainSituation, result.SheetExport });
} }
} }
......
...@@ -65,8 +65,8 @@ public ApiResponse List([FromBody]AllotRequest request) ...@@ -65,8 +65,8 @@ public ApiResponse List([FromBody]AllotRequest request)
[HttpPost] [HttpPost]
public ApiResponse Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]AllotRequest request) public ApiResponse Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]AllotRequest request)
{ {
var user = _claim.At(request); var userId = _claim.GetUserId();
var result = _allotService.InsertAllot(request, user.UserID); var result = _allotService.InsertAllot(request, userId);
_configService.Copy(result); _configService.Copy(result);
return new ApiResponse(ResponseType.OK, result); return new ApiResponse(ResponseType.OK, result);
} }
...@@ -155,9 +155,18 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody]Al ...@@ -155,9 +155,18 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody]Al
var allot = _allotService.GetAllot(request.ID); var allot = _allotService.GetAllot(request.ID);
if (null == allot || string.IsNullOrEmpty(allot.Path)) if (null == allot || string.IsNullOrEmpty(allot.Path))
throw new PerformanceException("当前绩效记录不存在或没有上传数据文件"); throw new PerformanceException("当前绩效记录不存在或没有上传数据文件");
var user = _claim.At(request); var email = _claim.GetUserClaim(JwtClaimTypes.Mail);
//_allotService.Generate(allot, user.Mail); if (allot.States == (int)AllotStates.Wait)
BackgroundJob.Enqueue(() => _allotService.Generate(allot, user.Mail)); return new ApiResponse(ResponseType.OK, "当前绩效正在等待生成");
_allotService.UpdateAllotStates(allot.ID, (int)AllotStates.Wait, EnumHelper.GetDescription(AllotStates.Wait));
if (_evn.IsEnvironment("Localhost"))
_allotService.Generate(allot, email);
else
BackgroundJob.Enqueue(() => _allotService.Generate(allot, email));
//_allotService.Generate(allot, email);
////BackgroundJob.Enqueue(() => _allotService.Generate(allot, email));
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
......
...@@ -129,7 +129,7 @@ public ApiResponse EditAssessData([CustomizeValidator(RuleSet = "Edit"), FromBod ...@@ -129,7 +129,7 @@ public ApiResponse EditAssessData([CustomizeValidator(RuleSet = "Edit"), FromBod
//考核模版列表 //考核模版列表
[HttpPost] [HttpPost]
[Route("tempassesslist")] [Route("tempassesslist")]
public ApiResponse TempAssessList([FromBody]ApiRequest request) public ApiResponse TempAssessList()
{ {
return assessService.TempAssessList(); return assessService.TempAssessList();
} }
......
...@@ -69,13 +69,13 @@ public ApiResponse<List<res_specialunit>> GetSpecial([FromBody]ComputerRequest r ...@@ -69,13 +69,13 @@ public ApiResponse<List<res_specialunit>> GetSpecial([FromBody]ComputerRequest r
/// <returns></returns> /// <returns></returns>
[Route("getdoctordata")] [Route("getdoctordata")]
[HttpPost] [HttpPost]
public ApiResponse<List<DoctorResponse>> GetDoctor([FromBody]ComputerRequest request) public ApiResponse<List<DeptResponse>> GetDoctor([FromBody]ComputerRequest request)
{ {
var allot = _allotService.GetAllot(request.AllotId); var allot = _allotService.GetAllot(request.AllotId);
if (null == allot) if (null == allot)
throw new PerformanceException("当前绩效记录不存在"); throw new PerformanceException("当前绩效记录不存在");
var list = _computeService.GetDoctorPerformance(request.AllotId); var list = _computeService.GetDoctorPerformance(request.AllotId);
return new ApiResponse<List<DoctorResponse>>(ResponseType.OK, "ok", list); return new ApiResponse<List<DeptResponse>>(ResponseType.OK, "ok", list);
} }
/// <summary> /// <summary>
...@@ -85,13 +85,13 @@ public ApiResponse<List<DoctorResponse>> GetDoctor([FromBody]ComputerRequest req ...@@ -85,13 +85,13 @@ public ApiResponse<List<DoctorResponse>> GetDoctor([FromBody]ComputerRequest req
/// <returns></returns> /// <returns></returns>
[Route("getnursedata")] [Route("getnursedata")]
[HttpPost] [HttpPost]
public ApiResponse<List<NurseResponse>> GetNurse([FromBody]ComputerRequest request) public ApiResponse<List<DeptResponse>> GetNurse([FromBody]ComputerRequest request)
{ {
var allot = _allotService.GetAllot(request.AllotId); var allot = _allotService.GetAllot(request.AllotId);
if (null == allot) if (null == allot)
throw new PerformanceException("当前绩效记录不存在"); throw new PerformanceException("当前绩效记录不存在");
var list = _computeService.GetNursePerformance(request.AllotId); var list = _computeService.GetNursePerformance(request.AllotId);
return new ApiResponse<List<NurseResponse>>(ResponseType.OK, "ok", list); return new ApiResponse<List<DeptResponse>>(ResponseType.OK, "ok", list);
} }
/// <summary> /// <summary>
...@@ -136,11 +136,12 @@ public ApiResponse AllCompute([FromBody]ComputerRequest request) ...@@ -136,11 +136,12 @@ public ApiResponse AllCompute([FromBody]ComputerRequest request)
[HttpPost] [HttpPost]
public ApiResponse UpdateRealfee([CustomizeValidator(RuleSet = "UpdateReal"), FromBody] ComputerRequest request) public ApiResponse UpdateRealfee([CustomizeValidator(RuleSet = "UpdateReal"), FromBody] ComputerRequest request)
{ {
var user = _claim.At(request); var userId = _claim.GetUserId();
var realName = _claim.GetUserClaim(JwtClaimTypes.RealName);
var compute = _computeService.GetComputeSingle(request.ComputeId); var compute = _computeService.GetComputeSingle(request.ComputeId);
if (null == compute) if (null == compute)
throw new PerformanceException("当前数据记录不存在"); throw new PerformanceException("当前数据记录不存在");
compute = _computeService.UpdateRealfee(request, user); compute = _computeService.UpdateRealfee(request, userId, realName);
return new ApiResponse(ResponseType.OK, "修改成功", compute); return new ApiResponse(ResponseType.OK, "修改成功", compute);
} }
......
...@@ -29,9 +29,9 @@ public HospitalController(HospitalService hospitalService, ClaimService claimSer ...@@ -29,9 +29,9 @@ public HospitalController(HospitalService hospitalService, ClaimService claimSer
/// <returns></returns> /// <returns></returns>
[Route("hospitallist")] [Route("hospitallist")]
[HttpPost] [HttpPost]
public ApiResponse<List<HospitalResponse>> GetHospitalList([FromBody]ApiRequest request) public ApiResponse<List<HospitalResponse>> GetHospitalList()
{ {
var hospitalList = _hospitalService.GetUserHopital(_claim.At(request.Token).UserID); var hospitalList = _hospitalService.GetUserHopital(_claim.GetUserId());
return new ApiResponse<List<HospitalResponse>>(ResponseType.OK, "ok", hospitalList); return new ApiResponse<List<HospitalResponse>>(ResponseType.OK, "ok", hospitalList);
} }
...@@ -44,7 +44,7 @@ public ApiResponse<List<HospitalResponse>> GetHospitalList([FromBody]ApiRequest ...@@ -44,7 +44,7 @@ public ApiResponse<List<HospitalResponse>> GetHospitalList([FromBody]ApiRequest
[HttpPost] [HttpPost]
public ApiResponse<HospitalResponse> Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]HospitalRequest request) public ApiResponse<HospitalResponse> Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]HospitalRequest request)
{ {
var userid = _claim.At(request.Token).UserID; var userid = _claim.GetUserId();
var hospital = _hospitalService.Insert(request, userid); var hospital = _hospitalService.Insert(request, userid);
_hospitalService.InsertUserHospital(userid, hospital.HosID); _hospitalService.InsertUserHospital(userid, hospital.HosID);
return new ApiResponse<HospitalResponse>(ResponseType.OK, hospital); return new ApiResponse<HospitalResponse>(ResponseType.OK, hospital);
...@@ -62,13 +62,13 @@ public ApiResponse<HospitalResponse> Update([CustomizeValidator(RuleSet = "Updat ...@@ -62,13 +62,13 @@ public ApiResponse<HospitalResponse> Update([CustomizeValidator(RuleSet = "Updat
var hospital = _hospitalService.Update(request); var hospital = _hospitalService.Update(request);
return new ApiResponse<HospitalResponse>(ResponseType.OK, hospital); return new ApiResponse<HospitalResponse>(ResponseType.OK, hospital);
} }
/// <summary> /// <summary>
/// 删除医院 /// 删除医院
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Disable] [ApiDisable]
[Route("delete")] [Route("delete")]
[HttpPost] [HttpPost]
public ApiResponse Delete([CustomizeValidator(RuleSet = "Delete"), FromBody]HospitalRequest request) public ApiResponse Delete([CustomizeValidator(RuleSet = "Delete"), FromBody]HospitalRequest request)
......
...@@ -32,9 +32,9 @@ public MenuController(MenuService menuService, ClaimService claimService) ...@@ -32,9 +32,9 @@ public MenuController(MenuService menuService, ClaimService claimService)
/// <returns></returns> /// <returns></returns>
[Route("menulist")] [Route("menulist")]
[HttpPost] [HttpPost]
public ApiResponse<List<MenuResponse>> MenuList([FromBody]ApiRequest request) public ApiResponse<List<MenuResponse>> MenuList()
{ {
var menuList = _menuService.GetMenuList(_claim.At(request.Token).UserID); var menuList = _menuService.GetMenuList(_claim.GetUserId());
return new ApiResponse<List<MenuResponse>>(ResponseType.OK, menuList); return new ApiResponse<List<MenuResponse>>(ResponseType.OK, menuList);
} }
} }
......
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 不存在,请重新选择!");
if (request.ExecuteType == null || !request.ExecuteType.Any())
return new ApiResponse(ResponseType.ParameterError, "ExecuteType 不存在,请重新选择!");
var list = modExtractService.ExtractScheme(request.HospitalId.Value, request.ExecuteType);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 费用类型
/// </summary>
/// <returns></returns>
[Route("type")]
[HttpPost]
public ApiResponse FeeType()
{
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)
{
LogHelper.Information(url.HttpPost + "/modextract/items", "请求地址");
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, "删除成功!");
}
/// <summary>
/// 特殊科室人均
/// </summary>
/// <returns></returns>
[Route("perfortype")]
[HttpPost]
public ApiResponse PerforType()
{
var list = modExtractService.PerforType();
return new ApiResponse(ResponseType.OK, list);
}
#endregion
}
}
\ No newline at end of file
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels; using Performance.DtoModels;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -12,6 +13,7 @@ public class NotFoundController : ControllerBase ...@@ -12,6 +13,7 @@ public class NotFoundController : ControllerBase
{ {
[Route("error/404")] [Route("error/404")]
[HttpGet] [HttpGet]
[AllowAnonymous]
public ActionResult<ApiResponse> Get() public ActionResult<ApiResponse> Get()
{ {
return new ApiResponse(ResponseType.NotFound, "not found"); return new ApiResponse(ResponseType.NotFound, "not found");
......
...@@ -25,6 +25,7 @@ public ReportController(ReportService reportService, ClaimService claimService) ...@@ -25,6 +25,7 @@ public ReportController(ReportService reportService, ClaimService claimService)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("survey")] [Route("survey")]
[HttpPost]
public ApiResponse Survey([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request) public ApiResponse Survey([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{ {
var result = reportService.Survey(request.HospitalId); var result = reportService.Survey(request.HospitalId);
...@@ -36,6 +37,7 @@ public ApiResponse Survey([CustomizeValidator(RuleSet = "Query"), FromBody]Repor ...@@ -36,6 +37,7 @@ public ApiResponse Survey([CustomizeValidator(RuleSet = "Query"), FromBody]Repor
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("doctoravg")] [Route("doctoravg")]
[HttpPost]
public ApiResponse DoctorAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request) public ApiResponse DoctorAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{ {
var result = reportService.DoctorAvg(request.HospitalId, request.IsIndex); var result = reportService.DoctorAvg(request.HospitalId, request.IsIndex);
...@@ -47,6 +49,7 @@ public ApiResponse DoctorAvg([CustomizeValidator(RuleSet = "Query"), FromBody]Re ...@@ -47,6 +49,7 @@ public ApiResponse DoctorAvg([CustomizeValidator(RuleSet = "Query"), FromBody]Re
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("nurseavg")] [Route("nurseavg")]
[HttpPost]
public ApiResponse NurseAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request) public ApiResponse NurseAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{ {
var result = reportService.NurseAvg(request.HospitalId, request.IsIndex); var result = reportService.NurseAvg(request.HospitalId, request.IsIndex);
...@@ -58,6 +61,7 @@ public ApiResponse NurseAvg([CustomizeValidator(RuleSet = "Query"), FromBody]Rep ...@@ -58,6 +61,7 @@ public ApiResponse NurseAvg([CustomizeValidator(RuleSet = "Query"), FromBody]Rep
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("outfeeavg")] [Route("outfeeavg")]
[HttpPost]
public ApiResponse OutFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request) public ApiResponse OutFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{ {
var list = reportService.OutFeeAvg(request.HospitalId); var list = reportService.OutFeeAvg(request.HospitalId);
...@@ -69,6 +73,7 @@ public ApiResponse OutFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody]Re ...@@ -69,6 +73,7 @@ public ApiResponse OutFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody]Re
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("inpatfeeavg")] [Route("inpatfeeavg")]
[HttpPost]
public ApiResponse InpatFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request) public ApiResponse InpatFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{ {
var list = reportService.InpatFeeAvg(request.HospitalId); var list = reportService.InpatFeeAvg(request.HospitalId);
...@@ -80,6 +85,7 @@ public ApiResponse InpatFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody] ...@@ -80,6 +85,7 @@ public ApiResponse InpatFeeAvg([CustomizeValidator(RuleSet = "Query"), FromBody]
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("medicine")] [Route("medicine")]
[HttpPost]
public ApiResponse Medicine([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request) public ApiResponse Medicine([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{ {
var list = reportService.Medicine(request.HospitalId, request.IsIndex); var list = reportService.Medicine(request.HospitalId, request.IsIndex);
...@@ -91,6 +97,7 @@ public ApiResponse Medicine([CustomizeValidator(RuleSet = "Query"), FromBody]Rep ...@@ -91,6 +97,7 @@ public ApiResponse Medicine([CustomizeValidator(RuleSet = "Query"), FromBody]Rep
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("income")] [Route("income")]
[HttpPost]
public ApiResponse Income([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request) public ApiResponse Income([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{ {
var list = reportService.Income(request.HospitalId, request.IsIndex); var list = reportService.Income(request.HospitalId, request.IsIndex);
......
using FluentValidation.AspNetCore; using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.DtoModels.Request; using Performance.DtoModels.Request;
...@@ -29,7 +30,7 @@ public SmsController(SmsService smsService) ...@@ -29,7 +30,7 @@ public SmsController(SmsService smsService)
/// <returns></returns> /// <returns></returns>
[Route("code")] [Route("code")]
[HttpPost] [HttpPost]
[NoVerify] [AllowAnonymous]
public ApiResponse Code([FromBody]SmsCodeRequest request) public ApiResponse Code([FromBody]SmsCodeRequest request)
{ {
if (!_smsService.SendCode(request.Type, request.Mobile)) if (!_smsService.SendCode(request.Type, request.Mobile))
...@@ -44,7 +45,7 @@ public ApiResponse Code([FromBody]SmsCodeRequest request) ...@@ -44,7 +45,7 @@ public ApiResponse Code([FromBody]SmsCodeRequest request)
/// <returns></returns> /// <returns></returns>
[Route("check")] [Route("check")]
[HttpPost] [HttpPost]
[NoVerify] [AllowAnonymous]
public ApiResponse Check([CustomizeValidator(RuleSet = "SmsCheck")][FromBody]SmsCodeRequest request) public ApiResponse Check([CustomizeValidator(RuleSet = "SmsCheck")][FromBody]SmsCodeRequest request)
{ {
if (!_smsService.Check(request.Mobile, request.Code)) if (!_smsService.Check(request.Mobile, request.Code))
......
using FluentValidation.AspNetCore; using FluentValidation.AspNetCore;
using Hangfire; using Hangfire;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal; using Microsoft.AspNetCore.Http.Internal;
...@@ -58,10 +59,11 @@ public class TemplateController : Controller ...@@ -58,10 +59,11 @@ public class TemplateController : Controller
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("downtemplate")] [Route("downtemplate")]
[NoVerify] [HttpGet]
public IActionResult DownFile([FromQuery]DownRequest request) [AllowAnonymous]
public IActionResult DownFile(int type = 1)
{ {
string path = (request.TempType == 1) string path = (type == 1)
? Path.Combine(env.ContentRootPath, "Template", "医院绩效模板.xlsx") ? Path.Combine(env.ContentRootPath, "Template", "医院绩效模板.xlsx")
: Path.Combine(env.ContentRootPath, "Template", "医院二次分配绩效模板.xlsx"); : Path.Combine(env.ContentRootPath, "Template", "医院二次分配绩效模板.xlsx");
...@@ -72,7 +74,8 @@ public IActionResult DownFile([FromQuery]DownRequest request) ...@@ -72,7 +74,8 @@ public IActionResult DownFile([FromQuery]DownRequest request)
} }
memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider(); var provider = new FileExtensionContentTypeProvider();
var memi = provider.Mappings["xlsx"];
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(path)); return File(memoryStream, memi, Path.GetFileName(path));
} }
...@@ -85,7 +88,7 @@ public IActionResult DownFile([FromQuery]DownRequest request) ...@@ -85,7 +88,7 @@ public IActionResult DownFile([FromQuery]DownRequest request)
[HttpPost] [HttpPost]
public ApiResponse Import([FromForm] IFormCollection form) public ApiResponse Import([FromForm] IFormCollection form)
{ {
var user = claim.At(form.ToDictionary().GetValue("token", "")); var userId = claim.GetUserId();
var hospitalid = form.ToDictionary().GetValue("hospitalid", 0); var hospitalid = form.ToDictionary().GetValue("hospitalid", 0);
if (hospitalid <= 0) if (hospitalid <= 0)
return new ApiResponse(ResponseType.Fail, "参数错误", "hospitalid无效"); return new ApiResponse(ResponseType.Fail, "参数错误", "hospitalid无效");
...@@ -114,7 +117,7 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -114,7 +117,7 @@ public ApiResponse Import([FromForm] IFormCollection form)
var template = new per_first var template = new per_first
{ {
HospitalId = hospitalid, HospitalId = hospitalid,
CreateUser = user.UserID, CreateUser = userId,
CreateDate = DateTime.Now, CreateDate = DateTime.Now,
Path = path, Path = path,
UploadDate = DateTime.Now, UploadDate = DateTime.Now,
...@@ -150,7 +153,7 @@ public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBo ...@@ -150,7 +153,7 @@ public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBo
if (hospital == null) if (hospital == null)
return new ApiResponse(ResponseType.Fail, "医院无效"); return new ApiResponse(ResponseType.Fail, "医院无效");
var user = claim.At(request.Token); 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);
...@@ -168,7 +171,7 @@ public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBo ...@@ -168,7 +171,7 @@ public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBo
{ {
id = request.ID, id = request.ID,
hospitalId = hospital.ID, hospitalId = hospital.ID,
mail = user.Mail, mail = email,
path = path path = path
}); });
...@@ -194,7 +197,8 @@ public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBo ...@@ -194,7 +197,8 @@ public ApiResponse ExtractData([CustomizeValidator(RuleSet = "Template"), FromBo
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("down")] [Route("down")]
[NoVerify] [AllowAnonymous]
[HttpGet]
public IActionResult DownFile([FromQuery]AllotRequest request) public IActionResult DownFile([FromQuery]AllotRequest request)
{ {
var allot = allotService.GetAllot(request.ID); var allot = allotService.GetAllot(request.ID);
...@@ -219,10 +223,12 @@ public IActionResult DownFile([FromQuery]AllotRequest request) ...@@ -219,10 +223,12 @@ public IActionResult DownFile([FromQuery]AllotRequest request)
/// 保存提取文件 /// 保存提取文件
/// </summary> /// </summary>
/// <param name="form"></param> /// <param name="form"></param>
/// <param name="allotId"></param>
/// <param name="hospitalId"></param>
/// <returns></returns> /// <returns></returns>
[Route("savefile")] [Route("savefile")]
[HttpPost] [HttpPost]
[NoVerify] [AllowAnonymous]
public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int hospitalId) public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int hospitalId)
{ {
logger.LogInformation($"保存提取文件 参数:allotId:{allotId} hospitalId:{hospitalId}"); logger.LogInformation($"保存提取文件 参数:allotId:{allotId} hospitalId:{hospitalId}");
......
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
...@@ -12,7 +13,7 @@ public class ValuesController : ControllerBase ...@@ -12,7 +13,7 @@ public class ValuesController : ControllerBase
{ {
// GET api/values // GET api/values
[HttpGet] [HttpGet]
[NoVerify] [AllowAnonymous]
public ActionResult<IEnumerable<string>> Get() public ActionResult<IEnumerable<string>> Get()
{ {
//var excel = _excelService.Analyze(@"C:\Users\ry\Desktop\文件\测试.xlsx"); //var excel = _excelService.Analyze(@"C:\Users\ry\Desktop\文件\测试.xlsx");
...@@ -21,7 +22,7 @@ public ActionResult<IEnumerable<string>> Get() ...@@ -21,7 +22,7 @@ public ActionResult<IEnumerable<string>> Get()
// GET api/values/5 // GET api/values/5
[HttpGet("{id}")] [HttpGet("{id}")]
[NoVerify] [AllowAnonymous]
public ActionResult<string> Getid(int id) public ActionResult<string> Getid(int id)
{ {
return "value"; return "value";
......
...@@ -33,37 +33,20 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron ...@@ -33,37 +33,20 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{ {
var request = context.HttpContext.Request; var request = context.HttpContext.Request;
//记录Request请求
var authorization = context.HttpContext.Request.Headers["Authorization"];
var req = new { request.Path, request.Method, context.ActionArguments, Token = authorization.Count > 0 ? authorization.First() : "" };
_logger.LogInformation($"请求内容 {JsonHelper.Serialize(req)}");
//启用body倒带功能 //启用body倒带功能
request.EnableRewind(); request.EnableRewind();
//记录Request请求
var kv = GetRequestContent(request);
_logger.LogInformation($"请求内容 {request.Method}:{JsonHelper.Serialize(kv)}");
LogHelper.Information($"请求地址:{context.HttpContext.Request.Path};请求参数:{JsonHelper.Serialize(kv)}", "请求内容"); //接口禁用
//接口禁用 if (context.Filters.Any(item => item is ApiDisableAttribute))
var disable = ((ControllerActionDescriptor)context.ActionDescriptor).MethodInfo.GetCustomAttributes(typeof(DisableAttribute), true);
if (disable.Length > 0)
{ {
var response = new ApiResponse(ResponseType.Disable, "接口已禁用"); var response = new ApiResponse(ResponseType.Disable, "接口已禁用");
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
return; return;
} }
//token验证
if (!_env.IsDevelopment())
{
var arry = ((ControllerActionDescriptor)context.ActionDescriptor).MethodInfo.GetCustomAttributes(typeof(NoVerifyAttribute), true);
if (arry.Length == 0)
{
var token = kv.GetValue("token", "");
var user = _cache.Get<UserIdentity>(token);
if (string.IsNullOrEmpty(token) || user == null || !user.Token.Equals(token))
{
var response = new ApiResponse(ResponseType.TokenError, "Token无效");
context.Result = new ObjectResult(response);
return;
}
}
}
//验证请求参数 //验证请求参数
if (!context.ModelState.IsValid) if (!context.ModelState.IsValid)
{ {
...@@ -76,6 +59,7 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron ...@@ -76,6 +59,7 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron
_logger.LogInformation($"响应结果:{jsonData}"); _logger.LogInformation($"响应结果:{jsonData}");
LogHelper.Information($"请求地址:{context.HttpContext.Request.Path};响应结果:{jsonData}", "响应结果"); LogHelper.Information($"请求地址:{context.HttpContext.Request.Path};响应结果:{jsonData}", "响应结果");
} }
//记录response结果 //记录response结果
else else
{ {
...@@ -93,58 +77,8 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron ...@@ -93,58 +77,8 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron
} }
} }
} }
/// <summary>
/// 读取请求内容
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
private SortedDictionary<string, object> GetRequestContent(HttpRequest request)
{
if (request.Method.Equals("POST"))
{
if (request.Body.CanSeek)
{
var types = request.ContentType.Split(';');
if (types.Contains("application/json"))
{
using (var stream = request.Body)
{
stream.Position = 0;
var reader = new StreamReader(stream, Encoding.UTF8);
var requestContext = reader.ReadToEnd();
return JsonHelper.DeserializeLower(requestContext);
}
}
else if (types.Contains("application/x-www-form-urlencoded") || types.Contains("multipart/form-data"))
{
return request.Form.ToDictionary();
}
else if (types.Contains("text/xml"))
{
//暂不处理
}
}
}
else
{
if (request.Query.Count > 0)
{
var kv = new SortedDictionary<string, object>();
foreach (var item in request.Query)
{
kv.Add(item.Key, item.Value);
}
return kv;
}
}
return new SortedDictionary<string, object>();
}
} }
[AttributeUsage(AttributeTargets.Method)]
public class NoVerifyAttribute : Attribute { }
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class DisableAttribute : Attribute { } public class ApiDisableAttribute : Attribute, IFilterMetadata { }
} }
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.AspNetCore.Mvc.Filters;
using Performance.DtoModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
namespace Performance.Api
{
public class AuthenticationFilter : IAsyncAuthorizationFilter
{
private readonly ClaimService claimService;
public AuthenticationFilter(ClaimService claimService)
{
this.claimService = claimService;
}
public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
{
if (context.Filters.Any(item => item is IAllowAnonymousFilter))
return;
var headers = context.HttpContext.Request.Headers;
var authorization = headers["Authorization"];
if (authorization.Count == 0 || string.IsNullOrEmpty(authorization.First()))
{
var response = new ApiResponse(ResponseType.TokenError, "Token无效");
context.Result = new ObjectResult(response);
return;
}
// 获取token字符串
var token = authorization.First().Replace("Bearer ", "");
// jwt是否被禁用
if (!claimService.JwtUsable(token))
{
var response = new ApiResponse(ResponseType.TokenError, "当前请求Token已被禁用");
context.Result = new ObjectResult(response);
return;
}
// 调用此方法,根据token生成对应的"身份证持有人"
var principal = await AuthenticateJwtToken(token);
if (principal == null)
{
var response = new ApiResponse(ResponseType.TokenError, "Token无效");
context.Result = new ObjectResult(response);
}
else
{
context.HttpContext.User = principal; // 设置身份验证的主体
}
}
private Task<ClaimsPrincipal> AuthenticateJwtToken(string token)
{
if (ValidateToken(token, out Claim[] claims))
{
var infos = new ClaimsIdentity(claims, "Jwt");
ClaimsPrincipal user = new ClaimsPrincipal(infos);
return Task.FromResult(user);
}
return Task.FromResult<ClaimsPrincipal>(null);
}
private bool ValidateToken(string token, out Claim[] claims)
{
// 调用自定义的GetPrincipal获取Token的信息对象
var simplePrinciple = JwtTokenHelper.GetPrincipal(token);
// 获取主声明标识
var identity = simplePrinciple?.Identity as ClaimsIdentity;
claims = new Claim[] { };
if (identity == null)
return false;
if (identity.Claims != null && identity.Claims.Any())
claims = identity.Claims.ToArray();
return identity.IsAuthenticated;
}
}
}
...@@ -5,10 +5,20 @@ ...@@ -5,10 +5,20 @@
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath />
<DocumentationFile>..\Performance.Api\wwwroot\Performance.Api.xml</DocumentationFile>
<NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="aaa\**" />
<Compile Remove="Files\**" /> <Compile Remove="Files\**" />
<Content Remove="aaa\**" />
<Content Remove="Files\**" /> <Content Remove="Files\**" />
<EmbeddedResource Remove="aaa\**" />
<EmbeddedResource Remove="Files\**" /> <EmbeddedResource Remove="Files\**" />
<None Remove="aaa\**" />
<None Remove="Files\**" /> <None Remove="Files\**" />
</ItemGroup> </ItemGroup>
...@@ -45,6 +55,24 @@ ...@@ -45,6 +55,24 @@
<Content Update="nlog.config"> <Content Update="nlog.config">
<CopyToOutputDirectory>Never</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content> </Content>
<Content Update="wwwroot\Performance.Api.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\Performance.DtoModels.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\Performance.EntityModels.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<None Update="Template\医院二次分配绩效模板.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Template\医院绩效模板.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -12,16 +12,20 @@ ...@@ -12,16 +12,20 @@
"IIS Express": { "IIS Express": {
"commandName": "IISExpress", "commandName": "IISExpress",
"launchBrowser": true, "launchBrowser": true,
"launchUrl": "api/values", "launchUrl": "index.html",
"environmentVariables": { "environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" //"ASPNETCORE_ENVIRONMENT": "Development"
//"ASPNETCORE_ENVIRONMENT": "Production"
"ASPNETCORE_ENVIRONMENT": "Localhost"
} }
}, },
"Performance.Api": { "Performance.Api": {
"commandName": "Project", "commandName": "Project",
"launchUrl": "api/values", "launchUrl": "index.html",
"environmentVariables": { "environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" //"ASPNETCORE_ENVIRONMENT": "Development"
//"ASPNETCORE_ENVIRONMENT": "Production"
"ASPNETCORE_ENVIRONMENT": "Localhost"
}, },
"applicationUrl": "http://localhost:5001" "applicationUrl": "http://localhost:5001"
} }
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.IO;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Reflection; using System.Reflection;
...@@ -56,16 +57,17 @@ public void ConfigureServices(IServiceCollection services) ...@@ -56,16 +57,17 @@ public void ConfigureServices(IServiceCollection services)
.Configure<Application>(Configuration.GetSection("Application")) .Configure<Application>(Configuration.GetSection("Application"))
.Configure<HuyiSmsConfig>(Configuration.GetSection("HuyiSmsConfig")) .Configure<HuyiSmsConfig>(Configuration.GetSection("HuyiSmsConfig"))
.Configure<EmailOptions>(Configuration.GetSection("EmailOptions")) .Configure<EmailOptions>(Configuration.GetSection("EmailOptions"))
.Configure<WebapiUrl>(Configuration.GetSection("WebapiUrl")); .Configure<WebapiUrl>(Configuration.GetSection("WebapiUrl"));
#endregion #endregion
var connection = services.BuildServiceProvider().GetService<IOptions<AppConnection>>(); var connection = services.BuildServiceProvider().GetService<IOptions<AppConnection>>();
#region json & fluentvalidation & filter #region json & fluentvalidation & filter
services services
//筛选器配置 //筛选器配置
.AddMvc(option => .AddMvc(option =>
{ {
option.Filters.Add<AuthenticationFilter>();
option.Filters.Add<ActionsFilter>(); option.Filters.Add<ActionsFilter>();
option.Filters.Add<ExceptionsFilter>(); option.Filters.Add<ExceptionsFilter>();
}) })
...@@ -108,12 +110,6 @@ public void ConfigureServices(IServiceCollection services) ...@@ -108,12 +110,6 @@ public void ConfigureServices(IServiceCollection services)
.AddPerformanceRepoitory(); .AddPerformanceRepoitory();
#endregion #endregion
#region swagger
//services.AddSwaggerGen(c =>
//{
// c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
//});
#endregion
#region custom util #region custom util
...@@ -157,6 +153,41 @@ public void ConfigureServices(IServiceCollection services) ...@@ -157,6 +153,41 @@ public void ConfigureServices(IServiceCollection services)
options.UseMySQL(connection.Value.PerformanceConnectionString); options.UseMySQL(connection.Value.PerformanceConnectionString);
}); });
#endregion #endregion
#region swagger
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Version = "v1.0", Title = "食管癌随访API接口" });
var xmlPath = new string[]
{
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.Api.xml"),
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.DtoModels.xml"),
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.EntityModels.xml"),
};
var xmlPathsss = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.Api.xml");
c.IncludeXmlComments(xmlPathsss, true);
//foreach (var item in xmlPath)
//{
// c.IncludeXmlComments(item, true);
//}
#region Token绑定到ConfigureServices
var security = new Dictionary<string, IEnumerable<string>> { { "Performance API", new string[] { } }, };
c.AddSecurityRequirement(security);
c.AddSecurityDefinition("Performance API", new ApiKeyScheme
{
Description = "JWT授权(数据将在请求头中进行传输) 直接在下框中输入Bearer {token}(注意两者之间是一个空格)",
Name = "Authorization",
In = "HEADER"
});
#endregion
});
#endregion
} }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
...@@ -171,16 +202,16 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerF ...@@ -171,16 +202,16 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerF
{ {
app.UseStatusCodePagesWithReExecute("/error/{0}"); app.UseStatusCodePagesWithReExecute("/error/{0}");
} }
//// Enable middleware to serve generated Swagger as a JSON endpoint.
//app.UseSwagger(); #region Swagger
app.UseSwagger();
//// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), app.UseSwaggerUI(c =>
//// specifying the Swagger JSON endpoint. {
//app.UseSwaggerUI(c => c.SwaggerEndpoint(Configuration["Application:SwaggerEndpoint"], "v1.0");
//{ //c.SwaggerEndpoint("/swagger/v1/swagger.json", "v1.0");
// c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); c.RoutePrefix = "";
// c.RoutePrefix = string.Empty; });
//}); #endregion
#region hangfire #region hangfire
......
using Microsoft.Extensions.Caching.Memory; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Caching.Memory;
using Performance.DtoModels; using Performance.DtoModels;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Performance.Api namespace Performance.Api
{ {
public class ClaimService public class ClaimService
{ {
IMemoryCache _memoryCache; private readonly IHttpContextAccessor contextAccessor;
public ClaimService(IMemoryCache memoryCache) private readonly IMemoryCache memoryCache;
public ClaimService(IHttpContextAccessor contextAccessor, IMemoryCache memoryCache)
{
this.contextAccessor = contextAccessor;
this.memoryCache = memoryCache;
}
/// <summary>
/// 获取当前请求登录ID
/// </summary>
/// <returns></returns>
public int GetUserId()
{
var claim = GetUserClaim().FirstOrDefault(t => t.Type == JwtClaimTypes.Id);
if (claim == null)
{
throw new PerformanceTokenErrorException("获取当前登录用户ID失败");
}
return Convert.ToInt32(claim.Value);
}
/// <summary>
/// 获取当前请求登录ID
/// </summary>
/// <returns></returns>
public string GetUserClaim(string jwtClaimTypes)
{
var claim = GetUserClaim().FirstOrDefault(t => t.Type == jwtClaimTypes);
if (claim == null)
{
throw new PerformanceTokenErrorException("获取当前登录用户ID失败");
}
return claim.Value;
}
/// <summary>
/// 获取当前请求所有身份信息
/// </summary>
/// <returns></returns>
public List<Claim> GetUserClaim()
{
if (contextAccessor.HttpContext.User == null)
{
throw new PerformanceException("获取当前请求登录信息失败");
}
return contextAccessor.HttpContext.User.Claims.ToList();
}
/// <summary>
/// 获取当前请求Jwt Token
/// </summary>
/// <returns></returns>
public string GetJwtToken()
{
var authorization = contextAccessor.HttpContext.Request.Headers["Authorization"];
if (authorization.Count == 0 || string.IsNullOrEmpty(authorization.First()))
{
throw new PerformanceException("获取当前请求Authorization失败");
}
return authorization.First().Replace("Bearer ", "");
}
/// <summary>
/// 设置jwt进入黑名单
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
public bool SetJwtBlacklist(string token)
{ {
_memoryCache = memoryCache; memoryCache.Set(token, DateTime.Now);
return true;
} }
public UserIdentity At(ApiRequest request) /// <summary>
/// 判断当前请求JWT是否可用 可用true
/// </summary>
/// <returns></returns>
public bool JwtUsable()
{ {
return At(request.Token); string token = GetJwtToken();
return JwtUsable(token);
} }
public UserIdentity At(string token) /// <summary>
/// 判断当前请求JWT是否可用 可用true
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
public bool JwtUsable(string token)
{ {
if (string.IsNullOrEmpty(token)) var @object = memoryCache.Get(token);
throw new PerformanceTokenErrorException("token is not null"); return @object == null;
var user = _memoryCache.Get<UserIdentity>(token);
if (user == null)
throw new PerformanceTokenErrorException("当前用户未登录");
return user;
} }
} }
} }
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.IO;
using System.Linq;
using System.Security.Claims;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace Performance.Api
{
public class JwtTokenHelper
{
private static byte[] secret = Encoding.ASCII.GetBytes(Consts.Secret);
public static JwtToken GenerateToken(Claim[] claims, int expiresMinute)
{
var authTime = DateTime.UtcNow;
var expiresAt = authTime.AddMinutes(expiresMinute);
var tokenDescriptor = new SecurityTokenDescriptor
{
Audience = Consts.Audience,
Issuer = Consts.Issuer,
Subject = new ClaimsIdentity(claims),
Expires = expiresAt,
SigningCredentials = new SigningCredentials(
new SymmetricSecurityKey(secret), SecurityAlgorithms.HmacSha256Signature)
};
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);
var tokenString = tokenHandler.WriteToken(token);
return new JwtToken
{
access_token = tokenString,
token_type = "Bearer",
auth_time = new DateTimeOffset(authTime).ToUnixTimeSeconds(),
expires_at = new DateTimeOffset(expiresAt).ToUnixTimeSeconds()
};
}
public static ClaimsPrincipal GetPrincipal(string token)
{
try
{
// 创建一个JwtSecurityTokenHandler类,用来后续操作
var tokenHandler = new JwtSecurityTokenHandler();
// 将字符串token解码成token对象
var jwtToken = tokenHandler.ReadToken(token) as JwtSecurityToken;
if (jwtToken == null) return null;
// 生成验证token的参数
var validationParameters = new TokenValidationParameters()
{
RequireExpirationTime = true,
ValidateIssuer = true,
ValidateAudience = true,
ValidAudience = Consts.Audience,
ValidIssuer = Consts.Issuer,
IssuerSigningKey = new SymmetricSecurityKey(secret)
};
var principal = tokenHandler.ValidateToken(token, validationParameters, out SecurityToken securityToken);
// 返回秘钥的主体对象,包含秘钥的所有相关信息
return principal;
}
catch (Exception ex)
{
return null;
}
}
}
public class JwtToken
{
/// <summary>
/// access token
/// </summary>
public string access_token { get; set; }
/// <summary>
/// token type
/// </summary>
public string token_type { get; set; }
/// <summary>
/// 授权时间
/// </summary>
public long auth_time { get; set; }
/// <summary>
/// 过期时间
/// </summary>
public long expires_at { get; set; }
}
public static class JwtClaimTypes
{
public const string Id = "id";
public const string Login = "login";
public const string RealName = "realname";
public const string Mail = "mail";
public const string AppName = "appname";
public const string Device = "device";
public const string Department = "department";
}
public static class Consts
{
public const string Secret = "DH4neb6Aipe1ortdalusvo8iosQiBIYupLNPTu3j40PZ9tBbLrPD4mAmDVsB7nZw";
public const string Issuer = "suvalue";
public const string Audience = "jixiao.suvalue.com";
}
}
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
}, },
"Application": { "Application": {
//登录过期时间 //登录过期时间
"ExpirationMinutes": "420", "ExpirationMinutes": "120",
//验证码过期 //验证码过期
"SmsCodeMinutes": "5", "SmsCodeMinutes": "5",
//护士长二次绩效管理员 //护士长二次绩效管理员
......
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"AppConnection": {
"PerformanceConnectionString": "server=192.168.18.166;database=db_performance;uid=root;pwd=1234qwer;pooling=true;charset=utf8;convert zero datetime=true;port=3306;connection timeout=120;max pool size=512;allow user variables=true;",
"HangfireConnectionString": "server=192.168.18.166;database=db_hangfire;uid=root;pwd=1234qwer;port=3306;allow user variables=true;",
"RedisConnectionString": "116.62.245.55:6379,defaultDatabase=2"
},
"Application": {
//登录过期时间
"ExpirationMinutes": "120",
//验证码过期
"SmsCodeMinutes": "5",
//护士长二次绩效管理员
"NurseRole": "3",
//科主任二次绩效管理员
"DirectorRole": "4",
"AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com",
"HttpPath": "http://testjx.suvalue.com:81",
"SwaggerEndpoint": "/swagger/v1/swagger.json"
},
"WebapiUrl": {
"ImportFirst": "http://localhost:50997/api/extract/import",
"ExtractData": "http://localhost:50997/api/extract/index",
"ImportFile": ""
}
}
...@@ -36,11 +36,13 @@ ...@@ -36,11 +36,13 @@
//邮件指定接收人 //邮件指定接收人
"Receiver": [ "chengxiang.li@suvalue.com", "486035085@qq.com" ], "Receiver": [ "chengxiang.li@suvalue.com", "486035085@qq.com" ],
"AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com", "AbsolutePath": "E:\\wwwroot\\testjx.suvalue.com",
"HttpPath": "http://testjx.suvalue.com:81" "HttpPath": "http://testjx.suvalue.com:81",
"SwaggerEndpoint": "/api/swagger/v1/swagger.json"
}, },
"WebapiUrl": { "WebapiUrl": {
"ImportFirst": "http://localhost:50997/api/extract/import", "ImportFirst": "http://localhost:50997/api/extract/import",
"ExtractData": "http://localhost:50997/api/extract/index", "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"
} }
} }
<?xml version="1.0"?>
<doc>
<assembly>
<name>Performance.Api</name>
</assembly>
<members>
<member name="M:Performance.Api.Controllers.AccountController.Login(Performance.DtoModels.LoginRequest)">
<summary>
登录
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.Refresh">
<summary>
刷新登录JWT TOKEN
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.SelfInfo">
<summary>
查询个人信息
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.UpdateSelf(Performance.DtoModels.UserRequest)">
<summary>
修改个人信息
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.List">
<summary>
用户列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.Insert(Performance.DtoModels.UserRequest)">
<summary>
新增用户
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.Delete(Performance.DtoModels.UserRequest)">
<summary>
新增用户
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.Update(Performance.DtoModels.UserRequest)">
<summary>
删除用户
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.Password(Performance.DtoModels.PasswordRequest)">
<summary>
修改用户密码
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.RoleList">
<summary>
角色列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AccountController.Department(Performance.DtoModels.SetDepartmentRequest)">
<summary>
科室列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="T:Performance.Api.Controllers.AgainAllotController">
<summary>
科室二次分配
</summary>
</member>
<member name="M:Performance.Api.Controllers.AgainAllotController.AllotList">
<summary>
返回当前用户医院下绩效列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AgainAllotController.Import(Microsoft.AspNetCore.Http.IFormCollection)">
<summary>
上传文件
</summary>
<param name="form"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AgainAllotController.DepartmentDetail(Performance.DtoModels.AgainAllotRequest)">
<summary>
查看科室绩效
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AgainAllotController.Generate(Performance.DtoModels.AgainAllotRequest)">
<summary>
生成绩效
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AgainAllotController.Detail(Performance.DtoModels.AgainAllotRequest)">
<summary>
查看绩效详情
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.List(Performance.DtoModels.AllotRequest)">
<summary>
绩效列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.Insert(Performance.DtoModels.AllotRequest)">
<summary>
新增绩效
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.Update(Performance.DtoModels.AllotRequest)">
<summary>
修改绩效
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.Delete(Performance.DtoModels.AllotRequest)">
<summary>
删除绩效
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.Import(Microsoft.AspNetCore.Http.IFormCollection)">
<summary>
上传文件
</summary>
<param name="form"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.Generate(Performance.DtoModels.AllotRequest)">
<summary>
绩效生成
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.Pigeonhole(Performance.DtoModels.AllotRequest)">
<summary>
归档绩效记录
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.CheckRecord(Performance.DtoModels.AllotRequest)">
<summary>
归档时检索数据是否合格
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AllotController.AllotCheckResult(Performance.DtoModels.AllotRequest)">
<summary>
绩效校验结果
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetCompute(Performance.DtoModels.ComputerRequest)">
<summary>
获取绩效发放列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetSpecial(Performance.DtoModels.ComputerRequest)">
<summary>
特殊科室发放列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetDoctor(Performance.DtoModels.ComputerRequest)">
<summary>
医生组科室绩效列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetNurse(Performance.DtoModels.ComputerRequest)">
<summary>
护理组科室绩效列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.DeptDetail(Performance.DtoModels.DeptDetailRequest)">
<summary>
科室绩效详情
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.AllCompute(Performance.DtoModels.ComputerRequest)">
<summary>
获取全院绩效列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.UpdateRealfee(Performance.DtoModels.ComputerRequest)">
<summary>
修改实发绩效
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetBaiscnorm(Performance.DtoModels.ComputerRequest)">
<summary>
获取全院绩效列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetDireList(Performance.DtoModels.DirectorRequest)">
<summary>
获取规模/效率绩效配置列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.DireInsert(Performance.DtoModels.DirectorRequest)">
<summary>
新增规模/效率绩效配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.DireUpdate(Performance.DtoModels.DirectorRequest)">
<summary>
更新规模/效率绩效配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.DireDelete(Performance.DtoModels.DirectorRequest)">
<summary>
删除规模/效率绩效配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetDrugList(Performance.DtoModels.DrugpropRequest)">
<summary>
获取 药占比配置信息列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.DrugInsert(Performance.DtoModels.DrugpropRequest)">
<summary>
新增药占比配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.Update(Performance.DtoModels.DrugpropRequest)">
<summary>
修改药占比配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.Delete(Performance.DtoModels.DrugpropRequest)">
<summary>
删除药占比配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetDrugtypeList(Performance.DtoModels.DrugpropRequest)">
<summary>
获取 药占比类型信息列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.DrugtypeInsert(Performance.DtoModels.DrugpropRequest)">
<summary>
新增药占比类型
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.DrugtypeUpdate(Performance.DtoModels.DrugpropRequest)">
<summary>
修改药占比类型
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.DrugtypeDelete(Performance.DtoModels.DrugpropRequest)">
<summary>
删除药占比类型
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetIncomeList(Performance.DtoModels.IncomeRequest)">
<summary>
获取ICU有效收入配置列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.Insert(Performance.DtoModels.IncomeRequest)">
<summary>
新增ICU有效收入配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.Update(Performance.DtoModels.IncomeRequest)">
<summary>
修改ICU有效收入配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.Delete(Performance.DtoModels.IncomeRequest)">
<summary>
删除ICU有效收入配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetWorkList(Performance.DtoModels.WorkyearRequest)">
<summary>
获取年资系数配置列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.WorkyearInsert(Performance.DtoModels.WorkyearRequest)">
<summary>
新增年资系数配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.WorkyearUpdate(Performance.DtoModels.WorkyearRequest)">
<summary>
修改年资系数配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.WorkyearDelete(Performance.DtoModels.WorkyearRequest)">
<summary>
删除年资系数配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.GetAgainList(Performance.DtoModels.CofAgainRequest)">
<summary>
获取二次绩效配置列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.AgainInsert(Performance.DtoModels.CofAgainRequest)">
<summary>
新增二次绩效配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.AgainUpdate(Performance.DtoModels.CofAgainRequest)">
<summary>
修改二次绩效配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ConfigController.AgainDelete(Performance.DtoModels.CofAgainRequest)">
<summary>
删除二次绩效配置
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.GetEmployeeList(Performance.DtoModels.EmployeeRequest)">
<summary>
获取人员列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.Insert(Performance.DtoModels.EmployeeRequest)">
<summary>
新增人员
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.Update(Performance.DtoModels.EmployeeRequest)">
<summary>
修改人员
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.Delete(Performance.DtoModels.EmployeeRequest)">
<summary>
删除人员
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.HospitalController.GetHospitalList">
<summary>
获取当前登录用户管辖医院列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.HospitalController.Insert(Performance.DtoModels.HospitalRequest)">
<summary>
新增医院
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.HospitalController.Update(Performance.DtoModels.HospitalRequest)">
<summary>
修改医院信息
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.HospitalController.Delete(Performance.DtoModels.HospitalRequest)">
<summary>
删除医院
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.HospitalController.Disabled(Performance.DtoModels.HospitalRequest)">
<summary>
启用/禁用医院
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.MenuList">
<summary>
设置用户管辖医院
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.Extract(Performance.DtoModels.ModModuleRequest)">
<summary>
绩效数据抽取模板
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.FeeType">
<summary>
费用类型
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.FeeSource(Performance.DtoModels.ModModuleRequest)">
<summary>
绩效考核项费用来源
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.AddModule(Performance.DtoModels.ModModuleRequest)">
<summary>
费用字典新增
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.Module(Performance.DtoModels.ModModuleRequest)">
<summary>
费用字典(绩效模板)
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.EditModule(Performance.DtoModels.ModModuleRequest)">
<summary>
绩效模板修改
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.DelModule(Performance.DtoModels.ModModuleRequest)">
<summary>
绩效模板删除
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.AddItem(Performance.DtoModels.ItemListRequest)">
<summary>
绩效收入模板配置项新增
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.Items(Performance.DtoModels.ModItemRequest)">
<summary>
绩效收入模板配置项列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.EditItem(Performance.DtoModels.ItemListRequest)">
<summary>
绩效收入模板配置项修改
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.DelItem(Performance.DtoModels.ModItemRequest)">
<summary>
绩效收入模板配置项删除
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.AddSpecial(Performance.DtoModels.SpecialListRequest)">
<summary>
特殊科室模板配置项新增
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.Specials(Performance.DtoModels.ModSpecialRequest)">
<summary>
特殊科室模板配置项列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.EditSpecial(Performance.DtoModels.SpecialListRequest)">
<summary>
特殊科室模板配置项修改
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.DelSpecial(Performance.DtoModels.ModSpecialRequest)">
<summary>
特殊科室模板配置项删除
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ModExtractController.PerforType">
<summary>
特殊科室人均
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.Survey(Performance.DtoModels.ReportRequest)">
<summary>
首页数据概况
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.DoctorAvg(Performance.DtoModels.ReportRequest)">
<summary>
科室医生人均绩效(含科主任)
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.NurseAvg(Performance.DtoModels.ReportRequest)">
<summary>
科室护士人均绩效(含护士长)
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.OutFeeAvg(Performance.DtoModels.ReportRequest)">
<summary>
门诊患者均次费用
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.InpatFeeAvg(Performance.DtoModels.ReportRequest)">
<summary>
住院患者均次费用
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.Medicine(Performance.DtoModels.ReportRequest)">
<summary>
科室药占比
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.Income(Performance.DtoModels.ReportRequest)">
<summary>
科室有效收入占比
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.AvgPerfor(Performance.DtoModels.ReportRequest)">
<summary>
月群体人均绩效
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.AvgRatio(Performance.DtoModels.ReportRequest)">
<summary>
人群绩效比
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SheetController.SheetList(Performance.DtoModels.SheetRequest)">
<summary>
sheet 列表
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SheetController.SheetExport(Performance.DtoModels.SheetExportRequest)">
<summary>
sheet 数据详情
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SmsController.Code(Performance.DtoModels.Request.SmsCodeRequest)">
<summary>
发送验证码
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SmsController.Check(Performance.DtoModels.Request.SmsCodeRequest)">
<summary>
验证码验证
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.TemplateController.DownFile(System.Int32)">
<summary>
从WebAPI下载模板
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.TemplateController.Import(Microsoft.AspNetCore.Http.IFormCollection)">
<summary>
上传文件
</summary>
<param name="form"></param>
<returns></returns>
</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.DownFile(Performance.DtoModels.AllotRequest)">
<summary>
从WebAPI下载文件
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.TemplateController.SaveFile(Microsoft.AspNetCore.Http.IFormCollection,System.Int32,System.Int32)">
<summary>
保存提取文件
</summary>
<param name="form"></param>
<param name="allotId"></param>
<param name="hospitalId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.ClaimService.GetUserId">
<summary>
获取当前请求登录ID
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.ClaimService.GetUserClaim(System.String)">
<summary>
获取当前请求登录ID
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.ClaimService.GetUserClaim">
<summary>
获取当前请求所有身份信息
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.ClaimService.GetJwtToken">
<summary>
获取当前请求Jwt Token
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.ClaimService.SetJwtBlacklist(System.String)">
<summary>
设置jwt进入黑名单
</summary>
<param name="token"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.ClaimService.JwtUsable">
<summary>
判断当前请求JWT是否可用 可用true
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.ClaimService.JwtUsable(System.String)">
<summary>
判断当前请求JWT是否可用 可用true
</summary>
<param name="token"></param>
<returns></returns>
</member>
<member name="P:Performance.Api.JwtToken.access_token">
<summary>
access token
</summary>
</member>
<member name="P:Performance.Api.JwtToken.token_type">
<summary>
token type
</summary>
</member>
<member name="P:Performance.Api.JwtToken.auth_time">
<summary>
授权时间
</summary>
</member>
<member name="P:Performance.Api.JwtToken.expires_at">
<summary>
过期时间
</summary>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>Performance.DtoModels</name>
</assembly>
<members>
<member name="P:Performance.DtoModels.ApiResponse`1.Message">
<summary>
消息内容。
</summary>
</member>
<member name="P:Performance.DtoModels.ApiResponse`1.Data">
<summary>
返回数据。
</summary>
</member>
<member name="T:Performance.DtoModels.AppSettings.AppConnection">
<summary>
数据库连接字符串
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.ExpirationMinutes">
<summary>
登录过期时间
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.SmsCodeMinutes">
<summary>
验证码过期
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.SmsTemplate">
<summary>
短信模板
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.NurseRole">
<summary>
护士长二次绩效管理员
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.DirectorRole">
<summary>
科主任二次绩效管理员
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.Receiver">
<summary>
邮件指定接收人
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.AbsolutePath">
<summary>
绝对路径
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.Application.HttpPath">
<summary>
相对
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.WebapiUrl.ImportFirst">
<summary>
上传首次模板文件
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.WebapiUrl.ExtractData">
<summary>
抽取数据地址
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.WebapiUrl.ImportFile">
<summary>
上传文件地址
</summary>
</member>
<member name="P:Performance.DtoModels.AppSettings.WebapiUrl.HttpPost">
<summary>
Post请求地址
</summary>
</member>
<member name="M:Performance.DtoModels.CustomValidator.IsMobile(System.String)">
<summary>
判断输入的字符串是否是一个合法的手机号
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="T:Performance.DtoModels.SmsCodeType">
<summary> 验证码类型 </summary>
</member>
<member name="T:Performance.DtoModels.States">
<summary> 用户状态 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.NoData">
<summary> 用户状态 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.FileUploaded">
<summary> 数据已上传 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.InCheckData">
<summary> 正在校验数据 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.CheckPass">
<summary> 数据验证通过 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.CheckFail">
<summary> 数据错误 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.InGenerate">
<summary> 正在生成绩效 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.GenerateSucceed">
<summary> 绩效结果解析成功 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.GenerateFail">
<summary> 绩效解析失败 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.Archive">
<summary> 归档 </summary>
</member>
<member name="F:Performance.DtoModels.AllotStates.Wait">
<summary> 归档 </summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.RowNumber">
<summary>
行号
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.TypeName">
<summary>
列头类型名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.CellValue">
<summary>
单元格value
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.IsTotal">
<summary>
1 汇总 2原始数据
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.IsFactor">
<summary>
是否带入系数计算 1 带入 2 不带入
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.FactorValue">
<summary>
系数值
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.Annotation">
<summary>
单元格注释
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.Remark">
<summary>
单元格备注
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.SignID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.Name">
<summary>
姓名
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.JobTitle">
<summary>
职务
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.JobFactor">
<summary>
职称系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.Attendance">
<summary>
出勤
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.YearFactor">
<summary>
年资
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.Award">
<summary>
重点奖励
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.Allowance">
<summary>
管理津贴
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.AlonePerfor">
<summary>
单独核算人员绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.NightShift">
<summary>
夜班费
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.JobAttendanceFactor">
<summary>
职称出勤系数(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.YearAttendanceFactor">
<summary>
年资出勤系数(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.JobAttendancePerfor">
<summary>
职称出勤绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.GiveFee">
<summary>
应发绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainEmployee.RealGiveFee">
<summary>
实发绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.NightShift">
<summary>
夜班费
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.DepartmentTotal">
<summary>
科室总绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.BossPerfor">
<summary>
护士长或科主任基础绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.Award">
<summary>
重点奖励
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.Allowance">
<summary>
管理津贴
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.AllotPerfor">
<summary>
业绩分配绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.JobPerfor">
<summary>
职称绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.WorkloadPerfor">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.AlonePerfor">
<summary>
单独核算人员绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.Attendance">
<summary>
出勤
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainSituation.DepartmentFactorAvg">
<summary>
科室系数人均
</summary>
</member>
<member name="T:Performance.DtoModels.CofDrugProp">
<summary>
门诊药占比分值
</summary>
</member>
<member name="P:Performance.DtoModels.CofDrugProp.Prop">
<summary>
占比
</summary>
</member>
<member name="P:Performance.DtoModels.CofDrugProp.Factor">
<summary>
分值
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.AccountType">
<summary>
科室类别(例如 医技科室 临床科室 其他科室)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.FitPeople">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.FitPeopleRatio">
<summary>
绩效基数核算参考对象取值比例(如临床科室护士*95%)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.BasicNorm">
<summary>
核算基数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.DoctorName">
<summary>
医生姓名
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.WorkTime">
<summary>
参加工作时间
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.ScoreAverageRate">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Attendance">
<summary>
出勤率
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.OtherPerfor">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Punishment">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeEmployee.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.AccountType">
<summary>
科室类别(例如 医技科室 临床科室 其他科室)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.FitPeople">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.EmployeeName">
<summary>
人员姓名
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.PerforTotal">
<summary>
绩效合计(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Number">
<summary>
核算单元医生数量(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Avg">
<summary>
人均绩效(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Efficiency">
<summary>
效率绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Scale">
<summary>
规模绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.ShouldGiveFee">
<summary>
应发管理绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.PerforSumFee">
<summary>
绩效合计(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.ScoreAverageRate">
<summary>
考核对分率(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Attendance">
<summary>
出勤率(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Punishment">
<summary>
医院奖罚(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.OtherPerfor">
<summary>
其他绩效(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.GiveFee">
<summary>
应发绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.WorkTime">
<summary>
参加工作时间(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.BaiscNormValue">
<summary>
绩效基础金额(计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.WorkYear">
<summary>
年资系数(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResult.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="T:Performance.DtoModels.UnitType">
<summary> 核算单元类型 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.Unidentifiable">
<summary> 无法识别 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.Employee">
<summary> 医院人员名单 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.Income">
<summary> 收入 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.OtherIncome">
<summary> 其他收入 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.Expend">
<summary> 支出 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.Overtime">
<summary> 加班 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.Workload">
<summary> 工作量 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.SpecialUnit">
<summary> 特殊核算单元 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.AccountBasic">
<summary> 临床科室医护绩效测算基础 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.ComputeEconomic">
<summary> 科室经济核算汇总表 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.ComputeDoctorWorkload">
<summary> 医生工作量计算 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.ComputeNurseWorkload">
<summary> 护士工作量计算 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.ComputeDoctorAccount">
<summary> 临床科室医生绩效测算表 </summary>
</member>
<member name="F:Performance.DtoModels.SheetType.ComputeNurseAccount">
<summary> 临床科室护士绩效测算表 </summary>
</member>
<member name="T:Performance.DtoModels.AccountUnitType">
<summary>
核算单元类型
</summary>
</member>
<member name="F:Performance.DtoModels.AccountUnitType.Null">
<summary> </summary>
</member>
<member name="F:Performance.DtoModels.AccountUnitType.科主任">
<summary> 临床科室 </summary>
</member>
<member name="F:Performance.DtoModels.AccountUnitType.护士长">
<summary> 临床科室 </summary>
</member>
<member name="F:Performance.DtoModels.AccountUnitType.行政高层">
<summary> 行政高层 </summary>
</member>
<member name="F:Performance.DtoModels.AccountUnitType.行政中层">
<summary> 临床科室 </summary>
</member>
<member name="F:Performance.DtoModels.AccountUnitType.行政工勤">
<summary> 临床科室 </summary>
</member>
<member name="T:Performance.DtoModels.MinimumType">
<summary>
保底绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.UnitType">
<summary>
核算单元类别 (医生组/护理组)
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.AccountingUnit">
<summary>
核算单元名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.TypeName">
<summary>
列头类型名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.Annotation">
<summary>
单元格注释
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.Remark">
<summary>
单元格备注
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.CellValue">
<summary>
单元格value
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.ComputRule">
<summary>
1 加 2 减 3 乘
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.FactorValue">
<summary>
系数值
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.IsFactor">
<summary>
是否带入系数计算
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.IsTotal">
<summary>
1 汇总 2原始数据
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.RowNumber">
<summary>
行号
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.PointRow">
<summary>
行坐标
</summary>
</member>
<member name="P:Performance.DtoModels.PerData.PointCell">
<summary>
列坐标
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.RowNumber">
<summary>
行号
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.UnitType">
<summary>
核算单元类别 1 医生组 2护理组 3医技组
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.ManagerNumber">
<summary>
科主任/护士长数量
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Number">
<summary>
核算单元医生数量
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.BasicFactor">
<summary>
医生基础系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.SlopeFactor">
<summary>
倾斜系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.OtherPerfor1">
<summary>
其他绩效1
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.OtherPerfor2">
<summary>
其他绩效2
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Extra">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.ScoringAverage">
<summary>
考核对分率
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.AdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Scale">
<summary>
规模绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Effic">
<summary>
效率绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Grant">
<summary>
发放系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.MinimumReference">
<summary>
保底绩效参考标准
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.MinimumFactor">
<summary>
保底绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.MinimumFee">
<summary>
保底绩效金额
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Income">
<summary>
科室业绩
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.PerforFee">
<summary>
业绩绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.WorkloadFee">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.PerforTotal">
<summary>
绩效合计
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.Avg">
<summary>
人均绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataAccountBaisc.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.FitPeople">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.FitPeopleRatio">
<summary>
绩效基数核算参考对象取值比例(如临床科室护士*95%)
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.AccountType">
<summary>
科室类别(例如 医技科室 临床科室 其他科室)
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.DoctorName">
<summary>
医生姓名
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.WorkTime">
<summary>
参加工作时间
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.ScoreAverageRate">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.Attendance">
<summary>
出勤率
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.OthePerfor">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.Punishment">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataEmployee.RowNumber">
<summary>
行号
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Number">
<summary>
人数
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.QuantitativeIndicators">
<summary>
量化指标
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Quantity">
<summary>
数量
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.QuantitativeIndicatorsValue">
<summary>
量化指标绩效分值
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.ScoringAverage">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.OtherPerfor">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Punishment">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.DtoModels.PerDataSpecialUnit.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.PerHeader.SignID">
<summary>
唯一标准
</summary>
</member>
<member name="P:Performance.DtoModels.PerHeader.IsTotal">
<summary>
1 汇总 2原始数据
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheet.SheetName">
<summary>
sheet名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheet.SheetType">
<summary>
sheet模板类型
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheet.ModuleName">
<summary>
sheet模块名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheet.PerHeader">
<summary>
sheet头部
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheet.PerData">
<summary>
sheet数据
</summary>
</member>
<member name="T:Performance.DtoModels.PerSheetPoint">
<summary>
excel读取数据位置信息
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheetPoint.HeaderFirstRowNum">
<summary>
列头开始行(0开始)
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheetPoint.HeaderLastRowNum">
<summary>
列头结束行(0开始)
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheetPoint.HeaderFirstCellNum">
<summary>
列头开始列(0开始)
</summary>
</member>
<member name="P:Performance.DtoModels.PerSheetPoint.DataFirstRowNum">
<summary>
数据开始行
</summary>
</member>
<member name="P:Performance.DtoModels.AccountingUnit.FactorRow">
<summary>
系数行号
</summary>
</member>
<member name="P:Performance.DtoModels.AccountingUnit.AccountingUnitCellNum">
<summary>
核算单元列
</summary>
</member>
<member name="P:Performance.DtoModels.AccountingUnit.DeptCellNum">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.AccountingUnit.UnitType">
<summary>
核算单元类型
</summary>
</member>
<member name="T:Performance.DtoModels.AgainAllotRequest">
<summary>
二次分配请求
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotRequest.AgainAllotID">
<summary>
二次分配ID
</summary>
</member>
<member name="P:Performance.DtoModels.AllotRequest.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.DtoModels.AllotRequest.Year">
<summary>
绩效发放年
</summary>
</member>
<member name="P:Performance.DtoModels.AllotRequest.Month">
<summary>
绩效发放月
</summary>
</member>
<member name="P:Performance.DtoModels.AllotRequest.Mail">
<summary>
邮箱
</summary>
</member>
<member name="P:Performance.DtoModels.AllotRequest.Path">
<summary>
路径
</summary>
</member>
<member name="P:Performance.DtoModels.CofAgainRequest.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.CofAgainRequest.Type">
<summary>
1 职称绩效 2 工作量绩效 3 满勤天数
</summary>
</member>
<member name="P:Performance.DtoModels.CofAgainRequest.TypeName">
<summary>
参数名称
</summary>
</member>
<member name="P:Performance.DtoModels.CofAgainRequest.Value">
<summary>
参数值
</summary>
</member>
<member name="P:Performance.DtoModels.ComputerRequest.ComputeId">
<summary>
绩效数据id
</summary>
</member>
<member name="P:Performance.DtoModels.ComputerRequest.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ComputerRequest.AllotId">
<summary>
绩效id
</summary>
</member>
<member name="P:Performance.DtoModels.ComputerRequest.Type">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="T:Performance.DtoModels.DeptDetailRequest">
<summary>
查看科室绩效详情
</summary>
</member>
<member name="P:Performance.DtoModels.DeptDetailRequest.AllotId">
<summary>
绩效id
</summary>
</member>
<member name="P:Performance.DtoModels.DeptDetailRequest.Type">
<summary>
绩效类型(1 医生组、 2 护理组)
</summary>
</member>
<member name="P:Performance.DtoModels.DeptDetailRequest.AccountID">
<summary>
汇总ID
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorRequest.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorRequest.TypeName">
<summary>
绩效类型
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorRequest.JobTitle">
<summary>
职务名称
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorRequest.Value">
<summary>
绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.DrugpropRequest.MaxRange">
<summary>
药占比最大范围(小于)
</summary>
</member>
<member name="P:Performance.DtoModels.DrugpropRequest.MinRange">
<summary>
药占比最小范围(大于等于)
</summary>
</member>
<member name="P:Performance.DtoModels.DrugpropRequest.Value">
<summary>
药占比对应系数
</summary>
</member>
<member name="P:Performance.DtoModels.DrugpropRequest.Charge">
<summary>
费用名称
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.ID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.SheetID">
<summary>
sheet页id
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.AccountType">
<summary>
科室类别(例如 医技科室 临床科室 其他科室)
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.FitPeople">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.DoctorName">
<summary>
医生姓名
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.WorkTime">
<summary>
参加工作时间
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.ScoreAverageRate">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.Attendance">
<summary>
出勤率
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.PeopleNumber">
<summary>
核算单元医生数
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.Workload">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.OtherPerfor">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.Punishment">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.Grant">
<summary>
发放系数
</summary>
</member>
<member name="T:Performance.DtoModels.HospitalRequest">
<summary>
登录请求
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.HosName">
<summary>
医院名称
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.ShortName">
<summary>
简称
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.AreaCode">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.HosLevel">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.HosType">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.States">
<summary>
医院状态 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.IsOpenWorkYear">
<summary>
是否开启年资系数 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.IsOpenDrugprop">
<summary>
是否开启药占比系数 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.IsOpenIncome">
<summary>
是否开启ICU有效收入系数 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.DtoModels.HospitalRequest.IsOpenDirector">
<summary>
是否开启规模/效率绩效 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.DtoModels.IncomeRequest.SheetNameKeyword">
<summary>
关键字匹配
</summary>
</member>
<member name="P:Performance.DtoModels.IncomeRequest.UnitName">
<summary>
分组名称(医生、护理)
</summary>
</member>
<member name="P:Performance.DtoModels.IncomeRequest.Value">
<summary>
有效收入占比
</summary>
</member>
<member name="T:Performance.DtoModels.LoginRequest">
<summary>
登录请求
</summary>
</member>
<member name="P:Performance.DtoModels.LoginRequest.LoginType">
<summary>
登录类型 1 手机号登录 2 账号登录
</summary>
</member>
<member name="P:Performance.DtoModels.ModItemRequest.ModuleId">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.ModItemRequest.ItemId">
<summary>
绩效考核项id
</summary>
</member>
<member name="P:Performance.DtoModels.ModItemRequest.ItemName">
<summary>
绩效考核项
</summary>
</member>
<member name="P:Performance.DtoModels.ItemListRequest.ModuleId">
<summary> 方案Id </summary>
</member>
<member name="P:Performance.DtoModels.ItemListRequest.Items">
<summary> 新增项 </summary>
</member>
<member name="P:Performance.DtoModels.ModModuleRequest.ModuleId">
<summary> 绩效模块Id </summary>
</member>
<member name="P:Performance.DtoModels.ModModuleRequest.HospitalId">
<summary> 医院Id </summary>
</member>
<member name="P:Performance.DtoModels.ModModuleRequest.SheetType">
<summary> 类型 </summary>
</member>
<member name="P:Performance.DtoModels.ModModuleRequest.ModuleName">
<summary> 绩效模块 </summary>
</member>
<member name="P:Performance.DtoModels.ModModuleRequest.Description">
<summary> 描述 </summary>
</member>
<member name="P:Performance.DtoModels.ModModuleRequest.ExecuteType">
<summary>
当前脚本类型 1 收入整表 2 单项数据提取
</summary>
</member>
<member name="P:Performance.DtoModels.ModSpecialRequest.HospitalId">
<summary> 医院Id </summary>
</member>
<member name="P:Performance.DtoModels.ModSpecialRequest.SpecialId">
<summary> 特殊考核项Id </summary>
</member>
<member name="P:Performance.DtoModels.SpecialListRequest.HospitalId">
<summary> 医院Id </summary>
</member>
<member name="P:Performance.DtoModels.SpecialListRequest.Items">
<summary> 特殊考核项 </summary>
</member>
<member name="P:Performance.DtoModels.PasswordRequest.OldPwd">
<summary>
原始密码
</summary>
</member>
<member name="P:Performance.DtoModels.PasswordRequest.NewPwd">
<summary>
新设密码
</summary>
</member>
<member name="P:Performance.DtoModels.PositionRequest.AllotID">
<summary>
绩效ID
</summary>
</member>
<member name="P:Performance.DtoModels.PositionRequest.JobTitle">
<summary>
职位名称
</summary>
</member>
<member name="P:Performance.DtoModels.PositionRequest.JobType">
<summary>
职位归类 1 院领导 2 行政中层 3 行政工勤 4 临床科室主任 5 临床科室副主任 6 临床科室护士长
</summary>
</member>
<member name="P:Performance.DtoModels.PositionRequest.ExtraFactor">
<summary>
额外补偿系数
</summary>
</member>
<member name="P:Performance.DtoModels.PositionRequest.State">
<summary>
职位类别 1 普通类别 2 基础绩效来源
</summary>
</member>
<member name="T:Performance.DtoModels.SetDepartmentRequest">
<summary>
登录请求
</summary>
</member>
<member name="T:Performance.DtoModels.SheetExportRequest">
<summary>
sheet数据详情请求
</summary>
</member>
<member name="T:Performance.DtoModels.SheetRequest">
<summary>
sheet页列表请求
</summary>
</member>
<member name="P:Performance.DtoModels.Request.SmsCodeRequest.Type">
<summary>
短信验证类型 1 手机号登录 2 其他
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.RealName">
<summary>
真实名称
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.Mobile">
<summary>
手机号
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.Login">
<summary>
登录名称
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.Password">
<summary>
密码
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.Mail">
<summary>
邮箱
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.States">
<summary>
用户状态 1启用 2禁用
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.Role">
<summary>
角色
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.HosIDArray">
<summary>
用户医院ID
</summary>
</member>
<member name="P:Performance.DtoModels.UserRequest.Department">
<summary>
用户科室
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearRequest.MaxRange">
<summary>
最大工龄范围(小于)
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearRequest.MinRange">
<summary>
最小工龄范围(大于等于)
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearRequest.Value">
<summary>
绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.ID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.Year">
<summary>
绩效发放年
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.Month">
<summary>
绩效发放月
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.UploadDateTime">
<summary>
上传时间
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.Path">
<summary>
文件路径
</summary>
</member>
<member name="P:Performance.DtoModels.AgainAllotResponse.States">
<summary>
二次分配状态 0 数据未上传 1 数据已上传 2 正在生成绩效 3 绩效生成成功 4 绩效生成失败 5 归档
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.Year">
<summary>
绩效发放年
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.Month">
<summary>
绩效发放月
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.AllotFee">
<summary>
绩效发放总金额
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.CreateDate">
<summary>
绩效统计时间
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.UploadDate">
<summary>
上传日期
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.States">
<summary>
0 数据未上传 1 数据已上传 2 正在校验数据 3 数据验证通过 4 数据错误
5 正在生成绩效 6 绩效结果解析成功 7 绩效解析失败 8 归档
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.ExtractPath">
<summary>
提取绩效数据文件生成路径
</summary>
</member>
<member name="P:Performance.DtoModels.AllotResponse.IsDown">
<summary>
是否可以下载
</summary>
</member>
<member name="P:Performance.DtoModels.AssessDataResponse.AssessID">
<summary>
考核类别ID
</summary>
</member>
<member name="P:Performance.DtoModels.AssessDataResponse.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResponse.Source">
<summary>
来源
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResponse.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResponse.EmployeeName">
<summary>
人员名称
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResponse.JobTitle">
<summary>
职位
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResponse.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.ID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.UnitName">
<summary>
分组名称(医生、护士)
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.Number">
<summary>
核算单元医生数量
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.BasicFactor">
<summary>
医生基础系数
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.SlopeFactor">
<summary>
倾斜系数
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.MinimumReference">
<summary>
保底绩效参考标准
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.MinimumFactor">
<summary>
保底绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.MinimumFee">
<summary>
保底绩效金额
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.OtherPerfor1">
<summary>
其他绩效1
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.OtherPerfor2">
<summary>
其他绩效2
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.Extra">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.ScoringAverage">
<summary>
考核对分率
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.AdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.Income">
<summary>
科室业绩
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.PerforFee">
<summary>
业绩绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.WorkloadFee">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.PerforTotal">
<summary>
绩效合计
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.Avg">
<summary>
人均绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.DtoModels.DeptResponse.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorResponse.TypeName">
<summary>
绩效类型
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorResponse.JobTitle">
<summary>
职务名称
</summary>
</member>
<member name="P:Performance.DtoModels.DirectorResponse.Value">
<summary>
绩效系数
</summary>
</member>
<member name="P:Performance.DtoModels.DrugpropResponse.MaxRange">
<summary>
药占比最大范围(小于)
</summary>
</member>
<member name="P:Performance.DtoModels.DrugpropResponse.MinRange">
<summary>
药占比最小范围(大于等于)
</summary>
</member>
<member name="P:Performance.DtoModels.DrugpropResponse.Value">
<summary>
药占比对应系数
</summary>
</member>
<member name="P:Performance.DtoModels.IncomeResponse.SheetNameKeyword">
<summary>
关键字匹配
</summary>
</member>
<member name="P:Performance.DtoModels.IncomeResponse.UnitName">
<summary>
分组名称(医生、护理)
</summary>
</member>
<member name="P:Performance.DtoModels.IncomeResponse.Value">
<summary>
有效收入占比
</summary>
</member>
<member name="P:Performance.DtoModels.MenuResponse.MenuName">
<summary>
菜单名称
</summary>
</member>
<member name="P:Performance.DtoModels.MenuResponse.MenuUrl">
<summary>
菜单Url
</summary>
</member>
<member name="P:Performance.DtoModels.MenuResponse.MenuIcon">
<summary>
菜单图标
</summary>
</member>
<member name="P:Performance.DtoModels.MenuResponse.MenuType">
<summary>
菜单类型 1 首页中出现 2 医院页中出现
</summary>
</member>
<member name="P:Performance.DtoModels.MenuResponse.States">
<summary>
菜单状态 1 启用 2禁用
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.ID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.SheetID">
<summary>
sheet页id
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.FitPeople">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.EmployeeName">
<summary>
人员姓名
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.PerforTotal">
<summary>
绩效合计(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Number">
<summary>
核算单元医生数量(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Avg">
<summary>
人均绩效(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Efficiency">
<summary>
效率绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Scale">
<summary>
规模绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Grant">
<summary>
发放系数(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.ShouldGiveFee">
<summary>
应发管理绩效(需计算,科主任护士长独有)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.PerforSumFee">
<summary>
绩效合计(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.ScoreAverageRate">
<summary>
考核对分率(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Punishment">
<summary>
医院奖罚(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.OtherPerfor">
<summary>
其他绩效(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.GiveFee">
<summary>
应发绩效(需计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Attendance">
<summary>
出勤率(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.WorkTime">
<summary>
参加工作时间(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.BaiscNormValue">
<summary>
绩效基础金额(计算)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.WorkYear">
<summary>
年资系数(来自人员名单)
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.Workload">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.DtoModels.ResComputeResponse.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.DtoModels.RoleResponse.RoleName">
<summary>
角色名称
</summary>
</member>
<member name="P:Performance.DtoModels.RoleResponse.Remark">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.RoleResponse.States">
<summary>
菜单状态 1 启用 2禁用
</summary>
</member>
<member name="P:Performance.DtoModels.SheetExportResponse.SheetID">
<summary>
sheetID
</summary>
</member>
<member name="P:Performance.DtoModels.SheetExportResponse.SheetName">
<summary>
sheet名称
</summary>
</member>
<member name="P:Performance.DtoModels.SheetExportResponse.SheetType">
<summary>
sheet模板类型
</summary>
</member>
<member name="P:Performance.DtoModels.SheetExportResponse.Header">
<summary>
sheet头
</summary>
</member>
<member name="P:Performance.DtoModels.SheetExportResponse.Row">
<summary>
sheet数据
</summary>
</member>
<member name="P:Performance.DtoModels.Cell.Annotation">
<summary>
单元格注释
</summary>
</member>
<member name="P:Performance.DtoModels.SheetResponse.SheetID">
<summary>
SheetID
</summary>
</member>
<member name="P:Performance.DtoModels.SheetResponse.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.SheetResponse.SheetName">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.SheetResponse.SheetType">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.UserIdentity.IsAgainAdmin">
<summary>
是否是二次绩效管理 是为true 否则为false
</summary>
</member>
<member name="P:Performance.DtoModels.UserIdentity.Department">
<summary>
用户科室
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearResponse.MaxRange">
<summary>
最大工龄范围(小于)
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearResponse.MinRange">
<summary>
最小工龄范围(大于等于)
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearResponse.Value">
<summary>
绩效系数
</summary>
</member>
<member name="T:Performance.DtoModels.TitleValue`1">
<summary>
title value
</summary>
</member>
<member name="P:Performance.DtoModels.TitleValue`1.Title">
<summary>
Title
</summary>
</member>
<member name="P:Performance.DtoModels.TitleValue`1.Value">
<summary>
Value
</summary>
</member>
<member name="P:Performance.DtoModels.TitleValue`1.State">
<summary>
1、已选,2、未选,3、已被选择
</summary>
</member>
<member name="T:Performance.DtoModels.TitleValue">
<summary>
title value
</summary>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>Performance.EntityModels</name>
</assembly>
<members>
<member name="P:Performance.EntityModels.PerformanceDbContext.ag_againsituation">
<summary> 二次分配概览 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ag_data">
<summary> 二次分配不固定数据 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ag_employee">
<summary> 二次分配人员名单 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.ag_header">
<summary> 二次分配不固定列头数据 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.as_assess">
<summary> 考核类别 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.as_columns">
<summary> 考核列头 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.as_data">
<summary> 考核数据 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.as_tempassess">
<summary> 考核类别 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.as_tempcolumns">
<summary> 考核列头 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_again">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_check">
<summary> 上传excel文件校验配置 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_director">
<summary> 规模绩效、效率绩效计算系数配置 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_drugprop">
<summary> 工作量门诊药占比系数 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_drugtype">
<summary> 药占比费用列头名称 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_income">
<summary> ICU医生护士有效收入汇总计算系数 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_singlefactor">
<summary> 特殊绩效项指标 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_workyear">
<summary> 工龄对应绩效系数配置 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.hos_personfee">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.im_accountbasic">
<summary> 科室核算导入信息 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.im_data">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.im_employee">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.im_header">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.im_specialunit">
<summary> 特殊科室核算 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.log_check">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.log_dbug">
<summary> </summary>
</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">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_allot">
<summary> 医院绩效分配 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_first">
<summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_sheet">
<summary> 上传数据解析 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.res_account">
<summary> 科室核算结果 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.res_baiscnorm">
<summary> 核算基础标准 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.res_compute">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.res_specialunit">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_extract">
<summary> 医院数据提取脚本 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_hospital">
<summary> 医院信息 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_hospitalconfig">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_menu">
<summary> 菜单表 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_role">
<summary> 角色表 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_role_menu">
<summary> 角色菜单关联表 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_sms">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_task">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_user">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_user_hospital">
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.sys_user_role">
<summary> 用户角色关联表 </summary>
</member>
<member name="T:Performance.EntityModels.ag_againsituation">
<summary>
二次分配概览
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.AgainAllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.NightShift">
<summary>
夜班费
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.DepartmentTotal">
<summary>
科室总绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.BossPerfor">
<summary>
护士长或科主任基础绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.Award">
<summary>
重点奖励
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.Allowance">
<summary>
管理津贴
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.AllotPerfor">
<summary>
业绩分配绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.JobPerfor">
<summary>
职称绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.WorkloadPerfor">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.AlonePerfor">
<summary>
单独核算人员绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.Attendance">
<summary>
出勤
</summary>
</member>
<member name="P:Performance.EntityModels.ag_againsituation.DepartmentFactorAvg">
<summary>
科室系数人均
</summary>
</member>
<member name="T:Performance.EntityModels.ag_data">
<summary>
二次分配不固定数据
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.AgainAllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.RowNumber">
<summary>
行号
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.TypeName">
<summary>
列头类型名称
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.CellValue">
<summary>
单元格value
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.IsTotal">
<summary>
1 汇总 2原始数据
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.IsFactor">
<summary>
是否带入系数计算 1 带入 2 不带入
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.FactorValue">
<summary>
系数值
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.Annotation">
<summary>
单元格注释
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.Remark">
<summary>
单元格备注
</summary>
</member>
<member name="P:Performance.EntityModels.ag_data.SignID">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.ag_employee">
<summary>
二次分配人员名单
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.AgainAllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.RowNumber">
<summary>
行号
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.Name">
<summary>
姓名
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.JobTitle">
<summary>
职务
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.JobFactor">
<summary>
职称系数
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.Attendance">
<summary>
出勤
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.YearFactor">
<summary>
年资
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.Award">
<summary>
重点奖励
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.Allowance">
<summary>
管理津贴
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.AlonePerfor">
<summary>
单独核算人员绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.NightShift">
<summary>
夜班费
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.JobAttendanceFactor">
<summary>
职称出勤系数(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.YearAttendanceFactor">
<summary>
年资出勤系数(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.JobAttendancePerfor">
<summary>
职称出勤绩效(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.GiveFee">
<summary>
应发绩效(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.ag_employee.RealGiveFee">
<summary>
实发绩效(需计算)
</summary>
</member>
<member name="T:Performance.EntityModels.ag_header">
<summary>
二次分配不固定列头数据
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.AgainAllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.ParentID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.PointRow">
<summary>
行坐标
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.PointCell">
<summary>
列坐标
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.IsMerge">
<summary>
是否合并 1 合并 2 不合并
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.MergeRow">
<summary>
合并行
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.MergeCell">
<summary>
合并列
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.CellValue">
<summary>
单元格内容
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.SignID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_header.IsTotal">
<summary>
1 汇总 2原始数据
</summary>
</member>
<member name="T:Performance.EntityModels.as_assess">
<summary>
考核类别
</summary>
</member>
<member name="P:Performance.EntityModels.as_assess.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.as_assess.AllotID">
<summary>
绩效ID
</summary>
</member>
<member name="P:Performance.EntityModels.as_assess.AssessName">
<summary>
考核类别
</summary>
</member>
<member name="T:Performance.EntityModels.as_columns">
<summary>
考核列头
</summary>
</member>
<member name="P:Performance.EntityModels.as_columns.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.as_columns.AssessID">
<summary>
考核类别
</summary>
</member>
<member name="P:Performance.EntityModels.as_columns.ParentID">
<summary>
父级列头ID
</summary>
</member>
<member name="P:Performance.EntityModels.as_columns.ColumnName">
<summary>
列头名称
</summary>
</member>
<member name="P:Performance.EntityModels.as_columns.TempColumnID">
<summary>
原始模板ID
</summary>
</member>
<member name="P:Performance.EntityModels.as_columns.Sort">
<summary>
排序
</summary>
</member>
<member name="T:Performance.EntityModels.as_data">
<summary>
考核数据
</summary>
</member>
<member name="P:Performance.EntityModels.as_data.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.as_data.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.as_data.AssessID">
<summary>
考核类别ID
</summary>
</member>
<member name="P:Performance.EntityModels.as_data.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.as_data.RowData">
<summary>
行数据JSON
</summary>
</member>
<member name="T:Performance.EntityModels.as_tempassess">
<summary>
考核类别
</summary>
</member>
<member name="P:Performance.EntityModels.as_tempassess.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.as_tempassess.AssessName">
<summary>
考核类别
</summary>
</member>
<member name="T:Performance.EntityModels.as_tempcolumns">
<summary>
考核列头
</summary>
</member>
<member name="P:Performance.EntityModels.as_tempcolumns.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.as_tempcolumns.AssessID">
<summary>
考核类别
</summary>
</member>
<member name="P:Performance.EntityModels.as_tempcolumns.ParentID">
<summary>
父级列头ID
</summary>
</member>
<member name="P:Performance.EntityModels.as_tempcolumns.ColumnName">
<summary>
列头名称
</summary>
</member>
<member name="P:Performance.EntityModels.as_tempcolumns.Sort">
<summary>
排序
</summary>
</member>
<member name="T:Performance.EntityModels.cof_again">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_again.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_again.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_again.Type">
<summary>
1 职称绩效 2 工作量绩效 3 满勤天数
</summary>
</member>
<member name="P:Performance.EntityModels.cof_again.TypeName">
<summary>
参数名称
</summary>
</member>
<member name="P:Performance.EntityModels.cof_again.Value">
<summary>
参数值
</summary>
</member>
<member name="T:Performance.EntityModels.cof_check">
<summary>
上传excel文件校验配置
</summary>
</member>
<member name="P:Performance.EntityModels.cof_check.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_check.Type">
<summary>
sheet类型。1、无法识别,2、医院人员名单,3、收入,4、其他收入,5、支出,6、加班,7、工作量,8、特殊核算单元,9、临床科室医护绩效测算基础
</summary>
</member>
<member name="P:Performance.EntityModels.cof_check.CellName">
<summary>
单元格列头名称
</summary>
</member>
<member name="T:Performance.EntityModels.cof_director">
<summary>
规模绩效、效率绩效计算系数配置
</summary>
</member>
<member name="P:Performance.EntityModels.cof_director.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_director.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_director.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.cof_director.TypeName">
<summary>
绩效类型
</summary>
</member>
<member name="P:Performance.EntityModels.cof_director.JobTitle">
<summary>
职务名称
</summary>
</member>
<member name="P:Performance.EntityModels.cof_director.Value">
<summary>
绩效系数
</summary>
</member>
<member name="T:Performance.EntityModels.cof_drugprop">
<summary>
工作量门诊药占比系数
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugprop.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugprop.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugprop.MaxRange">
<summary>
药占比最大范围(小于)
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugprop.MinRange">
<summary>
药占比最小范围(大于等于)
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugprop.Value">
<summary>
药占比对应系数
</summary>
</member>
<member name="T:Performance.EntityModels.cof_drugtype">
<summary>
药占比费用列头名称
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugtype.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugtype.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_drugtype.Charge">
<summary>
费用名称
</summary>
</member>
<member name="T:Performance.EntityModels.cof_income">
<summary>
ICU医生护士有效收入汇总计算系数
</summary>
</member>
<member name="P:Performance.EntityModels.cof_income.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_income.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_income.SheetNameKeyword">
<summary>
关键字匹配
</summary>
</member>
<member name="P:Performance.EntityModels.cof_income.UnitName">
<summary>
分组名称(医生、护理)
</summary>
</member>
<member name="P:Performance.EntityModels.cof_income.Value">
<summary>
有效收入占比
</summary>
</member>
<member name="T:Performance.EntityModels.cof_singlefactor">
<summary>
特殊绩效项指标
</summary>
</member>
<member name="P:Performance.EntityModels.cof_singlefactor.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_singlefactor.Type">
<summary>
1 工作量
</summary>
</member>
<member name="P:Performance.EntityModels.cof_singlefactor.TypeName">
<summary>
类型名称
</summary>
</member>
<member name="P:Performance.EntityModels.cof_singlefactor.AccountingUnit">
<summary>
绩效核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.cof_singlefactor.ItemName">
<summary>
绩效项系数
</summary>
</member>
<member name="P:Performance.EntityModels.cof_singlefactor.FactorValue">
<summary>
系数值
</summary>
</member>
<member name="T:Performance.EntityModels.cof_workyear">
<summary>
工龄对应绩效系数配置
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workyear.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workyear.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workyear.MaxRange">
<summary>
最大工龄范围(小于)
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workyear.MinRange">
<summary>
最小工龄范围(大于等于)
</summary>
</member>
<member name="P:Performance.EntityModels.cof_workyear.Value">
<summary>
绩效系数
</summary>
</member>
<member name="T:Performance.EntityModels.hos_personfee">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.Year">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.Month">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.Source">
<summary>
来源 门诊 住院
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.DeptName">
<summary>
开单科室
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.Category">
<summary>
费用类型
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.PersonTime">
<summary>
人次
</summary>
</member>
<member name="P:Performance.EntityModels.hos_personfee.Fee">
<summary>
费用
</summary>
</member>
<member name="T:Performance.EntityModels.im_accountbasic">
<summary>
科室核算导入信息
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.UnitType">
<summary>
核算单元类别 1 医生组 2护理组 3医技组
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorAccountingUnit">
<summary>
核算单元(医生组)
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseAccountingUnit">
<summary>
核算单元(护理组)
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorDirectorNumber">
<summary>
科主任数量
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorNumber">
<summary>
核算单元医生数量
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorBasicFactor">
<summary>
医生基础系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorSlopeFactor">
<summary>
倾斜系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorScale">
<summary>
规模绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorEffic">
<summary>
效率绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorGrant">
<summary>
发放系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorOtherPerfor1">
<summary>
其他绩效1
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorOtherPerfor2">
<summary>
其他绩效2
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorExtra">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorScoringAverage">
<summary>
考核对分率
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.DoctorAdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.MinimumReference">
<summary>
保底绩效参考标准
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.MinimumFactor">
<summary>
保底绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseHeadNumber">
<summary>
护士长人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseNumber">
<summary>
护士人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseBasicFactor">
<summary>
护理基础系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseSlopeFactor">
<summary>
倾斜系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseScale">
<summary>
规模绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseEffic">
<summary>
效率绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseGrant">
<summary>
发放系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseOtherPerfor1">
<summary>
其他绩效1
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseOtherPerfor2">
<summary>
其他绩效2
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseExtra">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseScoringAverage">
<summary>
考核对分率
</summary>
</member>
<member name="P:Performance.EntityModels.im_accountbasic.NurseAdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="T:Performance.EntityModels.im_data">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.UnitType">
<summary>
核算单元类别 1 医生组 2护理组 3医技组
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.RowNumber">
<summary>
行号
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.AccountingUnit">
<summary>
核算单元名称
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.TypeName">
<summary>
列头类型名称
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.CellValue">
<summary>
单元格value
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.ComputRule">
<summary>
1 加 2 减 3 乘
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.IsTotal">
<summary>
1 汇总 2原始数据
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.IsFactor">
<summary>
是否带入系数计算 1 带入 2 不带入
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.FactorValue">
<summary>
系数值
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.Annotation">
<summary>
单元格注释
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.Remark">
<summary>
单元格备注
</summary>
</member>
<member name="P:Performance.EntityModels.im_data.SignID">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.im_employee">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.SheetID">
<summary>
sheet页id
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.RowNumber">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.AccountType">
<summary>
科室类别(例如 医技科室 临床科室 其他科室)
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.FitPeople">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.FitPeopleRatio">
<summary>
绩效基数核算参考对象取值比例(如临床科室护士*95%)
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.DoctorName">
<summary>
医生姓名
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.WorkTime">
<summary>
参加工作时间
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.ScoreAverageRate">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.Attendance">
<summary>
出勤率
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.PeopleNumber">
<summary>
核算单元医生数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.Workload">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.OtherPerfor">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.Punishment">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.im_employee.Grant">
<summary>
发放系数
</summary>
</member>
<member name="T:Performance.EntityModels.im_header">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.ParentID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.PointRow">
<summary>
行坐标
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.PointCell">
<summary>
列坐标
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.IsMerge">
<summary>
是否合并 1 合并 2 不合并
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.MergeRow">
<summary>
合并行
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.MergeCell">
<summary>
合并列
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.CellValue">
<summary>
单元格内容
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.SignID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_header.IsTotal">
<summary>
1 汇总 2原始数据
</summary>
</member>
<member name="T:Performance.EntityModels.im_specialunit">
<summary>
特殊科室核算
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.Number">
<summary>
人数
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.QuantitativeIndicators">
<summary>
量化指标
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.Quantity">
<summary>
数量
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.QuantitativeIndicatorsValue">
<summary>
量化指标绩效分值
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.ScoringAverage">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.OtherPerfor">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.Punishment">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.EntityModels.im_specialunit.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="T:Performance.EntityModels.log_check">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_check.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_check.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_check.CreateTime">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_check.Type">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_check.Level">
<summary>
1、信息(info)2、警告(warn)3、错误(error)
</summary>
</member>
<member name="P:Performance.EntityModels.log_check.Titile">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_check.Message">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.log_dbug">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_dbug.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_dbug.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_dbug.CreateTime">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_dbug.Titile">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.log_dbug.Message">
<summary>
</summary>
</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.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.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="T:Performance.EntityModels.per_againallot">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.CreateUser">
<summary>
用户ID
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.CreateDateTime">
<summary>
创建时间
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.UploadDateTime">
<summary>
上传时间
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.Path">
<summary>
文件路径
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.States">
<summary>
二次分配状态 0 数据未上传 1 数据已上传 2 正在生成绩效 3 绩效生成成功 4 绩效生成失败 5 归档
</summary>
</member>
<member name="P:Performance.EntityModels.per_againallot.Remark">
<summary>
备注
</summary>
</member>
<member name="T:Performance.EntityModels.per_allot">
<summary>
医院绩效分配
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.ID">
<summary>
ID
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.CreateUser">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.CreateDate">
<summary>
绩效统计时间
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.Year">
<summary>
绩效发放年
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.Month">
<summary>
绩效发放月
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.AllotFee">
<summary>
绩效发放总金额
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.Path">
<summary>
文件路径
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.UploadDate">
<summary>
上传日期
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.States">
<summary>
0 数据未上传 1 数据已上传 2 正在校验数据 3 数据验证通过 4 数据错误 5 正在生成绩效 6 绩效结果解析成功 7 绩效解析失败 8 归档 9 等待生成
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.ExtractPath">
<summary>
提取绩效数据文件生成路径
</summary>
</member>
<member name="P:Performance.EntityModels.per_allot.IsExtracting">
<summary>
是否在抽取数据0 否、1 是、2 抽取成功、3 抽取失败
</summary>
</member>
<member name="T:Performance.EntityModels.per_first">
<summary>
首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本)
</summary>
</member>
<member name="P:Performance.EntityModels.per_first.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_first.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_first.CreateUser">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_first.CreateDate">
<summary>
上传时间
</summary>
</member>
<member name="P:Performance.EntityModels.per_first.Path">
<summary>
文件路径
</summary>
</member>
<member name="P:Performance.EntityModels.per_first.UploadDate">
<summary>
上传日期
</summary>
</member>
<member name="P:Performance.EntityModels.per_first.Remark">
<summary>
备注
</summary>
</member>
<member name="T:Performance.EntityModels.per_sheet">
<summary>
上传数据解析
</summary>
</member>
<member name="P:Performance.EntityModels.per_sheet.ID">
<summary>
ID
</summary>
</member>
<member name="P:Performance.EntityModels.per_sheet.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_sheet.SheetName">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_sheet.SheetType">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_sheet.Source">
<summary>
数据来源 1 excel 导入 2 计算
</summary>
</member>
<member name="T:Performance.EntityModels.res_account">
<summary>
科室核算结果
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.UnitType">
<summary>
核算单元类型 1 医生组 2 护理组 3 医技组
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Department">
<summary>
科室
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ManagerNumber">
<summary>
科主任/护士长数量
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Number">
<summary>
核算单元医生数量
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.BasicFactor">
<summary>
医生基础系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.SlopeFactor">
<summary>
倾斜系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.MinimumReference">
<summary>
保底绩效参考标准
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.MinimumFactor">
<summary>
保底绩效系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.MinimumFee">
<summary>
保底绩效金额
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.OtherPerfor1">
<summary>
其他绩效1
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.OtherPerfor2">
<summary>
其他绩效2
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Extra">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ScoringAverage">
<summary>
考核对分率
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.AdjustFactor">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Income">
<summary>
科室业绩
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.PerforFee">
<summary>
业绩绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.WorkloadFee">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.PerforTotal">
<summary>
绩效合计
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Avg">
<summary>
人均绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.res_account.ChangeLog">
<summary>
变更日志
</summary>
</member>
<member name="T:Performance.EntityModels.res_baiscnorm">
<summary>
核算基础标准
</summary>
</member>
<member name="P:Performance.EntityModels.res_baiscnorm.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_baiscnorm.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_baiscnorm.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_baiscnorm.PositionName">
<summary>
绩效核算人群
</summary>
</member>
<member name="P:Performance.EntityModels.res_baiscnorm.TotelValue">
<summary>
绩效总额
</summary>
</member>
<member name="P:Performance.EntityModels.res_baiscnorm.AvgValue">
<summary>
人均绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_baiscnorm.TotelNumber">
<summary>
总人数
</summary>
</member>
<member name="T:Performance.EntityModels.res_compute">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.SheetID">
<summary>
sheet页id
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.AccountType">
<summary>
核算单元类型(医技科室、临床科室等)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.FitPeople">
<summary>
绩效基数核算参考对象
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.EmployeeName">
<summary>
人员姓名
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.JobTitle">
<summary>
职称
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.PerforTotal">
<summary>
绩效合计(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Number">
<summary>
核算单元医生数量(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Avg">
<summary>
人均绩效(来自科室经济测算表)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Efficiency">
<summary>
效率绩效(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Scale">
<summary>
规模绩效(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.PostCoefficient">
<summary>
岗位系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Grant">
<summary>
发放系数(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.ShouldGiveFee">
<summary>
应发管理绩效(需计算,科主任护士长独有)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.PerforSumFee">
<summary>
绩效合计(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.ScoreAverageRate">
<summary>
考核对分率(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Punishment">
<summary>
医院奖罚(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.OtherPerfor">
<summary>
其他绩效(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.GiveFee">
<summary>
应发绩效(需计算)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Attendance">
<summary>
出勤率(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.WorkTime">
<summary>
参加工作时间(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.BaiscNormValue">
<summary>
绩效基础金额(计算)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.WorkYear">
<summary>
年资系数(来自人员名单)
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.Workload">
<summary>
工作量绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_compute.ChangeLog">
<summary>
变更日志
</summary>
</member>
<member name="T:Performance.EntityModels.res_specialunit">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.SheetID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.Number">
<summary>
人数
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.QuantitativeIndicators">
<summary>
量化指标
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.Quantity">
<summary>
数量
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.QuantitativeIndicatorsValue">
<summary>
量化指标绩效分值
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.ScoringAverage">
<summary>
考核得分率
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.OtherPerfor">
<summary>
其他绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.Punishment">
<summary>
医院奖罚
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.Avg">
<summary>
人均绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.GiveFee">
<summary>
应发绩效
</summary>
</member>
<member name="P:Performance.EntityModels.res_specialunit.RealGiveFee">
<summary>
实发绩效
</summary>
</member>
<member name="T:Performance.EntityModels.sys_extract">
<summary>
医院数据提取脚本
</summary>
</member>
<member name="P:Performance.EntityModels.sys_extract.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_extract.HospitalId">
<summary>
医院ID
</summary>
</member>
<member name="P:Performance.EntityModels.sys_extract.ConfigId">
<summary>
连接地址
</summary>
</member>
<member name="P:Performance.EntityModels.sys_extract.SheetName">
<summary>
EXCEL中SHEET名称
</summary>
</member>
<member name="P:Performance.EntityModels.sys_extract.ExecuteScript">
<summary>
执行脚本
</summary>
</member>
<member name="P:Performance.EntityModels.sys_extract.IsEnable">
<summary>
是否可用 1 可用 2 不可用
</summary>
</member>
<member name="T:Performance.EntityModels.sys_hospital">
<summary>
医院信息
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.ID">
<summary>
ID
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.CreateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.CreateUser">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.HosName">
<summary>
医院名称
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.ShortName">
<summary>
简称
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.AreaCode">
<summary>
医院区域编码
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.HosLevel">
<summary>
医院等级
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.HosType">
<summary>
医院类型
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.States">
<summary>
医院状态 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsOpenWorkYear">
<summary>
是否开启年资系数 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsOpenDrugprop">
<summary>
是否开启药占比系数 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsOpenIncome">
<summary>
是否开启ICU有效收入系数 1 启用 2 禁用
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospital.IsOpenDirector">
<summary>
是否开启规模/效率绩效 1 启用 2 禁用
</summary>
</member>
<member name="T:Performance.EntityModels.sys_hospitalconfig">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospitalconfig.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospitalconfig.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospitalconfig.DbSource">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospitalconfig.DbName">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospitalconfig.DbUser">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospitalconfig.DbPassword">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_hospitalconfig.Type">
<summary>
1 标准库 2 绩效库
</summary>
</member>
<member name="T:Performance.EntityModels.sys_menu">
<summary>
菜单表
</summary>
</member>
<member name="P:Performance.EntityModels.sys_menu.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_menu.ParentID">
<summary>
父级菜单ID
</summary>
</member>
<member name="P:Performance.EntityModels.sys_menu.MenuName">
<summary>
菜单名称
</summary>
</member>
<member name="P:Performance.EntityModels.sys_menu.MenuUrl">
<summary>
菜单Url
</summary>
</member>
<member name="P:Performance.EntityModels.sys_menu.MenuIcon">
<summary>
菜单图标
</summary>
</member>
<member name="P:Performance.EntityModels.sys_menu.States">
<summary>
菜单状态 1 启用 2禁用
</summary>
</member>
<member name="P:Performance.EntityModels.sys_menu.Sort">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.sys_role">
<summary>
角色表
</summary>
</member>
<member name="P:Performance.EntityModels.sys_role.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_role.RoleName">
<summary>
角色名称
</summary>
</member>
<member name="P:Performance.EntityModels.sys_role.Remark">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_role.States">
<summary>
菜单状态 1 启用 2禁用
</summary>
</member>
<member name="T:Performance.EntityModels.sys_role_menu">
<summary>
角色菜单关联表
</summary>
</member>
<member name="P:Performance.EntityModels.sys_role_menu.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_role_menu.RoleID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_role_menu.MenuID">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.sys_sms">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_sms.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_sms.CreateUser">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_sms.CreateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_sms.Mobile">
<summary>
手机号
</summary>
</member>
<member name="P:Performance.EntityModels.sys_sms.SmsCode">
<summary>
验证码
</summary>
</member>
<member name="P:Performance.EntityModels.sys_sms.Expiration">
<summary>
过期时间
</summary>
</member>
<member name="P:Performance.EntityModels.sys_sms.CodeType">
<summary>
验证码类型 1 登录 2 其他
</summary>
</member>
<member name="T:Performance.EntityModels.sys_task">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.type">
<summary>
1 标准库 2 绩效库
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.table_name">
<summary>
表名
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.upload_sql">
<summary>
导入csv
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.exec_sql">
<summary>
创建临时表
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.export_sql">
<summary>
bcp导入csv
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.delete_sql">
<summary>
删除历史数据
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.end_sql">
<summary>
删除临时表
</summary>
</member>
<member name="P:Performance.EntityModels.sys_task.is_enable">
<summary>
是否有效 1 有效 0 无效
</summary>
</member>
<member name="T:Performance.EntityModels.sys_user">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.CreateDate">
<summary>
创建时间
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.CreateUser">
<summary>
创建人
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.RealName">
<summary>
真实名称
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.Mobile">
<summary>
手机号
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.Login">
<summary>
登录名称
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.Password">
<summary>
密码
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.Mail">
<summary>
邮箱
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.States">
<summary>
用户状态 1启用 2禁用
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.Department">
<summary>
用户科室
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user.IsDelete">
<summary>
删除状态 1可用 2删除
</summary>
</member>
<member name="T:Performance.EntityModels.sys_user_hospital">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user_hospital.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user_hospital.UserID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user_hospital.HospitalID">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.sys_user_role">
<summary>
用户角色关联表
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user_role.ID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user_role.RoleID">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.sys_user_role.UserID">
<summary>
</summary>
</member>
</members>
</doc>
...@@ -6,27 +6,27 @@ ...@@ -6,27 +6,27 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class ApiRequest //public class ApiRequest
{ //{
/// <summary> // /// <summary>
/// 登录后返回登录令牌 // /// 登录后返回登录令牌
/// </summary> // /// </summary>
public string Token { get; set; } // public string Token { get; set; }
/// <summary> // /// <summary>
/// 版本号 v1 // /// 版本号 v1
/// </summary> // /// </summary>
public string Version { get; set; } // public string Version { get; set; }
/// <summary> // /// <summary>
/// 设备号 1 苹果 2 安卓 3 网页 // /// 设备号 1 苹果 2 安卓 3 网页
/// </summary> // /// </summary>
public string Device { get; set; } // public string Device { get; set; }
/// <summary> // /// <summary>
/// App名称 // /// App名称
/// </summary> // /// </summary>
public string AppName { get; set; } // public string AppName { get; set; }
///// <summary> // ///// <summary>
///// 操作用户 // ///// 操作用户
///// </summary> // ///// </summary>
//public Nullable<int> ActiveUID { get; set; } // //public Nullable<int> ActiveUID { get; set; }
} //}
} }
...@@ -20,5 +20,10 @@ public class WebapiUrl ...@@ -20,5 +20,10 @@ public class WebapiUrl
/// 上传文件地址 /// 上传文件地址
/// </summary> /// </summary>
public string ImportFile { get; set; } public string ImportFile { get; set; }
/// <summary>
/// Post请求地址
/// </summary>
public string HttpPost { get; set; }
} }
} }
using AutoMapper; using AutoMapper;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.Infrastructure;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Text;
namespace Performance.DtoModels.AutoMapper namespace Performance.DtoModels.AutoMapper
...@@ -68,56 +70,93 @@ public AutoMapperConfigs() ...@@ -68,56 +70,93 @@ public AutoMapperConfigs()
CreateMap<PerData, im_data>() CreateMap<PerData, im_data>()
.ForMember(dest => dest.IsFactor, opt => opt.MapFrom(src => src.IsFactor ? 1 : 2)) .ForMember(dest => dest.IsFactor, opt => opt.MapFrom(src => src.IsFactor ? 1 : 2))
.ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => src.UnitType == "医生组" ? 1 : (src.UnitType == "护理组" ? 2 : 0))); .ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => EnumHelper.GetItems<UnitType>().FirstOrDefault(t => t.Name == src.UnitType).Value));
CreateMap<im_header, PerHeader>() CreateMap<im_header, PerHeader>()
.ForMember(dest => dest.IsMerge, opt => opt.MapFrom(src => src.IsMerge == 1 ? true : false)); .ForMember(dest => dest.IsMerge, opt => opt.MapFrom(src => src.IsMerge == 1 ? true : false));
CreateMap<im_data, PerData>() CreateMap<im_data, PerData>()
.ForMember(dest => dest.IsFactor, opt => opt.MapFrom(src => src.IsFactor == 1 ? true : false)) .ForMember(dest => dest.IsFactor, opt => opt.MapFrom(src => src.IsFactor == 1 ? true : false))
.ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => src.UnitType == 1 ? "医生组" : (src.UnitType == 2 ? "护理组" : ""))); .ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => EnumHelper.GetItems<UnitType>().FirstOrDefault(t => t.Value == src.UnitType).Name));
CreateMap<PerDataEmployee, im_employee>(); CreateMap<PerDataEmployee, im_employee>();
CreateMap<im_employee, PerDataEmployee>(); CreateMap<im_employee, PerDataEmployee>();
CreateMap<PerDataAccountBaisc, PerDataAccountDoctor>() //CreateMap<PerDataAccountBaisc, PerDataAccount>()
.ForMember(dest => dest.AccountingUnit, opt => opt.MapFrom(src => src.DoctorAccountingUnit)) // .ForMember(dest => dest.AccountingUnit, opt => opt.MapFrom(src => src.AccountingUnit))
.ForMember(dest => dest.Department, opt => opt.MapFrom(src => src.Department)) // .ForMember(dest => dest.Department, opt => opt.MapFrom(src => src.Department))
.ForMember(dest => dest.Number, opt => opt.MapFrom(src => src.DoctorNumber)) // .ForMember(dest => dest.Number, opt => opt.MapFrom(src => src.Number))
.ForMember(dest => dest.BasicFactor, opt => opt.MapFrom(src => src.DoctorBasicFactor)) // .ForMember(dest => dest.BasicFactor, opt => opt.MapFrom(src => src.BasicFactor))
.ForMember(dest => dest.SlopeFactor, opt => opt.MapFrom(src => src.DoctorSlopeFactor)) // .ForMember(dest => dest.SlopeFactor, opt => opt.MapFrom(src => src.SlopeFactor))
.ForMember(dest => dest.OtherPerfor1, opt => opt.MapFrom(src => src.DoctorOtherPerfor1)) // .ForMember(dest => dest.OtherPerfor1, opt => opt.MapFrom(src => src.OtherPerfor1))
.ForMember(dest => dest.OtherPerfor2, opt => opt.MapFrom(src => src.DoctorOtherPerfor2)) // .ForMember(dest => dest.OtherPerfor2, opt => opt.MapFrom(src => src.OtherPerfor2))
.ForMember(dest => dest.Extra, opt => opt.MapFrom(src => src.DoctorExtra)) // .ForMember(dest => dest.Extra, opt => opt.MapFrom(src => src.Extra))
.ForMember(dest => dest.ScoringAverage, opt => opt.MapFrom(src => src.DoctorScoringAverage)) // .ForMember(dest => dest.ScoringAverage, opt => opt.MapFrom(src => src.ScoringAverage))
.ForMember(dest => dest.AdjustFactor, opt => opt.MapFrom(src => src.DoctorAdjustFactor)); // .ForMember(dest => dest.AdjustFactor, opt => opt.MapFrom(src => src.AdjustFactor));
CreateMap<PerDataAccountBaisc, PerDataAccountNurse>() //CreateMap<PerDataAccountBaisc, PerDataAccount>()
.ForMember(dest => dest.AccountingUnit, opt => opt.MapFrom(src => src.NurseAccountingUnit)) // .ForMember(dest => dest.AccountingUnit, opt => opt.MapFrom(src => src.AccountingUnit))
.ForMember(dest => dest.Department, opt => opt.MapFrom(src => src.Department)) // .ForMember(dest => dest.Department, opt => opt.MapFrom(src => src.Department))
.ForMember(dest => dest.Number, opt => opt.MapFrom(src => src.NurseNumber)) // .ForMember(dest => dest.Number, opt => opt.MapFrom(src => src.Number))
.ForMember(dest => dest.BasicFactor, opt => opt.MapFrom(src => src.NurseBasicFactor)) // .ForMember(dest => dest.BasicFactor, opt => opt.MapFrom(src => src.BasicFactor))
.ForMember(dest => dest.SlopeFactor, opt => opt.MapFrom(src => src.NurseSlopeFactor)) // .ForMember(dest => dest.SlopeFactor, opt => opt.MapFrom(src => src.SlopeFactor))
.ForMember(dest => dest.OtherPerfor1, opt => opt.MapFrom(src => src.NurseOtherPerfor1)) // .ForMember(dest => dest.OtherPerfor1, opt => opt.MapFrom(src => src.OtherPerfor1))
.ForMember(dest => dest.OtherPerfor2, opt => opt.MapFrom(src => src.NurseOtherPerfor2)) // .ForMember(dest => dest.OtherPerfor2, opt => opt.MapFrom(src => src.OtherPerfor2))
.ForMember(dest => dest.Extra, opt => opt.MapFrom(src => src.NurseExtra)) // .ForMember(dest => dest.Extra, opt => opt.MapFrom(src => src.Extra))
.ForMember(dest => dest.ScoringAverage, opt => opt.MapFrom(src => src.NurseScoringAverage)) // .ForMember(dest => dest.ScoringAverage, opt => opt.MapFrom(src => src.ScoringAverage))
.ForMember(dest => dest.AdjustFactor, opt => opt.MapFrom(src => src.NurseAdjustFactor)); // .ForMember(dest => dest.AdjustFactor, opt => opt.MapFrom(src => src.AdjustFactor));
CreateMap<PerDataAccountBaisc, im_accountbasic>(); //CreateMap<PerDataAccountBaisc, im_accountbasic>();
CreateMap<im_accountbasic, PerDataAccountBaisc>(); //CreateMap<im_accountbasic, PerDataAccountBaisc>();
CreateMap<PerDataSpecialUnit, im_specialunit>(); CreateMap<PerDataAccountBaisc, im_accountbasic>()
CreateMap<PerDataAccountDoctor, res_accountdoctor>(); .ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => src.UnitType))
CreateMap<res_accountdoctor, PerDataAccount>(); .ForMember(dest => dest.DoctorAccountingUnit, opt => opt.MapFrom(src => src.AccountingUnit))
CreateMap<PerDataAccountNurse, res_accountnurse>(); .ForMember(dest => dest.Department, opt => opt.MapFrom(src => src.Department))
CreateMap<res_accountnurse, PerDataAccount>(); .ForMember(dest => dest.DoctorDirectorNumber, opt => opt.MapFrom(src => src.ManagerNumber))
.ForMember(dest => dest.DoctorNumber, opt => opt.MapFrom(src => src.Number))
.ForMember(dest => dest.DoctorBasicFactor, opt => opt.MapFrom(src => src.BasicFactor))
.ForMember(dest => dest.DoctorSlopeFactor, opt => opt.MapFrom(src => src.SlopeFactor))
.ForMember(dest => dest.DoctorOtherPerfor1, opt => opt.MapFrom(src => src.OtherPerfor1))
.ForMember(dest => dest.DoctorOtherPerfor2, opt => opt.MapFrom(src => src.OtherPerfor2))
.ForMember(dest => dest.DoctorExtra, opt => opt.MapFrom(src => src.Extra))
.ForMember(dest => dest.DoctorScoringAverage, opt => opt.MapFrom(src => src.ScoringAverage))
.ForMember(dest => dest.DoctorAdjustFactor, opt => opt.MapFrom(src => src.AdjustFactor))
.ForMember(dest => dest.DoctorScale, opt => opt.MapFrom(src => src.Scale))
.ForMember(dest => dest.DoctorEffic, opt => opt.MapFrom(src => src.Effic))
.ForMember(dest => dest.DoctorGrant, opt => opt.MapFrom(src => src.Grant));
CreateMap<im_accountbasic, PerDataAccountBaisc>()
.ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => src.UnitType))
.ForMember(dest => dest.AccountingUnit, opt => opt.MapFrom(src => src.DoctorAccountingUnit))
.ForMember(dest => dest.Department, opt => opt.MapFrom(src => src.Department))
.ForMember(dest => dest.ManagerNumber, opt => opt.MapFrom(src => src.DoctorDirectorNumber))
.ForMember(dest => dest.Number, opt => opt.MapFrom(src => src.DoctorNumber))
.ForMember(dest => dest.BasicFactor, opt => opt.MapFrom(src => src.DoctorBasicFactor))
.ForMember(dest => dest.SlopeFactor, opt => opt.MapFrom(src => src.DoctorSlopeFactor))
.ForMember(dest => dest.OtherPerfor1, opt => opt.MapFrom(src => src.DoctorOtherPerfor1))
.ForMember(dest => dest.OtherPerfor2, opt => opt.MapFrom(src => src.DoctorOtherPerfor2))
.ForMember(dest => dest.Extra, opt => opt.MapFrom(src => src.DoctorExtra))
.ForMember(dest => dest.ScoringAverage, opt => opt.MapFrom(src => src.DoctorScoringAverage))
.ForMember(dest => dest.AdjustFactor, opt => opt.MapFrom(src => src.DoctorAdjustFactor))
.ForMember(dest => dest.Scale, opt => opt.MapFrom(src => src.DoctorScale))
.ForMember(dest => dest.Effic, opt => opt.MapFrom(src => src.DoctorEffic))
.ForMember(dest => dest.Grant, opt => opt.MapFrom(src => src.DoctorGrant));
CreateMap<res_accountdoctor, ComputeSource>(); CreateMap<PerDataSpecialUnit, im_specialunit>();
CreateMap<res_accountnurse, ComputeSource>(); //CreateMap<PerDataAccountDoctor, res_accountdoctor>();
//CreateMap<PerDataAccountNurse, res_accountnurse>();
//CreateMap<res_accountdoctor, PerDataAccountBaisc>();
CreateMap<res_account, PerDataAccountBaisc>();
CreateMap<PerDataAccountBaisc, res_account>();
//CreateMap<PerDataAccountBaisc, res_accountnurse>();
//CreateMap<res_accountdoctor, ComputeSource>();
//CreateMap<res_accountnurse, ComputeSource>();
CreateMap<im_employee, ComputeEmployee>(); CreateMap<im_employee, ComputeEmployee>();
CreateMap<ComputeResult, res_compute>(); CreateMap<ComputeResult, res_compute>();
CreateMap<res_accountdoctor, DoctorResponse>(); CreateMap<res_account, DeptResponse>();
CreateMap<res_accountnurse, NurseResponse>(); //CreateMap<res_account, NurseResponse>();
//二次绩效 //二次绩效
......
...@@ -17,9 +17,9 @@ public enum SmsCodeType ...@@ -17,9 +17,9 @@ public enum SmsCodeType
/// <summary> 用户状态 </summary> /// <summary> 用户状态 </summary>
public enum States public enum States
{ {
[Description("登录")] [Description("启用")]
Enabled = 1, Enabled = 1,
[Description("其他")] [Description("禁用")]
Disabled = 2, Disabled = 2,
} }
...@@ -74,5 +74,8 @@ public enum AllotStates ...@@ -74,5 +74,8 @@ public enum AllotStates
/// <summary> 归档 </summary> /// <summary> 归档 </summary>
[Description("归档")] [Description("归档")]
Archive = 8, Archive = 8,
/// <summary> 归档 </summary>
[Description("等待")]
Wait = 9,
} }
} }
...@@ -125,6 +125,8 @@ public class ComputeResult ...@@ -125,6 +125,8 @@ public class ComputeResult
/// </summary> /// </summary>
public decimal? Adjust { get; set; } public decimal? Adjust { get; set; }
public string UnitType { get; set; }
///// <summary> ///// <summary>
///// 工作量绩效 ///// 工作量绩效
///// </summary> ///// </summary>
......
using System; //using System;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Text; //using System.Text;
namespace Performance.DtoModels //namespace Performance.DtoModels
{ //{
public class ComputeSource // public class ComputeSource
{ // {
/// <summary> // /// <summary>
/// 核算单元 // /// 核算单元
/// </summary> // /// </summary>
public string AccountingUnit { get; set; } // public string AccountingUnit { get; set; }
/// <summary> // /// <summary>
/// 核算单元医生数量 // /// 核算单元医生数量
/// </summary> // /// </summary>
public Nullable<decimal> Number { get; set; } // public Nullable<decimal> Number { get; set; }
/// <summary> // /// <summary>
/// 医生基础系数 // /// 医生基础系数
/// </summary> // /// </summary>
public Nullable<decimal> BasicFactor { get; set; } // public Nullable<decimal> BasicFactor { get; set; }
/// <summary> // /// <summary>
/// 倾斜系数 // /// 倾斜系数
/// </summary> // /// </summary>
public Nullable<decimal> SlopeFactor { get; set; } // public Nullable<decimal> SlopeFactor { get; set; }
/// <summary> // /// <summary>
/// 其他绩效1 // /// 其他绩效1
/// </summary> // /// </summary>
public Nullable<decimal> OtherPerfor1 { get; set; } // public Nullable<decimal> OtherPerfor1 { get; set; }
/// <summary> // /// <summary>
/// 其他绩效2 // /// 其他绩效2
/// </summary> // /// </summary>
public Nullable<decimal> OtherPerfor2 { get; set; } // public Nullable<decimal> OtherPerfor2 { get; set; }
/// <summary> // /// <summary>
/// 医院奖罚 // /// 医院奖罚
/// </summary> // /// </summary>
public Nullable<decimal> Extra { get; set; } // public Nullable<decimal> Extra { get; set; }
/// <summary> // /// <summary>
/// 考核对分率 // /// 考核对分率
/// </summary> // /// </summary>
public Nullable<decimal> ScoringAverage { get; set; } // public Nullable<decimal> ScoringAverage { get; set; }
/// <summary> // /// <summary>
/// 调节系数 // /// 调节系数
/// </summary> // /// </summary>
public Nullable<decimal> AdjustFactor { get; set; } // public Nullable<decimal> AdjustFactor { get; set; }
/// <summary> // /// <summary>
/// 科室业绩 // /// 科室业绩
/// </summary> // /// </summary>
public Nullable<decimal> Income { get; set; } // public Nullable<decimal> Income { get; set; }
/// <summary> // /// <summary>
/// 业绩绩效 // /// 业绩绩效
/// </summary> // /// </summary>
public Nullable<decimal> PerforFee { get; set; } // public Nullable<decimal> PerforFee { get; set; }
/// <summary> // /// <summary>
/// 工作量绩效 // /// 工作量绩效
/// </summary> // /// </summary>
public Nullable<decimal> WorkloadFee { get; set; } // public Nullable<decimal> WorkloadFee { get; set; }
/// <summary> // /// <summary>
/// 绩效合计 // /// 绩效合计
/// </summary> // /// </summary>
public Nullable<decimal> PerforTotal { get; set; } // public Nullable<decimal> PerforTotal { get; set; }
/// <summary> // /// <summary>
/// 人均绩效 // /// 人均绩效
/// </summary> // /// </summary>
public Nullable<decimal> Avg { get; set; } // public Nullable<decimal> Avg { get; set; }
/// <summary> // /// <summary>
/// 实发绩效 // /// 实发绩效
/// </summary> // /// </summary>
public Nullable<decimal> GiveFee { get; set; } // public Nullable<decimal> GiveFee { get; set; }
} // }
} //}
...@@ -11,6 +11,18 @@ public enum ExcelVersion ...@@ -11,6 +11,18 @@ public enum ExcelVersion
xls xls
} }
/// <summary> 核算单元类型 </summary>
public enum UnitType
{
[Description("医生组")]
医生组 = 1,
[Description("护理组")]
护理组 = 2,
[Description("医技组")]
医技组 = 3,
}
public enum SheetType public enum SheetType
{ {
/// <summary> 无法识别 </summary> /// <summary> 无法识别 </summary>
...@@ -59,58 +71,6 @@ public enum SheetType ...@@ -59,58 +71,6 @@ public enum SheetType
} }
/// <summary> /// <summary>
/// 绩效类型
/// </summary>
//public enum PerformanceType
//{
// /// <summary> </summary>
// [Description("")]
// Null = 0,
// /// <summary> 绩效基数临床科室主任(专门用来计算科主任绩效,由此产生=>>临床科室主任人均绩效)</summary>
// [Description("绩效基数临床科室主任")]
// StandardDirector = 1,
// /// <summary> 绩效基数临床科室副主任(专门用来计算科主任绩效,由此产生=>>临床科室副主任人均绩效) </summary>
// [Description("绩效基数临床科室副主任")]
// StandardDeputyDirector = 2,
// /// <summary> 绩效基数临床科室护士长(专门用来计算科主任绩效,由此产生=>>临床科室护士长人均绩效) </summary>
// [Description("绩效基数临床科室护士长")]
// StandardNurse = 3,
// /// <summary> 绩效基数医技科室主任(专门用来计算科主任绩效,由此产生=>>医技科室主任人均绩效) </summary>
// [Description("绩效基数医技科室主任")]
// StandardDirectorYJ = 14,
// /// <summary> 临床科室主任人均绩效 (绩效标准取 科室主任人均绩效) </summary>
// [Description("临床科室主任人均绩效")]
// ReferenceDirector = 4,
// /// <summary> 临床科室中层人均绩效 (绩效标准取 科室主任/护士长/科室副主任/医技主任 平均值) </summary>
// [Description("临床科室中层人均绩效")]
// ReferenceDirectorAvg = 5,
// /// <summary> 临床科室护士长人均绩效 (绩效标准取 护士长 平均值)</summary>
// [Description("临床科室护士长人均绩效")]
// ReferenceHeadNurse = 7,
// /// <summary> 临床科室副主任人均绩效 </summary>
// [Description("临床科室副主任人均绩效")]
// ReferenceDeputyDirector = 8,
// /// <summary> 临床科室医生人均绩效 </summary>
// [Description("临床科室医生人均绩效")]
// ReferenceDoctor = 9,
// /// <summary> 临床科室护士人均绩效 </summary>
// [Description("临床科室护士人均绩效")]
// ReferenceNurse = 10,
// /// <summary> 行政工勤人均绩效 </summary>
// [Description("行政工勤人均绩效")]
// LogisticsWorker = 11,
// /// <summary> 行政中层人均绩效 </summary>
// [Description("行政中层人均绩效")]
// MiddleManager = 12,
// /// <summary> 行政高层人均绩效 </summary>
// [Description("行政高层人均绩效")]
// TopManager = 13,
//}
/// <summary>
/// 核算单元类型 /// 核算单元类型
/// </summary> /// </summary>
public enum AccountUnitType public enum AccountUnitType
...@@ -119,11 +79,11 @@ public enum AccountUnitType ...@@ -119,11 +79,11 @@ public enum AccountUnitType
[Description("")] [Description("")]
Null = 1, Null = 1,
/// <summary> 临床科室 </summary> /// <summary> 临床科室 </summary>
[Description("临床科室")] [Description("科主任")]
临床科室 = 2, 科主任 = 2,
/// <summary> 临床科室 </summary> /// <summary> 临床科室 </summary>
[Description("医技科室")] [Description("护士长")]
医技科室 = 3, 护士长 = 3,
/// <summary> 行政高层 </summary> /// <summary> 行政高层 </summary>
[Description("行政高层")] [Description("行政高层")]
行政高层 = 4, 行政高层 = 4,
...@@ -166,15 +126,29 @@ public enum PerforType ...@@ -166,15 +126,29 @@ public enum PerforType
} }
/// <summary> /// <summary>
/// 当前枚举为效率绩效、规模绩效中系数中文名称 /// 保底绩效
/// 对应表cof_director中JobTitle 全文字匹配
/// </summary> /// </summary>
public enum DirectorType public enum MinimumType
{ {
临床科室主任, [Description("保底绩效临床医生人均绩效")]
临床科室副主任, 保底临床医生 = 1,
医技科室主任, [Description("保底绩效医技医生人均绩效")]
医技科室副主任, 保底医技医生 = 2,
临床科室护士长, [Description("保底绩效护士人均绩效")]
保底护士 = 3,
} }
///// <summary>
///// 当前枚举为效率绩效、规模绩效中系数中文名称
///// 对应表cof_director中JobTitle 全文字匹配
///// </summary>
//public enum DirectorType
//{
// 临床科室主任,
// 临床科室副主任,
// 医技科室主任,
// 医技科室副主任,
// 临床科室护士长,
//}
} }
using System; //using System;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Text; //using System.Text;
namespace Performance.DtoModels //namespace Performance.DtoModels
{ //{
public class PerDataAccount : IPerData // public class PerDataAccount : IPerData
{ // {
/// <summary> // public int UnitType;
/// 核算单元
/// </summary> // /// <summary>
public string AccountingUnit { get; set; } // /// 核算单元
// /// </summary>
/// <summary> // public string AccountingUnit { get; set; }
/// 科室
/// </summary> // /// <summary>
public string Department { get; set; } // /// 科室
// /// </summary>
/// <summary> // public string Department { get; set; }
/// 核算单元医生数量
/// </summary> // /// <summary>
public Nullable<decimal> Number { get; set; } // /// 核算单元医生数量
// /// </summary>
/// <summary> // public Nullable<decimal> Number { get; set; }
/// 医生基础系数
/// </summary> // /// <summary>
public Nullable<decimal> BasicFactor { get; set; } // /// 医生基础系数
// /// </summary>
/// <summary> // public Nullable<decimal> BasicFactor { get; set; }
/// 倾斜系数
/// </summary> // /// <summary>
public Nullable<decimal> SlopeFactor { get; set; } // /// 倾斜系数
// /// </summary>
/// <summary> // public Nullable<decimal> SlopeFactor { get; set; }
/// 其他绩效1
/// </summary> // /// <summary>
public Nullable<decimal> OtherPerfor1 { get; set; } // /// 其他绩效1
// /// </summary>
/// <summary> // public Nullable<decimal> OtherPerfor1 { get; set; }
/// 其他绩效2
/// </summary> // /// <summary>
public Nullable<decimal> OtherPerfor2 { get; set; } // /// 其他绩效2
// /// </summary>
/// <summary> // public Nullable<decimal> OtherPerfor2 { get; set; }
/// 医院奖罚
/// </summary> // /// <summary>
public Nullable<decimal> Extra { get; set; } // /// 医院奖罚
// /// </summary>
/// <summary> // public Nullable<decimal> Extra { get; set; }
/// 考核对分率
/// </summary> // /// <summary>
public Nullable<decimal> ScoringAverage { get; set; } // /// 考核对分率
// /// </summary>
/// <summary> // public Nullable<decimal> ScoringAverage { get; set; }
/// 调节系数
/// </summary> // /// <summary>
public Nullable<decimal> AdjustFactor { get; set; } // /// 调节系数
// /// </summary>
/// <summary> // public Nullable<decimal> AdjustFactor { get; set; }
/// 科室业绩
/// </summary> // /// <summary>
public Nullable<decimal> Income { get; set; } // /// 科室业绩
// /// </summary>
/// <summary> // public Nullable<decimal> Income { get; set; }
/// 业绩绩效
/// </summary> // /// <summary>
public Nullable<decimal> PerforFee { get; set; } // /// 业绩绩效
// /// </summary>
/// <summary> // public Nullable<decimal> PerforFee { get; set; }
/// 工作量绩效
/// </summary> // /// <summary>
public Nullable<decimal> WorkloadFee { get; set; } // /// 工作量绩效
// /// </summary>
/// <summary> // public Nullable<decimal> WorkloadFee { get; set; }
/// 绩效合计
/// </summary> // /// <summary>
public Nullable<decimal> PerforTotal { get; set; } // /// 绩效合计
// /// </summary>
/// <summary> // public Nullable<decimal> PerforTotal { get; set; }
/// 人均绩效
/// </summary> // /// <summary>
public Nullable<decimal> Avg { get; set; } // /// 人均绩效
// /// </summary>
/// <summary> // public Nullable<decimal> Avg { get; set; }
/// 实发绩效
/// </summary> // /// <summary>
public Nullable<decimal> RealGiveFee { get; set; } // /// 实发绩效
} // /// </summary>
} // public Nullable<decimal> RealGiveFee { get; set; }
// }
//}
...@@ -7,14 +7,26 @@ namespace Performance.DtoModels ...@@ -7,14 +7,26 @@ namespace Performance.DtoModels
public class PerDataAccountBaisc : IPerData public class PerDataAccountBaisc : IPerData
{ {
/// <summary> /// <summary>
/// 核算单元(医生组) /// 行号
/// </summary>
public int RowNumber { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
#region EXCEL读取
/// <summary>
/// 核算单元类别 1 医生组 2护理组 3医技组
/// </summary> /// </summary>
public string DoctorAccountingUnit { get; set; } public Nullable<int> UnitType { get; set; }
/// <summary> /// <summary>
/// 核算单元(护理组) /// 核算单元
/// </summary> /// </summary>
public string NurseAccountingUnit { get; set; } public string AccountingUnit { get; set; }
/// <summary> /// <summary>
/// 科室名称 /// 科室名称
...@@ -22,125 +34,113 @@ public class PerDataAccountBaisc : IPerData ...@@ -22,125 +34,113 @@ public class PerDataAccountBaisc : IPerData
public string Department { get; set; } public string Department { get; set; }
/// <summary> /// <summary>
/// 科主任数量 /// 科主任/护士长数量
/// </summary> /// </summary>
public decimal DoctorDirectorNumber { get; set; } public decimal ManagerNumber { get; set; }
/// <summary> /// <summary>
/// 核算单元医生数量 /// 核算单元医生数量
/// </summary> /// </summary>
public decimal DoctorNumber { get; set; } public decimal Number { get; set; }
/// <summary> /// <summary>
/// 医生基础系数 /// 医生基础系数
/// </summary> /// </summary>
public decimal DoctorBasicFactor { get; set; } public decimal BasicFactor { get; set; }
/// <summary> /// <summary>
/// 倾斜系数 /// 倾斜系数
/// </summary> /// </summary>
public decimal DoctorSlopeFactor { get; set; } public decimal SlopeFactor { get; set; }
/// <summary> /// <summary>
/// 其他绩效1 /// 其他绩效1
/// </summary> /// </summary>
public decimal DoctorOtherPerfor1 { get; set; } public decimal OtherPerfor1 { get; set; }
/// <summary> /// <summary>
/// 其他绩效2 /// 其他绩效2
/// </summary> /// </summary>
public decimal DoctorOtherPerfor2 { get; set; } public decimal OtherPerfor2 { get; set; }
/// <summary> /// <summary>
/// 医院奖罚 /// 医院奖罚
/// </summary> /// </summary>
public decimal DoctorExtra { get; set; } public decimal Extra { get; set; }
/// <summary> /// <summary>
/// 考核对分率 /// 考核对分率
/// </summary> /// </summary>
public decimal DoctorScoringAverage { get; set; } public decimal ScoringAverage { get; set; }
/// <summary> /// <summary>
/// 调节系数 /// 调节系数
/// </summary> /// </summary>
public decimal DoctorAdjustFactor { get; set; } public decimal AdjustFactor { get; set; }
/// <summary> /// <summary>
/// 护士长人 /// 规模绩效系
/// </summary> /// </summary>
public decimal NurseHeadNumber { get; set; } public decimal Scale { get; set; }
/// <summary> /// <summary>
/// 核算单元护士数量 /// 效率绩效系数
/// </summary> /// </summary>
public decimal NurseNumber { get; set; } public decimal Effic { get; set; }
/// <summary> /// <summary>
/// 护理基础系数 /// 发放系数
/// </summary> /// </summary>
public decimal NurseBasicFactor { get; set; } public decimal Grant { get; set; }
/// <summary> /// <summary>
/// 护理倾斜系数 /// 保底绩效参考标准
/// </summary> /// </summary>
public decimal NurseSlopeFactor { get; set; } public string MinimumReference { get; set; }
/// <summary> /// <summary>
/// 其他绩效1 /// 保底绩效系数
/// </summary> /// </summary>
public decimal NurseOtherPerfor1 { get; set; } public Nullable<decimal> MinimumFactor { get; set; }
#endregion
/// <summary>
/// 其他绩效2
/// </summary>
public decimal NurseOtherPerfor2 { get; set; }
#region 由计算得出
/// <summary> /// <summary>
/// 医院奖罚 /// 保底绩效金额
/// </summary> /// </summary>
public decimal NurseExtra { get; set; } public Nullable<decimal> MinimumFee { get; set; }
/// <summary> /// <summary>
/// 考核对分率 /// 科室业绩
/// </summary>
public decimal NurseScoringAverage { get; set; }
/// <summary>
/// 调节系数
/// </summary> /// </summary>
public decimal NurseAdjustFactor { get; set; } public Nullable<decimal> Income { get; set; }
/// <summary>
/// 行号
/// </summary>
public int RowNumber { get; set; }
/// <summary> /// <summary>
/// 规模绩效系数 /// 业绩绩效
/// </summary> /// </summary>
public Nullable<decimal> DoctorScale { get; set; } public Nullable<decimal> PerforFee { get; set; }
/// <summary> /// <summary>
/// 效率绩效系数 /// 工作量绩效
/// </summary> /// </summary>
public Nullable<decimal> DoctorEffic { get; set; } public Nullable<decimal> WorkloadFee { get; set; }
/// <summary> /// <summary>
/// 发放系数 /// 绩效合计
/// </summary> /// </summary>
public Nullable<decimal> DoctorGrant { get; set; } public Nullable<decimal> PerforTotal { get; set; }
/// <summary> /// <summary>
/// 规模绩效系数 /// 人均绩效
/// </summary> /// </summary>
public Nullable<decimal> NurseScale { get; set; } public Nullable<decimal> Avg { get; set; }
/// <summary> /// <summary>
/// 效率绩效系数 /// 实发绩效
/// </summary> /// </summary>
public Nullable<decimal> NurseEffic { get; set; } public Nullable<decimal> RealGiveFee { get; set; }
/// <summary> #endregion
/// 发放系数
/// </summary>
public Nullable<decimal> NurseGrant { get; set; }
} }
} }
using System; //using System;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Text; //using System.Text;
namespace Performance.DtoModels //namespace Performance.DtoModels
{ //{
public class PerDataAccountDoctor : IPerData // public class PerDataAccountDoctor : IPerData
{ // {
/// <summary> // public int UnitType { get; set; }
/// 核算单元 // /// <summary>
/// </summary> // /// 核算单元
public string AccountingUnit { get; set; } // /// </summary>
// public string AccountingUnit { get; set; }
/// <summary> // /// <summary>
/// 科室名称 // /// 科室名称
/// </summary> // /// </summary>
public string Department { get; set; } // public string Department { get; set; }
/// <summary> // /// <summary>
/// 核算单元医生数量 // /// 核算单元医生数量
/// </summary> // /// </summary>
public decimal Number { get; set; } // public decimal Number { get; set; }
/// <summary> // /// <summary>
/// 医生基础系数 // /// 医生基础系数
/// </summary> // /// </summary>
public decimal BasicFactor { get; set; } // public decimal BasicFactor { get; set; }
/// <summary> // /// <summary>
/// 倾斜系数 // /// 倾斜系数
/// </summary> // /// </summary>
public decimal SlopeFactor { get; set; } // public decimal SlopeFactor { get; set; }
/// <summary> // /// <summary>
/// 其他绩效1 // /// 其他绩效1
/// </summary> // /// </summary>
public decimal OtherPerfor1 { get; set; } // public decimal OtherPerfor1 { get; set; }
/// <summary> // /// <summary>
/// 其他绩效2 // /// 其他绩效2
/// </summary> // /// </summary>
public decimal OtherPerfor2 { get; set; } // public decimal OtherPerfor2 { get; set; }
/// <summary> // /// <summary>
/// 医院奖罚 // /// 医院奖罚
/// </summary> // /// </summary>
public decimal Extra { get; set; } // public decimal Extra { get; set; }
/// <summary> // /// <summary>
/// 考核对分率 // /// 考核对分率
/// </summary> // /// </summary>
public decimal ScoringAverage { get; set; } // public decimal ScoringAverage { get; set; }
/// <summary> // /// <summary>
/// 调节系数 // /// 调节系数
/// </summary> // /// </summary>
public decimal AdjustFactor { get; set; } // public decimal AdjustFactor { get; set; }
/// <summary> // /// <summary>
/// 科室业绩 // /// 科室业绩
/// </summary> // /// </summary>
public decimal Income { get; set; } // public decimal Income { get; set; }
/// <summary> // /// <summary>
/// 工作量绩效 // /// 工作量绩效
/// </summary> // /// </summary>
public decimal WorkloadFee { get; set; } // public decimal WorkloadFee { get; set; }
/// <summary> // /// <summary>
/// 绩效合计 // /// 绩效合计
/// </summary> // /// </summary>
public decimal PerforTotal { get; set; } // public decimal PerforTotal { get; set; }
/// <summary> // /// <summary>
/// 业绩绩效 // /// 业绩绩效
/// </summary> // /// </summary>
public decimal PerforFee { get; set; } // public decimal PerforFee { get; set; }
/// <summary> // /// <summary>
/// 实发绩效 // /// 实发绩效
/// </summary> // /// </summary>
public decimal RealGiveFee { get; set; } // public decimal RealGiveFee { get; set; }
/// <summary> // /// <summary>
/// 人均绩效 // /// 人均绩效
/// </summary> // /// </summary>
public decimal Avg { get; set; } // public decimal Avg { get; set; }
} // }
} //}
using System; //using System;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Text; //using System.Text;
namespace Performance.DtoModels //namespace Performance.DtoModels
{ //{
public class PerDataAccountNurse : IPerData // public class PerDataAccountNurse : IPerData
{ // {
/// <summary> // public int UnitType { get; set; }
/// 核算单元 // /// <summary>
/// </summary> // /// 核算单元
public string AccountingUnit { get; set; } // /// </summary>
// public string AccountingUnit { get; set; }
/// <summary> // /// <summary>
/// 科室名称 // /// 科室名称
/// </summary> // /// </summary>
public string Department { get; set; } // public string Department { get; set; }
/// <summary> // /// <summary>
/// 核算单元护士数量 // /// 核算单元护士数量
/// </summary> // /// </summary>
public decimal Number { get; set; } // public decimal Number { get; set; }
/// <summary> // /// <summary>
/// 护理基础系数 // /// 护理基础系数
/// </summary> // /// </summary>
public decimal BasicFactor { get; set; } // public decimal BasicFactor { get; set; }
/// <summary> // /// <summary>
/// 护理倾斜系数 // /// 护理倾斜系数
/// </summary> // /// </summary>
public decimal SlopeFactor { get; set; } // public decimal SlopeFactor { get; set; }
/// <summary> // /// <summary>
/// 其他绩效1 // /// 其他绩效1
/// </summary> // /// </summary>
public decimal OtherPerfor1 { get; set; } // public decimal OtherPerfor1 { get; set; }
/// <summary> // /// <summary>
/// 其他绩效2 // /// 其他绩效2
/// </summary> // /// </summary>
public decimal OtherPerfor2 { get; set; } // public decimal OtherPerfor2 { get; set; }
/// <summary> // /// <summary>
/// 医院奖罚 // /// 医院奖罚
/// </summary> // /// </summary>
public decimal Extra { get; set; } // public decimal Extra { get; set; }
/// <summary> // /// <summary>
/// 考核对分率 // /// 考核对分率
/// </summary> // /// </summary>
public decimal ScoringAverage { get; set; } // public decimal ScoringAverage { get; set; }
/// <summary> // /// <summary>
/// 调节系数 // /// 调节系数
/// </summary> // /// </summary>
public decimal AdjustFactor { get; set; } // public decimal AdjustFactor { get; set; }
/// <summary> // /// <summary>
/// 科室业绩 // /// 科室业绩
/// </summary> // /// </summary>
public decimal Income { get; set; } // public decimal Income { get; set; }
/// <summary> // /// <summary>
/// 工作量绩效 // /// 工作量绩效
/// </summary> // /// </summary>
public decimal WorkloadFee { get; set; } // public decimal WorkloadFee { get; set; }
/// <summary> // /// <summary>
/// 绩效合计 // /// 绩效合计
/// </summary> // /// </summary>
public decimal PerforTotal { get; set; } // public decimal PerforTotal { get; set; }
/// <summary> // /// <summary>
/// 业绩绩效 // /// 业绩绩效
/// </summary> // /// </summary>
public decimal PerforFee { get; set; } // public decimal PerforFee { get; set; }
/// <summary> // /// <summary>
/// 实发绩效 // /// 实发绩效
/// </summary> // /// </summary>
public decimal RealGiveFee { get; set; } // public decimal RealGiveFee { get; set; }
/// <summary> // /// <summary>
/// 人均绩效 // /// 人均绩效
/// </summary> // /// </summary>
public decimal Avg { get; set; } // public decimal Avg { get; set; }
} // }
} //}
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>..\Performance.Api\wwwroot\Performance.DtoModels.xml</DocumentationFile>
<NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="PerExcel\PerComputeData.cs" /> <Compile Remove="PerExcel\PerComputeData.cs" />
</ItemGroup> </ItemGroup>
......
...@@ -8,7 +8,7 @@ namespace Performance.DtoModels ...@@ -8,7 +8,7 @@ namespace Performance.DtoModels
/// <summary> /// <summary>
/// 二次分配请求 /// 二次分配请求
/// </summary> /// </summary>
public class AgainAllotRequest : ApiRequest public class AgainAllotRequest
{ {
/// <summary> /// <summary>
/// 二次分配ID /// 二次分配ID
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class AllotRequest : ApiRequest public class AllotRequest
{ {
public int ID { get; set; } public int ID { get; set; }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class AssessColumnRequest : ApiRequest public class AssessColumnRequest
{ {
public int ColumnID { get; set; } public int ColumnID { get; set; }
public int AssessID { get; set; } public int AssessID { get; set; }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class AssessDataRequest : ApiRequest public class AssessDataRequest
{ {
public int AssessID { get; set; } public int AssessID { get; set; }
public List<AssessRow> AssessRow { get; set; } public List<AssessRow> AssessRow { get; set; }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class AssessRequest : ApiRequest public class AssessRequest
{ {
public int AssessID { get; set; } public int AssessID { get; set; }
public int AllotID { get; set; } public int AllotID { get; set; }
......
using System; using FluentValidation;
using FluentValidation; using System;
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class CofAgainRequest: ApiRequest public class CofAgainRequest
{ {
public int ID { get; set; } public int ID { get; set; }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class ComputerRequest : ApiRequest public class ComputerRequest
{ {
/// <summary> /// <summary>
/// 绩效数据id /// 绩效数据id
......
...@@ -8,7 +8,7 @@ namespace Performance.DtoModels ...@@ -8,7 +8,7 @@ namespace Performance.DtoModels
/// <summary> /// <summary>
/// 查看科室绩效详情 /// 查看科室绩效详情
/// </summary> /// </summary>
public class DeptDetailRequest : ApiRequest public class DeptDetailRequest
{ {
/// <summary> /// <summary>
/// 绩效id /// 绩效id
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class DirectorRequest : ApiRequest public class DirectorRequest
{ {
public int ID { get; set; } public int ID { get; set; }
public int AllotID { get; set; } public int AllotID { get; set; }
/// <summary> /// <summary>
/// 科室 /// 科室
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class DrugpropRequest : ApiRequest public class DrugpropRequest
{ {
public int ID { get; set; } public int ID { get; set; }
......
...@@ -8,7 +8,7 @@ namespace Performance.DtoModels ...@@ -8,7 +8,7 @@ namespace Performance.DtoModels
/// <summary> /// <summary>
/// 登录请求 /// 登录请求
/// </summary> /// </summary>
public class HospitalRequest : ApiRequest public class HospitalRequest
{ {
public int ID { get; set; } public int ID { get; set; }
/// <summary> /// <summary>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class IncomeRequest : ApiRequest public class IncomeRequest
{ {
public int ID { get; set; } public int ID { get; set; }
......
...@@ -8,7 +8,7 @@ namespace Performance.DtoModels ...@@ -8,7 +8,7 @@ namespace Performance.DtoModels
/// <summary> /// <summary>
/// 登录请求 /// 登录请求
/// </summary> /// </summary>
public class LoginRequest : ApiRequest public class LoginRequest
{ {
/// <summary> /// <summary>
/// 登录类型 1 手机号登录 2 账号登录 /// 登录类型 1 手机号登录 2 账号登录
...@@ -16,6 +16,8 @@ public class LoginRequest : ApiRequest ...@@ -16,6 +16,8 @@ public class LoginRequest : ApiRequest
public int LoginType { get; set; } public int LoginType { get; set; }
public string Account { get; set; } public string Account { get; set; }
public string Password { get; set; } public string Password { get; set; }
public string AppName { get; set; }
public string Device { get; set; }
} }
public class LoginRequestValidator : AbstractValidator<LoginRequest> public class LoginRequestValidator : AbstractValidator<LoginRequest>
......
using Performance.EntityModels;
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class ModItemRequest
{
/// <summary>
///
/// </summary>
public Nullable<int> ModuleId { get; set; }
/// <summary>
/// 绩效考核项id
/// </summary>
public Nullable<int> ItemId { get; set; }
/// <summary>
/// 绩效考核项
/// </summary>
public string ItemName { get; set; }
}
public class ItemListRequest
{
/// <summary> 方案Id </summary>
public Nullable<int> ModuleId { get; set; }
/// <summary> 新增项 </summary>
public List<mod_item> Items { get; set; }
}
}
using FluentValidation;
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class ModModuleRequest
{
/// <summary> 绩效模块Id </summary>
public Nullable<int> ModuleId { get; set; }
/// <summary> 医院Id </summary>
public Nullable<int> HospitalId { get; set; }
public Nullable<int> ExtractId { 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>
/// 当前脚本类型 1 收入整表 2 单项数据提取
/// </summary>
public List<int> ExecuteType { get; set; }
public int PageNum { get; set; }
public int PageSize { get; set; }
}
public class ModModuleRequestValidator : AbstractValidator<ModModuleRequest>
{
public ModModuleRequestValidator()
{
RuleSet("Query", () =>
{
RuleFor(x => x.HospitalId).NotNull().NotEmpty().GreaterThan(0);
});
RuleSet("Add", () =>
{
RuleFor(x => x.HospitalId).NotNull().GreaterThan(0);
RuleFor(x => x.ModuleName).NotNull().NotEmpty();
RuleFor(x => x.SheetType).NotNull().NotEmpty();
});
RuleSet("Edit", () =>
{
RuleFor(x => x.ModuleId).NotNull().NotEmpty().GreaterThan(0);
});
}
}
}
using Performance.EntityModels;
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class ModSpecialRequest
{
/// <summary> 医院Id </summary>
public Nullable<int> HospitalId { get; set; }
/// <summary> 特殊考核项Id </summary>
public Nullable<int> SpecialId { get; set; }
}
public class SpecialListRequest
{
/// <summary> 医院Id </summary>
public int HospitalId { get; set; }
/// <summary> 特殊考核项 </summary>
public List<mod_special> Items { get; set; }
}
}
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class PasswordRequest : ApiRequest public class PasswordRequest
{ {
/// <summary> /// <summary>
/// 原始密码 /// 原始密码
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class PositionRequest : ApiRequest public class PositionRequest
{ {
public int ID { get; set; } public int ID { get; set; }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class ReportRequest : ApiRequest public class ReportRequest
{ {
public int HospitalId { get; set; } public int HospitalId { get; set; }
......
...@@ -8,7 +8,7 @@ namespace Performance.DtoModels ...@@ -8,7 +8,7 @@ namespace Performance.DtoModels
/// <summary> /// <summary>
/// 登录请求 /// 登录请求
/// </summary> /// </summary>
public class SetDepartmentRequest : ApiRequest public class SetDepartmentRequest
{ {
public int HospitalID { get; set; } public int HospitalID { get; set; }
} }
......
...@@ -8,7 +8,7 @@ namespace Performance.DtoModels ...@@ -8,7 +8,7 @@ namespace Performance.DtoModels
/// <summary> /// <summary>
/// sheet数据详情请求 /// sheet数据详情请求
/// </summary> /// </summary>
public class SheetExportRequest : ApiRequest public class SheetExportRequest
{ {
public int SheetID { get; set; } public int SheetID { get; set; }
......
...@@ -8,7 +8,7 @@ namespace Performance.DtoModels ...@@ -8,7 +8,7 @@ namespace Performance.DtoModels
/// <summary> /// <summary>
/// sheet页列表请求 /// sheet页列表请求
/// </summary> /// </summary>
public class SheetRequest : ApiRequest public class SheetRequest
{ {
public int AllotID { get; set; } public int AllotID { get; set; }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
namespace Performance.DtoModels.Request namespace Performance.DtoModels.Request
{ {
public class SmsCodeRequest : ApiRequest public class SmsCodeRequest
{ {
/// <summary> /// <summary>
/// 短信验证类型 1 手机号登录 2 其他 /// 短信验证类型 1 手机号登录 2 其他
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class UserRequest : ApiRequest public class UserRequest
{ {
public int ID { get; set; } public int ID { get; set; }
/// <summary> /// <summary>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class WorkyearRequest : ApiRequest public class WorkyearRequest
{ {
public int ID { get; set; } public int ID { get; set; }
......
...@@ -6,7 +6,7 @@ namespace Performance.DtoModels ...@@ -6,7 +6,7 @@ namespace Performance.DtoModels
{ {
public class DeptDetailResponse public class DeptDetailResponse
{ {
public PerDataAccount Pandect { get; set; } public PerDataAccountBaisc Pandect { get; set; }
public List<DeptDetail> Economic { get; set; } public List<DeptDetail> Economic { get; set; }
public List<DeptDetail> Workload { get; set; } public List<DeptDetail> Workload { get; set; }
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
public class DoctorResponse public class DeptResponse
{ {
/// <summary> /// <summary>
/// ///
...@@ -21,6 +21,8 @@ public class DoctorResponse ...@@ -21,6 +21,8 @@ public class DoctorResponse
/// </summary> /// </summary>
public Nullable<int> SheetID { get; set; } public Nullable<int> SheetID { get; set; }
public int UnitType { get; set; }
/// <summary> /// <summary>
/// 分组名称(医生、护士) /// 分组名称(医生、护士)
/// </summary> /// </summary>
...@@ -52,6 +54,21 @@ public class DoctorResponse ...@@ -52,6 +54,21 @@ public class DoctorResponse
public Nullable<decimal> SlopeFactor { get; set; } public Nullable<decimal> SlopeFactor { get; set; }
/// <summary> /// <summary>
/// 保底绩效参考标准
/// </summary>
public string MinimumReference { get; set; }
/// <summary>
/// 保底绩效系数
/// </summary>
public Nullable<decimal> MinimumFactor { get; set; }
/// <summary>
/// 保底绩效金额
/// </summary>
public Nullable<decimal> MinimumFee { get; set; }
/// <summary>
/// 其他绩效1 /// 其他绩效1
/// </summary> /// </summary>
public Nullable<decimal> OtherPerfor1 { get; set; } public Nullable<decimal> OtherPerfor1 { get; set; }
...@@ -105,5 +122,10 @@ public class DoctorResponse ...@@ -105,5 +122,10 @@ public class DoctorResponse
/// 实发绩效 /// 实发绩效
/// </summary> /// </summary>
public Nullable<decimal> RealGiveFee { get; set; } public Nullable<decimal> RealGiveFee { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class ModFeeResponse
{
public int Total { get; set; }
public int PageSize { get; set; }
public int PageNum { get; set; }
public List<TitleValue> Data { get; set; }
}
}
...@@ -12,103 +12,105 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -12,103 +12,105 @@ 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_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_header> ag_header { get; set; } public virtual DbSet<ag_header> ag_header { 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_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> 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_workyear> cof_workyear { get; set; } public virtual DbSet<cof_workyear> cof_workyear { get; set; }
/// <summary> <summary> /// <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_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> 医院数据提取脚本 <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> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的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<res_accountdoctor> res_accountdoctor { get; set; } public virtual DbSet<res_account> res_account { get; set; }
/// <summary> 护理科室核算结果 <summary> ///// <summary> 医生科室核算结果 </summary>
public virtual DbSet<res_accountnurse> res_accountnurse { get; set; } //public virtual DbSet<res_accountdoctor> res_accountdoctor { get; set; }
/// <summary> 核算基础标准 <summary> ///// <summary> 护理科室核算结果 </summary>
//public virtual DbSet<res_accountnurse> res_accountnurse { get; set; }
/// <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; }
} }
} }
...@@ -32,6 +32,11 @@ public class im_accountbasic ...@@ -32,6 +32,11 @@ public class im_accountbasic
public Nullable<int> SheetID { get; set; } public Nullable<int> SheetID { get; set; }
/// <summary> /// <summary>
/// 核算单元类别 1 医生组 2护理组 3医技组
/// </summary>
public Nullable<int> UnitType { get; set; }
/// <summary>
/// 核算单元(医生组) /// 核算单元(医生组)
/// </summary> /// </summary>
public string DoctorAccountingUnit { get; set; } public string DoctorAccountingUnit { get; set; }
...@@ -107,6 +112,16 @@ public class im_accountbasic ...@@ -107,6 +112,16 @@ public class im_accountbasic
public Nullable<decimal> DoctorAdjustFactor { get; set; } public Nullable<decimal> DoctorAdjustFactor { get; set; }
/// <summary> /// <summary>
/// 保底绩效参考标准
/// </summary>
public string MinimumReference { get; set; }
/// <summary>
/// 保底绩效系数
/// </summary>
public Nullable<decimal> MinimumFactor { get; set; }
/// <summary>
/// 护士长人数 /// 护士长人数
/// </summary> /// </summary>
public Nullable<decimal> NurseHeadNumber { get; set; } public Nullable<decimal> NurseHeadNumber { get; set; }
......
...@@ -32,7 +32,7 @@ public class im_data ...@@ -32,7 +32,7 @@ public class im_data
public Nullable<int> SheetID { get; set; } public Nullable<int> SheetID { get; set; }
/// <summary> /// <summary>
/// 核算单元类别 1 医生组 2护理组 /// 核算单元类别 1 医生组 2护理组 3医技组
/// </summary> /// </summary>
public Nullable<int> UnitType { get; set; } public Nullable<int> UnitType { get; set; }
......
...@@ -47,6 +47,11 @@ public class mod_item ...@@ -47,6 +47,11 @@ public class mod_item
public Nullable<decimal> FactorValue3 { get; set; } public Nullable<decimal> FactorValue3 { get; set; }
/// <summary> /// <summary>
/// 医技系数
/// </summary>
public Nullable<decimal> FactorValue3 { get; set; }
/// <summary>
/// 抽取绩效值SQL /// 抽取绩效值SQL
/// </summary> /// </summary>
public Nullable<int> ExtractId { get; set; } public Nullable<int> ExtractId { get; set; }
...@@ -55,5 +60,10 @@ public class mod_item ...@@ -55,5 +60,10 @@ public class mod_item
/// 用户选定抽取范围 /// 用户选定抽取范围
/// </summary> /// </summary>
public string SelectionRange { get; set; } public string SelectionRange { get; set; }
/// <summary>
/// 只读 0、否 1、是
/// </summary>
public Nullable<int> ReadOnly { get; set; }
} }
} }
...@@ -45,5 +45,15 @@ public class mod_module ...@@ -45,5 +45,15 @@ public class mod_module
/// 提取脚本ID /// 提取脚本ID
/// </summary> /// </summary>
public Nullable<int> ExtractId { get; set; } 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; }
} }
} }
...@@ -62,7 +62,7 @@ public class per_allot ...@@ -62,7 +62,7 @@ public class per_allot
public Nullable<DateTime> UploadDate { get; set; } public Nullable<DateTime> UploadDate { get; set; }
/// <summary> /// <summary>
/// 0 数据未上传 1 数据已上传 2 正在校验数据 3 数据验证通过 4 数据错误 5 正在生成绩效 6 绩效结果解析成功 7 绩效解析失败 8 归档 /// 0 数据未上传 1 数据已上传 2 正在校验数据 3 数据验证通过 4 数据错误 5 正在生成绩效 6 绩效结果解析成功 7 绩效解析失败 8 归档 9 等待生成
/// </summary> /// </summary>
public int States { get; set; } public int States { get; set; }
......
//-----------------------------------------------------------------------
// <copyright file=" per_item.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("per_item")]
public class per_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 string FactorValue2 { get; set; }
/// <summary>
/// 抽取绩效值SQL
/// </summary>
public Nullable<int> ExtractId { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" per_module.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("per_module")]
public class per_module
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
///
/// </summary>
public Nullable<int> HospitalId { get; set; }
/// <summary>
///
/// </summary>
public string ModuleName { get; set; }
/// <summary>
///
/// </summary>
public string Description { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" per_special.cs">
// * FileName: .cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("per_special")]
public class per_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; }
}
}
using System; //-----------------------------------------------------------------------
using System.Collections.Generic; // <copyright file=" res_account.cs">
using System.Text; // * FileName: 科室核算结果.cs
// </copyright>
namespace Performance.DtoModels //-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{ {
public class NurseResponse /// <summary>
/// 科室核算结果
/// </summary>
[Table("res_account")]
public class res_account
{ {
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public int ID { get; set; } [Key]
public int ID { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> AllotID { get; set; } public Nullable<int> AllotID { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> SheetID { get; set; } public Nullable<int> SheetID { get; set; }
/// <summary> /// <summary>
/// 分组名称(医生、护士) /// 核算单元类型 1 医生组 2 护理组 3 医技组
/// </summary> /// </summary>
public string UnitName { get; set; } public Nullable<int> UnitType { get; set; }
/// <summary> /// <summary>
/// 核算单元 /// 核算单元
/// </summary> /// </summary>
public string AccountingUnit { get; set; } public string AccountingUnit { get; set; }
/// <summary> /// <summary>
/// 科室 /// 科室
/// </summary> /// </summary>
public string Department { get; set; } public string Department { get; set; }
/// <summary>
/// 科主任/护士长数量
/// </summary>
public Nullable<int> ManagerNumber { get; set; }
/// <summary> /// <summary>
/// 护士人数 /// 核算单元医生数量
/// </summary> /// </summary>
public Nullable<decimal> Number { get; set; } public Nullable<decimal> Number { get; set; }
/// <summary> /// <summary>
/// 护理基础系数 /// 医生基础系数
/// </summary> /// </summary>
public Nullable<decimal> BasicFactor { get; set; } public Nullable<decimal> BasicFactor { get; set; }
/// <summary> /// <summary>
/// 倾斜系数 /// 倾斜系数
/// </summary> /// </summary>
public Nullable<decimal> SlopeFactor { get; set; } public Nullable<decimal> SlopeFactor { get; set; }
/// <summary>
/// 保底绩效参考标准
/// </summary>
public string MinimumReference { get; set; }
/// <summary>
/// 保底绩效系数
/// </summary>
public Nullable<decimal> MinimumFactor { get; set; }
/// <summary>
/// 保底绩效金额
/// </summary>
public Nullable<decimal> MinimumFee { get; set; }
/// <summary> /// <summary>
/// 其他绩效1 /// 其他绩效1
/// </summary> /// </summary>
public Nullable<decimal> OtherPerfor1 { get; set; } public Nullable<decimal> OtherPerfor1 { get; set; }
/// <summary> /// <summary>
/// 其他绩效2 /// 其他绩效2
/// </summary> /// </summary>
public Nullable<decimal> OtherPerfor2 { get; set; } public Nullable<decimal> OtherPerfor2 { get; set; }
/// <summary> /// <summary>
/// 医院奖罚 /// 医院奖罚
/// </summary> /// </summary>
public Nullable<decimal> Extra { get; set; } public Nullable<decimal> Extra { get; set; }
/// <summary> /// <summary>
/// 考核对分率 /// 考核对分率
/// </summary> /// </summary>
public Nullable<decimal> ScoringAverage { get; set; } public Nullable<decimal> ScoringAverage { get; set; }
/// <summary> /// <summary>
/// 调节系数 /// 调节系数
/// </summary> /// </summary>
public Nullable<decimal> AdjustFactor { get; set; } public Nullable<decimal> AdjustFactor { get; set; }
/// <summary> /// <summary>
/// 科室业绩 /// 科室业绩
/// </summary> /// </summary>
public Nullable<decimal> Income { get; set; } public Nullable<decimal> Income { get; set; }
/// <summary> /// <summary>
/// 业绩绩效 /// 业绩绩效
/// </summary> /// </summary>
public Nullable<decimal> PerforFee { get; set; } public Nullable<decimal> PerforFee { get; set; }
/// <summary> /// <summary>
/// 工作量绩效 /// 工作量绩效
/// </summary> /// </summary>
public Nullable<decimal> WorkloadFee { get; set; } public Nullable<decimal> WorkloadFee { get; set; }
/// <summary> /// <summary>
/// 绩效合计 /// 绩效合计
/// </summary> /// </summary>
public Nullable<decimal> PerforTotal { get; set; } public Nullable<decimal> PerforTotal { get; set; }
/// <summary> /// <summary>
/// 人均绩效 /// 人均绩效
/// </summary> /// </summary>
public Nullable<decimal> Avg { get; set; } public Nullable<decimal> Avg { get; set; }
/// <summary> /// <summary>
/// 实发绩效 /// 实发绩效
/// </summary> /// </summary>
public Nullable<decimal> RealGiveFee { get; set; } public Nullable<decimal> RealGiveFee { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 变更日志
/// </summary>
public string ChangeLog { get; set; }
} }
} }
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" res_accountdoctor.cs"> //// <copyright file=" res_accountdoctor.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("res_accountdoctor")] // [Table("res_accountdoctor")]
public class res_accountdoctor // public class res_accountdoctor
{ // {
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Key] // [Key]
public int ID { get; set; } // public int ID { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> AllotID { get; set; } // public Nullable<int> AllotID { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> SheetID { get; set; } // public Nullable<int> SheetID { get; set; }
/// <summary> // /// <summary>
/// 核算单元 // /// 核算单元
/// </summary> // /// </summary>
public string AccountingUnit { get; set; } // public string AccountingUnit { get; set; }
/// <summary> // /// <summary>
/// 科室 // /// 科室
/// </summary> // /// </summary>
public string Department { get; set; } // public string Department { get; set; }
/// <summary> // /// <summary>
/// 核算单元医生数量 // /// 科主任/护士长数量
/// </summary> // /// </summary>
public Nullable<decimal> Number { get; set; } // public Nullable<int> ManagerNumber { get; set; }
/// <summary> // /// <summary>
/// 医生基础系数 // /// 核算单元医生数量
/// </summary> // /// </summary>
public Nullable<decimal> BasicFactor { get; set; } // public Nullable<decimal> Number { get; set; }
/// <summary> // /// <summary>
/// 倾斜系数 // /// 医生基础系数
/// </summary> // /// </summary>
public Nullable<decimal> SlopeFactor { get; set; } // public Nullable<decimal> BasicFactor { get; set; }
/// <summary> // /// <summary>
/// 其他绩效1 // /// 倾斜系数
/// </summary> // /// </summary>
public Nullable<decimal> OtherPerfor1 { get; set; } // public Nullable<decimal> SlopeFactor { get; set; }
/// <summary> // /// <summary>
/// 其他绩效2 // /// 其他绩效1
/// </summary> // /// </summary>
public Nullable<decimal> OtherPerfor2 { get; set; } // public Nullable<decimal> OtherPerfor1 { get; set; }
/// <summary> // /// <summary>
/// 医院奖罚 // /// 其他绩效2
/// </summary> // /// </summary>
public Nullable<decimal> Extra { get; set; } // public Nullable<decimal> OtherPerfor2 { get; set; }
/// <summary> // /// <summary>
/// 考核对分率 // /// 医院奖罚
/// </summary> // /// </summary>
public Nullable<decimal> ScoringAverage { get; set; } // public Nullable<decimal> Extra { get; set; }
/// <summary> // /// <summary>
/// 调节系数 // /// 考核对分率
/// </summary> // /// </summary>
public Nullable<decimal> AdjustFactor { get; set; } // public Nullable<decimal> ScoringAverage { get; set; }
/// <summary> // /// <summary>
/// 科室业绩 // /// 调节系数
/// </summary> // /// </summary>
public Nullable<decimal> Income { get; set; } // public Nullable<decimal> AdjustFactor { get; set; }
/// <summary> // /// <summary>
/// 业绩绩效 // /// 科室业绩
/// </summary> // /// </summary>
public Nullable<decimal> PerforFee { get; set; } // public Nullable<decimal> Income { get; set; }
/// <summary> // /// <summary>
/// 工作量绩效 // /// 业绩绩效
/// </summary> // /// </summary>
public Nullable<decimal> WorkloadFee { get; set; } // public Nullable<decimal> PerforFee { get; set; }
/// <summary> // /// <summary>
/// 绩效合计 // /// 工作量绩效
/// </summary> // /// </summary>
public Nullable<decimal> PerforTotal { get; set; } // public Nullable<decimal> WorkloadFee { get; set; }
/// <summary> // /// <summary>
/// 人均绩效 // /// 绩效合计
/// </summary> // /// </summary>
public Nullable<decimal> Avg { get; set; } // public Nullable<decimal> PerforTotal { get; set; }
/// <summary> // /// <summary>
/// 实发绩效 // /// 人均绩效
/// </summary> // /// </summary>
public Nullable<decimal> RealGiveFee { get; set; } // public Nullable<decimal> Avg { get; set; }
/// <summary> // /// <summary>
/// 变更日志 // /// 实发绩效
/// </summary> // /// </summary>
public string ChangeLog { get; set; } // public Nullable<decimal> RealGiveFee { get; set; }
}
} // /// <summary>
// /// 变更日志
// /// </summary>
// public string ChangeLog { get; set; }
// }
//}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" res_accountnurse.cs"> //// <copyright file=" res_accountnurse.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("res_accountnurse")] // [Table("res_accountnurse")]
public class res_accountnurse // public class res_accountnurse
{ // {
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
[Key] // [Key]
public int ID { get; set; } // public int ID { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> AllotID { get; set; } // public Nullable<int> AllotID { get; set; }
/// <summary> // /// <summary>
/// // ///
/// </summary> // /// </summary>
public Nullable<int> SheetID { get; set; } // public Nullable<int> SheetID { get; set; }
/// <summary> // /// <summary>
/// 核算单元 // /// 核算单元
/// </summary> // /// </summary>
public string AccountingUnit { get; set; } // public string AccountingUnit { get; set; }
/// <summary> // /// <summary>
/// 科室 // /// 科室
/// </summary> // /// </summary>
public string Department { get; set; } // public string Department { get; set; }
/// <summary> // /// <summary>
/// 护士人数 // /// 科主任/护士长数量
/// </summary> // /// </summary>
public Nullable<decimal> Number { get; set; } // public Nullable<int> ManagerNumber { get; set; }
/// <summary> // /// <summary>
/// 护理基础系数 // /// 护士人数
/// </summary> // /// </summary>
public Nullable<decimal> BasicFactor { get; set; } // public Nullable<decimal> Number { get; set; }
/// <summary> // /// <summary>
/// 倾斜系数 // /// 护理基础系数
/// </summary> // /// </summary>
public Nullable<decimal> SlopeFactor { get; set; } // public Nullable<decimal> BasicFactor { get; set; }
/// <summary> // /// <summary>
/// 其他绩效1 // /// 倾斜系数
/// </summary> // /// </summary>
public Nullable<decimal> OtherPerfor1 { get; set; } // public Nullable<decimal> SlopeFactor { get; set; }
/// <summary> // /// <summary>
/// 其他绩效2 // /// 其他绩效1
/// </summary> // /// </summary>
public Nullable<decimal> OtherPerfor2 { get; set; } // public Nullable<decimal> OtherPerfor1 { get; set; }
/// <summary> // /// <summary>
/// 医院奖罚 // /// 其他绩效2
/// </summary> // /// </summary>
public Nullable<decimal> Extra { get; set; } // public Nullable<decimal> OtherPerfor2 { get; set; }
/// <summary> // /// <summary>
/// 考核对分率 // /// 医院奖罚
/// </summary> // /// </summary>
public Nullable<decimal> ScoringAverage { get; set; } // public Nullable<decimal> Extra { get; set; }
/// <summary> // /// <summary>
/// 调节系数 // /// 考核对分率
/// </summary> // /// </summary>
public Nullable<decimal> AdjustFactor { get; set; } // public Nullable<decimal> ScoringAverage { get; set; }
/// <summary> // /// <summary>
/// 科室业绩 // /// 调节系数
/// </summary> // /// </summary>
public Nullable<decimal> Income { get; set; } // public Nullable<decimal> AdjustFactor { get; set; }
/// <summary> // /// <summary>
/// 业绩绩效 // /// 科室业绩
/// </summary> // /// </summary>
public Nullable<decimal> PerforFee { get; set; } // public Nullable<decimal> Income { get; set; }
/// <summary> // /// <summary>
/// 工作量绩效 // /// 业绩绩效
/// </summary> // /// </summary>
public Nullable<decimal> WorkloadFee { get; set; } // public Nullable<decimal> PerforFee { get; set; }
/// <summary> // /// <summary>
/// 绩效合计 // /// 工作量绩效
/// </summary> // /// </summary>
public Nullable<decimal> PerforTotal { get; set; } // public Nullable<decimal> WorkloadFee { get; set; }
/// <summary> // /// <summary>
/// 人均绩效 // /// 绩效合计
/// </summary> // /// </summary>
public Nullable<decimal> Avg { get; set; } // public Nullable<decimal> PerforTotal { get; set; }
/// <summary> // /// <summary>
/// 实发绩效 // /// 人均绩效
/// </summary> // /// </summary>
public Nullable<decimal> RealGiveFee { get; set; } // public Nullable<decimal> Avg { get; set; }
}
} // /// <summary>
// /// 实发绩效
// /// </summary>
// public Nullable<decimal> RealGiveFee { get; set; }
// }
//}
...@@ -4,6 +4,11 @@ ...@@ -4,6 +4,11 @@
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>..\Performance.Api\wwwroot\Performance.EntityModels.xml</DocumentationFile>
<NoWarn>1701;1702;1591</NoWarn>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="T4Template\**" /> <Compile Remove="T4Template\**" />
<EmbeddedResource Remove="T4Template\**" /> <EmbeddedResource Remove="T4Template\**" />
......
...@@ -35,7 +35,7 @@ namespace Performance.EntityModels ...@@ -35,7 +35,7 @@ namespace Performance.EntityModels
foreach(Entity entity in entities) foreach(Entity entity in entities)
{ {
#> #>
/// <summary> <#= entity.EntityComment #> <summary> /// <summary> <#= entity.EntityComment #> </summary>
public virtual DbSet<<#= entity.EntityName #>> <#= entity.EntityName #> { get; set; } public virtual DbSet<<#= entity.EntityName #>> <#= entity.EntityName #> { get; set; }
<# <#
} }
......
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels;
using Performance.Infrastructure;
using Performance.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Performance.Extract.Api.Controllers
{
[Route("api/[controller]")]
public class ModExtractController : Controller
{
private ModExtractService modExtractService;
public ModExtractController(ModExtractService modExtractService)
{
this.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 不存在,请重新选择!");
if (request.ExecuteType == null || !request.ExecuteType.Any())
return new ApiResponse(ResponseType.ParameterError, "ExecuteType 不存在,请重新选择!");
var list = modExtractService.ExtractScheme(request.HospitalId.Value, request.ExecuteType);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 费用类型
/// </summary>
/// <returns></returns>
[Route("type")]
[HttpPost]
public ApiResponse FeeType()
{
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 参数错误!");
LogHelper.Information($"绩效考核项费用来源:{JsonHelper.Serialize(request)}", "请求参数");
var list = modExtractService.FeeSource(request);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 绩效收入模板配置项列表
/// </summary>
/// <returns></returns>
[Route("items")]
[HttpPost]
public ApiResponse Items([FromBody]ModItemRequest request)
{
LogHelper.Information($"绩效收入模板配置项列表:{JsonHelper.Serialize(request)}", "请求参数");
modExtractService.AddItems(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK);
}
}
}
\ No newline at end of file
...@@ -25,6 +25,7 @@ public int DeleteData(int allotId) ...@@ -25,6 +25,7 @@ public int DeleteData(int allotId)
"im_header", "im_header",
"im_specialunit", "im_specialunit",
"per_sheet", "per_sheet",
"res_account",
"res_accountdoctor", "res_accountdoctor",
"res_accountnurse", "res_accountnurse",
"res_baiscnorm", "res_baiscnorm",
......
//-----------------------------------------------------------------------
// <copyright file=" im_data.cs">
// * FileName: im_data.cs
// </copyright>
//-----------------------------------------------------------------------
using Performance.EntityModels;
using System;
using System.Collections.Generic;
namespace Performance.Repository
{
/// <summary>
/// im_data Repository
/// </summary>
public partial class PerforImdataRepository : PerforRepository<im_data>
{
/// <summary>
/// 获取核算单元
/// </summary>
/// <param name="deptList">科室列表</param>
/// <param name="hospitalid">医院id</param>
/// <param name="sheetType">sheet模板类型</param>
/// <returns></returns>
public IEnumerable<im_data> GetAccountingUnit(int hospitalid, int sheettype, List<string> deptList)
{
string sql = "select distinct im.accountingUnit,im.department,im.unittype from im_data im " +
"inner join per_allot allot on im.AllotID = allot.ID " +
"inner join per_sheet sheet on im.SheetID = sheet.ID " +
"where allot.hospitalid = @hospitalid and sheet.sheettype = @sheettype and im.department in @deptList";
return DapperQuery(sql, new { hospitalid, sheettype, deptList }, 1000 * 60 * 5);
}
}
}
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Performance.DtoModels\Performance.DtoModels.csproj" />
<ProjectReference Include="..\Performance.EntityModels\Performance.EntityModels.csproj" /> <ProjectReference Include="..\Performance.EntityModels\Performance.EntityModels.csproj" />
</ItemGroup> </ItemGroup>
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
// </copyright> // </copyright>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
using System; using System;
using System.Collections.Generic;
using Performance.EntityModels; using Performance.EntityModels;
namespace Performance.Repository namespace Performance.Repository
...@@ -14,24 +13,8 @@ namespace Performance.Repository ...@@ -14,24 +13,8 @@ namespace Performance.Repository
/// </summary> /// </summary>
public partial class PerforImdataRepository : PerforRepository<im_data> public partial class PerforImdataRepository : PerforRepository<im_data>
{ {
public PerforImdataRepository(PerformanceDbContext context) : base(context) public PerforImdataRepository(PerformanceDbContext context) : base(context)
{ {
} }
/// <summary>
/// 获取核算单元
/// </summary>
/// <param name="deptList">科室列表</param>
/// <param name="hospitalid">医院id</param>
/// <param name="sheetType">sheet模板类型</param>
/// <returns></returns>
public IEnumerable<im_data> GetAccountingUnit(int hospitalid, int sheettype, List<string> deptList)
{
string sql = "select distinct im.accountingUnit,im.department,im.unittype from im_data im " +
"inner join per_allot allot on im.AllotID = allot.ID " +
"inner join per_sheet sheet on im.SheetID = sheet.ID " +
"where allot.hospitalid = @hospitalid and sheet.sheettype = @sheettype and im.department in @deptList";
return DapperQuery(sql, new { hospitalid, sheettype, deptList }, 1000 * 60 * 5);
}
} }
} }
//-----------------------------------------------------------------------
// <copyright file=" res_account.cs">
// * FileName: res_account.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// res_account Repository
/// </summary>
public partial class PerforResaccountRepository : PerforRepository<res_account>
{
public PerforResaccountRepository(PerformanceDbContext context) : base(context)
{
}
}
}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" res_accountdoctor.cs"> //// <copyright file=" res_accountdoctor.cs">
// * FileName: res_accountdoctor.cs //// * FileName: res_accountdoctor.cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using Performance.EntityModels; //using Performance.EntityModels;
namespace Performance.Repository //namespace Performance.Repository
{ //{
/// <summary> // /// <summary>
/// res_accountdoctor Repository // /// res_accountdoctor Repository
/// </summary> // /// </summary>
public partial class PerforResaccountdoctorRepository : PerforRepository<res_accountdoctor> // public partial class PerforResaccountdoctorRepository : PerforRepository<res_accountdoctor>
{ // {
public PerforResaccountdoctorRepository(PerformanceDbContext context) : base(context) // public PerforResaccountdoctorRepository(PerformanceDbContext context) : base(context)
{ // {
} // }
} // }
} //}
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
// <copyright file=" res_accountnurse.cs"> //// <copyright file=" res_accountnurse.cs">
// * FileName: res_accountnurse.cs //// * FileName: res_accountnurse.cs
// </copyright> //// </copyright>
//----------------------------------------------------------------------- ////-----------------------------------------------------------------------
using System; //using System;
using Performance.EntityModels; //using Performance.EntityModels;
namespace Performance.Repository //namespace Performance.Repository
{ //{
/// <summary> // /// <summary>
/// res_accountnurse Repository // /// res_accountnurse Repository
/// </summary> // /// </summary>
public partial class PerforResaccountnurseRepository : PerforRepository<res_accountnurse> // public partial class PerforResaccountnurseRepository : PerforRepository<res_accountnurse>
{ // {
public PerforResaccountnurseRepository(PerformanceDbContext context) : base(context) // public PerforResaccountnurseRepository(PerformanceDbContext context) : base(context)
{ // {
} // }
} // }
} //}
...@@ -15,11 +15,12 @@ public class AgainAllotService : IAutoInjection ...@@ -15,11 +15,12 @@ public class AgainAllotService : IAutoInjection
{ {
private Application application; private Application application;
private AgainService againService; private AgainService againService;
private RoleService roleService;
private ConfigService configService; private ConfigService configService;
private PerforCofagainRepository perforCofagainRepository; private PerforCofagainRepository perforCofagainRepository;
private PerforPeragainallotRepository perforPeragainallotRepository; private PerforPeragainallotRepository perforPeragainallotRepository;
private PerforResaccountdoctorRepository perforResaccountdoctorRepository; private PerforResaccountRepository perforResaccountRepository;
private PerforResaccountnurseRepository perforResaccountnurseRepository; //private PerforResaccountnurseRepository perforResaccountnurseRepository;
private PerforUserRepository perforUserRepository; private PerforUserRepository perforUserRepository;
private PerforUserhospitalRepository perforUserhospitalRepository; private PerforUserhospitalRepository perforUserhospitalRepository;
private PerforPerallotRepository perforPerallotRepository; private PerforPerallotRepository perforPerallotRepository;
...@@ -30,10 +31,11 @@ public class AgainAllotService : IAutoInjection ...@@ -30,10 +31,11 @@ public class AgainAllotService : IAutoInjection
private PerforAgheaderRepository perforAgheaderRepository; private PerforAgheaderRepository perforAgheaderRepository;
public AgainAllotService(IOptions<Application> options, AgainService againService, public AgainAllotService(IOptions<Application> options, AgainService againService,
RoleService roleService,
PerforCofagainRepository perforCofagainRepository, PerforCofagainRepository perforCofagainRepository,
PerforPeragainallotRepository perforPeragainallotRepository, PerforPeragainallotRepository perforPeragainallotRepository,
PerforResaccountdoctorRepository perforResaccountdoctorRepository, PerforResaccountRepository perforResaccountRepository,
PerforResaccountnurseRepository perforResaccountnurseRepository, //PerforResaccountnurseRepository perforResaccountnurseRepository,
PerforUserRepository perforUserRepository, PerforUserRepository perforUserRepository,
PerforUserhospitalRepository perforUserhospitalRepository, PerforUserhospitalRepository perforUserhospitalRepository,
PerforPerallotRepository perforPerallotRepository, PerforPerallotRepository perforPerallotRepository,
...@@ -45,10 +47,11 @@ public class AgainAllotService : IAutoInjection ...@@ -45,10 +47,11 @@ public class AgainAllotService : IAutoInjection
{ {
this.application = options.Value; this.application = options.Value;
this.againService = againService; this.againService = againService;
this.roleService = roleService;
this.perforCofagainRepository = perforCofagainRepository; this.perforCofagainRepository = perforCofagainRepository;
this.perforPeragainallotRepository = perforPeragainallotRepository; this.perforPeragainallotRepository = perforPeragainallotRepository;
this.perforResaccountdoctorRepository = perforResaccountdoctorRepository; this.perforResaccountRepository = perforResaccountRepository;
this.perforResaccountnurseRepository = perforResaccountnurseRepository; //this.perforResaccountnurseRepository = perforResaccountnurseRepository;
this.perforUserRepository = perforUserRepository; this.perforUserRepository = perforUserRepository;
this.perforUserhospitalRepository = perforUserhospitalRepository; this.perforUserhospitalRepository = perforUserhospitalRepository;
this.perforPerallotRepository = perforPerallotRepository; this.perforPerallotRepository = perforPerallotRepository;
...@@ -65,12 +68,14 @@ public class AgainAllotService : IAutoInjection ...@@ -65,12 +68,14 @@ public class AgainAllotService : IAutoInjection
/// 生成二次绩效 /// 生成二次绩效
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
public bool Generate(AgainAllotRequest request, UserIdentity user) public bool Generate(AgainAllotRequest request, int userId, string department)
{ {
var againAllot = perforPeragainallotRepository.GetEntity(t => t.ID == request.AgainAllotID); var againAllot = perforPeragainallotRepository.GetEntity(t => t.ID == request.AgainAllotID);
if (againAllot == null || againAllot.ID == 0) if (againAllot == null || againAllot.ID == 0)
throw new PerformanceException("绩效二次分配不存在"); throw new PerformanceException("绩效二次分配不存在");
var roles = roleService.GetRole(userId);
perforPeragainallotRepository.Update(againAllot, p => { p.States = 2; }); perforPeragainallotRepository.Update(againAllot, p => { p.States = 2; });
//清理二次绩效无用数据 //清理二次绩效无用数据
...@@ -86,15 +91,15 @@ public bool Generate(AgainAllotRequest request, UserIdentity user) ...@@ -86,15 +91,15 @@ public bool Generate(AgainAllotRequest request, UserIdentity user)
decimal? basicnumber = 0m; decimal? basicnumber = 0m;
//获取科室实发绩效 //获取科室实发绩效
if (user.Role != null) if (roles != null)
{ {
var role = user.Role.FirstOrDefault(); var role = roles.FirstOrDefault();
if (role != null) if (role != null)
{ {
if (application.NurseRole == role.RoleID) if (application.NurseRole == role.ID)
basicnumber = perforResaccountnurseRepository.GetEntity(t => t.AllotID == againAllot.AllotID && t.AccountingUnit == user.Department)?.RealGiveFee; basicnumber = perforResaccountRepository.GetEntity(t => t.UnitType == (int)UnitType.护理组 && t.AllotID == againAllot.AllotID && t.AccountingUnit == department)?.RealGiveFee;
else if (application.DirectorRole == role.RoleID) else if (application.DirectorRole == role.ID)
basicnumber = perforResaccountdoctorRepository.GetEntity(t => t.AllotID == againAllot.AllotID && t.AccountingUnit == user.Department)?.RealGiveFee; basicnumber = perforResaccountRepository.GetEntity(t => t.UnitType != (int)UnitType.护理组 && t.AllotID == againAllot.AllotID && t.AccountingUnit == department)?.RealGiveFee;
} }
} }
#endregion #endregion
...@@ -302,7 +307,7 @@ public bool Generate(AgainAllotRequest request, UserIdentity user) ...@@ -302,7 +307,7 @@ public bool Generate(AgainAllotRequest request, UserIdentity user)
/// <param name="request"></param> /// <param name="request"></param>
/// <param name="user"></param> /// <param name="user"></param>
/// <returns></returns> /// <returns></returns>
public (SheetExportResponse SheetExport, PerAgainSituation AgainSituation) Detail(AgainAllotRequest request, UserIdentity user) public (SheetExportResponse SheetExport, PerAgainSituation AgainSituation) Detail(AgainAllotRequest request)
{ {
var againAllot = perforPeragainallotRepository.GetEntity(t => t.ID == request.AgainAllotID); var againAllot = perforPeragainallotRepository.GetEntity(t => t.ID == request.AgainAllotID);
if (againAllot == null || againAllot.ID == 0) if (againAllot == null || againAllot.ID == 0)
......
...@@ -19,37 +19,27 @@ public class BaiscNormService : IAutoInjection ...@@ -19,37 +19,27 @@ public class BaiscNormService : IAutoInjection
/// </summary> /// </summary>
/// <param name="computes"></param> /// <param name="computes"></param>
/// <returns></returns> /// <returns></returns>
public List<res_baiscnorm> ComputeAvg(List<res_baiscnorm> baiscnormList, List<im_accountbasic> accountbasicList, public List<res_baiscnorm> ComputeAvg(List<res_baiscnorm> baiscnormList, List<im_accountbasic> accountbasicList, List<ComputeResult> computes)
List<ComputeResult> computes, List<im_employee> empolyeeList)
{ {
var keyList = new[] var keyList = new[]
{ {
//绩效基数平均值项目 //绩效基数平均值项目
new { type = AccountUnitType.临床科室, reference = PerforType.临床主任 }, new { Reference = PerforType.临床主任 , UnitType = UnitType.医生组},
new { type = AccountUnitType.临床科室, reference = PerforType.护士长 }, new { Reference = PerforType.护士长, UnitType = UnitType.护理组 },
new { type = AccountUnitType.医技科室, reference = PerforType.医技主任 }, new { Reference = PerforType.医技主任, UnitType = UnitType.医技组 },
//new { type = AccountUnitType.临床科室, reference = PerforType.临床副主任 },
//new { type = AccountUnitType.医技科室, reference = PerforType.医技副主任 },
}; };
foreach (var item in keyList) foreach (var item in keyList)
{ {
var accountingUnitList = empolyeeList.Where(t => t.AccountType == item.type.ToString()).Select(t => t.AccountingUnit).ToList(); var count = accountbasicList.Where(t => t.UnitType == (int)item.UnitType).Sum(t => t.DoctorDirectorNumber);
if (accountingUnitList.Any()) var dataList = computes.Where(t => t.UnitType == item.UnitType.ToString());
var baiscnorm = new res_baiscnorm
{ {
var count = (item.reference == PerforType.护士长) PositionName = EnumHelper.GetDescription(item.Reference),
? accountbasicList.Where(t => accountingUnitList.Contains(t.NurseAccountingUnit)).Sum(t => t.NurseHeadNumber) TotelNumber = count,
: accountbasicList.Where(t => accountingUnitList.Contains(t.DoctorAccountingUnit)).Sum(t => t.DoctorDirectorNumber); TotelValue = dataList?.Sum(t => t.GiveFee),
AvgValue = dataList?.Sum(t => t.GiveFee) / count
var dataList = computes.Where(t => t.AccountType == item.type.ToString() && t.FitPeople == EnumHelper.GetDescription(item.reference)); };
var baiscnorm = new res_baiscnorm baiscnormList.Add(baiscnorm);
{
PositionName = EnumHelper.GetDescription(item.reference),
TotelNumber = count,
TotelValue = dataList.Sum(t => t.GiveFee),
AvgValue = dataList.Sum(t => t.GiveFee) / count
};
baiscnormList.Add(baiscnorm);
}
} }
return baiscnormList; return baiscnormList;
} }
...@@ -118,47 +108,32 @@ public List<res_baiscnorm> ComputeOtherAvg(List<res_baiscnorm> baiscnormList, Li ...@@ -118,47 +108,32 @@ public List<res_baiscnorm> ComputeOtherAvg(List<res_baiscnorm> baiscnormList, Li
/// </summary> /// </summary>
/// <param name="list"></param> /// <param name="list"></param>
/// <returns></returns> /// <returns></returns>
public List<res_baiscnorm> DocterNurseBaiscnorm(List<res_baiscnorm> baiscnormList, List<im_accountbasic> accountbasicList, public List<res_baiscnorm> DocterNurseBaiscnorm(List<res_baiscnorm> baiscnormList, List<im_accountbasic> accountbasicList, List<PerSheet> list)
List<PerSheet> list, List<im_employee> empolyeeList)
{ {
// 护士 var pairs = new[]
var sheetNurse = list.FirstOrDefault(t => t.SheetType == SheetType.ComputeNurseAccount);
var perdataNurse = sheetNurse.PerData.Select(t => (PerDataAccountNurse)t);
perdataNurse = perdataNurse.GroupBy(t => t.AccountingUnit)
.Select(t => new PerDataAccountNurse
{
AccountingUnit = t.Key,
Number = t.Sum(p => p.Number),
PerforTotal = t.Max(p => p.PerforTotal)
});
var baiscnormNurse = new res_baiscnorm
{ {
PositionName = EnumHelper.GetDescription(PerforType.护士), new { SheetType = SheetType.ComputeDoctorAccount, UnitType = UnitType.医生组, PerforType = PerforType.临床医生 },
TotelNumber = perdataNurse.Sum(t => t.Number), new { SheetType = SheetType.ComputeDoctorAccount, UnitType = UnitType.医技组, PerforType = PerforType.医技医生 },
TotelValue = perdataNurse.Sum(t => t.PerforTotal), new { SheetType = SheetType.ComputeNurseAccount, UnitType = UnitType.护理组, PerforType = PerforType.护士 },
AvgValue = perdataNurse.Sum(t => t.PerforTotal) / perdataNurse.Sum(t => t.Number)
}; };
baiscnormList.Add(baiscnormNurse); foreach (var info in pairs)
// 医生
var accountingUnitList = empolyeeList.Where(t => t.AccountType == AccountUnitType.临床科室.ToString()).Select(t => t.AccountingUnit).ToList();
var count = accountbasicList.Where(t => accountingUnitList.Contains(t.DoctorAccountingUnit)).Sum(t => t.DoctorNumber + t.DoctorDirectorNumber);
var sheetDocter = list.FirstOrDefault(t => t.SheetType == SheetType.ComputeDoctorAccount);
var perdataDocter = sheetDocter.PerData.Select(t => (PerDataAccountDoctor)t);
//剔除不同科室相同核算单元
perdataDocter = perdataDocter.Where(t => accountingUnitList.Contains(t.AccountingUnit)).GroupBy(t => t.AccountingUnit)
.Select(t => new PerDataAccountDoctor { AccountingUnit = t.Key, PerforTotal = t.Max(p => p.PerforTotal) });
var baiscnormDocter = new res_baiscnorm
{ {
PositionName = EnumHelper.GetDescription(PerforType.临床医生), var sheet = list.FirstOrDefault(t => t.SheetType == info.SheetType);
TotelNumber = count, var perData = sheet.PerData.Select(t => (PerDataAccountBaisc)t);
TotelValue = perdataDocter.Sum(t => t.PerforTotal), //剔除不同科室相同核算单元
AvgValue = perdataDocter.Sum(t => t.PerforTotal) / count var groupData = perData.Where(t => t.UnitType == (int)info.UnitType)
}; .GroupBy(t => t.AccountingUnit)
baiscnormList.Add(baiscnormDocter); .Select(t => new { AccountingUnit = t.Key, Number = t.Sum(p => p.ManagerNumber + p.Number), PerforTotal = t.Max(p => p.PerforTotal) });
var baiscnorm = new res_baiscnorm
{
PositionName = EnumHelper.GetDescription(info.PerforType),
TotelNumber = groupData.Sum(t => t.Number),
TotelValue = groupData.Sum(t => t.PerforTotal),
AvgValue = groupData.Sum(t => t.PerforTotal) / groupData.Sum(t => t.Number)
};
baiscnormList.Add(baiscnorm);
}
return baiscnormList; return baiscnormList;
} }
} }
......
...@@ -204,7 +204,7 @@ public bool CheckData(PerExcel excel, per_allot allot) ...@@ -204,7 +204,7 @@ public bool CheckData(PerExcel excel, per_allot allot)
var dataList = sheet.PerData.Select(t => (PerDataAccountBaisc)t); var dataList = sheet.PerData.Select(t => (PerDataAccountBaisc)t);
foreach (var item in dataList) foreach (var item in dataList)
{ {
if (string.IsNullOrEmpty(item.DoctorAccountingUnit) && string.IsNullOrEmpty(item.NurseAccountingUnit)) if (string.IsNullOrEmpty(item.AccountingUnit))
{ {
flag = false; flag = false;
rowNumber.Add(item.RowNumber + 1); rowNumber.Add(item.RowNumber + 1);
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository; using Performance.Repository;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -21,8 +22,8 @@ public class ProcessComputService : IAutoInjection ...@@ -21,8 +22,8 @@ public class ProcessComputService : IAutoInjection
private PerforImdataRepository perforImDataRepository; private PerforImdataRepository perforImDataRepository;
private PerforImheaderRepository perforImHeaderRepository; private PerforImheaderRepository perforImHeaderRepository;
private PerforImemployeeRepository perforImEmployeeRepository; private PerforImemployeeRepository perforImEmployeeRepository;
private PerforResaccountdoctorRepository perforResAccountdoctorRepository; private PerforResaccountRepository perforResaccountRepository;
private PerforResaccountnurseRepository perforResAccountnurseRepository; private PerforResbaiscnormRepository perforResbaiscnormRepository;
private PerforCofdrugtypeRepository perforCofdrugtypeRepository; private PerforCofdrugtypeRepository perforCofdrugtypeRepository;
public ProcessComputService(PerforCofincomeRepository perforCofincomeRepository, public ProcessComputService(PerforCofincomeRepository perforCofincomeRepository,
PerforCofdrugpropRepository perforCofdrugpropRepository, PerforCofdrugpropRepository perforCofdrugpropRepository,
...@@ -30,8 +31,8 @@ public class ProcessComputService : IAutoInjection ...@@ -30,8 +31,8 @@ public class ProcessComputService : IAutoInjection
PerforImdataRepository perforImDataRepository, PerforImdataRepository perforImDataRepository,
PerforImheaderRepository perforImHeaderRepository, PerforImheaderRepository perforImHeaderRepository,
PerforImemployeeRepository perforImEmployeeRepository, PerforImemployeeRepository perforImEmployeeRepository,
PerforResaccountdoctorRepository perforResAccountdoctorRepository, PerforResaccountRepository perforResaccountRepository,
PerforResaccountnurseRepository perforResAccountnurseRepository, PerforResbaiscnormRepository perforResbaiscnormRepository,
PerforCofdrugtypeRepository perforCofdrugtypeRepository) PerforCofdrugtypeRepository perforCofdrugtypeRepository)
{ {
this.perforCofincomeRepository = perforCofincomeRepository; this.perforCofincomeRepository = perforCofincomeRepository;
...@@ -40,8 +41,8 @@ public class ProcessComputService : IAutoInjection ...@@ -40,8 +41,8 @@ public class ProcessComputService : IAutoInjection
this.perforImDataRepository = perforImDataRepository; this.perforImDataRepository = perforImDataRepository;
this.perforImHeaderRepository = perforImHeaderRepository; this.perforImHeaderRepository = perforImHeaderRepository;
this.perforImEmployeeRepository = perforImEmployeeRepository; this.perforImEmployeeRepository = perforImEmployeeRepository;
this.perforResAccountdoctorRepository = perforResAccountdoctorRepository; this.perforResaccountRepository = perforResaccountRepository;
this.perforResAccountnurseRepository = perforResAccountnurseRepository; this.perforResbaiscnormRepository = perforResbaiscnormRepository;
this.perforCofdrugtypeRepository = perforCofdrugtypeRepository; this.perforCofdrugtypeRepository = perforCofdrugtypeRepository;
} }
...@@ -70,16 +71,16 @@ private void SaveComputeDoctorAccount(PerSheet sheet, int allotId) ...@@ -70,16 +71,16 @@ private void SaveComputeDoctorAccount(PerSheet sheet, int allotId)
var imsheet = new per_sheet { AllotID = allotId, SheetName = sheet.SheetName, Source = 2, SheetType = (int)sheet.SheetType }; var imsheet = new per_sheet { AllotID = allotId, SheetName = sheet.SheetName, Source = 2, SheetType = (int)sheet.SheetType };
perforPerSheetRepository.Add(imsheet); perforPerSheetRepository.Add(imsheet);
var dataList = sheet.PerData.Select(t => (PerDataAccountDoctor)t); var dataList = sheet.PerData.Select(t => (PerDataAccountBaisc)t);
List<res_accountdoctor> addList = new List<res_accountdoctor>(); List<res_account> addList = new List<res_account>();
foreach (var data in dataList) foreach (var data in dataList)
{ {
var imdata = Mapper.Map<res_accountdoctor>(data); var imdata = Mapper.Map<res_account>(data);
imdata.SheetID = imsheet.ID; imdata.SheetID = imsheet.ID;
imdata.AllotID = allotId; imdata.AllotID = allotId;
addList.Add(imdata); addList.Add(imdata);
} }
perforResAccountdoctorRepository.AddRange(addList.ToArray()); perforResaccountRepository.AddRange(addList.ToArray());
} }
/// <summary> /// <summary>
...@@ -93,16 +94,16 @@ private void SaveComputeNurseAccount(PerSheet sheet, int allotId) ...@@ -93,16 +94,16 @@ private void SaveComputeNurseAccount(PerSheet sheet, int allotId)
var imsheet = new per_sheet { AllotID = allotId, SheetName = sheet.SheetName, Source = 2, SheetType = (int)sheet.SheetType }; var imsheet = new per_sheet { AllotID = allotId, SheetName = sheet.SheetName, Source = 2, SheetType = (int)sheet.SheetType };
perforPerSheetRepository.Add(imsheet); perforPerSheetRepository.Add(imsheet);
var dataList = sheet.PerData.Select(t => (PerDataAccountNurse)t); var dataList = sheet.PerData.Select(t => (PerDataAccountBaisc)t);
List<res_accountnurse> addList = new List<res_accountnurse>(); List<res_account> addList = new List<res_account>();
foreach (var data in dataList) foreach (var data in dataList)
{ {
var imdata = Mapper.Map<res_accountnurse>(data); var imdata = Mapper.Map<res_account>(data);
imdata.SheetID = imsheet.ID; imdata.SheetID = imsheet.ID;
imdata.AllotID = allotId; imdata.AllotID = allotId;
addList.Add(imdata); addList.Add(imdata);
} }
perforResAccountnurseRepository.AddRange(addList.ToArray()); perforResaccountRepository.AddRange(addList.ToArray());
} }
...@@ -203,9 +204,9 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid) ...@@ -203,9 +204,9 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid)
var confs = GetDrugConfig(excel, allotid); var confs = GetDrugConfig(excel, allotid);
//医生组 一次计算 //医生组 一次计算
var onceWorkload1 = workloadCompute.OnceCompute(workload1, confs); //var onceWorkload1 = workloadCompute.OnceCompute(workload1, confs);
//医生组 二次计算 //医生组 二次计算
var twiceWorkloadResult1 = workloadCompute.TwiceCompute(onceWorkload1); var twiceWorkloadResult1 = workloadCompute.TwiceCompute(workload1);
twiceWorkloadResult1.Sheet.SheetType = SheetType.ComputeDoctorWorkload; twiceWorkloadResult1.Sheet.SheetType = SheetType.ComputeDoctorWorkload;
perSheet.Add(twiceWorkloadResult1.Sheet); perSheet.Add(twiceWorkloadResult1.Sheet);
...@@ -213,9 +214,9 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid) ...@@ -213,9 +214,9 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid)
var workload2 = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.Workload && t.SheetName.Contains("护理组")); var workload2 = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.Workload && t.SheetName.Contains("护理组"));
workload2.SheetName = "护理组工作量绩效测算表"; workload2.SheetName = "护理组工作量绩效测算表";
//护理组 一次计算 //护理组 一次计算
var onceWorkload2 = workloadCompute.OnceCompute(workload2); //var onceWorkload2 = workloadCompute.OnceCompute(workload2);
//护理组 二次计算 //护理组 二次计算
var twiceWorkloadResult2 = workloadCompute.TwiceCompute(onceWorkload2); var twiceWorkloadResult2 = workloadCompute.TwiceCompute(workload2);
twiceWorkloadResult2.Sheet.SheetType = SheetType.ComputeNurseWorkload; twiceWorkloadResult2.Sheet.SheetType = SheetType.ComputeNurseWorkload;
perSheet.Add(twiceWorkloadResult2.Sheet); perSheet.Add(twiceWorkloadResult2.Sheet);
...@@ -223,147 +224,135 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid) ...@@ -223,147 +224,135 @@ private List<PerSheet> MergeCompute(PerExcel excel, int allotid)
var deptAccounting = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountBasic); var deptAccounting = excel.PerSheet.FirstOrDefault(t => t.SheetType == SheetType.AccountBasic);
var dataList = deptAccounting.PerData.Select(t => (PerDataAccountBaisc)t); var dataList = deptAccounting.PerData.Select(t => (PerDataAccountBaisc)t);
var doctorSheet = ComputeDoctor(dataList, twiceEconomicResult.PerData, twiceWorkloadResult1.PerData); var baiscnormList = ComputeMinimum(dataList, twiceEconomicResult.PerData, twiceWorkloadResult1.PerData, twiceWorkloadResult2.PerData, allotid);
perSheet.Add(doctorSheet);
var nurseSheet = ComputeNurse(dataList, twiceEconomicResult.PerData, twiceWorkloadResult2.PerData); var sheet = Compute(dataList, twiceEconomicResult.PerData, twiceWorkloadResult1.PerData, twiceWorkloadResult2.PerData, baiscnormList);
perSheet.Add(nurseSheet); perSheet.AddRange(sheet);
return perSheet; return perSheet;
} }
/// <summary> /// <summary>
/// 计算医生组科室绩效 /// 计算科室绩效
/// </summary> /// </summary>
/// <param name="dataList"></param> /// <param name="dataList"></param>
/// <param name="economicData"></param> /// <param name="economicData"></param>
/// <param name="workloadData"></param> /// <param name="workloadData"></param>
/// <returns></returns> /// <returns></returns>
private PerSheet ComputeDoctor(IEnumerable<PerDataAccountBaisc> dataList, List<PerData> economicData, List<PerData> workloadData) private List<PerSheet> Compute(IEnumerable<PerDataAccountBaisc> dataList, List<PerData> economicData,
List<PerData> doctorWorkloadData, List<PerData> nurseWorkloadData, List<res_baiscnorm> baiscnormList)
{ {
PerSheet doctorSheet = new PerSheet("医生组临床科室单元核算表", "医生组临床科室单元核算表", SheetType.ComputeDoctorAccount, new List<PerHeader>(), new List<IPerData>()); var pairs = new[]
var data = new List<PerDataAccountDoctor>();
foreach (var dept in dataList)
{ {
if (string.IsNullOrEmpty(dept.DoctorAccountingUnit)) continue; new { Name = "医生组临床科室单元核算表", Data = doctorWorkloadData, SheetType = SheetType.ComputeDoctorAccount, UnitTypes = new List<UnitType> { UnitType.医生组, UnitType.医技组 } },
new { Name = "护理组临床科室单元核算表", Data = nurseWorkloadData, SheetType = SheetType.ComputeNurseAccount, UnitTypes = new List<UnitType> { UnitType.护理组 } },
var econDoctor = economicData.FirstOrDefault(t => t.UnitType == "医生组" && t.AccountingUnit == dept.Department); };
var workDoctor = workloadData.FirstOrDefault(t => t.UnitType == "医生组" && t.AccountingUnit == dept.Department); List<PerSheet> result = new List<PerSheet>();
var doctor = new PerDataAccountDoctor foreach (var info in pairs)
{
AccountingUnit = dept.DoctorAccountingUnit,
Department = dept.Department,
Number = dept.DoctorNumber + dept.DoctorDirectorNumber,
BasicFactor = dept.DoctorBasicFactor,
SlopeFactor = dept.DoctorSlopeFactor,
OtherPerfor1 = dept.DoctorOtherPerfor1,
OtherPerfor2 = dept.DoctorOtherPerfor2,
Extra = dept.DoctorExtra,
ScoringAverage = dept.DoctorScoringAverage == 0m ? 1 : dept.DoctorScoringAverage,
AdjustFactor = dept.DoctorAdjustFactor == 0m ? 1 : dept.DoctorAdjustFactor,
Income = econDoctor?.CellValue ?? 0,
WorkloadFee = workDoctor?.CellValue ?? 0,
};
doctor.PerforFee = doctor.Income * (doctor.BasicFactor + doctor.SlopeFactor);
doctor.PerforTotal = doctor.PerforFee + doctor.WorkloadFee + doctor.OtherPerfor1;
doctor.RealGiveFee = (doctor.PerforTotal * doctor.ScoringAverage + doctor.Extra + doctor.OtherPerfor2) * doctor.AdjustFactor;
doctor.Avg = doctor.Number == 0 ? 0 : doctor.PerforTotal / doctor.Number;
data.Add(doctor);
}
var multi = data.GroupBy(t => t.AccountingUnit)
.Select(t => new
{
AccountingUnit = t.Key,
Count = t.Count(),
RealGiveFee = t.Sum(p => p.RealGiveFee),
PerforTotal = t.Sum(p => p.PerforTotal),
Avg = t.Sum(p => p.Number) == 0 ? 0 : t.Sum(p => p.RealGiveFee) / t.Sum(p => p.Number)
})
.Where(t => t.Count > 1).ToArray();
if (multi != null && multi.Any())
{ {
data.ForEach(t => PerSheet sheet = new PerSheet(info.Name, info.Name, info.SheetType, new List<PerHeader>(), new List<IPerData>());
foreach (var unitType in info.UnitTypes)
{ {
if (multi.Any(group => group.AccountingUnit == t.AccountingUnit)) var atDataList = dataList.Where(t => t.UnitType == (int)unitType);
foreach (var dept in dataList.Where(t => t.UnitType == (int)unitType))
{
if (string.IsNullOrEmpty(dept.AccountingUnit))
continue;
var econDoctor = economicData.FirstOrDefault(t => t.UnitType == unitType.ToString() && t.AccountingUnit == dept.Department);
var workDoctor = info.Data.FirstOrDefault(t => t.UnitType == unitType.ToString() && t.AccountingUnit == dept.Department);
//保底绩效
var minimum = baiscnormList.FirstOrDefault(t => t.PositionName == dept.MinimumReference);
if (!string.IsNullOrEmpty(dept.MinimumReference) && minimum != null)
dept.MinimumFee = minimum.AvgValue * (dept.MinimumFactor ?? 0) * (dept.ManagerNumber + dept.Number);
dept.ScoringAverage = dept.ScoringAverage == 0m ? 1 : dept.ScoringAverage;
dept.AdjustFactor = dept.AdjustFactor == 0m ? 1 : dept.AdjustFactor;
dept.Income = econDoctor?.CellValue ?? 0;
dept.WorkloadFee = workDoctor?.CellValue ?? 0;
dept.PerforFee = dept.Income * (dept.BasicFactor + dept.SlopeFactor);
dept.PerforTotal = dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + (dept.MinimumFee ?? 0);
dept.RealGiveFee = (dept.PerforTotal * dept.ScoringAverage + dept.Extra + dept.OtherPerfor2) * dept.AdjustFactor;
dept.Avg = dept.ManagerNumber + dept.Number == 0 ? 0 : dept.PerforTotal / (dept.ManagerNumber + dept.Number);
}
var multi = atDataList.GroupBy(t => new { t.UnitType, t.AccountingUnit })
.Select(t => new
{
UnitType = t.Key.UnitType,
AccountingUnit = t.Key.AccountingUnit,
Count = t.Count(),
RealGiveFee = t.Sum(p => p.RealGiveFee),
PerforTotal = t.Sum(p => p.PerforTotal),
Avg = t.Sum(p => p.ManagerNumber + p.Number) == 0 ? 0 : t.Sum(p => p.RealGiveFee) / t.Sum(p => p.ManagerNumber + p.Number)
})
.Where(t => t.Count > 1).ToArray();
if (multi != null && multi.Any())
{ {
t.Avg = multi.FirstOrDefault(group => group.AccountingUnit == t.AccountingUnit).Avg; foreach (var item in atDataList)
t.RealGiveFee = multi.FirstOrDefault(group => group.AccountingUnit == t.AccountingUnit).RealGiveFee; {
t.PerforTotal = multi.FirstOrDefault(group => group.AccountingUnit == t.AccountingUnit).PerforTotal; if (multi.Any(group => group.UnitType == item.UnitType && group.AccountingUnit == item.AccountingUnit))
{
item.Avg = multi.FirstOrDefault(group => group.AccountingUnit == item.AccountingUnit).Avg;
item.RealGiveFee = multi.FirstOrDefault(group => group.AccountingUnit == item.AccountingUnit).RealGiveFee;
item.PerforTotal = multi.FirstOrDefault(group => group.AccountingUnit == item.AccountingUnit).PerforTotal;
item.Remark = "特殊科室,共用核算单元";
}
}
} }
});
sheet.PerData.AddRange(atDataList);
}
result.Add(sheet);
} }
doctorSheet.PerData.AddRange(data); return result;
return doctorSheet;
} }
/// <summary> /// <summary>
/// 计算护理组科室绩效 /// 计算保底绩效参考标准
/// </summary> /// </summary>
/// <param name="dataList"></param> /// <param name="baiscnormList"></param>
/// <param name="economicData"></param> /// <param name="allotId"></param>
/// <param name="workloadData"></param> public List<res_baiscnorm> ComputeMinimum(IEnumerable<PerDataAccountBaisc> accountList, List<PerData> economicData, List<PerData> doctorWorkloadData, List<PerData> nurseWorkloadData, int allotId)
private PerSheet ComputeNurse(IEnumerable<PerDataAccountBaisc> dataList, List<PerData> economicData, List<PerData> workloadData)
{ {
PerSheet nurseSheet = new PerSheet("护理组临床科室单元核算表", "护理组临床科室单元核算表", SheetType.ComputeNurseAccount, new List<PerHeader>(), new List<IPerData>()); var basicRuleList = new[]
var data = new List<PerDataAccountNurse>();
foreach (var dept in dataList)
{ {
if (string.IsNullOrEmpty(dept.NurseAccountingUnit)) continue; new { Data = doctorWorkloadData, MinimumType = MinimumType.保底临床医生, UnitType = UnitType.医生组 },
new { Data = doctorWorkloadData, MinimumType = MinimumType.保底医技医生, UnitType = UnitType.医技组 },
new { Data = nurseWorkloadData, MinimumType = MinimumType.保底护士, UnitType = UnitType.护理组 },
};
List<res_baiscnorm> baiscnormList = new List<res_baiscnorm>();
var econNurse = economicData.FirstOrDefault(t => t.UnitType == "护理组" && t.AccountingUnit == dept.Department); foreach (var rule in basicRuleList)
var workNurse = workloadData.FirstOrDefault(t => t.UnitType == "护理组" && t.AccountingUnit == dept.Department); {
var nurse = new PerDataAccountNurse var dataList = accountList.Where(t => t.UnitType == (int)rule.UnitType);
var count = dataList.Sum(t => t.ManagerNumber + t.Number);
decimal totalValue = 0m;
foreach (var dept in dataList)
{ {
AccountingUnit = dept.NurseAccountingUnit, var econDoctor = economicData.FirstOrDefault(t => t.UnitType == rule.UnitType.ToString() && t.AccountingUnit == dept.Department);
Department = dept.Department, var workDoctor = rule.Data.FirstOrDefault(t => t.UnitType == rule.UnitType.ToString() && t.AccountingUnit == dept.Department);
Number = dept.NurseNumber + dept.NurseHeadNumber,
BasicFactor = dept.NurseBasicFactor,
SlopeFactor = dept.NurseSlopeFactor,
OtherPerfor1 = dept.NurseOtherPerfor1,
OtherPerfor2 = dept.NurseOtherPerfor2,
Extra = dept.NurseExtra,
ScoringAverage = dept.NurseScoringAverage == 0m ? 1 : dept.NurseScoringAverage,
AdjustFactor = dept.NurseAdjustFactor == 0m ? 1 : dept.NurseAdjustFactor,
Income = econNurse?.CellValue ?? 0,
WorkloadFee = workNurse?.CellValue ?? 0,
};
nurse.PerforFee = nurse.Income * (nurse.BasicFactor + nurse.SlopeFactor);
nurse.PerforTotal = nurse.PerforFee + nurse.WorkloadFee + nurse.OtherPerfor1;
nurse.RealGiveFee = (nurse.PerforTotal * nurse.ScoringAverage + nurse.Extra + nurse.OtherPerfor2) * nurse.AdjustFactor;
nurse.Avg = nurse.Number == 0 ? 0 : nurse.PerforTotal / nurse.Number;
data.Add(nurse); var income = econDoctor?.CellValue ?? 0;
} var workloadFee = workDoctor?.CellValue ?? 0;
var multi = data.GroupBy(t => t.AccountingUnit) var perforFee = income * (dept.BasicFactor + dept.SlopeFactor);
.Select(t => new var perforTotal = perforFee + workloadFee;
{
AccountingUnit = t.Key, totalValue += perforTotal;
Count = t.Count(), }
RealGiveFee = t.Sum(p => p.RealGiveFee), var baiscnorm = new res_baiscnorm
PerforTotal = t.Sum(p => p.PerforTotal),
Avg = t.Sum(p => p.Number) == 0 ? 0 : t.Sum(p => p.RealGiveFee) / t.Sum(p => p.Number)
})
.Where(t => t.Count > 1).ToArray();
if (multi != null && multi.Any())
{
data.ForEach(t =>
{ {
if (multi.Any(group => group.AccountingUnit == t.AccountingUnit)) AllotID = allotId,
{ PositionName = EnumHelper.GetDescription(rule.MinimumType),
t.Avg = multi.FirstOrDefault(group => group.AccountingUnit == t.AccountingUnit).Avg; TotelNumber = count,
t.RealGiveFee = multi.FirstOrDefault(group => group.AccountingUnit == t.AccountingUnit).RealGiveFee; TotelValue = totalValue,
t.PerforTotal = multi.FirstOrDefault(group => group.AccountingUnit == t.AccountingUnit).PerforTotal; AvgValue = count == 0 ? 0 : totalValue / count
} };
}); baiscnormList.Add(baiscnorm);
} }
nurseSheet.PerData.AddRange(data); perforResbaiscnormRepository.AddRange(baiscnormList.ToArray());
return nurseSheet;
return baiscnormList;
} }
/// <summary> /// <summary>
......
...@@ -55,8 +55,8 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerShee ...@@ -55,8 +55,8 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerShee
var computResult = computeDirector.Compute(computeEmployees, accountbasicList, allot); var computResult = computeDirector.Compute(computeEmployees, accountbasicList, allot);
//计算 绩效标准 基数(科主任、副主任、护士长 =>> 平均值) //计算 绩效标准 基数(科主任、副主任、护士长 =>> 平均值)
List<res_baiscnorm> baiscnormList = new List<res_baiscnorm>(); List<res_baiscnorm> baiscnormList = new List<res_baiscnorm>();
baiscNormService.ComputeAvg(baiscnormList, accountbasicList, computResult, empolyeeList); baiscNormService.ComputeAvg(baiscnormList, accountbasicList, computResult);
baiscNormService.DocterNurseBaiscnorm(baiscnormList, accountbasicList, perSheets, empolyeeList); baiscNormService.DocterNurseBaiscnorm(baiscnormList, accountbasicList, perSheets);
var computResult2 = computeDirector.Compute(computeEmployees, allot, baiscnormList); var computResult2 = computeDirector.Compute(computeEmployees, allot, baiscnormList);
//计算 行政人员 平均值 //计算 行政人员 平均值
......
...@@ -193,6 +193,10 @@ public bool Update(per_allot allot) ...@@ -193,6 +193,10 @@ public bool Update(per_allot allot)
} }
#endregion #endregion
public void UpdateAllotStates(int allotId, int states, string remark)
{
_allotRepository.UpdateAllotStates(allotId, states, remark);
}
/// <summary> /// <summary>
/// 生成绩效 /// 生成绩效
/// </summary> /// </summary>
...@@ -205,17 +209,17 @@ public void Generate(per_allot allot, string mail) ...@@ -205,17 +209,17 @@ public void Generate(per_allot allot, string mail)
{ {
logdbug.Add(allot.ID, "绩效开始执行", JsonHelper.Serialize(allot)); logdbug.Add(allot.ID, "绩效开始执行", JsonHelper.Serialize(allot));
configService.Clear(allot.ID); configService.Clear(allot.ID);
_allotRepository.UpdateAllotStates(allot.ID, (int)AllotStates.InCheckData, EnumHelper.GetDescription(AllotStates.InCheckData)); UpdateAllotStates(allot.ID, (int)AllotStates.InCheckData, EnumHelper.GetDescription(AllotStates.InCheckData));
// 导出数据 // 导出数据
var excel = importDataService.ReadDataAndSave(allot); var excel = importDataService.ReadDataAndSave(allot);
if (!checkDataService.Check(excel, allot)) if (!checkDataService.Check(excel, allot))
{ {
_allotRepository.UpdateAllotStates(allot.ID, (int)AllotStates.CheckFail, EnumHelper.GetDescription(AllotStates.CheckFail)); UpdateAllotStates(allot.ID, (int)AllotStates.CheckFail, EnumHelper.GetDescription(AllotStates.CheckFail));
SendEmail(allot, mail, 3, time); SendEmail(allot, mail, 3, time);
logdbug.Add(allot.ID, "绩效数据校验失败", JsonHelper.Serialize(allot)); logdbug.Add(allot.ID, "绩效数据校验失败", JsonHelper.Serialize(allot));
return; return;
} }
_allotRepository.UpdateAllotStates(allot.ID, (int)AllotStates.InGenerate, EnumHelper.GetDescription(AllotStates.InGenerate)); UpdateAllotStates(allot.ID, (int)AllotStates.InGenerate, EnumHelper.GetDescription(AllotStates.InGenerate));
// 计算合并数据 // 计算合并数据
logdbug.Add(allot.ID, "计算合并数据", JsonHelper.Serialize(allot)); logdbug.Add(allot.ID, "计算合并数据", JsonHelper.Serialize(allot));
List<PerSheet> list = processComputService.MergeAndSave(excel, allot); List<PerSheet> list = processComputService.MergeAndSave(excel, allot);
...@@ -227,14 +231,14 @@ public void Generate(per_allot allot, string mail) ...@@ -227,14 +231,14 @@ public void Generate(per_allot allot, string mail)
var baiscnormList = resultComputeService.Compute(allot, excel, list); var baiscnormList = resultComputeService.Compute(allot, excel, list);
resultComputeService.SpecialUnitCompute(excel, allot, baiscnormList); resultComputeService.SpecialUnitCompute(excel, allot, baiscnormList);
_allotRepository.UpdateAllotStates(allot.ID, (int)AllotStates.GenerateSucceed, EnumHelper.GetDescription(AllotStates.GenerateSucceed)); UpdateAllotStates(allot.ID, (int)AllotStates.GenerateSucceed, EnumHelper.GetDescription(AllotStates.GenerateSucceed));
//发送邮件 //发送邮件
SendEmail(allot, mail, 1, time); SendEmail(allot, mail, 1, time);
logdbug.Add(allot.ID, "绩效开始执行", "绩效生成成功"); logdbug.Add(allot.ID, "绩效开始执行", "绩效生成成功");
} }
catch (Exception ex) catch (Exception ex)
{ {
_allotRepository.UpdateAllotStates(allot.ID, (int)AllotStates.GenerateFail, EnumHelper.GetDescription(AllotStates.GenerateFail)); UpdateAllotStates(allot.ID, (int)AllotStates.GenerateFail, EnumHelper.GetDescription(AllotStates.GenerateFail));
SendEmail(allot, mail, 2, time); SendEmail(allot, mail, 2, time);
logdbug.Add(allot.ID, "绩效开始执行", ex.ToString()); logdbug.Add(allot.ID, "绩效开始执行", ex.ToString());
//throw ex; //throw ex;
......
...@@ -12,8 +12,8 @@ namespace Performance.Services ...@@ -12,8 +12,8 @@ namespace Performance.Services
{ {
public class ComputeService : IAutoInjection public class ComputeService : IAutoInjection
{ {
private readonly PerforResaccountdoctorRepository _perforResAccountdoctorRepository; private readonly PerforResaccountRepository perforResaccountRepository;
private readonly PerforResaccountnurseRepository _perforResAccountnurseRepository; //private readonly PerforResaccountnurseRepository _perforResAccountnurseRepository;
private readonly PerforPersheetRepository _perforPerSheetRepository; private readonly PerforPersheetRepository _perforPerSheetRepository;
private readonly PerforImdataRepository _perforImDataRepository; private readonly PerforImdataRepository _perforImDataRepository;
private readonly PerforRescomputeRepository _perforRescomputeRepository; private readonly PerforRescomputeRepository _perforRescomputeRepository;
...@@ -23,8 +23,8 @@ public class ComputeService : IAutoInjection ...@@ -23,8 +23,8 @@ public class ComputeService : IAutoInjection
private readonly PerforAgemployeeRepository _perforAgemployeeRepository; private readonly PerforAgemployeeRepository _perforAgemployeeRepository;
private readonly PerforResbaiscnormRepository perforResbaiscnormRepository; private readonly PerforResbaiscnormRepository perforResbaiscnormRepository;
public ComputeService(PerforResaccountdoctorRepository perforResAccountdoctorRepository, public ComputeService(PerforResaccountRepository perforResaccountRepository,
PerforResaccountnurseRepository perforResAccountnurseRepository, //PerforResaccountnurseRepository perforResAccountnurseRepository,
PerforPersheetRepository perforPerSheetRepository, PerforPersheetRepository perforPerSheetRepository,
PerforImdataRepository perforImDataRepository, PerforImdataRepository perforImDataRepository,
PerforRescomputeRepository perforRescomputeRepository, PerforRescomputeRepository perforRescomputeRepository,
...@@ -34,8 +34,8 @@ public class ComputeService : IAutoInjection ...@@ -34,8 +34,8 @@ public class ComputeService : IAutoInjection
PerforAgemployeeRepository perforAgemployeeRepository, PerforAgemployeeRepository perforAgemployeeRepository,
PerforResbaiscnormRepository perforResbaiscnormRepository) PerforResbaiscnormRepository perforResbaiscnormRepository)
{ {
this._perforResAccountdoctorRepository = perforResAccountdoctorRepository; this.perforResaccountRepository = perforResaccountRepository;
this._perforResAccountnurseRepository = perforResAccountnurseRepository; //this._perforResAccountnurseRepository = perforResAccountnurseRepository;
this._perforPerSheetRepository = perforPerSheetRepository; this._perforPerSheetRepository = perforPerSheetRepository;
this._perforImDataRepository = perforImDataRepository; this._perforImDataRepository = perforImDataRepository;
this._perforRescomputeRepository = perforRescomputeRepository; this._perforRescomputeRepository = perforRescomputeRepository;
...@@ -55,38 +55,14 @@ public class ComputeService : IAutoInjection ...@@ -55,38 +55,14 @@ public class ComputeService : IAutoInjection
public List<ResComputeResponse> GetCompute(int allotId, int type) public List<ResComputeResponse> GetCompute(int allotId, int type)
{ {
var data = new List<ResComputeResponse>(); var data = new List<ResComputeResponse>();
List<res_compute> conpute = new List<res_compute>();
if ((new int[] { 1, 2, 3 }).Contains(type)) var items = EnumHelper.GetItems<AccountUnitType>();
{ if (!items.Any(t => t.Value == type))
var keyValues2 = new[]
{
new { type = 1, accounttype = AccountUnitType.行政高层 },
new { type = 2, accounttype = AccountUnitType.行政中层 },
new { type = 3, accounttype = AccountUnitType.行政工勤 },
};
var obj = keyValues2.First(t => t.type == type);
conpute = _perforRescomputeRepository.GetEntities(t => t.AllotID == allotId && t.AccountType == obj.accounttype.ToString())
?.OrderByDescending(t => t.RealGiveFee).ThenBy(t => t.FitPeople).ThenBy(t => t.AccountingUnit).ToList();
}
else if ((new int[] { 4, 5 }).Contains(type))
{
var types = new PerforType[] { PerforType.临床主任, PerforType.临床副主任, PerforType.医技主任, PerforType.医技副主任 };
var keyValues2 = new[]
{
new { type = 4, accounttype = types.Select(t=>EnumHelper.GetDescription(t)).ToList() },
new { type = 5, accounttype = new List<string>{ EnumHelper.GetDescription(PerforType.护士长) }},
};
var obj = keyValues2.First(t => t.type == type);
var dept = new string[] { AccountUnitType.临床科室.ToString(), AccountUnitType.医技科室.ToString() };
conpute = _perforRescomputeRepository
.GetEntities(t => t.AllotID == allotId && dept.Contains(t.AccountType) && obj.accounttype.Contains(t.FitPeople))
?.OrderByDescending(t => t.RealGiveFee).ThenBy(t => t.FitPeople).ThenBy(t => t.AccountingUnit).ToList();
}
else
{
throw new PerformanceException("参数错误,type无效"); throw new PerformanceException("参数错误,type无效");
}
var conpute = _perforRescomputeRepository.GetEntities(t => t.AllotID == allotId && t.AccountType == items.FirstOrDefault(p => p.Value == type).Name)
?.OrderByDescending(t => t.RealGiveFee).ThenBy(t => t.FitPeople).ThenBy(t => t.AccountingUnit).ToList();
data = Mapper.Map<List<ResComputeResponse>>(conpute); data = Mapper.Map<List<ResComputeResponse>>(conpute);
data?.ForEach(t => t.WorkTime = string.IsNullOrEmpty(t.WorkTime) ? null : Convert.ToDateTime(t.WorkTime).ToString("yyyy-MM-dd")); data?.ForEach(t => t.WorkTime = string.IsNullOrEmpty(t.WorkTime) ? null : Convert.ToDateTime(t.WorkTime).ToString("yyyy-MM-dd"));
return data?.OrderByDescending(t => t.AccountingUnit).ToList(); return data?.OrderByDescending(t => t.AccountingUnit).ToList();
...@@ -113,11 +89,11 @@ public List<res_specialunit> GetSpecial(int allotId) ...@@ -113,11 +89,11 @@ public List<res_specialunit> GetSpecial(int allotId)
/// </summary> /// </summary>
/// <param name="allotId">绩效ID</param> /// <param name="allotId">绩效ID</param>
/// <returns></returns> /// <returns></returns>
public List<DoctorResponse> GetDoctorPerformance(int allotId) public List<DeptResponse> GetDoctorPerformance(int allotId)
{ {
var list = _perforResAccountdoctorRepository.GetEntities(t => t.AllotID == allotId)?.OrderByDescending(t => t.AccountingUnit); var list = perforResaccountRepository.GetEntities(t => t.UnitType != (int)UnitType.护理组 && t.AllotID == allotId)?.OrderByDescending(t => t.AccountingUnit);
List<DoctorResponse> doctor = Mapper.Map<List<DoctorResponse>>(list); List<DeptResponse> doctor = Mapper.Map<List<DeptResponse>>(list);
doctor?.ForEach(t => t.UnitName = "医生组"); doctor?.ForEach(t => t.UnitName = ((UnitType)t.UnitType).ToString());
return doctor; return doctor;
} }
...@@ -126,11 +102,11 @@ public List<DoctorResponse> GetDoctorPerformance(int allotId) ...@@ -126,11 +102,11 @@ public List<DoctorResponse> GetDoctorPerformance(int allotId)
/// </summary> /// </summary>
/// <param name="allotId">绩效ID</param> /// <param name="allotId">绩效ID</param>
/// <returns></returns> /// <returns></returns>
public List<NurseResponse> GetNursePerformance(int allotId) public List<DeptResponse> GetNursePerformance(int allotId)
{ {
var list = _perforResAccountnurseRepository.GetEntities(t => t.AllotID == allotId)?.OrderByDescending(t => t.AccountingUnit); var list = perforResaccountRepository.GetEntities(t => t.UnitType == (int)UnitType.护理组 && t.AllotID == allotId)?.OrderByDescending(t => t.AccountingUnit);
List<NurseResponse> nurse = Mapper.Map<List<NurseResponse>>(list); List<DeptResponse> nurse = Mapper.Map<List<DeptResponse>>(list);
nurse?.ForEach(t => t.UnitName = "护理组"); nurse?.ForEach(t => t.UnitName = ((UnitType)t.UnitType).ToString());
return nurse; return nurse;
} }
...@@ -145,13 +121,13 @@ public DeptDetailResponse GetDepartmentDetail(int allotId, string department, in ...@@ -145,13 +121,13 @@ public DeptDetailResponse GetDepartmentDetail(int allotId, string department, in
{ {
if (type == 1) if (type == 1)
{ {
var accountList = _perforResAccountdoctorRepository.GetEntities(t => t.AllotID == allotId && t.AccountingUnit == department); var accountList = perforResaccountRepository.GetEntities(t => t.UnitType != (int)UnitType.护理组 && t.AllotID == allotId && t.AccountingUnit == department);
if (accountList != null) if (accountList != null)
return GetDepartmentDetail(allotId, accountList.First().ID, type); return GetDepartmentDetail(allotId, accountList.First().ID, type);
} }
else if (type == 2) else if (type == 2)
{ {
var accountList = _perforResAccountnurseRepository.GetEntities(t => t.AllotID == allotId && t.AccountingUnit == department); var accountList = perforResaccountRepository.GetEntities(t => t.UnitType == (int)UnitType.护理组 && t.AllotID == allotId && t.AccountingUnit == department);
if (accountList != null) if (accountList != null)
return GetDepartmentDetail(allotId, accountList.First().ID, type); return GetDepartmentDetail(allotId, accountList.First().ID, type);
} }
...@@ -171,11 +147,11 @@ public DeptDetailResponse GetDepartmentDetail(int allotId, int accountId, int ty ...@@ -171,11 +147,11 @@ public DeptDetailResponse GetDepartmentDetail(int allotId, int accountId, int ty
var sheetList = _perforPerSheetRepository.GetEntities(t => t.AllotID == allotId); var sheetList = _perforPerSheetRepository.GetEntities(t => t.AllotID == allotId);
if (type == 1) if (type == 1)
{ {
var doctor = _perforResAccountdoctorRepository.GetEntity(t => t.AllotID == allotId && t.ID == accountId); var doctor = perforResaccountRepository.GetEntity(t => t.UnitType != (int)UnitType.护理组 && t.AllotID == allotId && t.ID == accountId);
DeptDetailResponse response = new DeptDetailResponse() DeptDetailResponse response = new DeptDetailResponse()
{ {
Pandect = Mapper.Map<PerDataAccount>(doctor), Pandect = Mapper.Map<PerDataAccountBaisc>(doctor),
Economic = new List<DeptDetail>(), Economic = new List<DeptDetail>(),
Workload = new List<DeptDetail>() Workload = new List<DeptDetail>()
}; };
...@@ -198,10 +174,10 @@ public DeptDetailResponse GetDepartmentDetail(int allotId, int accountId, int ty ...@@ -198,10 +174,10 @@ public DeptDetailResponse GetDepartmentDetail(int allotId, int accountId, int ty
} }
else if (type == 2) else if (type == 2)
{ {
var nurse = _perforResAccountnurseRepository.GetEntity(t => t.AllotID == allotId && t.ID == accountId); var nurse = perforResaccountRepository.GetEntity(t => t.UnitType == (int)UnitType.护理组 && t.AllotID == allotId && t.ID == accountId);
DeptDetailResponse response = new DeptDetailResponse() DeptDetailResponse response = new DeptDetailResponse()
{ {
Pandect = Mapper.Map<PerDataAccount>(nurse), Pandect = Mapper.Map<PerDataAccountBaisc>(nurse),
Economic = new List<DeptDetail>(), Economic = new List<DeptDetail>(),
Workload = new List<DeptDetail>() Workload = new List<DeptDetail>()
}; };
...@@ -272,15 +248,15 @@ public res_compute GetComputeSingle(int computeid) ...@@ -272,15 +248,15 @@ public res_compute GetComputeSingle(int computeid)
/// <param name="id"></param> /// <param name="id"></param>
/// <param name="score"></param> /// <param name="score"></param>
/// <returns></returns> /// <returns></returns>
public res_compute UpdateRealfee(ComputerRequest request, UserIdentity user) public res_compute UpdateRealfee(ComputerRequest request, int userId, string realName)
{ {
var compute = _perforRescomputeRepository.GetEntity(t => t.ID == request.ComputeId); var compute = _perforRescomputeRepository.GetEntity(t => t.ID == request.ComputeId);
var log = JsonHelper.Deserialize<List<ChangeLog>>(compute.ChangeLog); var log = JsonHelper.Deserialize<List<ChangeLog>>(compute.ChangeLog);
log = log ?? new List<ChangeLog>(); log = log ?? new List<ChangeLog>();
log.Add(new ChangeLog log.Add(new ChangeLog
{ {
uid = user.UserID, uid = userId,
user = user.RealName, user = realName,
date = DateTime.Now, date = DateTime.Now,
value = compute.RealGiveFee value = compute.RealGiveFee
}); });
...@@ -301,7 +277,7 @@ public res_compute UpdateRealfee(ComputerRequest request, UserIdentity user) ...@@ -301,7 +277,7 @@ public res_compute UpdateRealfee(ComputerRequest request, UserIdentity user)
/// <returns></returns> /// <returns></returns>
public List<res_baiscnorm> GetBaiscnorm(int allotId) public List<res_baiscnorm> GetBaiscnorm(int allotId)
{ {
return perforResbaiscnormRepository.GetEntities(t => t.AllotID == allotId); return perforResbaiscnormRepository.GetEntities(t => t.AllotID == allotId).OrderBy(t => t.PositionName).ToList();
} }
} }
} }
...@@ -333,25 +333,17 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -333,25 +333,17 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
var importRow = importSheet.CreateRow(maxHeaderRowNumber + i + 1); var importRow = importSheet.CreateRow(maxHeaderRowNumber + i + 1);
Dictionary<string, Func<PerDataAccountBaisc, object>> keyValues = new Dictionary<string, Func<PerDataAccountBaisc, object>> Dictionary<string, Func<PerDataAccountBaisc, object>> keyValues = new Dictionary<string, Func<PerDataAccountBaisc, object>>
{ {
{ "核算单元(医生组)", (t) => t.DoctorAccountingUnit }, { "核算单元类型", (t) => EnumHelper.GetDescription((UnitType)t.UnitType) },
{ "核算单元(护理组)", (t) => t.NurseAccountingUnit }, { "核算单元", (t) => t.AccountingUnit },
{ "科室名称", (t) => t.Department }, { "科室名称", (t) => t.Department },
{ "医生组核算单元医生数量", (t) => t.DoctorNumber }, { "医生组核算单元医生数量", (t) => t.Number },
{ "医生组基础系数", (t) => t.DoctorBasicFactor }, { "医生组基础系数", (t) => t.BasicFactor },
{ "医生组倾斜系数", (t) => t.DoctorSlopeFactor }, { "医生组倾斜系数", (t) => t.SlopeFactor },
{ "医生组其他绩效1", (t) => t.DoctorOtherPerfor1 }, { "医生组其他绩效1", (t) => t.OtherPerfor1 },
{ "医生组考核得分率", (t) => t.DoctorScoringAverage }, { "医生组考核得分率", (t) => t.ScoringAverage },
{ "医生组医院奖罚", (t) => t.DoctorExtra }, { "医生组医院奖罚", (t) => t.Extra },
{ "医生组其他绩效2", (t) => t.DoctorOtherPerfor2 }, { "医生组其他绩效2", (t) => t.OtherPerfor2 },
{ "医生组调节系数", (t) => t.DoctorAdjustFactor }, { "医生组调节系数", (t) => t.AdjustFactor },
{ "护理组核算单元护士数量", (t) => t.NurseNumber },
{ "护理组基础系数", (t) => t.NurseBasicFactor },
{ "护理组倾斜系数", (t) => t.NurseSlopeFactor },
{ "护理组其他绩效1", (t) => t.NurseOtherPerfor1 },
{ "护理组考核得分率", (t) => t.NurseScoringAverage },
{ "护理组医院奖罚", (t) => t.NurseExtra },
{ "护理组其他绩效2", (t) => t.NurseOtherPerfor2 },
{ "护理组调节系数", (t) => t.NurseAdjustFactor },
}; };
foreach (var item in keyValues.Keys) foreach (var item in keyValues.Keys)
{ {
......
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace Performance.Services
{
public class ModExtractService : IAutoInjection
{
private PerforModextractRepository perforModextractRepository;
private PerforModitemRepository perforModitemRepository;
private PerforModmoduleRepository perforModmoduleRepository;
private PerforModspecialRepository perforModspecialRepository;
private PerforHospitalconfigRepository perforHospitalconfigRepository;
private PerforExtractRepository perforExtractRepository;
public ModExtractService(PerforModextractRepository perforModextractRepository,
PerforModitemRepository perforModitemRepository,
PerforModmoduleRepository perforModmoduleRepository,
PerforModspecialRepository perforModspecialRepository,
PerforHospitalconfigRepository perforHospitalconfigRepository,
PerforExtractRepository perforExtractRepository)
{
this.perforModextractRepository = perforModextractRepository;
this.perforModitemRepository = perforModitemRepository;
this.perforModmoduleRepository = perforModmoduleRepository;
this.perforModspecialRepository = perforModspecialRepository;
this.perforHospitalconfigRepository = perforHospitalconfigRepository;
this.perforExtractRepository = perforExtractRepository;
}
/// <summary>
/// 绩效数据抽取模板
/// </summary>
/// <returns></returns>
public List<TitleValue> ExtractScheme(int hospitalId, List<int> executeType)
{
var titlevalue = new List<TitleValue>();
var list = perforModextractRepository.GetEntities(t => (t.HospitalId == hospitalId || t.HospitalId == null) && executeType.Contains(t.ExecuteType.Value));
if (list != null && list.Any())
titlevalue = list.Select(t => new TitleValue { Title = string.IsNullOrEmpty(t.Description) ? t.EName : $"{t.EName}({t.Description})", Value = t.Id.ToString() }).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 mod_module AddModule(ModModuleRequest request)
{
if (request.SheetType != (int)SheetType.Income)
throw new PerformanceException("模块类型错误,只支持收入模板配置");
string[] array = new string[] { "就诊收入", "执行收入" };
if (array.Any(t => !request.ModuleName.Contains(t)))
throw new PerformanceException("模块名称规则错误");
if (Regex.IsMatch(request.ModuleName, @"^[\u4e00-\u9fa5]+$"))
throw new PerformanceException("模块名称规则错误,请使用全中文命名");
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))
throw new PerformanceException("绩效模板已存在!");
var moduleList = perforModmoduleRepository.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;
}
mod_module entity = new mod_module
{
ModuleName = request.ModuleName,
HospitalId = request.HospitalId,
Description = request.Description,
SheetType = request.SheetType,
ExtractId = request.ExtractId,
ReadOnly = 0,
IsGenerated = 0
};
if (!perforModmoduleRepository.Add(entity))
throw new PerformanceException("添加失败!");
return entity;
}
/// <summary>
/// 费用字典
/// </summary>
/// <returns></returns>
public List<mod_module> Module(int hospitalId)
{
//首次添加费用字典默认值
AddModule(hospitalId);
var list = perforModmoduleRepository.GetEntities(t => t.HospitalId == hospitalId).OrderBy(t => t.ModuleName).ToList();
return list;
}
/// <summary>
/// 首次添加费用字典默认值
/// </summary>
/// <param name="hospitalId"></param>
private void AddModule(int hospitalId)
{
var extractList = perforModextractRepository.GetEntities(t => t.IsEnable == 1 && t.ExecuteType == 1);
var moduleList = new mod_module[]
{
new mod_module{ ModuleName = "1.0.1 额外收入", SheetType = (int)SheetType.OtherIncome, ExtractId = null },
new mod_module{ ModuleName = "1.1.1 门诊就诊收入", SheetType = (int)SheetType.Income, ExtractId = extractList.FirstOrDefault(t => t.EName == "门诊就诊收入")?.Id },
new mod_module{ ModuleName = "1.1.2 门诊执行收入", SheetType = (int)SheetType.Income, ExtractId = extractList.FirstOrDefault(t => t.EName == "门诊执行收入")?.Id },
new mod_module{ ModuleName = "1.2.1 住院就诊收入", SheetType = (int)SheetType.Income, ExtractId = extractList.FirstOrDefault(t => t.EName == "住院就诊收入")?.Id },
new mod_module{ ModuleName = "1.2.2 住院执行收入", SheetType = (int)SheetType.Income, ExtractId = extractList.FirstOrDefault(t => t.EName == "住院执行收入")?.Id },
new mod_module{ ModuleName = "2.1 成本支出统计表", SheetType = (int)SheetType.Expend, ExtractId = null },
new mod_module{ ModuleName = "3.1 医生组工作量绩效测算表", SheetType = (int)SheetType.Workload, ExtractId = null },
new mod_module{ ModuleName = "3.2 护理组工作量绩效测算表", SheetType = (int)SheetType.Workload, ExtractId = null },
};
var data = perforModmoduleRepository.GetEntities(t => t.HospitalId == hospitalId);
var inexistence = moduleList.Where(t => !data.Select(p => p.ModuleName).ToArray().Contains(t.ModuleName));
if (inexistence != null && inexistence.Any())
{
List<mod_module> modules = new List<mod_module>();
foreach (var item in inexistence)
{
var module = new mod_module
{
HospitalId = hospitalId,
ModuleName = item.ModuleName,
SheetType = (int)item.SheetType,
ReadOnly = 1,
ExtractId = item.ExtractId,
IsGenerated = 0
};
modules.Add(module);
}
if (modules.Any())
perforModmoduleRepository.AddRange(modules.ToArray());
}
}
/// <summary>
/// 绩效模板修改
/// </summary>
/// <returns></returns>
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("修改失败!");
return entity;
}
/// <summary>
/// 绩效模板删除
/// </summary>
/// <returns></returns>
public void DelModule(int moduleId)
{
var entity = perforModmoduleRepository.GetEntity(t => t.Id == moduleId);
if (entity == null)
throw new PerformanceException("该绩效抽取方案不存在!");
if (!perforModmoduleRepository.Remove(entity))
throw new PerformanceException("删除失败!");
if (entity.SheetType != (int)SheetType.SpecialUnit)
{
var itemList = perforModitemRepository.GetEntities(t => t.ModuleId == moduleId);
if (itemList != null && itemList.Any())
perforModitemRepository.RemoveRange(itemList.ToArray());
}
else
{
var specialList = perforModspecialRepository.GetEntities(t => t.HospitalId == entity.HospitalId);
if (specialList != null && specialList.Any())
perforModspecialRepository.RemoveRange(specialList.ToArray());
}
}
/// <summary>
/// 绩效收入模板配置项列表
/// </summary>
/// <returns></returns>
public List<mod_item> Items(int moduleId)
{
var list = perforModitemRepository.GetEntities(t => t.ModuleId == moduleId);
return list;
}
/// <summary>
/// 绩效收入模板配置项新增
/// </summary>
/// <returns></returns>
public List<mod_item> AddItem(ItemListRequest request)
{
var entity = perforModmoduleRepository.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 (!perforModitemRepository.AddRange(list.ToArray()))
throw new PerformanceException("添加失败!");
return list;
}
/// <summary>
/// 绩效收入模板配置项修改
/// </summary>
/// <returns></returns>
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("修改失败!");
return item;
}
/// <summary>
/// 绩效收入模板配置项删除
/// </summary>
/// <returns></returns>
public void DelItem(int itemId)
{
var item = perforModitemRepository.GetEntity(t => t.Id == itemId);
if (item == null)
throw new PerformanceException("Item项不存在!");
perforModitemRepository.Remove(item);
}
/// <summary>
/// 特殊科室模板配置项列表
/// </summary>
/// <returns></returns>
public List<mod_special> Special(int hospitalId)
{
var list = perforModspecialRepository.GetEntities(t => t.HospitalId == hospitalId);
return list;
}
/// <summary>
/// 特殊科室模板配置项新增
/// </summary>
/// <returns></returns>
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>
/// 特殊科室模板配置项修改
/// </summary>
/// <returns></returns>
public mod_special EditSpecial(mod_special entity)
{
var special = perforModspecialRepository.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;
if (!perforModspecialRepository.Update(special))
throw new PerformanceException("修改失败!");
return special;
}
/// <summary>
/// 特殊科室模板配置项删除
/// </summary>
/// <returns></returns>
public void DelSpecial(int specialId)
{
var special = perforModspecialRepository.GetEntity(t => t.Id == specialId);
if (special == null)
throw new PerformanceException("需要删除的项不存在!");
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 ITEM_TYPE FROM dbo.DIC_FEE GROUP BY ITEM_TYPE;";
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,
ReadOnly = 1
});
LogHelper.Information($"受影响行数{itemList.Count()}", "添加默认收费项");
perforModitemRepository.AddRange(itemList.ToArray());
module.IsGenerated = 1;
perforModmoduleRepository.Update(module);
}
}
}
}
/// <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();
}
}
}
...@@ -18,22 +18,118 @@ public class ComputeDirector : IAutoInjection ...@@ -18,22 +18,118 @@ public class ComputeDirector : IAutoInjection
private readonly BaiscNormService baiscNormService; private readonly BaiscNormService baiscNormService;
private readonly PerforCofdirectorRepository perforCofdirectorRepository; private readonly PerforCofdirectorRepository perforCofdirectorRepository;
private readonly PerforCofworkyearRepository perforCofworkyearRepository; private readonly PerforCofworkyearRepository perforCofworkyearRepository;
private readonly PerforResaccountnurseRepository perforResAccountnurseRepository; private readonly PerforResaccountRepository perforResaccountRepository;
private readonly PerforResaccountdoctorRepository perforResAccountdoctorRepository; //private readonly PerforResaccountdoctorRepository perforResAccountdoctorRepository;
public ComputeDirector(BaiscNormService baiscNormService, public ComputeDirector(BaiscNormService baiscNormService,
PerforCofdirectorRepository perforCofdirectorRepository, PerforCofdirectorRepository perforCofdirectorRepository,
PerforCofworkyearRepository perforCofworkyearRepository, PerforCofworkyearRepository perforCofworkyearRepository,
PerforResaccountnurseRepository perforResAccountnurseRepository, PerforResaccountRepository perforResaccountRepository)
PerforResaccountdoctorRepository perforResAccountdoctorRepository)
{ {
this.baiscNormService = baiscNormService; this.baiscNormService = baiscNormService;
this.perforCofdirectorRepository = perforCofdirectorRepository; this.perforCofdirectorRepository = perforCofdirectorRepository;
this.perforCofworkyearRepository = perforCofworkyearRepository; this.perforCofworkyearRepository = perforCofworkyearRepository;
this.perforResAccountnurseRepository = perforResAccountnurseRepository; this.perforResaccountRepository = perforResaccountRepository;
this.perforResAccountdoctorRepository = perforResAccountdoctorRepository;
} }
#region 老版计算
///// <summary>
///// 临床科室主任、临床科室副主任、临床科室护士长 计算
///// </summary>
///// <param name="empolyeeList"></param>
///// <param name="nurseList"></param>
///// <param name="directorList"></param>
///// <returns></returns>
//public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_accountbasic> accountbasicList, per_allot allot)
//{
// //规模绩效和效率绩效配置表
// var directorList = perforCofdirectorRepository.GetEntities(t => t.AllotID == allot.ID);
// //取出医生科室
// var doctorList = perforResAccountdoctorRepository.GetEntities(t => t.AllotID == allot.ID);
// //取出护士科室
// var nurseList = perforResAccountnurseRepository.GetEntities(t => t.AllotID == allot.ID);
// List<ComputeResult> computeList = new List<ComputeResult>();
// // 主任及护士长 对应 效率绩效/规模绩效 关系
// // 科室名称 确定绩效计算人员中的人群
// // 绩效考核基数参考对象 确定科室下那些考核对象归纳为 科室主任 护士长
// // 数据库存放的文本 与枚举 全文字中文匹配
// var basicRuleList = new[]
// {
// new { AccountUnitType = AccountUnitType.临床科室, PerforType = PerforType.临床主任, DirectorType = DirectorType.临床科室主任 },
// new { AccountUnitType = AccountUnitType.临床科室, PerforType = PerforType.临床副主任, DirectorType = DirectorType.临床科室副主任 },
// new { AccountUnitType = AccountUnitType.医技科室, PerforType = PerforType.医技主任, DirectorType = DirectorType.医技科室主任 },
// new { AccountUnitType = AccountUnitType.医技科室, PerforType = PerforType.医技副主任, DirectorType = DirectorType.医技科室副主任 },
// new { AccountUnitType = AccountUnitType.临床科室, PerforType = PerforType.护士长, DirectorType = DirectorType.临床科室护士长 },
// };
// foreach (var basicRule in basicRuleList)
// {
// var needCompute = empolyeeList.Where(t => t.AccountType == basicRule.AccountUnitType.ToString() && t.FitPeople.Trim() == EnumHelper.GetDescription(basicRule.PerforType));
// foreach (var item in needCompute)
// {
// var accountbasic = accountbasicList.FirstOrDefault(t => t.Department == item.Department);
// if (accountbasic == null) continue;
// //分别取出对应的 计算 人员 平均值等信息
// decimal? number, perforTotal, avg;
// if (basicRule.PerforType == PerforType.护士长)
// {
// if (!accountbasic.NurseHeadNumber.HasValue || accountbasic.NurseHeadNumber.Value == 0) continue;
// var resAccount = nurseList.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit);
// number = resAccount?.Number;
// perforTotal = resAccount?.PerforTotal;
// avg = resAccount?.Avg;
// }
// else
// {
// if (!accountbasic.DoctorDirectorNumber.HasValue || accountbasic.DoctorDirectorNumber.Value == 0) continue;
// var resAccount = doctorList.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit);
// number = resAccount?.Number;
// perforTotal = resAccount?.PerforTotal;
// avg = resAccount?.Avg;
// }
// var efficiency = (basicRule.PerforType == PerforType.护士长) ? accountbasic.NurseEffic : accountbasic.DoctorEffic;
// var scale = (basicRule.PerforType == PerforType.护士长) ? accountbasic.NurseScale : accountbasic.DoctorScale;
// var grant = (basicRule.PerforType == PerforType.护士长) ? accountbasic.NurseGrant : accountbasic.DoctorGrant;
// var compute = new ComputeResult
// {
// AccountType = item.AccountType,
// AccountingUnit = item.AccountingUnit,
// EmployeeName = item.DoctorName,
// FitPeople = item.FitPeople,
// JobTitle = item.JobTitle,
// Number = number,
// PerforTotal = perforTotal,
// Avg = avg,
// Efficiency = avg * (efficiency ?? 1),
// Scale = perforTotal * (scale ?? 1),
// //Grant = item.Grant ?? 1,
// ScoreAverageRate = item.ScoreAverageRate,
// Punishment = item.Punishment,
// OtherPerfor = item.OtherPerfor,
// Adjust = item.Adjust,
// //Workload = item.Workload
// };
// //应发管理绩效
// compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * grant;
// //绩效合计
// compute.PerforSumFee = compute.Avg + compute.ShouldGiveFee;
// //应发绩效
// compute.GiveFee = compute.PerforSumFee * compute.ScoreAverageRate + (item.Punishment ?? 0) + (item.OtherPerfor ?? 0);
// //实发绩效
// compute.RealGiveFee = compute.GiveFee * (item.Adjust ?? 1m);
// computeList.Add(compute);
// }
// }
// return computeList;
//}
#endregion
/// <summary> /// <summary>
/// 临床科室主任、临床科室副主任、临床科室护士长 计算 /// 临床科室主任、临床科室副主任、临床科室护士长 计算
/// </summary> /// </summary>
...@@ -43,93 +139,80 @@ public class ComputeDirector : IAutoInjection ...@@ -43,93 +139,80 @@ public class ComputeDirector : IAutoInjection
/// <returns></returns> /// <returns></returns>
public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_accountbasic> accountbasicList, per_allot allot) public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<im_accountbasic> accountbasicList, per_allot allot)
{ {
//规模绩效和效率绩效配置表
var directorList = perforCofdirectorRepository.GetEntities(t => t.AllotID == allot.ID);
//取出医生科室
var doctorList = perforResAccountdoctorRepository.GetEntities(t => t.AllotID == allot.ID);
//取出护士科室
var nurseList = perforResAccountnurseRepository.GetEntities(t => t.AllotID == allot.ID);
List<ComputeResult> computeList = new List<ComputeResult>();
// 主任及护士长 对应 效率绩效/规模绩效 关系
// 科室名称 确定绩效计算人员中的人群
// 绩效考核基数参考对象 确定科室下那些考核对象归纳为 科室主任 护士长
// 数据库存放的文本 与枚举 全文字中文匹配
var basicRuleList = new[] var basicRuleList = new[]
{ {
new { AccountUnitType = AccountUnitType.临床科室, PerforType = PerforType.临床主任, DirectorType = DirectorType.临床科室主任 }, new { AccountUnitType = AccountUnitType.科主任, UnitType = UnitType.医生组 },
new { AccountUnitType = AccountUnitType.临床科室, PerforType = PerforType.临床副主任, DirectorType = DirectorType.临床科室副主任 }, new { AccountUnitType = AccountUnitType.护士长, UnitType = UnitType.护理组 },
new { AccountUnitType = AccountUnitType.医技科室, PerforType = PerforType.医技主任, DirectorType = DirectorType.医技科室主任 }, new { AccountUnitType = AccountUnitType.科主任, UnitType = UnitType.医技组 },
new { AccountUnitType = AccountUnitType.医技科室, PerforType = PerforType.医技副主任, DirectorType = DirectorType.医技科室副主任 },
new { AccountUnitType = AccountUnitType.临床科室, PerforType = PerforType.护士长, DirectorType = DirectorType.临床科室护士长 },
}; };
foreach (var basicRule in basicRuleList) //取出科室
{ var dataList = perforResaccountRepository.GetEntities(t => t.AllotID == allot.ID);
var needCompute = empolyeeList.Where(t => t.AccountType == basicRule.AccountUnitType.ToString() && t.FitPeople.Trim() == EnumHelper.GetDescription(basicRule.PerforType));
foreach (var item in needCompute)
{
var accountbasic = accountbasicList.FirstOrDefault(t => t.Department == item.Department);
if (accountbasic == null) continue;
//分别取出对应的 计算 人员 平均值等信息 List<ComputeResult> computeList = new List<ComputeResult>();
decimal? number, perforTotal, avg; foreach (var accountbasic in accountbasicList)
if (basicRule.PerforType == PerforType.护士长) {
{ //if (!accountbasic.ManagerNumber.HasValue || accountbasic.ManagerNumber.Value == 0)
if (!accountbasic.NurseHeadNumber.HasValue || accountbasic.NurseHeadNumber.Value == 0) continue; // continue;
if (!accountbasic.DoctorDirectorNumber.HasValue || accountbasic.DoctorDirectorNumber.Value == 0)
var resAccount = nurseList.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit); continue;
number = resAccount?.Number; //分别取出对应的 计算 人员 平均值等信息
perforTotal = resAccount?.PerforTotal; var resAccount = dataList.Where(t => t.UnitType == accountbasic.UnitType && t.AccountingUnit == accountbasic.DoctorAccountingUnit);
avg = resAccount?.Avg; var number = resAccount.OrderByDescending(t => t.ManagerNumber).Sum(t => t.ManagerNumber + t.Number);
} var perforTotal = resAccount.Max(t => t.PerforTotal);
else var avg = resAccount.Max(t => t.Avg);
{
if (!accountbasic.DoctorDirectorNumber.HasValue || accountbasic.DoctorDirectorNumber.Value == 0) continue;
var resAccount = doctorList.FirstOrDefault(t => t.AccountingUnit == item.AccountingUnit); var basicRule = basicRuleList.FirstOrDefault(t => t.UnitType == (UnitType)accountbasic.UnitType);
number = resAccount?.Number; var empolyee = empolyeeList.FirstOrDefault(t => t.AccountType == basicRule.AccountUnitType.ToString() && t.AccountingUnit == accountbasic.DoctorAccountingUnit);
perforTotal = resAccount?.PerforTotal;
avg = resAccount?.Avg;
}
var efficiency = (basicRule.PerforType == PerforType.护士长) ? accountbasic.NurseEffic : accountbasic.DoctorEffic;
var scale = (basicRule.PerforType == PerforType.护士长) ? accountbasic.NurseScale : accountbasic.DoctorScale;
var grant = (basicRule.PerforType == PerforType.护士长) ? accountbasic.NurseGrant : accountbasic.DoctorGrant;
var compute = new ComputeResult if (empolyee == null)
{
empolyee = new ComputeEmployee
{ {
AccountType = item.AccountType, AccountType = basicRule.AccountUnitType.ToString(),
AccountingUnit = item.AccountingUnit, DoctorName = "人员信息缺失",
EmployeeName = item.DoctorName, FitPeople = "",
FitPeople = item.FitPeople, ScoreAverageRate = 1,
JobTitle = item.JobTitle, Punishment = 0,
OtherPerfor = 0,
Number = number, Adjust = 1,
PerforTotal = perforTotal,
Avg = avg,
Efficiency = avg * (efficiency ?? 1),
Scale = perforTotal * (scale ?? 1),
//Grant = item.Grant ?? 1,
ScoreAverageRate = item.ScoreAverageRate,
Punishment = item.Punishment,
OtherPerfor = item.OtherPerfor,
Adjust = item.Adjust,
//Workload = item.Workload
}; };
//应发管理绩效
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * grant;
//绩效合计
compute.PerforSumFee = compute.Avg + compute.ShouldGiveFee;
//应发绩效
compute.GiveFee = compute.PerforSumFee * compute.ScoreAverageRate + (item.Punishment ?? 0) + (item.OtherPerfor ?? 0);
//实发绩效
compute.RealGiveFee = compute.GiveFee * (item.Adjust ?? 1m);
computeList.Add(compute);
} }
var compute = new ComputeResult
{
UnitType = basicRule.UnitType.ToString(),
AccountingUnit = accountbasic.DoctorAccountingUnit,
AccountType = empolyee.AccountType,
EmployeeName = empolyee.DoctorName,
FitPeople = empolyee.FitPeople,
JobTitle = empolyee.JobTitle,
ScoreAverageRate = empolyee.ScoreAverageRate,
Punishment = empolyee.Punishment,
OtherPerfor = empolyee.OtherPerfor,
Number = number,
PerforTotal = perforTotal,
Avg = avg,
Efficiency = avg * (accountbasic.DoctorEffic ?? 1),
Scale = perforTotal * (accountbasic.DoctorScale ?? 1),
Adjust = empolyee.Adjust,
};
//应发管理绩效
compute.ShouldGiveFee = (compute.Efficiency + compute.Scale) * accountbasic.DoctorGrant;
//绩效合计
compute.PerforSumFee = compute.Avg + compute.ShouldGiveFee;
//应发绩效
compute.GiveFee = compute.PerforSumFee * compute.ScoreAverageRate + (compute.Punishment ?? 0) + (compute.OtherPerfor ?? 0);
//实发绩效
compute.RealGiveFee = compute.GiveFee * (compute.Adjust ?? 1m);
computeList.Add(compute);
} }
return computeList; return computeList;
} }
/// <summary> /// <summary>
/// 院领导、业务中层、工勤人员 计算 /// 院领导、业务中层、工勤人员 计算
/// </summary> /// </summary>
......
...@@ -52,10 +52,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom ...@@ -52,10 +52,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom
//判断是否创建头部 //判断是否创建头部
if (!isHasData && dataList != null && dataList.Count() > 0) if (!isHasData && dataList != null && dataList.Count() > 0)
isHasData = true; isHasData = true;
foreach (var item in EnumHelper.GetItems<UnitType>())
foreach (var group in dataList.GroupBy(t => t.UnitType))
{ {
var typeName = $"{GetCleanSheetName(sheet.SheetName)}({ group.Key})"; var group = dataList.Where(t => t.UnitType == item.Name);
var typeName = $"{GetCleanSheetName(sheet.SheetName)}({item.Name})";
//创建子集头部信息 //创建子集头部信息
PerHeader childHeader = new PerHeader(1, childPointCell, typeName, 1, 1, 1, null, 2); PerHeader childHeader = new PerHeader(1, childPointCell, typeName, 1, 1, 1, null, 2);
headList.Add(childHeader); headList.Add(childHeader);
...@@ -64,11 +65,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom ...@@ -64,11 +65,11 @@ public PerSheet MergeCompute(PerExcel excel, List<EntityModels.cof_income> incom
.GroupBy(t => t.AccountingUnit).Select(t => new PerData .GroupBy(t => t.AccountingUnit).Select(t => new PerData
{ {
SignID = childHeader.SignID, SignID = childHeader.SignID,
UnitType = group.Key, UnitType = item.Name,
AccountingUnit = t.Key, AccountingUnit = t.Key,
CellValue = ComputeValue(t, sheet.SheetName, group.Key, incomeconfs), CellValue = ComputeValue(t, sheet.SheetName, item.Name, incomeconfs),
TypeName = typeName, TypeName = typeName,
RowNumber = dataList.FirstOrDefault(s => s.AccountingUnit == t.Key && s.UnitType == group.Key)?.RowNumber ?? 0, RowNumber = dataList.FirstOrDefault(s => s.AccountingUnit == t.Key && s.UnitType == item.Name)?.RowNumber ?? 0,
ComputRule = type == SheetType.Expend ? 2 : 1 ComputRule = type == SheetType.Expend ? 2 : 1
}); });
...@@ -143,7 +144,7 @@ public PerSheet OnceCompute(PerSheet sheet) ...@@ -143,7 +144,7 @@ public PerSheet OnceCompute(PerSheet sheet)
{ {
header.PointCell = header.PointCell + phead; header.PointCell = header.PointCell + phead;
header.Children.ForEach(item => item.PointCell = item.PointCell + phead); header.Children.ForEach(item => item.PointCell = item.PointCell + phead);
phead = phead + 2; phead = phead + 3;
} }
} }
...@@ -155,23 +156,25 @@ public PerSheet OnceCompute(PerSheet sheet) ...@@ -155,23 +156,25 @@ public PerSheet OnceCompute(PerSheet sheet)
if (header.IsHasChildren) if (header.IsHasChildren)
{ {
var maxcell = header.Children.Max(t => t.PointCell); var maxcell = header.Children.Max(t => t.PointCell);
var parentHead = new PerHeader(0, maxcell + 1, $" {header.CellValue}合计", 0, 1, 2, new List<PerHeader>(), 1); var parentHead = new PerHeader(0, maxcell + 1, $" {header.CellValue}合计", 0, 1, 3, new List<PerHeader>(), 1);
perHeadList.Add(parentHead); perHeadList.Add(parentHead);
var typeClass = dataList.Where(t => header.Children.Select(s => s.CellValue).Contains(t.TypeName)); var typeClass = dataList.Where(t => header.Children.Select(s => s.CellValue).Contains(t.TypeName));
int pointcell = 0; int pointcell = 0;
foreach (var group in typeClass.GroupBy(t => t.UnitType)) foreach (var item in EnumHelper.GetItems<UnitType>())
{ {
pointcell++; pointcell++;
var childHead = new PerHeader(1, maxcell + pointcell, group.Key, 1, 1, 1, null, 1); var group = typeClass.Where(t => t.UnitType == item.Name);
var childHead = new PerHeader(1, maxcell + pointcell, item.Name, 1, 1, 1, null, 1);
parentHead.Children.Add(childHead); parentHead.Children.Add(childHead);
var ds = group.Where(t => t.CellValue.HasValue ) var ds = group.Where(t => t.CellValue.HasValue)
.GroupBy(t => t.AccountingUnit).Select(t => new PerData .GroupBy(t => t.AccountingUnit).Select(t => new PerData
{ {
UnitType = group.Key, UnitType = item.Name,
AccountingUnit = t.Key, AccountingUnit = t.Key,
CellValue = t.Sum(s => s.CellValue), CellValue = t.Sum(s => s.CellValue),
TypeName = group.Key, TypeName = item.Name,
RowNumber = t.FirstOrDefault()?.RowNumber ?? 0, RowNumber = t.FirstOrDefault()?.RowNumber ?? 0,
IsTotal = 1, IsTotal = 1,
PointCell = maxcell + pointcell, PointCell = maxcell + pointcell,
...@@ -201,13 +204,13 @@ public PerSheet OnceCompute(PerSheet sheet) ...@@ -201,13 +204,13 @@ public PerSheet OnceCompute(PerSheet sheet)
int thiscell = maxhead.Children != null && maxhead.Children.Count > 0 int thiscell = maxhead.Children != null && maxhead.Children.Count > 0
? maxhead.Children.Max(t => t.PointCell) + 1 ? maxhead.Children.Max(t => t.PointCell) + 1
: maxhead.PointCell; : maxhead.PointCell;
PerHeader perHead = new PerHeader(0, thiscell, "科室可核算业绩收入", 0, 1, 2, new List<PerHeader>(), 1); PerHeader perHead = new PerHeader(0, thiscell, "科室可核算业绩收入", 0, 1, 3, new List<PerHeader>(), 1);
var dataList = sheet.PerData.Select(t => (PerData)t); var dataList = sheet.PerData.Select(t => (PerData)t);
List<PerData> perDataList = new List<PerData>(); List<PerData> perDataList = new List<PerData>();
//插入合计结果 //插入合计结果
var groupList = dataList.Where(t => t.IsTotal == 1 && t.CellValue.HasValue ).GroupBy(t => t.UnitType); var groupList = dataList.Where(t => t.IsTotal == 1 && t.CellValue.HasValue).GroupBy(t => t.UnitType);
foreach (var group in groupList) foreach (var group in groupList)
{ {
var childHead = new PerHeader(1, thiscell, group.Key, 1, 1, 1, null, 1); var childHead = new PerHeader(1, thiscell, group.Key, 1, 1, 1, null, 1);
......
...@@ -101,21 +101,23 @@ public PerSheet OnceCompute(PerSheet sheet, List<CofDrugProp> confs = null) ...@@ -101,21 +101,23 @@ public PerSheet OnceCompute(PerSheet sheet, List<CofDrugProp> confs = null)
public (PerSheet Sheet, List<PerData> PerData) TwiceCompute(PerSheet sheet) public (PerSheet Sheet, List<PerData> PerData) TwiceCompute(PerSheet sheet)
{ {
//获取最大列坐标位置 //获取最大列坐标位置
int thiscell = sheet.PerHeader.OrderByDescending(t => t.PointCell).FirstOrDefault().Children.Max(t => t.PointCell) + 1; int thiscell = sheet.PerHeader.OrderByDescending(t => t.PointCell).FirstOrDefault().PointCell + 1;
PerHeader perHead = new PerHeader(0, thiscell, "工作量绩效合计", 0, 2, 1, new List<PerHeader>(), 1); PerHeader perHead = new PerHeader(0, thiscell, "工作量绩效合计", 0, 2, 1, new List<PerHeader>(), 1);
var dataList = sheet.PerData.Select(t => (PerData)t); var dataList = sheet.PerData.Select(t => (PerData)t);
List<PerData> perDataList = new List<PerData>(); List<PerData> perDataList = new List<PerData>();
//插入合计结果 //插入合计结果
var groupList = dataList.Where(t => t.IsTotal == 1 && t.CellValue.HasValue).GroupBy(t => new { t.UnitType, t.AccountingUnit }); //var groupList = dataList.Where(t => t.IsTotal == 1 && t.CellValue.HasValue).GroupBy(t => new { t.UnitType, t.AccountingUnit });
var groupList = dataList.Where(t => t.CellValue.HasValue).GroupBy(t => new { t.UnitType, t.AccountingUnit });
foreach (var group in groupList) foreach (var group in groupList)
{ {
var ds = group.Select(t => new PerData var ds = group.Select(t => new PerData
{ {
UnitType = group.Key.UnitType, UnitType = group.Key.UnitType,
AccountingUnit = group.Key.AccountingUnit, AccountingUnit = group.Key.AccountingUnit,
CellValue = group.Sum(s => s.CellValue), //CellValue = group.Sum(s => s.CellValue),
CellValue = group.Sum(s => s.IsFactor ? s.CellValue * s.FactorValue : s.CellValue),
TypeName = group.Key.UnitType, TypeName = group.Key.UnitType,
RowNumber = group.FirstOrDefault()?.RowNumber ?? 0, RowNumber = group.FirstOrDefault()?.RowNumber ?? 0,
IsTotal = 1, IsTotal = 1,
......
...@@ -16,9 +16,9 @@ public class PerSheetDataReadDeptAccountingt : IPerSheetDataRead ...@@ -16,9 +16,9 @@ public class PerSheetDataReadDeptAccountingt : IPerSheetDataRead
public PerSheetPoint Point => new PerSheetPoint public PerSheetPoint Point => new PerSheetPoint
{ {
HeaderFirstRowNum = 1, HeaderFirstRowNum = 1,
HeaderLastRowNum = 2, HeaderLastRowNum = 1,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 0,
DataFirstRowNum = 3, DataFirstRowNum = 2,
}; };
public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
...@@ -32,39 +32,61 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) ...@@ -32,39 +32,61 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
PerDataAccountBaisc unifyUnit = new PerDataAccountBaisc(); PerDataAccountBaisc unifyUnit = new PerDataAccountBaisc();
unifyUnit.RowNumber = r; unifyUnit.RowNumber = r;
unifyUnit.DoctorAccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元(医生组)").PointCell)?.ToString(); unifyUnit.UnitType = UnitType(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元类型").PointCell)?.ToString());
unifyUnit.NurseAccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元(护理组)").PointCell)?.ToString(); unifyUnit.AccountingUnit = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元").PointCell)?.ToString();
unifyUnit.Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科室名称").PointCell)?.ToString(); unifyUnit.Department = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科室名称").PointCell)?.ToString();
unifyUnit.DoctorDirectorNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元科主任数量" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.ManagerNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "科主任/护士长人数").PointCell)?.ToString());
unifyUnit.DoctorNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元医生数量" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.Number = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元人员数量").PointCell)?.ToString());
unifyUnit.DoctorBasicFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "预算比例" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.BasicFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "预算比例").PointCell)?.ToString());
unifyUnit.DoctorSlopeFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "倾斜系数" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.SlopeFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "倾斜系数").PointCell)?.ToString());
unifyUnit.DoctorScale = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "规模绩效系数" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.Scale = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "规模绩效系数").PointCell)?.ToString());
unifyUnit.DoctorEffic = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "效率绩效系数" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.Effic = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "效率绩效系数").PointCell)?.ToString());
unifyUnit.DoctorGrant = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "管理绩效发放系数" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.Grant = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "管理绩效发放系数").PointCell)?.ToString());
unifyUnit.DoctorOtherPerfor1 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效1" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.MinimumReference = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "保底绩效参考标准").PointCell)?.ToString();
unifyUnit.DoctorOtherPerfor2 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效2" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.MinimumFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "保底绩效系数").PointCell)?.ToString());
unifyUnit.DoctorExtra = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医院奖罚" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.OtherPerfor1 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效1").PointCell)?.ToString());
unifyUnit.DoctorScoringAverage = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.OtherPerfor2 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效2").PointCell)?.ToString());
unifyUnit.DoctorAdjustFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "调节系数" && p.Parent.CellValue == "医生组").PointCell)?.ToString()); unifyUnit.Extra = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医院奖罚").PointCell)?.ToString());
unifyUnit.ScoringAverage = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率").PointCell)?.ToString());
unifyUnit.AdjustFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "调节系数").PointCell)?.ToString());
unifyUnit.NurseHeadNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元护士长数量" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseHeadNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元护士长数量" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元护士数量" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseNumber = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元护士数量" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseBasicFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "预算比例" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseBasicFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "预算比例" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseSlopeFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "倾斜系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseSlopeFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "倾斜系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseScale = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "规模绩效系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseScale = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "规模绩效系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseEffic = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "效率绩效系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseEffic = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "效率绩效系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseGrant = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "管理绩效发放系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseGrant = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "管理绩效发放系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseOtherPerfor1 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效1" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseOtherPerfor1 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效1" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseOtherPerfor2 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效2" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseOtherPerfor2 = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "其他绩效2" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseExtra = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医院奖罚" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseExtra = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "医院奖罚" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseScoringAverage = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseScoringAverage = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
unifyUnit.NurseAdjustFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "调节系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString()); //unifyUnit.NurseAdjustFactor = ConvertHelper.To<decimal>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "调节系数" && p.Parent.CellValue == "护理组").PointCell)?.ToString());
dataList.Add(unifyUnit); dataList.Add(unifyUnit);
} }
return dataList; return dataList;
} }
/// <summary>
/// 转换核算单元类型
/// </summary>
/// <param name="unitType"></param>
/// <returns></returns>
public int UnitType(string unitType)
{
switch (unitType)
{
case "医生组":
return 1;
case "护理组":
return 2;
case "医技组":
return 3;
default:
return 0;
}
}
} }
} }
...@@ -39,7 +39,7 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader) ...@@ -39,7 +39,7 @@ public List<IPerData> ReadData(ISheet sheet, List<PerHeader> perHeader)
JobTitle = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "职称").PointCell)?.ToString(), JobTitle = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "职称").PointCell)?.ToString(),
FitPeople = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "绩效基数核算参考对象").PointCell)?.ToString(), FitPeople = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "绩效基数核算参考对象").PointCell)?.ToString(),
FitPeopleRatio = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "绩效基数核算系数").PointCell)?.ToString()), FitPeopleRatio = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "绩效基数核算系数").PointCell)?.ToString()),
AccountType = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "核算单元分类").PointCell)?.ToString(), AccountType = row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "人员分类").PointCell)?.ToString(),
PostCoefficient = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "岗位系数").PointCell)?.ToString()), PostCoefficient = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "岗位系数").PointCell)?.ToString()),
WorkTime = NopiSevice.GetCellDatetimeValue(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "参加工作时间").PointCell)), WorkTime = NopiSevice.GetCellDatetimeValue(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "参加工作时间").PointCell)),
ScoreAverageRate = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率").PointCell)?.ToString()), ScoreAverageRate = ConvertHelper.To<decimal?>(row.GetCell(perHeader.FirstOrDefault(p => p.CellValue == "考核得分率").PointCell)?.ToString()),
......
...@@ -15,8 +15,8 @@ public class PerSheetDataReadExpend : IPerSheetDataRead ...@@ -15,8 +15,8 @@ public class PerSheetDataReadExpend : IPerSheetDataRead
{ {
public PerSheetPoint Point => new PerSheetPoint public PerSheetPoint Point => new PerSheetPoint
{ {
HeaderFirstRowNum = 1, HeaderFirstRowNum = 4,
HeaderLastRowNum = 2, HeaderLastRowNum = 4,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 0,
DataFirstRowNum = 5, DataFirstRowNum = 5,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
...@@ -24,16 +24,23 @@ public class PerSheetDataReadExpend : IPerSheetDataRead ...@@ -24,16 +24,23 @@ public class PerSheetDataReadExpend : IPerSheetDataRead
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 0,
UnitType = "医组", UnitType = "医组",
DeptCellNum = 2, DeptCellNum = 3,
FactorRow = 4, FactorRow = 3,
}, },
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 1, AccountingUnitCellNum = 1,
UnitType = "医生组",
DeptCellNum = 3,
FactorRow = 2,
},
new AccountingUnit
{
AccountingUnitCellNum = 2,
UnitType = "护理组", UnitType = "护理组",
DeptCellNum = 2, DeptCellNum = 3,
FactorRow = 3, FactorRow = 1,
}, },
} }
}; };
......
...@@ -15,26 +15,34 @@ public class PerSheetDataReadIncome : IPerSheetDataRead ...@@ -15,26 +15,34 @@ public class PerSheetDataReadIncome : IPerSheetDataRead
{ {
public PerSheetPoint Point => new PerSheetPoint public PerSheetPoint Point => new PerSheetPoint
{ {
HeaderFirstRowNum = 3, HeaderFirstRowNum = 4,
HeaderLastRowNum = 3, HeaderLastRowNum = 4,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 0,
DataFirstRowNum = 4, DataFirstRowNum = 5,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
{ {
//核算单元(医组) //核算单元(医组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 0,
UnitType = "医技组",
DeptCellNum = 3,
FactorRow = 3,
},
//核算单元(医生组)
new AccountingUnit
{
AccountingUnitCellNum = 1,
UnitType = "医生组", UnitType = "医生组",
DeptCellNum = 2, DeptCellNum = 3,
FactorRow = 2, FactorRow = 2,
}, },
//核算单元(护理组) //核算单元(护理组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 1, AccountingUnitCellNum = 2,
UnitType = "护理组", UnitType = "护理组",
DeptCellNum = 2, DeptCellNum = 3,
FactorRow = 1, FactorRow = 1,
} }
} }
......
...@@ -15,26 +15,34 @@ public class PerSheetDataReadOtherIncome : IPerSheetDataRead ...@@ -15,26 +15,34 @@ public class PerSheetDataReadOtherIncome : IPerSheetDataRead
{ {
public PerSheetPoint Point => new PerSheetPoint public PerSheetPoint Point => new PerSheetPoint
{ {
HeaderFirstRowNum = 3, HeaderFirstRowNum = 4,
HeaderLastRowNum = 3, HeaderLastRowNum = 4,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 0,
DataFirstRowNum = 4, DataFirstRowNum = 5,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
{ {
//核算单元(医组) //核算单元(医组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 0,
UnitType = "医技组",
DeptCellNum = 3,
FactorRow = 3,
},
//核算单元(医生组)
new AccountingUnit
{
AccountingUnitCellNum = 1,
UnitType = "医生组", UnitType = "医生组",
DeptCellNum = 2, DeptCellNum = 3,
FactorRow = 2, FactorRow = 2,
}, },
//核算单元(护理组) //核算单元(护理组)
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 1, AccountingUnitCellNum = 2,
UnitType = "护理组", UnitType = "护理组",
DeptCellNum = 2, DeptCellNum = 3,
FactorRow = 1, FactorRow = 1,
} }
} }
......
...@@ -16,16 +16,16 @@ public class PerSheetDataReadWorkload : IPerSheetDataRead ...@@ -16,16 +16,16 @@ public class PerSheetDataReadWorkload : IPerSheetDataRead
public PerSheetPoint Point => new PerSheetPoint public PerSheetPoint Point => new PerSheetPoint
{ {
HeaderFirstRowNum = 1, HeaderFirstRowNum = 1,
HeaderLastRowNum = 2, HeaderLastRowNum = 1,
HeaderFirstCellNum = 0, HeaderFirstCellNum = 0,
DataFirstRowNum = 4, DataFirstRowNum = 3,
AccountingUnit = new List<AccountingUnit> AccountingUnit = new List<AccountingUnit>
{ {
new AccountingUnit new AccountingUnit
{ {
AccountingUnitCellNum = 0, AccountingUnitCellNum = 0,
DeptCellNum = 1, DeptCellNum = 1,
FactorRow = 3 FactorRow = 2
} }
} }
}; };
......
...@@ -15,22 +15,22 @@ public class ReportService : IAutoInjection ...@@ -15,22 +15,22 @@ public class ReportService : IAutoInjection
private PerforPerallotRepository perforPerallotRepository; private PerforPerallotRepository perforPerallotRepository;
private PerforResbaiscnormRepository perforResbaiscnormRepository; private PerforResbaiscnormRepository perforResbaiscnormRepository;
private PerforHospersonfeeRepository perforHospersonfeeRepository; private PerforHospersonfeeRepository perforHospersonfeeRepository;
private PerforResaccountdoctorRepository perforResaccountdoctorRepository; private PerforResaccountRepository perforResaccountRepository;
private PerforResaccountnurseRepository perforResaccountnurseRepository; //private PerforResaccountnurseRepository perforResaccountnurseRepository;
public ReportService(PerforReportRepository perforReportRepository, public ReportService(PerforReportRepository perforReportRepository,
PerforPerallotRepository perforPerallotRepository, PerforPerallotRepository perforPerallotRepository,
PerforResbaiscnormRepository perforResbaiscnormRepository, PerforResbaiscnormRepository perforResbaiscnormRepository,
PerforHospersonfeeRepository perforHospersonfeeRepository, PerforHospersonfeeRepository perforHospersonfeeRepository,
PerforResaccountdoctorRepository perforResaccountdoctorRepository, //PerforResaccountdoctorRepository perforResaccountdoctorRepository,
PerforResaccountnurseRepository perforResaccountnurseRepository) PerforResaccountRepository perforResaccountRepository)
{ {
this.perforReportRepository = perforReportRepository; this.perforReportRepository = perforReportRepository;
this.perforPerallotRepository = perforPerallotRepository; this.perforPerallotRepository = perforPerallotRepository;
this.perforResbaiscnormRepository = perforResbaiscnormRepository; this.perforResbaiscnormRepository = perforResbaiscnormRepository;
this.perforHospersonfeeRepository = perforHospersonfeeRepository; this.perforHospersonfeeRepository = perforHospersonfeeRepository;
this.perforResaccountdoctorRepository = perforResaccountdoctorRepository; this.perforResaccountRepository = perforResaccountRepository;
this.perforResaccountnurseRepository = perforResaccountnurseRepository; //this.perforResaccountnurseRepository = perforResaccountnurseRepository;
} }
/// <summary> /// <summary>
...@@ -102,11 +102,11 @@ public List<PerReport> DoctorAvg(int hospitalId, int isIndex) ...@@ -102,11 +102,11 @@ public List<PerReport> DoctorAvg(int hospitalId, int isIndex)
throw new PerformanceException("用户未创建绩效!"); throw new PerformanceException("用户未创建绩效!");
var result = new List<PerReport>(); var result = new List<PerReport>();
var doctorList = perforResaccountdoctorRepository.GetEntities(t => allotList.Select(a => a.ID).Contains(t.AllotID.Value)); var doctorList = perforResaccountRepository.GetEntities(t => t.UnitType != (int)UnitType.护理组 && allotList.Select(a => a.ID).Contains(t.AllotID.Value));
if (isIndex == 1) if (isIndex == 1)
{ {
var allot = allotList.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).FirstOrDefault(); var allot = allotList.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).FirstOrDefault();
doctorList = perforResaccountdoctorRepository.GetEntities(t => t.AllotID == allot.ID); doctorList = perforResaccountRepository.GetEntities(t => t.UnitType != (int)UnitType.护理组 && t.AllotID == allot.ID);
} }
if (doctorList == null) if (doctorList == null)
return result; return result;
...@@ -134,11 +134,11 @@ public List<PerReport> NurseAvg(int hospitalId, int isIndex) ...@@ -134,11 +134,11 @@ public List<PerReport> NurseAvg(int hospitalId, int isIndex)
throw new PerformanceException("用户未创建绩效!"); throw new PerformanceException("用户未创建绩效!");
var result = new List<PerReport>(); var result = new List<PerReport>();
var doctorList = perforResaccountnurseRepository.GetEntities(t => allotList.Select(a => a.ID).Contains(t.AllotID.Value)); var doctorList = perforResaccountRepository.GetEntities(t => t.UnitType == (int)UnitType.护理组 && allotList.Select(a => a.ID).Contains(t.AllotID.Value));
if (isIndex == 1) if (isIndex == 1)
{ {
var allot = allotList.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).FirstOrDefault(); var allot = allotList.OrderByDescending(t => t.Year).ThenByDescending(t => t.Month).FirstOrDefault();
doctorList = perforResaccountnurseRepository.GetEntities(t => t.AllotID == allot.ID); doctorList = perforResaccountRepository.GetEntities(t => t.UnitType == (int)UnitType.护理组 && t.AllotID == allot.ID);
} }
if (doctorList == null) if (doctorList == null)
return result; return result;
......
...@@ -27,6 +27,18 @@ public class RoleService : IAutoInjection ...@@ -27,6 +27,18 @@ public class RoleService : IAutoInjection
/// <param name="userid"></param> /// <param name="userid"></param>
/// <returns></returns> /// <returns></returns>
public List<RoleResponse> GetUserRole(int userid) public List<RoleResponse> GetUserRole(int userid)
{
var roles = GetRole(userid);
return Mapper.Map<List<RoleResponse>>(roles);
}
/// <summary>
/// 获取用户角色
/// </summary>
/// <param name="userid"></param>
/// <returns></returns>
public List<sys_role> GetRole(int userid)
{ {
if (userid <= 0) if (userid <= 0)
throw new PerformanceException($"userid:{userid} 错误"); throw new PerformanceException($"userid:{userid} 错误");
...@@ -37,7 +49,7 @@ public List<RoleResponse> GetUserRole(int userid) ...@@ -37,7 +49,7 @@ public List<RoleResponse> GetUserRole(int userid)
var roles = _roleRepository.GetEntities(t => joinList.Select(j => j.RoleID).Contains(t.ID)); var roles = _roleRepository.GetEntities(t => joinList.Select(j => j.RoleID).Contains(t.ID));
return Mapper.Map<List<RoleResponse>>(roles); return roles;
} }
} }
} }
...@@ -21,8 +21,8 @@ public class SheetSevice : IAutoInjection ...@@ -21,8 +21,8 @@ public class SheetSevice : IAutoInjection
private PerforImheaderRepository _perforImHeaderRepository; private PerforImheaderRepository _perforImHeaderRepository;
private PerforImemployeeRepository _perforImEmployeeRepository; private PerforImemployeeRepository _perforImEmployeeRepository;
private PerforImaccountbasicRepository _perforImaccountbasicRepository; private PerforImaccountbasicRepository _perforImaccountbasicRepository;
private PerforResaccountdoctorRepository _perforImaccountdoctorRepository; private PerforResaccountRepository _perforResaccountRepository;
private PerforResaccountnurseRepository _perforImaccountnurseRepository; //private PerforResaccountnurseRepository _perforImaccountnurseRepository;
private PerforImspecialunitRepository _perforImspecialunitRepository; private PerforImspecialunitRepository _perforImspecialunitRepository;
public SheetSevice(PerforPerallotRepository perforAllotRepository, public SheetSevice(PerforPerallotRepository perforAllotRepository,
...@@ -31,8 +31,8 @@ public class SheetSevice : IAutoInjection ...@@ -31,8 +31,8 @@ public class SheetSevice : IAutoInjection
PerforImheaderRepository perforImHeaderRepository, PerforImheaderRepository perforImHeaderRepository,
PerforImemployeeRepository perforImEmployeeRepository, PerforImemployeeRepository perforImEmployeeRepository,
PerforImaccountbasicRepository perforImaccountbasicRepository, PerforImaccountbasicRepository perforImaccountbasicRepository,
PerforResaccountdoctorRepository perforImaccountdoctorRepository, PerforResaccountRepository perforResaccountRepository,
PerforResaccountnurseRepository perforImaccountnurseRepository, //PerforResaccountnurseRepository perforImaccountnurseRepository,
PerforImspecialunitRepository perforImspecialunitRepository) PerforImspecialunitRepository perforImspecialunitRepository)
{ {
_perforAllotRepository = perforAllotRepository; _perforAllotRepository = perforAllotRepository;
...@@ -40,8 +40,8 @@ public class SheetSevice : IAutoInjection ...@@ -40,8 +40,8 @@ public class SheetSevice : IAutoInjection
_perforImDataRepository = perforImDataRepository; _perforImDataRepository = perforImDataRepository;
_perforImHeaderRepository = perforImHeaderRepository; _perforImHeaderRepository = perforImHeaderRepository;
_perforImEmployeeRepository = perforImEmployeeRepository; _perforImEmployeeRepository = perforImEmployeeRepository;
_perforImaccountdoctorRepository = perforImaccountdoctorRepository; _perforResaccountRepository = perforResaccountRepository;
_perforImaccountnurseRepository = perforImaccountnurseRepository; //_perforImaccountnurseRepository = perforImaccountnurseRepository;
_perforImaccountbasicRepository = perforImaccountbasicRepository; _perforImaccountbasicRepository = perforImaccountbasicRepository;
_perforImspecialunitRepository = perforImspecialunitRepository; _perforImspecialunitRepository = perforImspecialunitRepository;
} }
...@@ -145,9 +145,7 @@ private void CommonExport(int sheetID, SheetExportResponse response) ...@@ -145,9 +145,7 @@ private void CommonExport(int sheetID, SheetExportResponse response)
{ {
var headList = _perforImHeaderRepository.GetEntities(t => t.SheetID == sheetID)?.OrderBy(t => t.PointCell); var headList = _perforImHeaderRepository.GetEntities(t => t.SheetID == sheetID)?.OrderBy(t => t.PointCell);
if (headList == null) return; if (headList == null) return;
var dataList = _perforImDataRepository.GetEntities(t => t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit).ToList(); var dataList = _perforImDataRepository.GetEntities(t => t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit).ToList();
if (dataList == null || dataList.Count == 0) return;
//添加系数值 //添加系数值
var sheet = _perforImSheetRepository.GetEntity(t => t.ID == sheetID); var sheet = _perforImSheetRepository.GetEntity(t => t.ID == sheetID);
...@@ -155,20 +153,18 @@ private void CommonExport(int sheetID, SheetExportResponse response) ...@@ -155,20 +153,18 @@ private void CommonExport(int sheetID, SheetExportResponse response)
if (sheet.SheetType == (int)SheetType.Workload) if (sheet.SheetType == (int)SheetType.Workload)
{ {
factorhead.Data.Add(new Cell(0, "单元工作量绩效标准:", 1, 2, false, false)); factorhead.Data.Add(new Cell(0, "单元工作量绩效标准:", 1, 2, false, false));
response = AddFactor(response, factorhead, headList.ToList(), dataList, sheet.SheetName); response = AddFactor(response, factorhead, headList.ToList(), dataList);
}
else if (sheet.SheetType == (int)SheetType.OtherIncome)
{
factorhead.Data.Add(new Cell(0, "额外收入绩效标准:", 1, 2, false, false));
response = AddFactor(response, factorhead, headList.ToList(), dataList, sheet.SheetName);
} }
else if (sheet.SheetType == (int)SheetType.Income || sheet.SheetType == (int)SheetType.Income) else if (sheet.SheetType == (int)SheetType.OtherIncome || sheet.SheetType == (int)SheetType.Income || sheet.SheetType == (int)SheetType.Expend)
{ {
factorhead.Data.Add(new Cell(0, "护理组分割比例", 1, 3, false, false)); factorhead.Data.Add(new Cell(0, "护理组分割比例", 1, 4, false, false));
response = AddFactor(response, factorhead, headList.ToList(), dataList, "护理组"); response = AddFactor(response, factorhead, headList.ToList(), dataList, UnitType.护理组);
var factorhead1 = new Row(1); var factorhead1 = new Row(1);
factorhead1.Data.Add(new Cell(0, "医生组分割比例", 1, 3, false, false)); factorhead1.Data.Add(new Cell(0, "医生组分割比例", 1, 4, false, false));
response = AddFactor(response, factorhead1, headList.ToList(), dataList, "医生组"); response = AddFactor(response, factorhead1, headList.ToList(), dataList, UnitType.医生组);
var factorhead2 = new Row(2);
factorhead2.Data.Add(new Cell(0, "医技组分割比例", 1, 4, false, false));
response = AddFactor(response, factorhead2, headList.ToList(), dataList, UnitType.医技组);
} }
//创建列头行 //创建列头行
...@@ -195,6 +191,7 @@ private void CommonExport(int sheetID, SheetExportResponse response) ...@@ -195,6 +191,7 @@ private void CommonExport(int sheetID, SheetExportResponse response)
} }
//创建数据行 //创建数据行
if (dataList == null || dataList.Count == 0) return;
Row rowbody = null; Row rowbody = null;
foreach (var rowNumber in dataList.Select(t => t.RowNumber).Distinct()) //.OrderBy(t => t) foreach (var rowNumber in dataList.Select(t => t.RowNumber).Distinct()) //.OrderBy(t => t)
{ {
...@@ -217,6 +214,11 @@ private void CommonExport(int sheetID, SheetExportResponse response) ...@@ -217,6 +214,11 @@ private void CommonExport(int sheetID, SheetExportResponse response)
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber && t.UnitType == 2)?.AccountingUnit; var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber && t.UnitType == 2)?.AccountingUnit;
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1, false, false)); rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1, false, false));
} }
else if (head.CellValue.Contains("医技组"))
{
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber && t.UnitType == 3)?.AccountingUnit;
rowbody.Data.Add(new Cell(head.PointCell.Value, value, 1, 1, false, false));
}
else else
{ {
var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber)?.AccountingUnit; var value = dataList.FirstOrDefault(t => t.RowNumber == rowNumber)?.AccountingUnit;
...@@ -246,26 +248,27 @@ private void CommonExport(int sheetID, SheetExportResponse response) ...@@ -246,26 +248,27 @@ private void CommonExport(int sheetID, SheetExportResponse response)
private void AccountNurseExport(int sheetID, SheetExportResponse response) private void AccountNurseExport(int sheetID, SheetExportResponse response)
{ {
var list = _perforImaccountnurseRepository.GetEntities(t => t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit); var list = _perforResaccountRepository.GetEntities(t => t.UnitType == (int)UnitType.护理组 && t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit);
if (list != null && list.Count() > 0) if (list != null && list.Count() > 0)
{ {
var row = new Row(0); var row = new Row(0);
row.Data.Add(new Cell(1, "核算单元", 1, 1, false, false)); row.Data.Add(new Cell(1, "核算单元", 1, 1, false, false));
row.Data.Add(new Cell(2, "核算单元护士数量", 1, 1, false, true)); row.Data.Add(new Cell(2, "护士长人数", 1, 1, false, true));
row.Data.Add(new Cell(3, "医生基础系数", 1, 1, false, true)); row.Data.Add(new Cell(3, "核算单元护士数量", 1, 1, false, true));
row.Data.Add(new Cell(4, "倾斜系数", 1, 1, false, true)); row.Data.Add(new Cell(4, "医生基础系数", 1, 1, false, true));
row.Data.Add(new Cell(5, "其他绩效1", 1, 1, false, true)); row.Data.Add(new Cell(5, "倾斜系数", 1, 1, false, true));
row.Data.Add(new Cell(6, "其他绩效2", 1, 1, false, true)); row.Data.Add(new Cell(6, "其他绩效1", 1, 1, false, true));
row.Data.Add(new Cell(7, "医院奖罚", 1, 1, false, true)); row.Data.Add(new Cell(7, "其他绩效2", 1, 1, false, true));
row.Data.Add(new Cell(8, "考核对分率", 1, 1, false, true)); row.Data.Add(new Cell(8, "医院奖罚", 1, 1, false, true));
row.Data.Add(new Cell(9, "调节系数", 1, 1, false, true)); row.Data.Add(new Cell(9, "考核对分率", 1, 1, false, true));
row.Data.Add(new Cell(10, "科室业绩", 1, 1, false, true)); row.Data.Add(new Cell(10, "调节系数", 1, 1, false, true));
row.Data.Add(new Cell(11, "业绩绩效", 1, 1, false, true)); row.Data.Add(new Cell(11, "科室业绩", 1, 1, false, true));
row.Data.Add(new Cell(12, "工作量绩效", 1, 1, false, true)); row.Data.Add(new Cell(12, "业绩绩效", 1, 1, false, true));
row.Data.Add(new Cell(13, "绩效合计", 1, 1, false, true)); row.Data.Add(new Cell(13, "工作量绩效", 1, 1, false, true));
row.Data.Add(new Cell(14, "人均绩效", 1, 1, false, true)); row.Data.Add(new Cell(14, "绩效合计", 1, 1, false, true));
row.Data.Add(new Cell(15, "实发绩效", 1, 1, false, true)); row.Data.Add(new Cell(15, "人均绩效", 1, 1, false, true));
row.Data.Add(new Cell(16, "实发绩效", 1, 1, false, true));
response.Header.Add(row); response.Header.Add(row);
for (int i = 0; i < list.Count(); i++) for (int i = 0; i < list.Count(); i++)
...@@ -273,20 +276,21 @@ private void AccountNurseExport(int sheetID, SheetExportResponse response) ...@@ -273,20 +276,21 @@ private void AccountNurseExport(int sheetID, SheetExportResponse response)
var item = list.ElementAt(i); var item = list.ElementAt(i);
var rowbody = new Row(i); var rowbody = new Row(i);
rowbody.Data.Add(new Cell(1, item.AccountingUnit, 1, 1, false, false)); rowbody.Data.Add(new Cell(1, item.AccountingUnit, 1, 1, false, false));
rowbody.Data.Add(new Cell(2, item.Number, 1, 1, false, true)); rowbody.Data.Add(new Cell(2, item.ManagerNumber, 1, 1, false, true));
rowbody.Data.Add(new Cell(3, item.BasicFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(3, item.Number, 1, 1, false, true));
rowbody.Data.Add(new Cell(4, item.SlopeFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(4, item.BasicFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(5, item.OtherPerfor1, 1, 1, false, true)); rowbody.Data.Add(new Cell(5, item.SlopeFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(6, item.OtherPerfor2, 1, 1, false, true)); rowbody.Data.Add(new Cell(6, item.OtherPerfor1, 1, 1, false, true));
rowbody.Data.Add(new Cell(7, item.Extra, 1, 1, false, true)); rowbody.Data.Add(new Cell(7, item.OtherPerfor2, 1, 1, false, true));
rowbody.Data.Add(new Cell(8, item.ScoringAverage, 1, 1, false, true)); rowbody.Data.Add(new Cell(8, item.Extra, 1, 1, false, true));
rowbody.Data.Add(new Cell(9, item.AdjustFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(9, item.ScoringAverage, 1, 1, false, true));
rowbody.Data.Add(new Cell(10, item.Income, 1, 1, false, true)); rowbody.Data.Add(new Cell(10, item.AdjustFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(11, item.PerforFee, 1, 1, false, true)); rowbody.Data.Add(new Cell(11, item.Income, 1, 1, false, true));
rowbody.Data.Add(new Cell(12, item.WorkloadFee, 1, 1, false, true)); rowbody.Data.Add(new Cell(12, item.PerforFee, 1, 1, false, true));
rowbody.Data.Add(new Cell(13, item.PerforTotal, 1, 1, false, true)); rowbody.Data.Add(new Cell(13, item.WorkloadFee, 1, 1, false, true));
rowbody.Data.Add(new Cell(14, item.Avg, 1, 1, false, true)); rowbody.Data.Add(new Cell(14, item.PerforTotal, 1, 1, false, true));
rowbody.Data.Add(new Cell(15, item.RealGiveFee, 1, 1, false, true)); rowbody.Data.Add(new Cell(15, item.Avg, 1, 1, false, true));
rowbody.Data.Add(new Cell(16, item.RealGiveFee, 1, 1, false, true));
response.Row.Add(rowbody); response.Row.Add(rowbody);
} }
} }
...@@ -294,26 +298,27 @@ private void AccountNurseExport(int sheetID, SheetExportResponse response) ...@@ -294,26 +298,27 @@ private void AccountNurseExport(int sheetID, SheetExportResponse response)
private void AccountDoctorExport(int sheetID, SheetExportResponse response) private void AccountDoctorExport(int sheetID, SheetExportResponse response)
{ {
var list = _perforImaccountdoctorRepository.GetEntities(t => t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit); var list = _perforResaccountRepository.GetEntities(t => t.UnitType != (int)UnitType.护理组 && t.SheetID == sheetID)?.OrderByDescending(t => t.AccountingUnit);
if (list != null && list.Count() > 0) if (list != null && list.Count() > 0)
{ {
var row = new Row(0); var row = new Row(0);
row.Data.Add(new Cell(1, "核算单元", 1, 1, false, false)); row.Data.Add(new Cell(1, "核算单元", 1, 1, false, false));
row.Data.Add(new Cell(2, "核算单元医生数量", 1, 1, false, true)); row.Data.Add(new Cell(2, "科主任人数", 1, 1, false, true));
row.Data.Add(new Cell(3, "医生基础系数", 1, 1, false, true)); row.Data.Add(new Cell(3, "核算单元医生数量", 1, 1, false, true));
row.Data.Add(new Cell(4, "倾斜系数", 1, 1, false, true)); row.Data.Add(new Cell(4, "医生基础系数", 1, 1, false, true));
row.Data.Add(new Cell(5, "其他绩效1", 1, 1, false, true)); row.Data.Add(new Cell(5, "倾斜系数", 1, 1, false, true));
row.Data.Add(new Cell(6, "其他绩效2", 1, 1, false, true)); row.Data.Add(new Cell(6, "其他绩效1", 1, 1, false, true));
row.Data.Add(new Cell(7, "医院奖罚", 1, 1, false, true)); row.Data.Add(new Cell(7, "其他绩效2", 1, 1, false, true));
row.Data.Add(new Cell(8, "考核对分率", 1, 1, false, true)); row.Data.Add(new Cell(8, "医院奖罚", 1, 1, false, true));
row.Data.Add(new Cell(9, "调节系数", 1, 1, false, true)); row.Data.Add(new Cell(9, "考核对分率", 1, 1, false, true));
row.Data.Add(new Cell(10, "科室业绩", 1, 1, false, true)); row.Data.Add(new Cell(10, "调节系数", 1, 1, false, true));
row.Data.Add(new Cell(11, "业绩绩效", 1, 1, false, true)); row.Data.Add(new Cell(11, "科室业绩", 1, 1, false, true));
row.Data.Add(new Cell(12, "工作量绩效", 1, 1, false, true)); row.Data.Add(new Cell(12, "业绩绩效", 1, 1, false, true));
row.Data.Add(new Cell(13, "绩效合计", 1, 1, false, true)); row.Data.Add(new Cell(13, "工作量绩效", 1, 1, false, true));
row.Data.Add(new Cell(14, "人均绩效", 1, 1, false, true)); row.Data.Add(new Cell(14, "绩效合计", 1, 1, false, true));
row.Data.Add(new Cell(15, "实发绩效", 1, 1, false, true)); row.Data.Add(new Cell(15, "人均绩效", 1, 1, false, true));
row.Data.Add(new Cell(16, "实发绩效", 1, 1, false, true));
response.Header.Add(row); response.Header.Add(row);
for (int i = 0; i < list.Count(); i++) for (int i = 0; i < list.Count(); i++)
...@@ -321,21 +326,22 @@ private void AccountDoctorExport(int sheetID, SheetExportResponse response) ...@@ -321,21 +326,22 @@ private void AccountDoctorExport(int sheetID, SheetExportResponse response)
var item = list.ElementAt(i); var item = list.ElementAt(i);
var rowbody = new Row(i); var rowbody = new Row(i);
rowbody.Data.Add(new Cell(1, item.AccountingUnit, 1, 1, false, false)); rowbody.Data.Add(new Cell(1, item.AccountingUnit, 1, 1, false, false));
rowbody.Data.Add(new Cell(2, item.Number, 1, 1, false, true)); rowbody.Data.Add(new Cell(2, item.ManagerNumber, 1, 1, false, true));
rowbody.Data.Add(new Cell(3, item.Number, 1, 1, false, true));
rowbody.Data.Add(new Cell(3, item.BasicFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(4, item.BasicFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(4, item.SlopeFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(5, item.SlopeFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(5, item.OtherPerfor1, 1, 1, false, true)); rowbody.Data.Add(new Cell(6, item.OtherPerfor1, 1, 1, false, true));
rowbody.Data.Add(new Cell(6, item.OtherPerfor2, 1, 1, false, true)); rowbody.Data.Add(new Cell(7, item.OtherPerfor2, 1, 1, false, true));
rowbody.Data.Add(new Cell(7, item.Extra, 1, 1, false, true)); rowbody.Data.Add(new Cell(8, item.Extra, 1, 1, false, true));
rowbody.Data.Add(new Cell(8, item.ScoringAverage, 1, 1, false, true)); rowbody.Data.Add(new Cell(9, item.ScoringAverage, 1, 1, false, true));
rowbody.Data.Add(new Cell(9, item.AdjustFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(10, item.AdjustFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(10, item.Income, 1, 1, false, true)); rowbody.Data.Add(new Cell(11, item.Income, 1, 1, false, true));
rowbody.Data.Add(new Cell(11, item.PerforFee, 1, 1, false, true)); rowbody.Data.Add(new Cell(12, item.PerforFee, 1, 1, false, true));
rowbody.Data.Add(new Cell(12, item.WorkloadFee, 1, 1, false, true)); rowbody.Data.Add(new Cell(13, item.WorkloadFee, 1, 1, false, true));
rowbody.Data.Add(new Cell(13, item.PerforTotal, 1, 1, false, true)); rowbody.Data.Add(new Cell(14, item.PerforTotal, 1, 1, false, true));
rowbody.Data.Add(new Cell(14, item.Avg, 1, 1, false, true)); rowbody.Data.Add(new Cell(15, item.Avg, 1, 1, false, true));
rowbody.Data.Add(new Cell(15, item.RealGiveFee, 1, 1, false, true)); rowbody.Data.Add(new Cell(16, item.RealGiveFee, 1, 1, false, true));
response.Row.Add(rowbody); response.Row.Add(rowbody);
} }
...@@ -344,63 +350,47 @@ private void AccountDoctorExport(int sheetID, SheetExportResponse response) ...@@ -344,63 +350,47 @@ private void AccountDoctorExport(int sheetID, SheetExportResponse response)
private void AccountBaiscExport(int sheetID, SheetExportResponse response) private void AccountBaiscExport(int sheetID, SheetExportResponse response)
{ {
var list = _perforImaccountbasicRepository.GetEntities(t => t.SheetID == sheetID)?.OrderByDescending(t => t.DoctorAccountingUnit); var list = _perforImaccountbasicRepository.GetEntities(t => t.SheetID == sheetID)?.OrderBy(t => t.UnitType).ThenByDescending(t => t.DoctorAccountingUnit);
if (list != null && list.Count() > 0) if (list != null && list.Count() > 0)
{ {
var row1 = new Row(0); var row = new Row(0);
row1.Data.Add(new Cell(1, "核算单元(医生组)", 2, 1, false, false)); row.Data.Add(new Cell(1, "核算单元类型", 1, 1, false, false));
row1.Data.Add(new Cell(2, "核算单元(护理组)", 2, 1, false, false)); row.Data.Add(new Cell(2, "核算单元", 1, 1, false, false));
row1.Data.Add(new Cell(3, "科室", 2, 1, false, false)); row.Data.Add(new Cell(3, "科室名称", 1, 1, false, false));
row1.Data.Add(new Cell(4, "医生组", 1, 8, false, false)); row.Data.Add(new Cell(4, "科主任/护士长人数", 1, 1, false, false));
row1.Data.Add(new Cell(12, "护士组", 1, 8, false, false)); row.Data.Add(new Cell(5, "核算单元人员数量", 1, 1, false, false));
response.Header.Add(row1); row.Data.Add(new Cell(6, "预算比例", 1, 1, false, false));
row.Data.Add(new Cell(7, "倾斜系数", 1, 1, false, false));
var row2 = new Row(1); row.Data.Add(new Cell(8, "规模绩效系数", 1, 1, false, false));
row2.Data.Add(new Cell(4, "核算单元医生数量", 1, 1, false, false)); row.Data.Add(new Cell(9, "效率绩效系数", 1, 1, false, false));
row2.Data.Add(new Cell(5, "医生基础系数", 1, 1, false, false)); row.Data.Add(new Cell(10, "管理绩效发放系数", 1, 1, false, false));
row2.Data.Add(new Cell(6, "倾斜系数", 1, 1, false, false)); row.Data.Add(new Cell(11, "其他绩效1", 1, 1, false, false));
row2.Data.Add(new Cell(7, "其他绩效1", 1, 1, false, false)); row.Data.Add(new Cell(12, "考核得分率", 1, 1, false, false));
row2.Data.Add(new Cell(8, "其他绩效2", 1, 1, false, false)); row.Data.Add(new Cell(13, "医院奖罚", 1, 1, false, false));
row2.Data.Add(new Cell(9, "医院奖罚", 1, 1, false, false)); row.Data.Add(new Cell(14, "其他绩效2", 1, 1, false, false));
row2.Data.Add(new Cell(10, "考核对分率", 1, 1, false, false)); row.Data.Add(new Cell(15, "调节系数", 1, 1, false, false));
row2.Data.Add(new Cell(11, "调节系数", 1, 1, false, false));
row2.Data.Add(new Cell(12, "核算单元护士数量", 1, 1, false, false));
row2.Data.Add(new Cell(13, "医生基础系数", 1, 1, false, false));
row2.Data.Add(new Cell(14, "倾斜系数", 1, 1, false, false));
row2.Data.Add(new Cell(15, "其他绩效1", 1, 1, false, false));
row2.Data.Add(new Cell(16, "其他绩效2", 1, 1, false, false));
row2.Data.Add(new Cell(17, "医院奖罚", 1, 1, false, false));
row2.Data.Add(new Cell(18, "考核对分率", 1, 1, false, false));
row2.Data.Add(new Cell(19, "调节系数", 1, 1, false, false));
response.Header.Add(row2); response.Header.Add(row);
for (int i = 0; i < list.Count(); i++) for (int i = 0; i < list.Count(); i++)
{ {
var item = list.ElementAt(i); var item = list.ElementAt(i);
var rowbody = new Row(i); var rowbody = new Row(i);
rowbody.Data.Add(new Cell(1, item.DoctorAccountingUnit, 1, 1, false, false)); rowbody.Data.Add(new Cell(1, ((UnitType)item.UnitType).ToString(), 1, 1, false, false));
rowbody.Data.Add(new Cell(2, item.NurseAccountingUnit, 1, 1, false, false)); rowbody.Data.Add(new Cell(2, item.DoctorAccountingUnit, 1, 1, false, false));
rowbody.Data.Add(new Cell(3, item.Department, 1, 1, false, false)); rowbody.Data.Add(new Cell(3, item.Department, 1, 1, false, false));
rowbody.Data.Add(new Cell(4, item.DoctorNumber, 1, 1, false, true)); rowbody.Data.Add(new Cell(4, item.DoctorDirectorNumber, 1, 1, false, true));
rowbody.Data.Add(new Cell(5, item.DoctorNumber, 1, 1, false, true));
rowbody.Data.Add(new Cell(5, item.DoctorBasicFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(6, item.DoctorBasicFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(6, item.DoctorSlopeFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(7, item.DoctorSlopeFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(7, item.DoctorOtherPerfor1, 1, 1, false, true)); rowbody.Data.Add(new Cell(8, item.DoctorScale, 1, 1, false, true));
rowbody.Data.Add(new Cell(8, item.DoctorOtherPerfor2, 1, 1, false, true)); rowbody.Data.Add(new Cell(9, item.DoctorEffic, 1, 1, false, true));
rowbody.Data.Add(new Cell(9, item.DoctorExtra, 1, 1, false, true)); rowbody.Data.Add(new Cell(10, item.DoctorGrant, 1, 1, false, true));
rowbody.Data.Add(new Cell(10, item.DoctorScoringAverage, 1, 1, false, true)); rowbody.Data.Add(new Cell(11, item.DoctorOtherPerfor1, 1, 1, false, true));
rowbody.Data.Add(new Cell(11, item.DoctorAdjustFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(12, item.DoctorScoringAverage, 1, 1, false, true));
rowbody.Data.Add(new Cell(13, item.DoctorExtra, 1, 1, false, true));
rowbody.Data.Add(new Cell(12, item.NurseNumber, 1, 1, false, true)); rowbody.Data.Add(new Cell(14, item.DoctorOtherPerfor2, 1, 1, false, true));
rowbody.Data.Add(new Cell(13, item.NurseBasicFactor, 1, 1, false, true)); rowbody.Data.Add(new Cell(15, item.DoctorAdjustFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(14, item.NurseSlopeFactor, 1, 1, false, true));
rowbody.Data.Add(new Cell(15, item.NurseOtherPerfor1, 1, 1, false, true));
rowbody.Data.Add(new Cell(16, item.NurseOtherPerfor2, 1, 1, false, true));
rowbody.Data.Add(new Cell(17, item.NurseExtra, 1, 1, false, true));
rowbody.Data.Add(new Cell(18, item.NurseScoringAverage, 1, 1, false, true));
rowbody.Data.Add(new Cell(19, item.NurseAdjustFactor, 1, 1, false, true));
response.Row.Add(rowbody); response.Row.Add(rowbody);
} }
} }
...@@ -463,29 +453,33 @@ private void EmployeeExport(int sheetID, SheetExportResponse response) ...@@ -463,29 +453,33 @@ private void EmployeeExport(int sheetID, SheetExportResponse response)
/// <param name="dataList"></param> /// <param name="dataList"></param>
/// <param name="type"></param> /// <param name="type"></param>
/// <returns></returns> /// <returns></returns>
private SheetExportResponse AddFactor(SheetExportResponse response, Row row, List<im_header> headList, List<im_data> dataList, string type) private SheetExportResponse AddFactor(SheetExportResponse response, Row row, List<im_header> headList, List<im_data> dataList, UnitType? unitType = null)
{ {
int unitType = type.Contains("医生") ? 1 : 2;
response.Header.Add(row); response.Header.Add(row);
if (headList.Any(t => t.ParentID.HasValue && t.ParentID.Value > 0)) if (unitType == null)
{ {
foreach (var header in headList.Where(t => t.ParentID.HasValue && t.ParentID.Value > 0)) string[] array = new string[] { "核算单元", "科室名称" };
foreach (var header in headList.Where(t => !t.ParentID.HasValue || t.ParentID.Value == 0))
{ {
var factor = _perforImDataRepository.GetEntities(t => t.AllotID == header.AllotID && t.SheetID == header.SheetID && t.IsFactor == 1 if (!array.Contains(header.CellValue))
&& t.TypeName == header.CellValue && t.UnitType == unitType); {
decimal? value = factor != null ? factor.FirstOrDefault().FactorValue : null; var factor = dataList.Where(t => t.AllotID == header.AllotID && t.SheetID == header.SheetID && t.IsFactor == 1
row.Data.Add(new Cell(header.PointCell.Value, value, header.MergeRow.Value, header.MergeCell.Value, header.IsTotal == 1, false)); && t.TypeName == header.CellValue);
decimal? value = factor.Any() ? factor.FirstOrDefault().FactorValue : null;
row.Data.Add(new Cell(header.PointCell.Value, value, header.MergeRow.Value, header.MergeCell.Value, header.IsTotal == 1, false));
}
} }
} }
else else
{ {
string[] array = new string[] { "核算单元(医生组)", "核算单元(医生组)", "核算单元(护理组)", "科室名称" };
foreach (var header in headList.Where(t => !t.ParentID.HasValue || t.ParentID.Value == 0)) foreach (var header in headList.Where(t => !t.ParentID.HasValue || t.ParentID.Value == 0))
{ {
if (header.CellValue != "核算单元(医生组)" && header.CellValue != "核算单元(护理组)" && header.CellValue != "科室名称") if (!array.Contains(header.CellValue))
{ {
var factor = _perforImDataRepository.GetEntities(t => t.AllotID == header.AllotID && t.SheetID == header.SheetID && t.IsFactor == 1 var factor = dataList.Where(t => t.AllotID == header.AllotID && t.SheetID == header.SheetID && t.IsFactor == 1
&& t.TypeName == header.CellValue && t.UnitType == unitType); && t.TypeName == header.CellValue && t.UnitType == (int)unitType);
decimal? value = factor != null ? factor.FirstOrDefault().FactorValue : null; decimal? value = factor.Any() ? factor.FirstOrDefault().FactorValue : null;
row.Data.Add(new Cell(header.PointCell.Value, value, header.MergeRow.Value, header.MergeCell.Value, header.IsTotal == 1, false)); row.Data.Add(new Cell(header.PointCell.Value, value, header.MergeRow.Value, header.MergeCell.Value, header.IsTotal == 1, false));
} }
} }
......
...@@ -82,6 +82,15 @@ public UserIdentity Login(LoginRequest request) ...@@ -82,6 +82,15 @@ public UserIdentity Login(LoginRequest request)
throw new PerformanceException($"登录类型LoginType:{request.LoginType}暂不支持"); throw new PerformanceException($"登录类型LoginType:{request.LoginType}暂不支持");
} }
public UserIdentity GetUser(int userId)
{
var user = _userRepository.GetEntity(t => t.ID == userId);
if (user == null)
throw new PerformanceException("用户信息查询失败");
return Mapper.Map<UserIdentity>(user);
}
/// <summary> /// <summary>
/// 查询用户列表 /// 查询用户列表
/// </summary> /// </summary>
......
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