Commit e74db18b by 钟博

Merge branch '新增基础配置菜单' into v2020morge-graphql

# Conflicts:
#	performance/Performance.Services/ConfigService.cs
parents 1473a91e a06fc030
......@@ -574,5 +574,34 @@ public ApiResponse SaveHrpDept(int hospitalId, int allotId, [FromBody] SaveColle
return new ApiResponse(ResponseType.OK);
}
#endregion
#region 二次分配别名配置
/// <summary>
/// 获取二次分配别名配置
/// </summary>
/// <returns></returns>
[Route("secondaryAlias")]
[HttpPost]
public ApiResponse GetSecondaryAlias()
{
var relust = _configService.GetSecondaryAlias();
return new ApiResponse(ResponseType.OK, relust);
}
/// <summary>
/// 保存二次分配别名配置
/// </summary>
/// <returns></returns>
[Route("saveSecondaryAlias")]
[HttpPost]
public ApiResponse SaveSecondaryAlias([FromBody] SaveCollectData request)
{
_configService.SaveSecondaryAlias(request);
return new ApiResponse(ResponseType.OK);
}
#endregion
}
}
\ No newline at end of file
......@@ -124,5 +124,78 @@ public ApiResponse Import(int hospitalId, [FromForm] IFormCollection form)
reportGlobalService.ImportAllotData(hospitalId, path);
return new ApiResponse(ResponseType.OK);
}
#region 人员、科室标签配置
/// <summary>
/// 获取人员标签配置
/// </summary>
/// <param name="hospitalId"></param>
/// <returns></returns>
[Route("ReportPersonTag")]
[HttpPost]
public ApiResponse ReportPersonTag(int hospitalId)
{
if (hospitalId<=0)
{
return new ApiResponse(ResponseType.Fail,"参数错误", "hospitalId无效");
}
var relust = reportGlobalService.GetReportPersonTag(hospitalId);
return new ApiResponse(ResponseType.OK, relust);
}
/// <summary>
/// 保存科室标签配置
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="request"></param>
/// <returns></returns>
[Route("saveReportPersonTag")]
[HttpPost]
public ApiResponse SaveReportPersonTag(int hospitalId,[FromBody] SaveCollectData request)
{
if (hospitalId <= 0)
{
return new ApiResponse(ResponseType.Fail, "参数错误", "hospitalId无效");
}
reportGlobalService.SaveReportPersonTag(hospitalId,request);
return new ApiResponse(ResponseType.OK);
}
/// <summary>
/// 获取人员标签配置
/// </summary>
/// <param name="hospitalId"></param>
/// <returns></returns>
[Route("ReportTag")]
[HttpPost]
public ApiResponse ReportTag(int hospitalId)
{
if (hospitalId <= 0)
{
return new ApiResponse(ResponseType.Fail, "参数错误", "hospitalId无效");
}
var relust = reportGlobalService.GetReportTag(hospitalId);
return new ApiResponse(ResponseType.OK, relust);
}
/// <summary>
/// 保存科室标签配置
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="request"></param>
/// <returns></returns>
[Route("saveReportTag")]
[HttpPost]
public ApiResponse SaveReportTag(int hospitalId, [FromBody] SaveCollectData request)
{
if (hospitalId <= 0)
{
return new ApiResponse(ResponseType.Fail, "参数错误", "hospitalId无效");
}
reportGlobalService.SaveReportTag(hospitalId, request);
return new ApiResponse(ResponseType.OK);
}
#endregion
}
}
......@@ -2,6 +2,7 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using System;
using Performance.EntityModels.Entity;
namespace Performance.EntityModels
{
......@@ -52,7 +53,9 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<as_tempcolumns> as_tempcolumns { get; set; }
/// <summary> </summary>
public virtual DbSet<cof_again> cof_again { get; set; }
/// <summary> 上传excel文件校验配置 </summary>
/// <summary> </summary>
public virtual DbSet<cof_alias> cof_alias { get; set; }
/// <summary> 上传excel文件校验配置 </summary>
public virtual DbSet<cof_check> cof_check { get; set; }
/// <summary> </summary>
public virtual DbSet<cof_cmi> cof_cmi { get; set; }
......
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels.Entity
{
[Table("cof_alias")]
public class cof_alias
{
[Key]
public int Id { get; set; }
public string Route { get; set; }
public string Name { get; set; }
public string OriginalName { get; set; }
public string Alias { get; set; }
public int States { get; set; }
}
}
using Performance.EntityModels;
using Performance.EntityModels.Entity;
namespace Performance.Repository.Repository
{
public class PerforCofaliasRepository: PerforRepository<cof_alias>
{
public PerforCofaliasRepository(PerformanceDbContext context) : base(context)
{
}
}
}
......@@ -9,6 +9,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Performance.EntityModels.Entity;
using Performance.Repository.Repository;
namespace Performance.Services
......@@ -29,6 +30,7 @@ public class ConfigService : IAutoInjection
private PerforPerapramountRepository perapramountRepository;
//private PerforCofcmiRepository perforCofcmiRepository;
private PerforCofHrpDeptRepository perforCofHrpDeptRepository;
private PerforCofaliasRepository perforCofaliasRepository;
private PersonService personService;
private LogManageService logManageService;
private ILogger<ConfigService> logger;
......@@ -46,6 +48,7 @@ public class ConfigService : IAutoInjection
PerforPerapramountRepository perapramountRepository,
//PerforCofcmiRepository perforCofcmiRepository,
PerforCofHrpDeptRepository perforCofHrpDeptRepository,
PerforCofaliasRepository perforCofaliasRepository,
PersonService personService,
LogManageService logManageService,
ILogger<ConfigService> logger)
......@@ -63,6 +66,7 @@ public class ConfigService : IAutoInjection
this.perapramountRepository = perapramountRepository;
//this.perforCofcmiRepository = perforCofcmiRepository;
this.perforCofHrpDeptRepository = perforCofHrpDeptRepository;
this.perforCofaliasRepository = perforCofaliasRepository;
this.personService = personService;
this.logManageService = logManageService;
this.logger = logger;
......@@ -839,7 +843,10 @@ private void CopyAprData(int prevAllotId, int allotId)
}
}
public HandsonTable GetHrpDeptHands(int HospitalId, int AllotId)
#region HRP人员科室
public HandsonTable GetHrpDeptHands(int HospitalId,int AllotId)
{
var result = new HandsonTable((int)SheetType.Unidentifiable, HrpDept.Select(t => t.Value).ToArray(), HrpDept.Select(t => new collect_permission
{
......@@ -889,6 +896,91 @@ public void SaveDepttypeHands(int hospitalId, int allotId, SaveCollectData reque
perforCofHrpDeptRepository.AddRange(depts.ToArray());
}
public static Dictionary<string, string> HrpDept { get; } = new Dictionary<string, string>
{
{nameof(cof_hrp_department.HRPDepartment), "hrp人员科室"},
{nameof(cof_hrp_department.AccountingUnit), "核算单元"},
};
#endregion
#region 二次分配别名配置
public HandsonTable GetSecondaryAlias()
{
var result = new HandsonTable((int)SheetType.Unidentifiable, Alias.Select(t => t.Value).ToArray(), Alias.Select(t => new collect_permission
{
HeadName = t.Value,
Visible = 1
}).ToList());
if (result.Columns != null && result.Columns.Any())
{
foreach (var column in result.Columns)
{
if (column.Data == "状态")
{
column.Type = "autocomplete";
column.Source = new[] {"可用", "禁用"};
column.Strict = true;
}
}
}
var data = perforCofaliasRepository.GetEntities()?.OrderBy(t=>t.Route);
if (data==null) return result;
List<HandsonRowData> rowDatas = new List<HandsonRowData>();
int i = 0;
foreach (var item in data)
{
var json = JsonHelper.Serialize(item);
var firstDic = JsonHelper.Deserialize<Dictionary<string, string>>(json);
firstDic["states"]=firstDic["states"] == "1" ? "可用" : "禁用";
var cells = (from conf in Alias join fst in firstDic on conf.Key.ToUpper() equals fst.Key.ToUpper() select new HandsonCellData(conf.Value, fst.Value)).ToList();
rowDatas.Add(new HandsonRowData(i,cells));
i++;
}
result.SetRowData(rowDatas,rowDatas!=null);
return result;
}
public void SaveSecondaryAlias(SaveCollectData request)
{
var dicData = CreateDataRow(0, 0, request, Alias);
List<cof_alias> aliases = new List<cof_alias>();
foreach (var item in dicData)
{
var states = new[] {"可用", "禁用"};
if (item["States"]!=null && states.Contains(item["States"]))
{
item["States"] = item["States"] == "可用" ? "1" : "0";
}
else continue;
var json = JsonHelper.Serialize(item);
var data = JsonHelper.Deserialize<cof_alias>(json);
if (!string.IsNullOrEmpty(data.Name) && !string.IsNullOrEmpty(data.OriginalName)&& !string.IsNullOrEmpty(data.Route) && !string.IsNullOrEmpty(data.Alias))
{
aliases.Add(data);
}
}
perforCofaliasRepository.Execute("delete from cof_alias",null);
perforCofaliasRepository.AddRange(aliases.ToArray());
}
public static Dictionary<string, string> Alias { get; } = new Dictionary<string, string>
{
{nameof(cof_alias.Route), "前端路由地址"},
{nameof(cof_alias.Name), "描述名称"},
{nameof(cof_alias.OriginalName), "原始名"},
{nameof(cof_alias.Alias), "别名"},
{nameof(cof_alias.States), "状态"},
};
#endregion
private List<Dictionary<string, string>> CreateDataRow(int hospitalId, int allotId, SaveCollectData request, Dictionary<string, string> config)
{
List<Dictionary<string, string>> allData = new List<Dictionary<string, string>>();
......@@ -923,11 +1015,7 @@ public void SaveDepttypeHands(int hospitalId, int allotId, SaveCollectData reque
return result;
}
public static Dictionary<string, string> HrpDept { get; } = new Dictionary<string, string>
{
{nameof(cof_hrp_department.HRPDepartment), "hrp人员科室"},
{nameof(cof_hrp_department.AccountingUnit), "核算单元"},
};
///// <summary>
///// CMI值
///// </summary>
......
......@@ -520,5 +520,159 @@ private T GetCellValue<T>(IRow row, List<string> columns, string key)
};
#endregion ImportFile && SaveData
#region 人员、科室标签配置
public HandsonTable GetReportPersonTag(int hospitalId)
{
var result = new HandsonTable((int)SheetType.Unidentifiable, PersonTag.Select(t => t.Value).ToArray(), PersonTag.Select(t => new collect_permission
{
HeadName = t.Value,
Visible = 1
}).ToList());
var data = reportperformancepersontagsRepository.GetEntities(t => t.HospitalId == hospitalId)?.OrderBy(t=>Convert.ToInt32(t.PersonnelNumber));
if (data == null) return result;
List<HandsonRowData> rowDatas = new List<HandsonRowData>();
int i = 0;
foreach (var item in data)
{
var json = JsonHelper.Serialize(item);
var firstDic = JsonHelper.Deserialize<Dictionary<string, string>>(json);
var cells = (from conf in PersonTag join fst in firstDic on conf.Key.ToUpper() equals fst.Key.ToUpper() select new HandsonCellData(conf.Value, fst.Value)).ToList();
rowDatas.Add(new HandsonRowData(i, cells));
i++;
}
result.SetRowData(rowDatas, rowDatas != null);
return result;
}
public void SaveReportPersonTag(int hospitalId, SaveCollectData request)
{
var dicData = CreateDataRow(hospitalId, request, PersonTag);
List<report_performance_person_tags> personTags = new List<report_performance_person_tags>();
foreach (var item in dicData)
{
var json = JsonHelper.Serialize(item);
var data = JsonHelper.Deserialize<report_performance_person_tags>(json);
if (!string.IsNullOrEmpty(data.UnitType) && !string.IsNullOrEmpty(data.AccountingUnit) && !string.IsNullOrEmpty(data.PersonnelName) && !string.IsNullOrEmpty(data.PersonnelNumber) && !string.IsNullOrEmpty(data.Tag1) && !string.IsNullOrEmpty(data.Tag2))
{
data.CreateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
personTags.Add(data);
}
}
reportperformancepersontagsRepository.Execute("delete from report_performance_person_tags where HospitalId=@hospitalId", new { hospitalId });
reportperformancepersontagsRepository.AddRange(personTags.ToArray());
}
public HandsonTable GetReportTag(int hospitalId)
{
var result = new HandsonTable((int)SheetType.Unidentifiable, ReportTag.Select(t => t.Value).ToArray(), ReportTag.Select(t => new collect_permission
{
HeadName = t.Value,
Visible = 1
}).ToList());
var data = reportperformancetagsRepository.GetEntities(t => t.HospitalId == hospitalId)?.OrderBy(t=>t.UnitType);
if (data == null) return result;
List<HandsonRowData> rowDatas = new List<HandsonRowData>();
int i = 0;
foreach (var item in data)
{
var json = JsonHelper.Serialize(item);
var firstDic = JsonHelper.Deserialize<Dictionary<string, string>>(json);
var cells = (from conf in ReportTag join fst in firstDic on conf.Key.ToUpper() equals fst.Key.ToUpper() select new HandsonCellData(conf.Value, fst.Value)).ToList();
rowDatas.Add(new HandsonRowData(i, cells));
i++;
}
result.SetRowData(rowDatas, rowDatas != null);
return result;
}
public void SaveReportTag(int hospitalId, SaveCollectData request)
{
var dicData = CreateDataRow(hospitalId, request, PersonTag);
List<report_performance_tags> report = new List<report_performance_tags>();
foreach (var item in dicData)
{
var json = JsonHelper.Serialize(item);
var data = JsonHelper.Deserialize<report_performance_tags>(json);
if (!string.IsNullOrEmpty(data.UnitType) && !string.IsNullOrEmpty(data.AccountingUnit) && !string.IsNullOrEmpty(data.Tag1) && !string.IsNullOrEmpty(data.Tag2))
{
data.CreateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
report.Add(data);
}
}
reportperformancetagsRepository.Execute("delete from report_performance_tags where HospitalId=@hospitalId", new { hospitalId });
reportperformancetagsRepository.AddRange(report.ToArray());
}
private static Dictionary<string, string> PersonTag { get; } = new Dictionary<string, string>
{
{nameof(report_performance_person_tags.UnitType), "核算单元类型"},
{nameof(report_performance_person_tags.AccountingUnit), "科室"},
{nameof(report_performance_person_tags.PersonnelNumber), "工号"},
{nameof(report_performance_person_tags.PersonnelName), "姓名"},
{nameof(report_performance_person_tags.Tag1), "绩效发放情况"},
{nameof(report_performance_person_tags.Tag2), "当月绩效权重"},
{nameof(report_performance_person_tags.Tag3), "重点群体对比1"},
{nameof(report_performance_person_tags.Tag4), "重点群体对比2"},
{nameof(report_performance_person_tags.Tag5), "重点群体对比5"},
};
public static Dictionary<string, string> ReportTag { get; } = new Dictionary<string, string>
{
{nameof(report_performance_tags.UnitType), "核算单元类型"},
{nameof(report_performance_tags.AccountingUnit), "科室"},
{nameof(report_performance_tags.Tag1), "绩效发放情况"},
{nameof(report_performance_tags.Tag2), "当月绩效权重"},
{nameof(report_performance_tags.Tag3), "重点群体对比1"},
{nameof(report_performance_tags.Tag4), "重点群体对比2"},
{nameof(report_performance_tags.Tag5), "重点群体对比5"},
};
private List<Dictionary<string, string>> CreateDataRow(int hospitalId, SaveCollectData request, Dictionary<string, string> config)
{
List<Dictionary<string, string>> allData = new List<Dictionary<string, string>>();
for (int r = 0; r < request.Data.Length; r++)
{
// 创建固定数据列
Dictionary<string, string> baseData = CreateBaseData(request, config, r);
baseData.Add(nameof(cof_hrp_department.HospitalId), hospitalId.ToString());
allData.Add(baseData);
}
return allData;
}
private Dictionary<string, string> CreateBaseData(SaveCollectData request, Dictionary<string, string> config, int rownumber)
{
Dictionary<string, string> result = new Dictionary<string, string>();
for (int c = 0; c < request.ColHeaders.Length; c++)
{
var header = request.ColHeaders[c];
var first = config.FirstOrDefault(w => w.Value == header);
if (!default(KeyValuePair<string, string>).Equals(first)
&& !result.ContainsKey(header)
&& request.Data[rownumber].Length > c)
{
result.Add(first.Key, request.Data[rownumber][c]);
}
}
return result;
}
#endregion
}
}
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