Commit cd53ba09 by 纪旭 韦

优化保存逻辑

parent fb4619ea
......@@ -132,13 +132,13 @@ public ApiResponse Import(int hospitalId, [FromForm] IFormCollection form)
/// <returns></returns>
[Route("ReportPersonTag")]
[HttpPost]
public ApiResponse ReportPersonTag(int hospitalId,int allotId)
public ApiResponse ReportPersonTag(int hospitalId, int allotId)
{
if (hospitalId<=0)
if (hospitalId <= 0)
{
return new ApiResponse(ResponseType.Fail,"参数错误", "hospitalId无效");
return new ApiResponse(ResponseType.Fail, "参数错误", "hospitalId无效");
}
var relust = reportGlobalService.GetReportPersonTag(hospitalId,allotId);
var relust = reportGlobalService.GetReportPersonTag(hospitalId, allotId);
return new ApiResponse(ResponseType.OK, relust);
}
......@@ -146,17 +146,20 @@ public ApiResponse ReportPersonTag(int hospitalId,int allotId)
/// 保存科室标签配置
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="allotId"></param>
/// <param name="request"></param>
/// <returns></returns>
[Route("saveReportPersonTag")]
[Route("saveReportPersonTag/{allotId}")]
[HttpPost]
public ApiResponse SaveReportPersonTag(int hospitalId,[FromBody] SaveCollectData request)
public ApiResponse SaveReportPersonTag(int hospitalId, int allotId, [FromBody] SaveCollectData request)
{
if (hospitalId <= 0)
{
return new ApiResponse(ResponseType.Fail, "参数错误", "hospitalId无效");
}
reportGlobalService.SaveReportPersonTag(hospitalId,request);
var result = reportGlobalService.SaveReportPersonTag(hospitalId, allotId, request);
if (result != null && result.Any())
return new ApiResponse(ResponseType.Fail, $"保存失败:工号{string.Join(", ", result)}不存在");
return new ApiResponse(ResponseType.OK);
}
......
......@@ -1800,11 +1800,12 @@
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportGlobalController.SaveReportPersonTag(System.Int32,Performance.DtoModels.SaveCollectData)">
<member name="M:Performance.Api.Controllers.ReportGlobalController.SaveReportPersonTag(System.Int32,System.Int32,Performance.DtoModels.SaveCollectData)">
<summary>
保存科室标签配置
</summary>
<param name="hospitalId"></param>
<param name="allotId"></param>
<param name="request"></param>
<returns></returns>
</member>
......
......@@ -541,9 +541,8 @@ public HandsonTable GetReportPersonTag(int hospitalId, int allotId)
join t2 in tdata
on t1.PersonnelNumber equals t2.PersonnelNumber into temp
from t in temp.DefaultIfEmpty()
select new
select new
{
Id = t1.Id,
PersonnelNumber = t1.PersonnelNumber,
DoctorName = t1.DoctorName,
JobCategory = t1.JobCategory,
......@@ -594,53 +593,81 @@ select new
//}
result.SetRowData(rowDatas, rowDatas != null);
result.Columns?.ForEach(t => t.Type = "text");
return result;
}
public void SaveReportPersonTag(int hospitalId, SaveCollectData request)
public List<string> SaveReportPersonTag(int hospitalId, int allotId, SaveCollectData request)
{
var employees = perforPeremployeeRepository.GetEntities(t => t.AllotId == allotId);
if (employees == null || !employees.Any()) throw new PerformanceException("人员字典中未保存数据");
var dicData = CreateDataRow(hospitalId, request, PersonTag);
var tags = reportperformancepersontagsRepository.GetEntities(t => t.HospitalId == hospitalId);
//工号不存在
List<string> personnelNumber = dicData.Select(item => item["PersonnelNumber"])?.ToList();
var notIn = personnelNumber.Except(employees.Select(t => t.PersonnelNumber).ToList())?.ToList();
if (notIn != null && notIn.Count > 0)
return notIn;
List<report_performance_person_tags> personTags = new List<report_performance_person_tags>();
var upEmployees = new List<per_employee>();
var newTags = new List<report_performance_person_tags>();
var upTags = new List<report_performance_person_tags>();
foreach (var item in dicData)
{
if (!item.ContainsKey("PersonnelNumber") || string.IsNullOrEmpty(item["PersonnelNumber"]))
continue;
var employee = employees.FirstOrDefault(t => t.PersonnelNumber == item["PersonnelNumber"]);
if (employee == null) continue;
var json = JsonHelper.Serialize(item);
#region 人员字典表
var pdata = JsonHelper.Deserialize<per_employee>(json);
employee.PersonnelNumber = pdata.PersonnelNumber;
employee.DoctorName = pdata.DoctorName;
employee.JobCategory = pdata.JobCategory;
employee.Duty = pdata.Duty;
employee.JobTitle = pdata.JobTitle;
employee.AttendanceDay = pdata.AttendanceDay;
employee.ReservedRatio = pdata.ReservedRatio;
employee.BankCard = pdata.BankCard;
employee.Remark = pdata.Remark;
upEmployees.Add(employee);
#endregion
#region 人员标签表
var tdata = JsonHelper.Deserialize<report_performance_person_tags>(json);
tdata.Id = 0;
tdata.PersonnelName = item["DoctorName"]?.ToString();
if (/*!string.IsNullOrEmpty(data.UnitType) && !string.IsNullOrEmpty(data.AccountingUnit) && */!string.IsNullOrEmpty(tdata.PersonnelName) && !string.IsNullOrEmpty(tdata.PersonnelNumber) && !string.IsNullOrEmpty(tdata.Tag1) && !string.IsNullOrEmpty(tdata.Tag2))
{
tdata.CreateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
personTags.Add(tdata);
}
tdata.CreateTime = DateTime.Now;
var table = perforPeremployeeRepository.GetEntities(t => t.Id.ToString() == item["Id"]).FirstOrDefault();
var pdata = JsonHelper.Deserialize<per_employee>(json);
if (/*!string.IsNullOrEmpty(data.UnitType) && !string.IsNullOrEmpty(pdata.AccountingUnit) && */ !string.IsNullOrEmpty(pdata.DoctorName) && !string.IsNullOrEmpty(pdata.PersonnelNumber) && table!=null)
var tag = tags.FirstOrDefault(t => t.PersonnelNumber == item["PersonnelNumber"]);
if (tag != null)
{
pdata.CreateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
table.PersonnelNumber = pdata.PersonnelNumber;
table.DoctorName = pdata.DoctorName;
table.JobCategory = pdata.JobCategory;
table.Duty = pdata.Duty;
table.JobTitle = pdata.JobTitle;
table.AttendanceDay = pdata.AttendanceDay;
table.ReservedRatio = pdata.ReservedRatio;
table.BankCard = pdata.BankCard;
table.Remark = pdata.Remark;
perforPeremployeeRepository.Update(table);
tag.PersonnelName = tdata.PersonnelName;
tag.PersonnelNumber = tdata.PersonnelNumber;
tag.Tag1 = tdata.Tag1;
tag.Tag2 = tdata.Tag2;
tag.Tag3 = tdata.Tag3;
tag.Tag4 = tdata.Tag4;
tag.Tag5 = tdata.Tag5;
upTags.Add(tag);
}
if (table == null)
perforPeremployeeRepository.Add(pdata);
else
newTags.Add(tdata);
#endregion
}
reportperformancepersontagsRepository.Execute("delete from report_performance_person_tags where HospitalId=@hospitalId", new { hospitalId });
reportperformancepersontagsRepository.AddRange(personTags.ToArray());
if (upEmployees != null && upEmployees.Any())
perforPeremployeeRepository.UpdateRange(upEmployees.ToArray());
if (newTags != null && newTags.Any())
reportperformancepersontagsRepository.AddRange(newTags.ToArray());
if (upTags != null && upTags.Any())
reportperformancepersontagsRepository.UpdateRange(upTags.ToArray());
return new List<string>();
}
public HandsonTable GetReportTag(int hospitalId)
......@@ -695,7 +722,7 @@ public void SaveReportTag(int hospitalId, SaveCollectData request)
//{nameof(report_performance_person_tags.UnitType), "核算单元类型"},
//{nameof(report_performance_person_tags.AccountingUnit), "科室"},
{nameof(per_employee.Id), "Id"},
//{nameof(per_employee.Id), "Id"},
{nameof(per_employee.PersonnelNumber), "工号"},
{nameof(per_employee.DoctorName), "姓名"},
{nameof(per_employee.JobCategory), "正式/临聘" },
......
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