Commit 5ff7ab55 by lcx

Merge branch 'develop' into feature/核算前单项

parents de7221ce 8dce0149
......@@ -238,7 +238,12 @@ public IEnumerable<view_second_workload_result> GetSecondWorkload(int allotid, s
if (connection.State != ConnectionState.Open) connection.Open();
try
{
string query = $@"SELECT * FROM view_second_workload_result WHERE AllotId = @allotid AND UnitType = @unittype AND AccountingUnit = @accountingunit";
string query = $@"
SELECT TAB1.HospitalId,AllotId,TAB1.UnitType,AccountingUnit,HISDeptName,ItemId,ItemName,FactorValue,DoctorName,PersonnelNumber,Category,SUM(Fee) Value
FROM view_second_workload TAB1
JOIN view_second_workload_his TAB2 ON TAB1.HospitalId = TAB2.HospitalId AND (TAB1.UnitType = TAB2.UnitType ) AND TAB1.HISDeptName = TAB2.Department AND TAB1.SourceCategory = TAB2.Category
WHERE AllotId = @allotid AND TAB1.UnitType = @unittype AND AccountingUnit = @accountingunit
GROUP BY TAB1.HospitalId,AllotId,TAB1.UnitType,AccountingUnit,HISDeptName,ItemId,ItemName,FactorValue,DoctorName,PersonnelNumber,Category";
return connection.Query<view_second_workload_result>(query, new { allotid, unittype, accountingunit }, commandTimeout: 60 * 60);
}
catch (Exception ex)
......
......@@ -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