Commit 5295ed43 by ruyun.zhang@suvalue.com

Merge branch 'feature/管理绩效' into develop

parents 3a58a07e dc0562f1
......@@ -242,6 +242,104 @@ public IActionResult DownloadUniteDeptdetail([FromBody] UniteDeptDetailRequest r
}
#region - 管理绩效
/// <summary>
/// 管理绩效详情显示隐藏设置--加载
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[Route("emp/detail/setting/get")]
[HttpPost]
public ApiResponse GetEmpDetailSetting([FromQuery] int allotId)
{
var response = _computeService.GetEmpDetailSetting(allotId);
return new ApiResponse(ResponseType.OK, response);
}
/// <summary>
/// 管理绩效详情显示隐藏设置--保存
/// </summary>
/// <param name="allotId"></param>
/// <param name="request"></param>
/// <returns></returns>
[Route("emp/detail/setting/save")]
[HttpPost]
public ApiResponse SaveEmpDetailSetting([FromQuery] int allotId, [FromBody] List<UniteDeptDetailItem> request)
{
_computeService.SaveEmpDetailSetting(allotId, request);
return new ApiResponse(ResponseType.OK, "保存成功");
}
/// <summary>
/// 管理绩效详情
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("emp/detail")]
[HttpPost]
public ApiResponse EmpDetail([FromBody] EmpDetailRequest request)
{
#region 提示
// 两个入口
// 一种只传参数 ComputeId
// 一种只传参数 AllotId、UnitType、AccountingUnit
/*
考核前绩效
核算人数
人均绩效
基础绩效系数(6.11 个人岗位系数)
出勤率
实际人均
效率绩效人数
效率系数
效率绩效小计
规模绩效系数
规模绩效小计
管理绩效发放系数
考核前管理绩效
考核得分率
考核后管理绩效
医院奖罚(5.2 业务中层行政中高层业务奖罚)
其他管理绩效(6.9 其他管理绩效)
调节系数
调节后其他绩效(6.10 调节后其他管理绩效)
绩效合计
*/
#endregion
var userid = _claim.GetUserId();
var response = _computeService.EmpDetail(request, userid);
return new ApiResponse(ResponseType.OK, response);
}
/// <summary>
/// 管理绩效详情下载
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("download/emp/detail")]
[HttpPost]
public IActionResult DownloadEmpDetail([FromBody] EmpDetailRequest request)
{
var userid = _claim.GetUserId();
var response = _computeService.EmpDetail(request, userid);
var filepath = _computeService.ExcelDownload(response, "管理绩效详情", request.AllotId);
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
#endregion
#region 20230531 即将弃用,由新接口替代
/// <summary>
/// 科室绩效详情
......@@ -432,6 +530,7 @@ public ApiResponse GetBaiscnorm([FromBody] ComputerRequest request)
return new ApiResponse(ResponseType.OK, "ok", list);
}
#region 20230727 即将弃用,由新接口替代
/// <summary>
/// 医生绩效详情
/// </summary>
......@@ -444,6 +543,8 @@ public ApiResponse DoctorDetail(int computeId)
var result = _computeService.GetDoctorDetail(computeId);
return new ApiResponse(ResponseType.OK, result);
}
#endregion
#region 人均绩效修改
......
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using Newtonsoft.Json.Linq;
using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.Infrastructure;
using Performance.DtoModels.Request;
using Performance.EntityModels;
using Performance.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Performance.Api.Controllers
{
[Route("api/[controller]")]
[Route("api")]
public class MenuController : Controller
{
private MenuService _menuService;
......@@ -26,15 +20,87 @@ public MenuController(MenuService menuService, ClaimService claimService)
}
/// <summary>
/// 设置用户管辖医院
/// 用户登录后菜单列表
/// </summary>
/// <returns></returns>
[Route("menulist")]
[Route("menu/menulist")]
[HttpPost]
public ApiResponse<List<MenuResponse>> MenuList()
{
var menuList = _menuService.GetMenuList(_claim.GetUserId());
return new ApiResponse<List<MenuResponse>>(ResponseType.OK, menuList);
}
#region 菜单管理
/// <summary>
/// 菜单管理列表(树状结构)
/// </summary>
/// <returns></returns>
[Route("system/menu")]
[HttpPost]
public ApiResponse<List<MenuResponse>> GetSystemMenu()
{
var getSystemMenu = _menuService.GetSystemMenu();
return new ApiResponse<List<MenuResponse>>(ResponseType.OK, getSystemMenu);
}
/// <summary>
/// 新增/新增子级
/// </summary>
/// <returns></returns>
[Route("system/menu/add")]
[HttpPost]
public ApiResponse AddSystemMenu([FromBody] MenuRequest menuRequest)
{
return _menuService.AddSystemMenu(menuRequest);
}
/// <summary>
/// 修改
/// </summary>
/// <returns></returns>
[Route("system/menu/update")]
[HttpPost]
public ApiResponse UpdateSystemMenu([FromBody] MenuRequest menuRequest)
{
return _menuService.UpdateSystemMenu(menuRequest);
}
/// <summary>
/// 删除
/// </summary>
/// <returns></returns>
[Route("system/menu/delete")]
[HttpPost]
public ApiResponse DeleteSystemMenu(int menuID)
{
return _menuService.DeleteSystemMenu(menuID);
}
/// <summary>
/// 当前菜单下的角色
/// </summary>
/// <returns></returns>
[Route("system/menu/getrole")]
[HttpPost]
public ApiResponse<List<sys_role_menu>> GetRoleSystemMenu(int menuID)
{
return _menuService.GetRoleSystemMenu(menuID);
}
/// <summary>
/// 设置角色
/// </summary>
/// <returns></returns>
[Route("system/menu/setrole")]
[HttpPost]
public ApiResponse SetRoleSystemMenu([FromBody] RoleRequest roleRequest)
{
return _menuService.SetRoleSystemMenu(roleRequest);
}
#endregion
}
}
......@@ -1074,6 +1074,35 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetEmpDetailSetting(System.Int32)">
<summary>
管理绩效详情显示隐藏设置--加载
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.SaveEmpDetailSetting(System.Int32,System.Collections.Generic.List{Performance.DtoModels.UniteDeptDetailItem})">
<summary>
管理绩效详情显示隐藏设置--保存
</summary>
<param name="allotId"></param>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.EmpDetail(Performance.DtoModels.EmpDetailRequest)">
<summary>
管理绩效详情
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.DownloadEmpDetail(Performance.DtoModels.EmpDetailRequest)">
<summary>
管理绩效详情下载
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.DeptDetail(Performance.DtoModels.DeptDetailRequest)">
<summary>
科室绩效详情
......@@ -2202,7 +2231,43 @@
</member>
<member name="M:Performance.Api.Controllers.MenuController.MenuList">
<summary>
设置用户管辖医院
用户登录后菜单列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.GetSystemMenu">
<summary>
菜单管理列表(树状结构)
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.AddSystemMenu(Performance.DtoModels.Request.MenuRequest)">
<summary>
新增/新增子级
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.UpdateSystemMenu(Performance.DtoModels.Request.MenuRequest)">
<summary>
修改
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.DeleteSystemMenu(System.Int32)">
<summary>
删除
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.GetRoleSystemMenu(System.Int32)">
<summary>
当前菜单下的角色
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.MenuController.SetRoleSystemMenu(Performance.DtoModels.Request.RoleRequest)">
<summary>
设置角色
</summary>
<returns></returns>
</member>
......
......@@ -2304,6 +2304,46 @@
总人数
</summary>
</member>
<member name="P:Performance.DtoModels.Request.MenuRequest.ParentID">
<summary>
父级菜单ID
</summary>
</member>
<member name="P:Performance.DtoModels.Request.MenuRequest.MenuName">
<summary>
菜单名称
</summary>
</member>
<member name="P:Performance.DtoModels.Request.MenuRequest.MenuUrl">
<summary>
菜单Url
</summary>
</member>
<member name="P:Performance.DtoModels.Request.MenuRequest.States">
<summary>
菜单状态 1 启用 2禁用
</summary>
</member>
<member name="P:Performance.DtoModels.Request.MenuRequest.Sort">
<summary>
排序
</summary>
</member>
<member name="P:Performance.DtoModels.Request.RoleRequest.MenuID">
<summary>
菜单id
</summary>
</member>
<member name="P:Performance.DtoModels.Request.RoleRequest.RoleID">
<summary>
角色
</summary>
</member>
<member name="P:Performance.DtoModels.Request.RoleRequest.TogetherAdd">
<summary>
为父级添加相同角色
</summary>
</member>
<member name="P:Performance.DtoModels.Request.SmsCodeRequest.Type">
<summary>
短信验证类型 1 手机号登录 2 其他
......@@ -2439,6 +2479,21 @@
费用类别
</summary>
</member>
<member name="T:Performance.DtoModels.UniteDeptDetailRequest">
<summary>
查看科室绩效详情
</summary>
</member>
<member name="P:Performance.DtoModels.UniteDeptDetailRequest.AllotId">
<summary>
绩效id
</summary>
</member>
<member name="P:Performance.DtoModels.UniteDeptDetailRequest.UnitType">
<summary>
核算单元类型
</summary>
</member>
<member name="P:Performance.DtoModels.EmployeeRequest.ID">
<summary>
......@@ -2825,21 +2880,31 @@
提交类型 1 模板提交 2 其他提交
</summary>
</member>
<member name="T:Performance.DtoModels.UniteDeptDetailRequest">
<member name="T:Performance.DtoModels.EmpDetailRequest">
<summary>
查看科室绩效详情
</summary>
</member>
<member name="P:Performance.DtoModels.UniteDeptDetailRequest.AllotId">
<member name="P:Performance.DtoModels.EmpDetailRequest.AllotId">
<summary>
绩效id
</summary>
</member>
<member name="P:Performance.DtoModels.UniteDeptDetailRequest.UnitType">
<member name="P:Performance.DtoModels.EmpDetailRequest.UnitType">
<summary>
核算单元类型
</summary>
</member>
<member name="P:Performance.DtoModels.EmpDetailRequest.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.EmpDetailRequest.ComputeId">
<summary>
表ID
</summary>
</member>
<member name="P:Performance.DtoModels.UserListRequest.Role">
<summary>
角色
......@@ -4801,6 +4866,11 @@
1 删除 2 驳回 3 修改 4 新增
</summary>
</member>
<member name="P:Performance.DtoModels.MenuResponse.ParentID">
<summary>
父级菜单ID
</summary>
</member>
<member name="P:Performance.DtoModels.MenuResponse.MenuName">
<summary>
菜单名称
......
......@@ -86,7 +86,10 @@
<summary> </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_dept_detail">
<summary> </summary>
<summary>科室详情配置</summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_emp_detail">
<summary>管理绩效配置</summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.cof_depttype">
<summary> 科室类型 </summary>
......@@ -1878,6 +1881,31 @@
</summary>
</member>
<member name="T:Performance.EntityModels.cof_emp_detail">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_emp_detail.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_emp_detail.AllotId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_emp_detail.Settings">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.cof_emp_detail.CreateTime">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.cof_director">
<summary>
规模绩效、效率绩效计算系数配置
......
......@@ -50,6 +50,8 @@ public AutoMapperConfigs()
.ForMember(dest => dest.ID, opt => opt.MapFrom(src => src.MenuID));
CreateMap<sys_menu, MenuResponse>()
.ForMember(dest => dest.MenuID, opt => opt.MapFrom(src => src.ID));
CreateMap<MenuRequest, sys_menu>();
CreateMap<sys_menu, MenuRequest>();
// 绩效 请求
CreateMap<AllotRequest, per_allot>();
......
......@@ -233,4 +233,58 @@ public enum Format
四位小数百分比,
}
}
public class ManagementDept
{
public enum TitleManage
{
//人员工号 = 2701,
//人员分类 = 2801,
//核算单元 = 2901,
考核前其他绩效 = 3001,
考核前绩效 = 3101,
核算人数 = 3200,
人均绩效 = 3300,
基础绩效系数 = 3400,
出勤率 = 3501,
实际人均 = 3600,
效率绩效人数 = 3700,
效率系数 = 3800,
效率绩效小计 = 3900,
规模绩效系数 = 4000,
规模绩效小计 = 4100,
管理绩效发放系数 = 4200,
考核前管理绩效 = 4300,
考核得分率 = 4401,
考核后管理绩效 = 4500,
医院奖罚 = 4601,
夜班费 = 4611,
考核后绩效 = 4621,
其他管理绩效 = 4700,
调节系数 = 4801,
调节后其他绩效 = 4901,
绩效合计 = 5001,
}
public enum DisplayRule
{
始终隐藏,
始终显示,
下发显示,
总额下发后显示,
}
public enum Format
{
,
整数,
一位小数,
两位小数,
三位小数,
四位小数,
整数百分比,
一位小数百分比,
两位小数百分比,
三位小数百分比,
四位小数百分比,
}
}
}
using FluentValidation;
namespace Performance.DtoModels
{
/// <summary>
/// 查看科室绩效详情
/// </summary>
public class UniteDeptDetailRequest
{
/// <summary>
/// 绩效id
/// </summary>
public int AllotId { get; set; }
/// <summary>
/// 核算单元类型
/// </summary>
public string UnitType { get; set; }
public string AccountingUnit { get; set; }
}
}
namespace Performance.DtoModels.Request
{
public class MenuRequest
{
public int ID { get; set; }
/// <summary>
/// 父级菜单ID
/// </summary>
public int ParentID { get; set; }
/// <summary>
/// 菜单名称
/// </summary>
public string MenuName { get; set; }
/// <summary>
/// 菜单Url
/// </summary>
public string? MenuUrl { get; set; }
/// <summary>
/// 菜单状态 1 启用 2禁用
/// </summary>
public int States { get; set; }
/// <summary>
/// 排序
/// </summary>
public int? Sort { get; set; }
}
public class RoleRequest
{
/// <summary>
/// 菜单id
/// </summary>
public int MenuID { get; set; }
/// <summary>
/// 角色
/// </summary>
public int[] RoleID { get; set; }
/// <summary>
/// 为父级添加相同角色
/// </summary>
public bool TogetherAdd { get; set; }
}
}
using FluentValidation;
namespace Performance.DtoModels
namespace Performance.DtoModels
{
/// <summary>
/// 查看科室绩效详情
/// </summary>
public class UniteDeptDetailRequest
public class EmpDetailRequest
{
/// <summary>
/// 绩效id
......@@ -15,6 +13,14 @@ public class UniteDeptDetailRequest
/// 核算单元类型
/// </summary>
public string UnitType { get; set; }
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 表ID
/// </summary>
public int? ComputeId { get; set; }
}
}
......@@ -7,7 +7,10 @@ namespace Performance.DtoModels
public class MenuResponse
{
public int MenuID { get; set; }
/// <summary>
/// 父级菜单ID
/// </summary>
public int ParentID { get; set; }
/// <summary>
/// 菜单名称
/// </summary>
......
......@@ -10,6 +10,7 @@ public class UniteDeptDetailResponse
/// <summary> 0 不显示 1 显示 </summary>
public int ShowFormula { get; set; }
public List<DeptDetailItem> DetailItems { get; set; }
}
public class DeptDetailItem
{
......
......@@ -69,8 +69,10 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<cof_check> cof_check { get; set; }
/// <summary> </summary>
public virtual DbSet<cof_cmi> cof_cmi { get; set; }
/// <summary> </summary>
/// <summary>科室详情配置</summary>
public virtual DbSet<cof_dept_detail> cof_dept_detail { get; set; }
/// <summary>管理绩效配置</summary>
public virtual DbSet<cof_emp_detail> cof_emp_detail { get; set; }
/// <summary> 科室类型 </summary>
public virtual DbSet<cof_depttype> cof_depttype { get; set; }
/// <summary> 规模绩效、效率绩效计算系数配置 </summary>
......
//-----------------------------------------------------------------------
// <copyright file=" cof_emp_detail.cs">
// * FileName: cof_emp_detail.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
///
/// </summary>
[Table("cof_emp_detail")]
public class cof_emp_detail
{
/// <summary>
///
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
///
/// </summary>
public int AllotId { get; set; }
/// <summary>
///
/// </summary>
public string Settings { get; set; }
/// <summary>
///
/// </summary>
public DateTime CreateTime { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file="cof_emp_detail.cs">
// * FileName: cof_emp_detail.cs
// </copyright>
//-----------------------------------------------------------------------
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// cof_emp_detail
/// </summary>
public partial class PerforCofEmpDetailRepository : PerforRepository<cof_emp_detail>
{
public PerforCofEmpDetailRepository(PerformanceDbContext context) : base(context)
{
}
}
}
......@@ -41,6 +41,9 @@ public partial class ComputeService : IAutoInjection
private readonly PerforCofaliasRepository cofaliasRepository;
private readonly PerforReportRepository reportRepository;
private readonly PerforCofDeptDetailRepository _perforCofDeptDetailRepository;
private readonly PerforCofEmpDetailRepository _perforCofEmpDetailRepository;
private readonly PerforAgsecondallotRepository _agsecondallotRepository;
private readonly PerforRescomputeRepository _rescomputeRepository;
public ComputeService(
IMapper mapper,
......@@ -67,7 +70,11 @@ public partial class ComputeService : IAutoInjection
PerforCofaccountingRepository cofaccountingRepository,
PerforCofaliasRepository cofaliasRepository,
PerforReportRepository reportRepository,
PerforCofDeptDetailRepository perforCofDeptDetailRepository)
PerforCofDeptDetailRepository perforCofDeptDetailRepository,
PerforCofEmpDetailRepository perforCofEmpDetailRepository,
PerforAgsecondallotRepository agsecondallotRepository,
PerforRescomputeRepository rescomputeRepository
)
{
_mapper = mapper;
_configuration = configuration;
......@@ -94,6 +101,9 @@ public partial class ComputeService : IAutoInjection
this.cofaliasRepository = cofaliasRepository;
this.reportRepository = reportRepository;
_perforCofDeptDetailRepository = perforCofDeptDetailRepository;
_perforCofEmpDetailRepository = perforCofEmpDetailRepository;
_agsecondallotRepository = agsecondallotRepository;
_rescomputeRepository = rescomputeRepository;
}
public int IsShowManage(int allotId)
......@@ -1706,7 +1716,6 @@ public DeptDataDetails GetDoctorDetail(int computeId)
Management = employee?.Management ?? 0,//管理绩效发放系数
AdjustFactor = employee?.Adjust ?? 1, //调节系数
AdjustLaterOtherFee = employee?.AdjustLaterOtherFee ?? 0, //调节后其他绩效
AccountingUnit = resCompute.AccountingUnit,
EmployeeName = resCompute.EmployeeName,
PerforTotal = resCompute.PerforTotal, //科室考核前绩效
......@@ -1781,9 +1790,9 @@ public DeptDataDetails GetAdministration(int computeId)
Pandect = new PerDataAccountBaisc
{
EmployeeName = resCompute.EmployeeName,//医生姓名
AccountType = resCompute.AccountType,//核算单元类型
JobNumber = resCompute.JobNumber,//工号
AccountingUnit = resCompute.AccountingUnit,//核算单元
AccountType = resCompute.AccountType,//核算单元类型
JobTitle = resCompute.JobTitle,//职称
FitPeople = resCompute.FitPeople,//绩效基数核算参考对象
FitPeopleValue = resCompute.FitPeopleValue ?? 0,//绩效基础核算参考值
......
using AutoMapper;
using Performance.DtoModels;
using Performance.DtoModels.Request;
using Performance.EntityModels;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;
namespace Performance.Services
{
......@@ -13,12 +15,17 @@ public class MenuService : IAutoInjection
{
private readonly IMapper _mapper;
private PerforMenuRepository _menuRepository;
private PerforRolemenuRepository _rolemenuRepository;
public MenuService(
IMapper mapper,
PerforMenuRepository menuRepository)
PerforMenuRepository menuRepository,
PerforRolemenuRepository perforRolemenuRepository
)
{
_mapper = mapper;
_menuRepository = menuRepository;
_rolemenuRepository = perforRolemenuRepository;
}
public List<MenuResponse> GetMenuList(int userid)
......@@ -43,5 +50,139 @@ private List<MenuResponse> RecursionFill(List<sys_menu> menuList, int parentId)
}
return null;
}
public List<MenuResponse> GetSystemMenu()
{
var sysMenus = _menuRepository.GetEntities();
return RecursionFill(sysMenus, 0);
}
public ApiResponse AddSystemMenu(MenuRequest menuRequest)
{
try
{
if (menuRequest == null)
throw new PerformanceException("请填写数据");
var data = _mapper.Map<sys_menu>(menuRequest);
_menuRepository.Add(data);
return new ApiResponse(ResponseType.OK);
}
catch (Exception ex)
{
return new ApiResponse(ResponseType.Fail, "添加失败");
}
}
public ApiResponse UpdateSystemMenu(MenuRequest menuRequest)
{
try
{
var data = _menuRepository.GetEntity(w => w.ID == menuRequest.ID);
if (data == null)
throw new PerformanceException("未找到需要修改的数据");
data.ParentID = menuRequest.ParentID;
data.MenuName = menuRequest.MenuName;
data.MenuUrl = menuRequest.MenuUrl;
data.States = menuRequest.States;
data.Sort = menuRequest.Sort;
_menuRepository.Update(data);
return new ApiResponse(ResponseType.OK);
}
catch (Exception ex)
{
return new ApiResponse(ResponseType.Fail, "修改失败");
}
}
public ApiResponse DeleteSystemMenu(int menuID)
{
try
{
var allMenus = _menuRepository.GetEntities();
var currMenu = allMenus.FirstOrDefault(w => w.ID == menuID);
if (currMenu == null) return new ApiResponse(ResponseType.NotFound, "未找到相关信息,请刷新后重试");
var sysMenuIds = GetRelevanceMenuId(currMenu, allMenus, orientation: false);
sysMenuIds.Add(menuID);
var sysRoleMenus = _rolemenuRepository.GetEntities(w => sysMenuIds.Contains(w.MenuID));
if (sysRoleMenus != null && sysRoleMenus.Any())
_rolemenuRepository.RemoveRange(sysRoleMenus.ToArray());
var sysMenus = _menuRepository.GetEntities(w => sysMenuIds.Contains(w.ID));
if (sysMenus != null && sysMenus.Any())
_menuRepository.RemoveRange(sysMenus.ToArray());
return new ApiResponse(ResponseType.OK);
}
catch (Exception ex)
{
return new ApiResponse(ResponseType.Fail, "删除失败");
}
}
public ApiResponse<List<sys_role_menu>> GetRoleSystemMenu(int menuID)
{
var roles = _rolemenuRepository.GetEntities(t => t.MenuID == menuID);
return new ApiResponse<List<sys_role_menu>>(ResponseType.OK, roles);
}
public ApiResponse SetRoleSystemMenu(RoleRequest roleRequest)
{
try
{
var allMenus = _menuRepository.GetEntities();
var currMenu = allMenus.FirstOrDefault(w => w.ID == roleRequest.MenuID);
if (currMenu == null) return new ApiResponse(ResponseType.NotFound, "未找到相关信息,请刷新后重试");
var menuIds = GetRelevanceMenuId(currMenu, allMenus, orientation: true);
menuIds.Add(roleRequest.MenuID);
var sysRoleMenus = _rolemenuRepository.GetEntities(w => w.MenuID == roleRequest.MenuID);
if (sysRoleMenus != null && sysRoleMenus.Any())
_rolemenuRepository.RemoveRange(sysRoleMenus.ToArray());
var temps = new List<sys_role_menu>();
foreach (var menuId in menuIds)
{
foreach (var roleID in roleRequest.RoleID)
{
if (_rolemenuRepository.GetEntity(w => w.MenuID == menuId && w.RoleID == roleID) == null)
temps.Add(new sys_role_menu { MenuID = menuId, RoleID = roleID });
}
}
_rolemenuRepository.AddRange(temps.ToArray());
return new ApiResponse(ResponseType.OK);
}
catch (Exception ex)
{
return new ApiResponse(ResponseType.Fail, "添加失败");
}
}
/// <summary>
/// 递归查找指定菜单的所有上层菜单或下层菜单
/// </summary>
/// <param name="menuIds"></param>
/// <param name="currMenu"></param>
/// <param name="allMenus"></param>
/// <param name="orientation"></param>
private List<int> GetRelevanceMenuId(sys_menu currMenu, List<sys_menu> allMenus, bool orientation)
{
// orientation = true 向上找 false 乡下找
Func<int, sys_menu> getRelevanceMenu = orientation
? (menuIdOrParentId) => allMenus.FirstOrDefault(w => w.ID == menuIdOrParentId)
: (menuIdOrParentId) => allMenus.FirstOrDefault(w => w.ParentID == menuIdOrParentId);
if (currMenu.ParentID <= 0) return new List<int>();
var menuIdOrParentId = orientation ? currMenu.ParentID : currMenu.ID;
var tempSysMenu = getRelevanceMenu(menuIdOrParentId);
if (tempSysMenu == null) return new List<int>();
List<int> menuIds = new List<int>() { tempSysMenu.ID };
var relevanceMenuIds = GetRelevanceMenuId(tempSysMenu, allMenus, orientation);
if (relevanceMenuIds?.Any() == true) { menuIds.AddRange(relevanceMenuIds); }
return menuIds;
}
}
}
......@@ -208,7 +208,7 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
// 顶部
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TotalPerformance),"可分配绩效"),nameof(ag_headsource.TotalPerformance), true, 10, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.HosOtherPerformance),"医院其他绩效"),nameof(ag_headsource.HosOtherPerformance), true, 20, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.NightShiftWorkPerforTotal),"夜班绩效综合"),nameof(ag_headsource.NightShiftWorkPerforTotal), true, 30, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.NightShiftWorkPerforTotal),"夜班绩效绩效"),nameof(ag_headsource.NightShiftWorkPerforTotal), true, 30, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TotalPreAccountingReward),"核算平均前单项"),nameof(ag_headsource.TotalPreAccountingReward), true, 40, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.TotalDistPerformance),"科室总绩效"),nameof(ag_headsource.TotalDistPerformance), true, 50, "Top", isNumber: true),
new SecondColumnDictionary(getAlias(nameof(ag_headsource.DirectorBasisPerformance),"主任基础绩效"),nameof(ag_headsource.DirectorBasisPerformance), true, 60, "Top", isNumber: true),
......
......@@ -601,29 +601,54 @@ public UserResponse UpdateUser(UserRequest request, int userId)
return _mapper.Map<UserResponse>(user);
}
public ApiResponse DeleteUser(int iD)
{
var user = _userRepository.GetEntity(t => t.ID == iD && t.IsDelete == 1);
if (null == user)
throw new PerformanceException($"用户不存在 UserId:{iD}");
user.IsDelete = 2;
var result = _userRepository.Remove(user);
var users = _userRepository.GetEntities(t => t.ParentID == user.ID && t.IsDelete == 1)?.ToArray();
if (users != null)
public ApiResponse DeleteUser(int userId)
{
_userRepository.RemoveRange(users);
foreach (var item in users)
try
{
var userRole = _userroleRepository.GetEntity(t => t.UserID == item.ID);
if (null != userRole)
_userroleRepository.Remove(userRole);
var sysUsers = _userRepository.GetEntities(t => t.ID == userId || t.ParentID == userId);
if (sysUsers == null) return new ApiResponse(ResponseType.NotFound, "未查到用户");
var sysUsersId = sysUsers.Select(w => w.ID).ToList();
var sysUesrRoles = _userroleRepository.GetEntities(t => sysUsersId.Contains(t.UserID));
_userRepository.RemoveRange(sysUsers.ToArray());
if (sysUesrRoles.Any())
_userroleRepository.RemoveRange(sysUesrRoles.ToArray());
return new ApiResponse(ResponseType.OK);
}
catch (Exception ex)
{
return new ApiResponse(ResponseType.Fail, "删除失败");
}
return result ? new ApiResponse(ResponseType.OK) : new ApiResponse(ResponseType.Fail);
}
#region 老删除
//public ApiResponse DeleteUser(int iD)
//{
// var user = _userRepository.GetEntity(t => t.ID == iD && t.IsDelete == 1);
// if (null == user)
// throw new PerformanceException($"用户不存在 UserId:{iD}");
// user.IsDelete = 2;
// var result = _userRepository.Remove(user);
// var users = _userRepository.GetEntities(t => t.ParentID == user.ID && t.IsDelete == 1)?.ToArray();
// if (users != null)
// {
// _userRepository.RemoveRange(users);
// foreach (var item in users)
// {
// var userRole = _userroleRepository.GetEntity(t => t.UserID == item.ID);
// if (null != userRole)
// _userroleRepository.Remove(userRole);
// }
// }
// return result ? new ApiResponse(ResponseType.OK) : new ApiResponse(ResponseType.Fail);
//}
#endregion
#endregion
public HandsonTableBase GetUserHandsFlat()
......
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