Commit 8dce0149 by lcx

HRP

parent 2143eb5b
......@@ -69,9 +69,9 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi
{
logService.ReturnTheLog(allot.ID, groupName, 2, "提取数据", $"提取人员信息数据", isSingle: isSingle);
var typeIds = types.Where(t => t.Source == (int)SheetType.Employee).Select(t => t.Id);
var script = scripts.FirstOrDefault(t => typeIds.Contains(t.TypeId));
var script = scripts.Where(t => typeIds.Contains(t.TypeId));
if (script != null)
Employee(allot, configs.FirstOrDefault(t => t.Id == script.ConfigId), script.ExecScript);
Employee(allot, configs, scripts);
}
if (types.Any(t => t.Source == (int)SheetType.OnlyExtract)) //不写入Excel的提取数据
{
......@@ -106,56 +106,61 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi
}
}
private void Employee(per_allot allot, sys_hospitalconfig config, string sql)
private void Employee(per_allot allot, List<sys_hospitalconfig> configs, IEnumerable<ex_script> scripts)
{
try
{
if (config == null || string.IsNullOrEmpty(sql)) return;
foreach (var script in scripts)
{
var config = configs.FirstOrDefault(w => w.Id == script.ConfigId);
var sql = script.ExecScript;
if (config == null || string.IsNullOrEmpty(sql)) return;
var limitData = queryService.QueryData<dynamic>(config, allot, $"select * from ({sql}) t limit 1;");
if (limitData == null || !limitData.Any()) return;
var limitData = queryService.QueryData<dynamic>(config, allot, sql);
if (limitData == null || !limitData.Any()) return;
var columns = ((IDictionary<string, object>)limitData.ElementAt(0)).Select(t => t.Key.ToLower()).ToList();
var columns = ((IDictionary<string, object>)limitData.ElementAt(0)).Select(t => t.Key.ToLower()).ToList();
var data = queryService.QueryData<per_employee>(config, allot, sql).ToList();
data.ForEach(t =>
{
t.AllotId = allot.ID;
t.HospitalId = allot.HospitalId;
t.IsHrpEmployee = 1;
});
var data = queryService.QueryData<per_employee>(config, allot, sql).ToList();
data.ForEach(t =>
{
t.AllotId = allot.ID;
t.HospitalId = allot.HospitalId;
t.IsHrpEmployee = 1;
});
var hrpDepartments = cofhrpdepartmentRepository.GetEntities(t => t.AllotId == allot.ID);
if (hrpDepartments != null && hrpDepartments.Any())
{
data = data.GroupJoin(hrpDepartments, outer => new { department = outer.Department }, inner => new { department = inner.HRPDepartment }, (outer, inner) => new { outer, inner }).Select(t =>
var hrpDepartments = cofhrpdepartmentRepository.GetEntities(t => t.AllotId == allot.ID);
if (hrpDepartments != null && hrpDepartments.Any())
{
t.outer.AccountingUnit = t.inner?.FirstOrDefault()?.AccountingUnit;
return t.outer;
}).ToList();
}
data = data.GroupJoin(hrpDepartments, outer => new { department = outer.Department }, inner => new { department = inner.HRPDepartment }, (outer, inner) => new { outer, inner }).Select(t =>
{
t.outer.AccountingUnit = t.inner?.FirstOrDefault()?.AccountingUnit;
return t.outer;
}).ToList();
}
var employees = peremployeeRepository.GetEntities(t => t.AllotId == allot.ID);
if (employees == null || !employees.Any())
{
peremployeeRepository.AddRange(data.ToArray());
return;
}
var employees = peremployeeRepository.GetEntities(t => t.AllotId == allot.ID);
if (employees == null || !employees.Any())
{
peremployeeRepository.AddRange(data.ToArray());
return;
}
var needAddData = data.Where(w => !employees.Select(t => t.PersonnelNumber).Contains(w.PersonnelNumber));
if (needAddData != null && needAddData.Any()) peremployeeRepository.AddRange(needAddData.ToArray());
var needAddData = data.Where(w => !employees.Select(t => t.PersonnelNumber).Contains(w.PersonnelNumber));
if (needAddData != null && needAddData.Any()) peremployeeRepository.AddRange(needAddData.ToArray());
var needRemarkData = employees.Where(w => !data.Select(t => t.PersonnelNumber).Contains(w.PersonnelNumber))?.ToList();
if (needRemarkData != null && needRemarkData.Any())
{
needRemarkData.ForEach(t => t.Remark = "HRP中无此工号数据");
peremployeeRepository.UpdateRange(needRemarkData.ToArray());
}
var needRemarkData = employees.Where(w => !data.Select(t => t.PersonnelNumber).Contains(w.PersonnelNumber))?.ToList();
if (needRemarkData != null && needRemarkData.Any())
{
needRemarkData.ForEach(t => t.Remark = "HRP中无此工号数据");
peremployeeRepository.UpdateRange(needRemarkData.ToArray());
}
var needUpdateData = employees.Where(w => data.Select(t => t.PersonnelNumber).Contains(w.PersonnelNumber));
if (needUpdateData != null && needUpdateData.Any())
{
JudgeDataEqual(columns, needUpdateData.ToList(), data);
var needUpdateData = employees.Where(w => data.Select(t => t.PersonnelNumber).Contains(w.PersonnelNumber));
if (needUpdateData != null && needUpdateData.Any())
{
JudgeDataEqual(columns, needUpdateData.ToList(), data);
}
}
}
catch (Exception ex)
......
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