辨识结果、评估表问题修复
This commit is contained in:
parent
5637cc30af
commit
816f72e9fc
@ -14151,6 +14151,9 @@ namespace APT.BaseData.Services.DomainServices
|
||||
if (summarys.Any())
|
||||
{
|
||||
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID));
|
||||
//加载不过滤 ENABLE_STATUS 的完整企业库字典,确保通过 ENTERPRISE_LIBRARY_ID 直接关联时
|
||||
//即使企业库被禁用也能取到 LEC/SCORE 等原始数据
|
||||
var allLibraryDict = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => true, new BaseFilter(entity.ORG_ID)).ToDictionary(t => t.ID);
|
||||
var summaryIds = summarys.Select(t => t.ID).ToList();
|
||||
var summaryDetails = this.GetEntities<T_SK_RISK_IDENTIFY_RESULT_DETAIL>(t => summaryIds.Contains(t.RISK_IDENTIFY_RESULT_ID), new BaseFilter(entity.ORG_ID));
|
||||
var summaryDetailIds = summaryDetails.Select(t => t.ID).ToList();
|
||||
@ -14195,7 +14198,13 @@ namespace APT.BaseData.Services.DomainServices
|
||||
{
|
||||
if (de != null)
|
||||
{
|
||||
var departTemp = librarys.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == de.PRODUCTION_UNIT_ID && t.AREA_ID == de.AREA_ID && t.RISK_NAME == de.RISK_NAME && t.RISK_DESCRIPTION == de.RISK_DESCRIPTION && t.TYPE_ID == de.TYPE_ID);
|
||||
//优先用 ENTERPRISE_LIBRARY_ID 直接关联完整企业库字典(含禁用的),确保能取到 LEC
|
||||
//找不到再回退到启用企业库的多字段匹配
|
||||
T_SK_ENTERPRISE_LIBRARY departTemp = null;
|
||||
if (de.ENTERPRISE_LIBRARY_ID != null && allLibraryDict.TryGetValue(de.ENTERPRISE_LIBRARY_ID.Value, out var libById))
|
||||
departTemp = libById;
|
||||
if (departTemp == null)
|
||||
departTemp = librarys.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == de.PRODUCTION_UNIT_ID && t.AREA_ID == de.AREA_ID && t.RISK_NAME == de.RISK_NAME && t.RISK_DESCRIPTION == de.RISK_DESCRIPTION && t.TYPE_ID == de.TYPE_ID);
|
||||
T_SK_RISK_EVALUATION_DETAIL detail = new T_SK_RISK_EVALUATION_DETAIL();
|
||||
detail.ORG_ID = entity.ORG_ID;
|
||||
detail.RISK_EVALUATION_ID = result.ID;
|
||||
|
||||
@ -126,6 +126,56 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
// deleteDetailIds.Add(t.ID);
|
||||
//});
|
||||
}
|
||||
//预加载部门、用户、岗位名称字典,用于汇总计算管控层级/部门/责任人/岗位
|
||||
var allDepartIds = new List<Guid>();
|
||||
var allPostIds = new List<Guid>();
|
||||
var allDirectUserIds = new List<Guid>();
|
||||
if (details != null)
|
||||
{
|
||||
foreach (var d in details.Where(t => !t.IS_DELETED))
|
||||
{
|
||||
if (d.Nav_DetailDeparts != null)
|
||||
{
|
||||
foreach (var dp in d.Nav_DetailDeparts.Where(t => !t.IS_DELETED))
|
||||
{
|
||||
if (dp.DEPARTMENT_ID != null) allDepartIds.Add(dp.DEPARTMENT_ID.Value);
|
||||
if (dp.USER_ID != null) allDirectUserIds.Add(dp.USER_ID.Value);
|
||||
}
|
||||
}
|
||||
if (d.Nav_DetailPosts != null)
|
||||
{
|
||||
foreach (var pp in d.Nav_DetailPosts.Where(t => !t.IS_DELETED))
|
||||
{
|
||||
if (pp.DEPARTMENT_ID != null) allDepartIds.Add(pp.DEPARTMENT_ID.Value);
|
||||
if (pp.Nav_PostDetails != null)
|
||||
allPostIds.AddRange(pp.Nav_PostDetails.Where(t => !t.IS_DELETED && t.POST_ID != null).Select(t => t.POST_ID.Value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
allDepartIds = allDepartIds.Distinct().ToList();
|
||||
allPostIds = allPostIds.Distinct().ToList();
|
||||
//加载部门:NAME 和 USER_ID(负责人ID)
|
||||
Dictionary<Guid, string> departNameDict = new Dictionary<Guid, string>();
|
||||
Dictionary<Guid, Guid?> departUserIdDict = new Dictionary<Guid, Guid?>();
|
||||
if (allDepartIds.Any())
|
||||
{
|
||||
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => allDepartIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToList();
|
||||
departNameDict = departs.ToDictionary(t => t.ID, t => t.NAME);
|
||||
departUserIdDict = departs.ToDictionary(t => t.ID, t => t.USER_ID);
|
||||
}
|
||||
//加载用户(部门负责人)姓名
|
||||
allDirectUserIds = allDirectUserIds.Distinct().ToList();
|
||||
var deptUserIds = departUserIdDict.Values.Where(v => v != null).Select(v => v.Value).Distinct().ToList();
|
||||
var allUserIds = allDirectUserIds.Union(deptUserIds).Distinct().ToList();
|
||||
Dictionary<Guid, string> userNameDict = new Dictionary<Guid, string>();
|
||||
if (allUserIds.Any())
|
||||
userNameDict = this.GetEntities<T_FM_USER>(t => allUserIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToDictionary(t => t.ID, t => t.NAME);
|
||||
//加载岗位名称
|
||||
Dictionary<Guid, string> postNameDict = new Dictionary<Guid, string>();
|
||||
if (allPostIds.Any())
|
||||
postNameDict = this.GetEntities<T_FM_USER_POST>(t => allPostIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToDictionary(t => t.ID, t => t.NAME);
|
||||
|
||||
if (details != null && details.Any())
|
||||
{
|
||||
foreach (var item in details.Where(t => !t.IS_DELETED))
|
||||
@ -148,14 +198,11 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
de.SCOREC_ID = item.SCOREC_ID;
|
||||
de.EVALUATE_SCORE = item.EVALUATE_SCORE;
|
||||
de.EVALUATE_LEVEL = item.EVALUATE_LEVEL;
|
||||
//de.MEASURE = item.MEASURE;
|
||||
de.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE;
|
||||
de.IDENTIFY_DEPARTMENT = item.IDENTIFY_DEPARTMENT;
|
||||
de.IDENTIFY_USER = item.IDENTIFY_USER;
|
||||
if ((item.SCOREL_ID == null || item.SCOREE_ID == null || item.SCOREC_ID == null) && item.ENABLE_STATUS == SKEnableStatusEnum.Yes)
|
||||
{
|
||||
throw new Exception("第" + item.NUM + "行,LEC都不能为空");
|
||||
}
|
||||
//管控措施:保存子表记录,MEASURE 在子表全部保存后去重汇总
|
||||
if (item.Nav_DetailMeasures != null && item.Nav_DetailMeasures.Any())
|
||||
{
|
||||
foreach (var mm in item.Nav_DetailMeasures.Where(t => !t.IS_DELETED))
|
||||
@ -167,13 +214,20 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
item2.NUM = mm.NUM;
|
||||
item2.MEASURES_NAME = mm.MEASURES_NAME;
|
||||
measureList.Add(item2);
|
||||
var num = (item2.NUM == null || item2.NUM == 0) ? 1 : item2.NUM.Value;
|
||||
var temp = num + "、" + item2.MEASURES_NAME + Environment.NewLine;
|
||||
de.MEASURE = de.MEASURE + temp;
|
||||
}
|
||||
var distinctMes = item.Nav_DetailMeasures.Where(t => !t.IS_DELETED)
|
||||
.Select(m => m.MEASURES_NAME ?? "")
|
||||
.Where(m => !string.IsNullOrEmpty(m))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var mi = 1;
|
||||
foreach (var mes in distinctMes)
|
||||
{
|
||||
de.MEASURE = de.MEASURE + mi + "、" + mes + ";";
|
||||
mi++;
|
||||
}
|
||||
}
|
||||
detailList.Add(de);
|
||||
item.Nav_DetailMeasures = null;
|
||||
//管控部门层级子表
|
||||
if (item.Nav_DetailDeparts != null && item.Nav_DetailDeparts.Any())
|
||||
{
|
||||
foreach (var mm in item.Nav_DetailDeparts.Where(t => !t.IS_DELETED))
|
||||
@ -184,10 +238,11 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
item2.RISK_EVALUATION_DETAIL_ID = de.ID;
|
||||
item2.DEPARTMENT_TYPE = mm.DEPARTMENT_TYPE;
|
||||
item2.DEPARTMENT_ID = mm.DEPARTMENT_ID;
|
||||
item2.USER_ID = mm.USER_ID;
|
||||
departList.Add(item2);
|
||||
}
|
||||
}
|
||||
item.Nav_DetailDeparts = null;
|
||||
//辨识岗位子表
|
||||
if (item.Nav_DetailPosts != null && item.Nav_DetailPosts.Any())
|
||||
{
|
||||
foreach (var mm in item.Nav_DetailPosts.Where(t => !t.IS_DELETED))
|
||||
@ -212,7 +267,68 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
}
|
||||
}
|
||||
}
|
||||
//汇总计算管控层级/部门/责任人/辨识岗位(按 DEPARTMENT_TYPE 分组)
|
||||
de.DEPARTMENT_TYPE = null;
|
||||
de.IDENTIFY_DEPARTMENT = null;
|
||||
de.IDENTIFY_USER = null;
|
||||
de.IDENTIFY_POST = null;
|
||||
if (item.Nav_DetailDeparts != null && item.Nav_DetailDeparts.Any())
|
||||
{
|
||||
var departTypes = item.Nav_DetailDeparts.Where(t => !t.IS_DELETED)
|
||||
.OrderBy(m => m.DEPARTMENT_TYPE)
|
||||
.Select(t => t.DEPARTMENT_TYPE)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var j = 1;
|
||||
foreach (var dt in departTypes)
|
||||
{
|
||||
var desc = dt.GetDescription();
|
||||
if (!string.IsNullOrEmpty(desc))
|
||||
{
|
||||
de.DEPARTMENT_TYPE = de.DEPARTMENT_TYPE + j + "、" + desc + ";";
|
||||
//该层级下的管控部门名称(去重)
|
||||
var deptNames = item.Nav_DetailDeparts.Where(t => !t.IS_DELETED && t.DEPARTMENT_TYPE == dt && t.DEPARTMENT_ID != null)
|
||||
.Select(t => departNameDict.ContainsKey(t.DEPARTMENT_ID.Value) ? departNameDict[t.DEPARTMENT_ID.Value] : null)
|
||||
.Where(n => !string.IsNullOrEmpty(n))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var dn in deptNames)
|
||||
de.IDENTIFY_DEPARTMENT = de.IDENTIFY_DEPARTMENT + j + "、" + dn + ";";
|
||||
//该层级下的管控责任人:取部门表的负责人 USER_ID
|
||||
var userNamesForType = item.Nav_DetailDeparts.Where(t => !t.IS_DELETED && t.DEPARTMENT_TYPE == dt && t.DEPARTMENT_ID != null)
|
||||
.Select(t => departUserIdDict.ContainsKey(t.DEPARTMENT_ID.Value) ? departUserIdDict[t.DEPARTMENT_ID.Value] : null)
|
||||
.Where(uid => uid != null && userNameDict.ContainsKey(uid.Value))
|
||||
.Select(uid => userNameDict[uid.Value])
|
||||
.Where(n => !string.IsNullOrEmpty(n))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var un in userNamesForType)
|
||||
de.IDENTIFY_USER = de.IDENTIFY_USER + j + "、" + un + ";";
|
||||
//该层级下的辨识岗位:匹配 Nav_DetailPosts 中属于该层级管控部门的岗位(去重)
|
||||
var typeDeptIds = item.Nav_DetailDeparts.Where(t => !t.IS_DELETED && t.DEPARTMENT_TYPE == dt && t.DEPARTMENT_ID != null)
|
||||
.Select(t => t.DEPARTMENT_ID.Value)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
if (item.Nav_DetailPosts != null && typeDeptIds.Any())
|
||||
{
|
||||
var postNames = item.Nav_DetailPosts.Where(p => !p.IS_DELETED && p.DEPARTMENT_ID != null && typeDeptIds.Contains(p.DEPARTMENT_ID.Value))
|
||||
.SelectMany(p => p.Nav_PostDetails ?? new List<T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL>())
|
||||
.Where(x => !x.IS_DELETED && x.POST_ID != null)
|
||||
.Select(x => postNameDict.ContainsKey(x.POST_ID.Value) ? postNameDict[x.POST_ID.Value] : null)
|
||||
.Where(n => !string.IsNullOrEmpty(n))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var pn in postNames)
|
||||
de.IDENTIFY_POST = de.IDENTIFY_POST + j + "、" + pn + ";";
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
item.Nav_DetailMeasures = null;
|
||||
item.Nav_DetailDeparts = null;
|
||||
item.Nav_DetailPosts = null;
|
||||
detailList.Add(de);
|
||||
if (item.EVALUATE_LEVEL == SKEvaluateLevelEnum.重大风险)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(item.DEPARTMENT_TYPE) && !item.DEPARTMENT_TYPE.Contains("公司级"))
|
||||
@ -378,6 +494,11 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
detail.Nav_DetailDeparts = departTemps.OrderBy(t => t.DEPARTMENT_TYPE).ThenBy(m => m.Nav_Department.NUM).ToList();
|
||||
var postTemps = posts.Where(t => t.RISK_EVALUATION_DETAIL_ID == detail.ID).ToList();
|
||||
detail.Nav_DetailPosts = postTemps.OrderBy(t => t.DEPARTMENT_ID).ToList();
|
||||
//先清空汇总字段,避免叠加 FullUpdate 已持久化的值导致重复
|
||||
detail.DEPARTMENT_TYPE = null;
|
||||
detail.IDENTIFY_DEPARTMENT = null;
|
||||
detail.IDENTIFY_USER = null;
|
||||
detail.IDENTIFY_POST = null;
|
||||
if (detail.Nav_DetailDeparts != null && detail.Nav_DetailDeparts.Any())
|
||||
{
|
||||
var departTypes = detail.Nav_DetailDeparts.OrderBy(m => m.DEPARTMENT_TYPE).Select(t => t.DEPARTMENT_TYPE).Distinct().ToList();
|
||||
@ -386,27 +507,26 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
{
|
||||
if (!string.IsNullOrEmpty(p.GetDescription()))
|
||||
{
|
||||
var temp = j + "、" + p.GetDescription() + ";";
|
||||
detail.DEPARTMENT_TYPE = detail.DEPARTMENT_TYPE + temp;
|
||||
var dds = detail.Nav_DetailDeparts.Where(x => x.DEPARTMENT_TYPE == p).Select(t => t.Nav_Department?.NAME).Distinct().ToList();
|
||||
if (dds.Count() != 0)
|
||||
{
|
||||
var temp2 = j + "、" + string.Join(",", dds) + ";";
|
||||
detail.IDENTIFY_DEPARTMENT = detail.IDENTIFY_DEPARTMENT + temp2;
|
||||
}
|
||||
var uus = detail.Nav_DetailDeparts.Where(x => x.DEPARTMENT_TYPE == p).Select(t => t.Nav_Department?.Nav_User?.NAME).Distinct().ToList();
|
||||
if (uus.Count() != 0)
|
||||
{
|
||||
var temp3 = j + "、" + string.Join(",", uus) + ";";
|
||||
detail.IDENTIFY_USER = detail.IDENTIFY_USER + temp3;
|
||||
}
|
||||
var ddIds = detail.Nav_DetailDeparts.Where(x => x.DEPARTMENT_TYPE == p).Select(t => t.DEPARTMENT_ID).Distinct().ToList();
|
||||
var pps = detail.Nav_DetailPosts.Where(x => ddIds.Contains(x.DEPARTMENT_ID)).SelectMany(x => x.Nav_PostDetails).Select(t => t.Nav_Post?.NAME).Distinct().ToList();
|
||||
if (pps.Count() != 0)
|
||||
{
|
||||
var temp4 = j + "、" + string.Join(",", pps) + ";";
|
||||
detail.IDENTIFY_POST = detail.IDENTIFY_POST + temp4;
|
||||
}
|
||||
detail.DEPARTMENT_TYPE = detail.DEPARTMENT_TYPE + j + "、" + p.GetDescription() + ";";
|
||||
//管控部门(去重,逐个展示)
|
||||
var dds = detail.Nav_DetailDeparts.Where(x => x.DEPARTMENT_TYPE == p).Select(t => t.Nav_Department?.NAME).Where(n => !string.IsNullOrEmpty(n)).Distinct().ToList();
|
||||
foreach (var dn in dds)
|
||||
detail.IDENTIFY_DEPARTMENT = detail.IDENTIFY_DEPARTMENT + j + "、" + dn + ";";
|
||||
//管控责任人:取管控部门负责人(去重,逐个展示)
|
||||
var uus = detail.Nav_DetailDeparts.Where(x => x.DEPARTMENT_TYPE == p).Select(t => t.Nav_Department?.Nav_User?.NAME).Where(n => !string.IsNullOrEmpty(n)).Distinct().ToList();
|
||||
foreach (var un in uus)
|
||||
detail.IDENTIFY_USER = detail.IDENTIFY_USER + j + "、" + un + ";";
|
||||
//辨识岗位:取该层级管控部门对应的岗位(两表部门相同),去重逐个展示
|
||||
var ddIds = detail.Nav_DetailDeparts.Where(x => x.DEPARTMENT_TYPE == p && x.DEPARTMENT_ID != null).Select(t => t.DEPARTMENT_ID).Distinct().ToList();
|
||||
var pps = detail.Nav_DetailPosts.Where(x => !x.IS_DELETED && x.DEPARTMENT_ID != null && ddIds.Contains(x.DEPARTMENT_ID))
|
||||
.SelectMany(x => x.Nav_PostDetails ?? new List<T_SK_RISK_EVALUATION_DETAIL_POST_DETAIL>())
|
||||
.Where(x => !x.IS_DELETED)
|
||||
.Select(t => t.Nav_Post?.NAME)
|
||||
.Where(n => !string.IsNullOrEmpty(n))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var pn in pps)
|
||||
detail.IDENTIFY_POST = detail.IDENTIFY_POST + j + "、" + pn + ";";
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,6 +126,35 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
//}
|
||||
}
|
||||
}
|
||||
//预加载部门、岗位名称,用于汇总计算辨识层级、辨识部门、辨识岗位
|
||||
var allDepartIds = new List<Guid>();
|
||||
var allPostIds = new List<Guid>();
|
||||
if (details != null)
|
||||
{
|
||||
foreach (var d in details.Where(t => !t.IS_DELETED))
|
||||
{
|
||||
if (d.Nav_DetailDeparts != null)
|
||||
allDepartIds.AddRange(d.Nav_DetailDeparts.Where(t => !t.IS_DELETED && t.DEPARTMENT_ID != null).Select(t => t.DEPARTMENT_ID.Value));
|
||||
if (d.Nav_DetailPosts != null)
|
||||
{
|
||||
allDepartIds.AddRange(d.Nav_DetailPosts.Where(t => !t.IS_DELETED && t.DEPARTMENT_ID != null).Select(t => t.DEPARTMENT_ID.Value));
|
||||
foreach (var p in d.Nav_DetailPosts.Where(t => !t.IS_DELETED))
|
||||
{
|
||||
if (p.Nav_ResultPostDets != null)
|
||||
allPostIds.AddRange(p.Nav_ResultPostDets.Where(t => !t.IS_DELETED && t.POST_ID != null).Select(t => t.POST_ID.Value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
allDepartIds = allDepartIds.Distinct().ToList();
|
||||
allPostIds = allPostIds.Distinct().ToList();
|
||||
Dictionary<Guid, string> departNameDict = new Dictionary<Guid, string>();
|
||||
if (allDepartIds.Any())
|
||||
departNameDict = this.GetEntities<T_FM_DEPARTMENT>(t => allDepartIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToDictionary(t => t.ID, t => t.NAME);
|
||||
Dictionary<Guid, string> postNameDict = new Dictionary<Guid, string>();
|
||||
if (allPostIds.Any())
|
||||
postNameDict = this.GetEntities<T_FM_USER_POST>(t => allPostIds.Contains(t.ID), new BaseFilter(entity.ORG_ID)).ToDictionary(t => t.ID, t => t.NAME);
|
||||
|
||||
if (details != null && details.Any())
|
||||
{
|
||||
foreach (var item in details.Where(t => !t.IS_DELETED))
|
||||
@ -143,10 +172,7 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
de.MARK = item.MARK;
|
||||
de.EMERGENCY = item.EMERGENCY;
|
||||
de.ENTERPRISE_LIBRARY_ID = item.ENTERPRISE_LIBRARY_ID;
|
||||
//de.MEASURE = item.MEASURE;
|
||||
de.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE;
|
||||
de.IDENTIFY_DEPARTMENT = item.IDENTIFY_DEPARTMENT;
|
||||
de.IDENTIFY_POST = item.IDENTIFY_POST;
|
||||
//管控措施:从Nav_DetailMeasures汇总并去重
|
||||
if (item.Nav_DetailMeasures != null && item.Nav_DetailMeasures.Any())
|
||||
{
|
||||
foreach (var mm in item.Nav_DetailMeasures.Where(t => !t.IS_DELETED))
|
||||
@ -158,13 +184,21 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
item2.NUM = mm.NUM;
|
||||
item2.MEASURE = (mm.MEASURE ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ",");
|
||||
measureList.Add(item2);
|
||||
var num = (item2.NUM == null || item2.NUM == 0) ? 1 : item2.NUM.Value;
|
||||
var temp = num + "、" + item2.MEASURE + ";";
|
||||
de.MEASURE = de.MEASURE + temp;
|
||||
}
|
||||
var distinctMeasures = item.Nav_DetailMeasures.Where(t => !t.IS_DELETED)
|
||||
.Select(m => (m.MEASURE ?? "").Replace("、", ",").Replace("\\", ",").Replace("/", ","))
|
||||
.Where(m => !string.IsNullOrEmpty(m))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var mi = 1;
|
||||
foreach (var mes in distinctMeasures)
|
||||
{
|
||||
de.MEASURE = de.MEASURE + mi + "、" + mes + ";";
|
||||
mi++;
|
||||
}
|
||||
}
|
||||
detailList.Add(de);
|
||||
item.Nav_DetailMeasures = null;
|
||||
//辨识部门明细
|
||||
if (item.Nav_DetailDeparts != null && item.Nav_DetailDeparts.Any())
|
||||
{
|
||||
foreach (var mm in item.Nav_DetailDeparts.Where(t => !t.IS_DELETED))
|
||||
@ -178,7 +212,7 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
departList.Add(item2);
|
||||
}
|
||||
}
|
||||
item.Nav_DetailDeparts = null;
|
||||
//辨识岗位明细
|
||||
if (item.Nav_DetailPosts != null && item.Nav_DetailPosts.Any())
|
||||
{
|
||||
foreach (var mm in item.Nav_DetailPosts.Where(t => !t.IS_DELETED))
|
||||
@ -204,6 +238,55 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
}
|
||||
}
|
||||
}
|
||||
//汇总计算辨识层级、辨识部门、辨识岗位(按层级分组,组内部门、岗位分别展示)
|
||||
de.DEPARTMENT_TYPE = null;
|
||||
de.IDENTIFY_DEPARTMENT = null;
|
||||
de.IDENTIFY_POST = null;
|
||||
if (item.Nav_DetailDeparts != null && item.Nav_DetailDeparts.Any())
|
||||
{
|
||||
var departTypes = item.Nav_DetailDeparts.Where(t => !t.IS_DELETED)
|
||||
.OrderBy(m => m.DEPARTMENT_TYPE)
|
||||
.Select(t => t.DEPARTMENT_TYPE)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var j = 1;
|
||||
foreach (var dt in departTypes)
|
||||
{
|
||||
var desc = ((SKDepartmentTypeEnum)dt).GetDescription();
|
||||
if (!string.IsNullOrEmpty(desc))
|
||||
{
|
||||
de.DEPARTMENT_TYPE = de.DEPARTMENT_TYPE + j + "、" + desc + ";";
|
||||
//该层级下的辨识部门(去重)
|
||||
var deptNames = item.Nav_DetailDeparts.Where(t => !t.IS_DELETED && t.DEPARTMENT_TYPE == dt && t.DEPARTMENT_ID != null)
|
||||
.Select(t => departNameDict.ContainsKey(t.DEPARTMENT_ID.Value) ? departNameDict[t.DEPARTMENT_ID.Value] : null)
|
||||
.Where(n => !string.IsNullOrEmpty(n))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var dn in deptNames)
|
||||
{
|
||||
de.IDENTIFY_DEPARTMENT = de.IDENTIFY_DEPARTMENT + j + "、" + dn + ";";
|
||||
}
|
||||
//该层级下的辨识岗位(去重)
|
||||
if (item.Nav_DetailPosts != null)
|
||||
{
|
||||
var postNames = item.Nav_DetailPosts.Where(t => !t.IS_DELETED && t.DEPARTMENT_TYPE == (SKDepartmentTypeEnum)dt)
|
||||
.SelectMany(p => p.Nav_ResultPostDets ?? new List<T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST_DETAIL>())
|
||||
.Where(x => x.POST_ID != null)
|
||||
.Select(x => postNameDict.ContainsKey(x.POST_ID.Value) ? postNameDict[x.POST_ID.Value] : null)
|
||||
.Where(n => !string.IsNullOrEmpty(n))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var pn in postNames)
|
||||
{
|
||||
de.IDENTIFY_POST = de.IDENTIFY_POST + j + "、" + pn + ";";
|
||||
}
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
detailList.Add(de);
|
||||
item.Nav_DetailDeparts = null;
|
||||
item.Nav_DetailPosts = null;
|
||||
}
|
||||
}
|
||||
@ -333,6 +416,10 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
// var temp = (m.NUM == null || m.NUM == 0) ? "1" : m.NUM + "、" + m.MEASURE + ";";
|
||||
// d.MEASURE = d.MEASURE + temp;
|
||||
//}
|
||||
//先清空汇总字段,避免叠加 FullUpdate 已持久化的值导致重复
|
||||
d.DEPARTMENT_TYPE = null;
|
||||
d.IDENTIFY_DEPARTMENT = null;
|
||||
d.IDENTIFY_POST = null;
|
||||
if (d.Nav_DetailPosts != null && d.Nav_DetailPosts.Any())
|
||||
{
|
||||
var departTypes = d.Nav_DetailPosts.OrderBy(m=>m.DEPARTMENT_TYPE).Select(t => t.DEPARTMENT_TYPE).Distinct().ToList();
|
||||
@ -341,20 +428,13 @@ namespace APT.SK.WebApi.Controllers.Api
|
||||
{
|
||||
if (!string.IsNullOrEmpty(p.GetDescription()))
|
||||
{
|
||||
var temp = j + "、" + p.GetDescription() + ";";
|
||||
d.DEPARTMENT_TYPE = d.DEPARTMENT_TYPE + temp;
|
||||
var departs = d.Nav_DetailPosts.Where(x => x.DEPARTMENT_TYPE == p).Select(t => t.Nav_Department?.NAME).Distinct().ToList();
|
||||
if (departs.Count() != 0)
|
||||
{
|
||||
var temp2 = j + "、" + string.Join(",", departs) + ";";
|
||||
d.IDENTIFY_DEPARTMENT = d.IDENTIFY_DEPARTMENT + temp2;
|
||||
}
|
||||
var posts = d.Nav_DetailPosts.Where(x => x.DEPARTMENT_TYPE == p).SelectMany(x => x.Nav_ResultPostDets).Select(t => t.Nav_Post?.NAME).Distinct().ToList();
|
||||
if (posts.Count() != 0)
|
||||
{
|
||||
var temp3 = j + "、" + string.Join(",", posts) + ";";
|
||||
d.IDENTIFY_POST = d.IDENTIFY_POST + temp3;
|
||||
}
|
||||
d.DEPARTMENT_TYPE = d.DEPARTMENT_TYPE + j + "、" + p.GetDescription() + ";";
|
||||
var departs = d.Nav_DetailPosts.Where(x => x.DEPARTMENT_TYPE == p).Select(t => t.Nav_Department?.NAME).Where(n => !string.IsNullOrEmpty(n)).Distinct().ToList();
|
||||
foreach (var dn in departs)
|
||||
d.IDENTIFY_DEPARTMENT = d.IDENTIFY_DEPARTMENT + j + "、" + dn + ";";
|
||||
var posts = d.Nav_DetailPosts.Where(x => x.DEPARTMENT_TYPE == p).SelectMany(x => x.Nav_ResultPostDets ?? new List<T_SK_RISK_IDENTIFY_DETAIL_RESULT_POST_DETAIL>()).Where(x => !x.IS_DELETED).Select(t => t.Nav_Post?.NAME).Where(n => !string.IsNullOrEmpty(n)).Distinct().ToList();
|
||||
foreach (var pn in posts)
|
||||
d.IDENTIFY_POST = d.IDENTIFY_POST + j + "、" + pn + ";";
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user