Commit 4e47eda2 by wyc

Merge branch 'develop' of https://gitlab.suvalue.com/zry/performance into develop

# Conflicts:
#	performance/Performance.Services/ComputeService.UniteDeptDetail.cs
parents dab5dc27 5773f064
...@@ -212,37 +212,6 @@ public ApiResponse UniteDeptDetail([FromBody] UniteDeptDetailRequest request) ...@@ -212,37 +212,6 @@ public ApiResponse UniteDeptDetail([FromBody] UniteDeptDetailRequest request)
return new ApiResponse(ResponseType.OK, response); return new ApiResponse(ResponseType.OK, response);
} }
/// <summary>
/// 科室绩效详情下载
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("download/unite/deptdetail")]
//public IActionResult DownloadUniteDeptdetail([FromBody] UniteDeptDetailRequest request)
//{
// request.UnitType = request.UnitType.Replace("行政后勤", "行政工勤");
// if (!Enum.TryParse(request.UnitType, ignoreCase: true, out UnitType unitType))
// return BadRequest("核算组别错误");
// var userid = _claim.GetUserId();
// var result = _computeService.UniteDeptDetail(request.AllotId, unitType, request.AccountingUnit, userid);
// var ser = JsonConvert.SerializeObject(result);
// var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
// return BadRequest("核算组别错误");
// //var filepath = _computeService.ExcelDownload(rows, "科室绩效详情", 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));
//}
......
...@@ -1069,7 +1069,7 @@ ...@@ -1069,7 +1069,7 @@
</member> </member>
<member name="M:Performance.Api.Controllers.ComputeController.DeptDetail(Performance.DtoModels.DeptDetailRequest)"> <member name="M:Performance.Api.Controllers.ComputeController.DeptDetail(Performance.DtoModels.DeptDetailRequest)">
<summary> <summary>
科室绩效详情下载 科室绩效详情
</summary> </summary>
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
......
...@@ -5,6 +5,8 @@ namespace Performance.DtoModels ...@@ -5,6 +5,8 @@ namespace Performance.DtoModels
{ {
public class UniteDeptDetailItem public class UniteDeptDetailItem
{ {
public string Id { get; set; }
public string ParentId { get; set; }
public int SheetType { get; set; } public int SheetType { get; set; }
public string Title { get; set; } public string Title { get; set; }
public string Remark { get; set; } public string Remark { get; set; }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Masuit.Tools; using Masuit.Tools;
using Newtonsoft.Json; using Newtonsoft.Json;
using Masuit.Tools.Systems;
using NPOI.Util; using NPOI.Util;
using OfficeOpenXml; using OfficeOpenXml;
using OfficeOpenXml.Style; using OfficeOpenXml.Style;
...@@ -30,6 +31,8 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s ...@@ -30,6 +31,8 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s
{ {
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId); var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId);
if (allot == null) throw new PerformanceException("绩效月信息错误"); if (allot == null) throw new PerformanceException("绩效月信息错误");
//当角色对应时过滤
var userInfo = _userRepository.GetUser(userId);
var account = perforResaccountRepository.GetEntity(t => t.AllotID == allotId && t.UnitType == (int)unitType && t.AccountingUnit == accountingUnit); var account = perforResaccountRepository.GetEntity(t => t.AllotID == allotId && t.UnitType == (int)unitType && t.AccountingUnit == accountingUnit);
account ??= new res_account account ??= new res_account
...@@ -313,6 +316,8 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s ...@@ -313,6 +316,8 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s
response.DetailItems.Add(new DeptDetailItem { Title = UniteDept.Title.调节系数.ToString(), Total = account.AdjustFactor ?? 1 }); response.DetailItems.Add(new DeptDetailItem { Title = UniteDept.Title.调节系数.ToString(), Total = account.AdjustFactor ?? 1 });
response.DetailItems.Add(new DeptDetailItem { Title = UniteDept.Title.实发绩效.ToString(), Total = account.RealGiveFee ?? 0 }); response.DetailItems.Add(new DeptDetailItem { Title = UniteDept.Title.实发绩效.ToString(), Total = account.RealGiveFee ?? 0 });
// 加载用户设置
var settings = GetUniteDeptDetailSetting(allotId);
// 显示详情 // 显示详情
#region 补全公共附属表明细 #region 补全公共附属表明细
{ {
...@@ -341,13 +346,19 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s ...@@ -341,13 +346,19 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s
{ {
if (ignore.Contains(post.Key.TypeName)) continue; if (ignore.Contains(post.Key.TypeName)) continue;
var fz = post.Sum(group => group.IsFactor == 1 ? (group.CellValue * (group.FactorValue ?? 0)) : group.CellValue); var settingItem = settings.FirstOrDefault(w => w.Title == detail.Title) ?? new UniteDeptDetailItem() { Children = new List<UniteDeptDetailItem>() };
var row = new Dictionary<string, object> var gs = settingItem.Children.FirstOrDefault(w => w.Title == post.Key.TypeName) ?? new UniteDeptDetailItem { Format = "" };
if (!userInfo.IsSecondAdmin || allot.States == (int)AllotStates.绩效下发 || allot.States == (int)AllotStates.归档)
{ {
{ "指标", post.Key.TypeName }, var fz = post.Sum(group => group.IsFactor == 1 ? (group.CellValue * (group.FactorValue ?? 0)) : group.CellValue);
{ "分值", ValueFormating(fz, "") } var row = new Dictionary<string, object>
}; {
items.Add(row); { "指标", post.Key.TypeName },
{ "分值", ValueFormating(fz, gs.Format) }
};
items.Add(row);
}
} }
var amount = basicData?.Where(t => t.SheetID == sheet.ID && t.UnitType == (int)type && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0; var amount = basicData?.Where(t => t.SheetID == sheet.ID && t.UnitType == (int)type && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0;
detail.Total = amount; detail.Total = amount;
...@@ -357,10 +368,7 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s ...@@ -357,10 +368,7 @@ public UniteDeptDetailResponse UniteDeptDetail(int allotId, UnitType unitType, s
} }
#endregion #endregion
//当角色对应时过滤
var userInfo = _userRepository.GetUser(userId);
// 应用用户设置的显示规则 // 应用用户设置的显示规则
var settings = GetUniteDeptDetailSetting(allotId);
foreach (var detail in response.DetailItems) foreach (var detail in response.DetailItems)
{ {
detail.Display = true; detail.Display = true;
...@@ -488,34 +496,32 @@ public List<UniteDeptDetailItem> GetUniteDeptDetailSetting(int allotId) ...@@ -488,34 +496,32 @@ public List<UniteDeptDetailItem> GetUniteDeptDetailSetting(int allotId)
response.Add(new UniteDeptDetailItem { Title = UniteDept.Title.实发绩效.ToString(), Format = UniteDept.Format.整数.ToString(), Remark = "考核后绩效 × 调节系数 + 调节后其他绩效" }); response.Add(new UniteDeptDetailItem { Title = UniteDept.Title.实发绩效.ToString(), Format = UniteDept.Format.整数.ToString(), Remark = "考核后绩效 × 调节系数 + 调节后其他绩效" });
// 显示详情 // 显示详情
#region 补全公共附属表明细 #region 补全公共附属表明细
var rightSheetTypeMaps = new List<UniteDeptDetailItem>()
{ {
var rightSheetTypeMaps = new List<UniteDeptDetailItem>() new UniteDeptDetailItem { Title = UniteDept.Title.预算比例.ToString(), SheetType = (int)SheetType.BudgetRatio, Format = UniteDept.Format.两位小数百分比.ToString(), },
{ new UniteDeptDetailItem { Title = UniteDept.Title.医院奖罚.ToString(), SheetType = (int)SheetType.AccountExtra, Format = UniteDept.Format.整数.ToString(), },
new UniteDeptDetailItem { Title = UniteDept.Title.预算比例.ToString(), SheetType = (int)SheetType.BudgetRatio, Format = UniteDept.Format.两位小数百分比.ToString(), }, new UniteDeptDetailItem { Title = UniteDept.Title.考核前其他绩效.ToString(), SheetType = (int)SheetType.AssessBeforeOtherFee, Format = UniteDept.Format.整数.ToString(), },
new UniteDeptDetailItem { Title = UniteDept.Title.医院奖罚.ToString(), SheetType = (int)SheetType.AccountExtra, Format = UniteDept.Format.整数.ToString(), }, new UniteDeptDetailItem { Title = UniteDept.Title.药占比奖罚.ToString(), SheetType = (int)SheetType.AccountDrugAssess, Format = UniteDept.Format.整数.ToString(), },
new UniteDeptDetailItem { Title = UniteDept.Title.考核前其他绩效.ToString(), SheetType = (int)SheetType.AssessBeforeOtherFee, Format = UniteDept.Format.整数.ToString(), }, new UniteDeptDetailItem { Title = UniteDept.Title.材料占比奖罚.ToString(), SheetType = (int)SheetType.AccountMaterialsAssess, Format = UniteDept.Format.整数.ToString(), },
new UniteDeptDetailItem { Title = UniteDept.Title.药占比奖罚.ToString(), SheetType = (int)SheetType.AccountDrugAssess, Format = UniteDept.Format.整数.ToString(), }, new UniteDeptDetailItem { Title = UniteDept.Title.考核得分率.ToString(), SheetType = (int)SheetType.AccountScoreAverage, Format = UniteDept.Format.两位小数百分比.ToString(), },
new UniteDeptDetailItem { Title = UniteDept.Title.材料占比奖罚.ToString(), SheetType = (int)SheetType.AccountMaterialsAssess, Format = UniteDept.Format.整数.ToString(), }, new UniteDeptDetailItem { Title = UniteDept.Title.调节后其他绩效.ToString(), SheetType = (int)SheetType.AccountAdjustLaterOtherFee, Format = UniteDept.Format.整数.ToString(), },
new UniteDeptDetailItem { Title = UniteDept.Title.考核得分率.ToString(), SheetType = (int)SheetType.AccountScoreAverage, Format = UniteDept.Format.两位小数百分比.ToString(), }, };
new UniteDeptDetailItem { Title = UniteDept.Title.调节后其他绩效.ToString(), SheetType = (int)SheetType.AccountAdjustLaterOtherFee, Format = UniteDept.Format.整数.ToString(), }, foreach (var detail in rightSheetTypeMaps)
}; {
foreach (var detail in rightSheetTypeMaps) response.Add(detail);
foreach (var sheet in persheet.Where(t => t.SheetType == detail.SheetType))
{ {
response.Add(detail); var sheetName = BeautifulName(sheet.SheetName);
foreach (var sheet in persheet.Where(t => t.SheetType == detail.SheetType))
{
var sheetName = BeautifulName(sheet.SheetName);
var items = new List<UniteDeptDetailItem>(); var items = new List<UniteDeptDetailItem>();
var postDatas = basicData.Where(t => t.SheetID == sheet.ID && t.IsTotal != 1); var postDatas = basicData.Where(t => t.SheetID == sheet.ID && t.IsTotal != 1);
foreach (var post in postDatas.GroupBy(t => new { t.TypeName })) foreach (var post in postDatas.GroupBy(t => new { t.TypeName }))
{ {
if (ignore.Contains(post.Key.TypeName)) continue; if (ignore.Contains(post.Key.TypeName)) continue;
items.Add(new UniteDeptDetailItem { Title = post.Key.TypeName }); items.Add(new UniteDeptDetailItem { Title = post.Key.TypeName });
}
detail.Children = items;
} }
detail.Children = items;
} }
} }
#endregion #endregion
...@@ -528,36 +534,42 @@ public List<UniteDeptDetailItem> GetUniteDeptDetailSetting(int allotId) ...@@ -528,36 +534,42 @@ public List<UniteDeptDetailItem> GetUniteDeptDetailSetting(int allotId)
var enumItems = EnumHelper.GetItems<UniteDept.Title>(); var enumItems = EnumHelper.GetItems<UniteDept.Title>();
foreach (var detail in response) foreach (var detail in response)
{ {
detail.Id = SnowFlake.GetInstance().GetLongId().ToString();
detail.Display = UniteDept.DisplayRule.始终显示.ToString(); detail.Display = UniteDept.DisplayRule.始终显示.ToString();
detail.Children ??= new List<UniteDeptDetailItem>();
foreach (var item in detail.Children)
{
item.Id = SnowFlake.GetInstance().GetLongId().ToString();
item.ParentId = detail.Id;
}
var cfg = enumItems.FirstOrDefault(w => w.Name == detail.Title); var cfg = enumItems.FirstOrDefault(w => w.Name == detail.Title);
// 只对右侧设置排序 // 只对右侧设置排序
detail.Sort = cfg == null ? detail.Sort : cfg.Value; detail.Sort = cfg == null ? detail.Sort : cfg.Value;
// 读取数据库保存内容 // 读取数据库保存内容
detail.Children ??= new List<UniteDeptDetailItem>();
var temp1 = cofDeptDetail.FirstOrDefault(w => w.Title == detail.Title); var temp1 = cofDeptDetail.FirstOrDefault(w => w.Title == detail.Title);
if (temp1 == null) continue; if (temp1 != null)
detail.SheetType = temp1.SheetType;
detail.Remark = temp1.Remark;
detail.Title = temp1.Title;
detail.Format = temp1.Format;
detail.Sort = temp1.Sort;
detail.Display = temp1.Display;
foreach (var item in detail.Children)
{ {
var temp1children = temp1.Children.FirstOrDefault(w => w.Title == item.Title); detail.Remark = temp1.Remark;
if (temp1children == null) continue; detail.Format = temp1.Format;
item.SheetType = temp1children.SheetType; detail.Sort = temp1.Sort;
item.Remark = temp1children.Remark; detail.Display = temp1.Display;
item.Title = temp1children.Title; foreach (var item in detail.Children)
item.Format = temp1children.Format; {
item.Sort = temp1children.Sort; var temp2 = cofDeptDetail.FirstOrDefault(w => w.Title == item.Title);
item.Display = temp1children.Display; if (temp2 != null)
} {
foreach (var item2 in temp1.Children) item.Remark = temp2.Remark;
{ item.Format = temp2.Format;
var detailChildren = detail.Children.FirstOrDefault(w => w.Title == item2.Title); item.Sort = temp2.Sort;
if (detailChildren == null) item.Display = temp2.Display;
detail.Children.Add(item2); }
}
foreach (var item2 in temp1.Children)
{
if (!detail.Children.Any(w => w.Title == item2.Title))
detail.Children.Add(item2);
}
} }
} }
......
...@@ -47,7 +47,7 @@ private void Consumer() ...@@ -47,7 +47,7 @@ private void Consumer()
item.UserId.ToString(), item.UserId.ToString(),
item.Method, item.Method,
JsonHelper.Serialize(item.Body)); JsonHelper.Serialize(item.Body));
_hubContext.Clients.Group(item.UserId.ToString()).SendAsync(item.Method, item.Body); _hubContext.Clients.All.SendAsync(item.Method, item.Body);
} }
} }
} }
......
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