Commit cd53ba09 by 纪旭 韦

优化保存逻辑

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