按企业库自动更新检查清单

This commit is contained in:
何美荣 2026-01-28 14:42:19 +08:00
parent 4245c9f6fc
commit 855028cd08

View File

@ -74,7 +74,8 @@ namespace APT.PP.WebApi.Controllers.Api
public List<CheckListDetail> details { get; set; }
}
public class CheckListDetail
{
{
public Guid? ID { get; set; }
public string RISK_NAME { get; set; }
public Guid? RISK_AREA_ID { get; set; }
@ -85,7 +86,10 @@ namespace APT.PP.WebApi.Controllers.Api
public string CHECKPROOF { get; set; }
public string CHECKSTANDARD { get; set; }
public string CHECKSTANDARD { get; set; }
public Guid? ENTERPRISE_LIBRARY_DETAIL_ID { get; set; }
public Guid? ENTERPRISE_LIBRARY_ID { get; set; }
public string MEASURES_NAME { get; set; }
}
[Route("api/PP/SKController")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
@ -5938,6 +5942,260 @@ namespace APT.PP.WebApi.Controllers.Api
}
return true;
});
}
/// <summary>
/// 定时更新系统管理下面的检查清单
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("UpdateCheckList")]
public JsonActionResult<bool> UpdateCheckList([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
var deleteHidIds = this.GetEntities<T_SK_CHECK_SET_CONTENTS_HIDDEN>(t => true, new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList();
var deleteConIds = this.GetEntities<T_SK_CHECK_SET_CONTENTS>(t => true, new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList();
var deleteSetIds = this.GetEntities<T_SK_CHECK_SET>(t => true, new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList();
List<T_SK_CHECK_SET> sets = new List<T_SK_CHECK_SET>();
List<T_SK_CHECK_SET_CONTENTS> setContents = new List<T_SK_CHECK_SET_CONTENTS>();
List<T_SK_CHECK_SET_CONTENTS_HIDDEN> setConHiddens = new List<T_SK_CHECK_SET_CONTENTS_HIDDEN>();
List<CheckListNew> list = new List<CheckListNew>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> conDepartlist = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>();
var departs = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User");
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && t.DEPARTMENT_ID != null && !t.CODE.Contains("admin") && t.Nav_Person != null, new BaseFilter(filter.OrgId), "Nav_Person", "Nav_ApproveRole");
var productions = this.GetEntities<T_FM_USER_PRODUCTION_UNIT_SET>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList();
//企业库
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => !t.IS_DELETED && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Area").ToList();
var libIds = librarys.Select(t => t.ID).ToList();
//管控层级
var libraryDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DEPART>(t => !t.IS_DELETED && libIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList();
//管控措施
var libraryDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => !t.IS_DELETED && libIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList();
var libDetailIds = libraryDetails.Select(t => t.ID).ToList();
//检查内容
var contents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => !t.IS_DELETED && libDetailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId), "Nav_Contents").ToList();
var libContentIds = libraryDetails.Select(t => t.ID).ToList();
//检查层级
var contentDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(t => !t.IS_DELETED && libContentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId), "Nav_CheckType", "Nav_Department").ToList();
//隐患描述
//var contentHiddens = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN>(t => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList();
//辨识岗位
var posts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(t => !t.IS_DELETED && libIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId), "Nav_PostDetails.Nav_Post").ToList();
//岗位排查
var checkTypeIds = this.GetEntities<T_SK_CHECK_TYPE>(t => t.NAME == "岗位排查", new BaseFilter(filter.OrgId)).Select(x => x.ID).ToList();
//检查清单(生产单元+检查层级+检查类型+检查周期+检查部门:取辨识部门+检查对象:取辨识岗位)
if (contentDeparts != null && contentDeparts.Any())
{
foreach (var item in contentDeparts)
{
var conFirst = contents.FirstOrDefault(t => t.ID == item.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID);
var detailFirst = libraryDetails.FirstOrDefault(t => t.ID == conFirst?.ENTERPRISE_LIBRARY_DETAIL_ID);
var libFirst = librarys.FirstOrDefault(t => t.ID == detailFirst?.ENTERPRISE_LIBRARY_ID);
if (item.CHECK_TYPE_ID != null && checkTypeIds.Contains((Guid)item.CHECK_TYPE_ID))
{
var postFirst = posts.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_ID == libFirst?.ID && t.DEPARTMENT_ID == item.DEPARTMENT_ID);
if (postFirst != null && postFirst.Nav_PostDetails != null && postFirst.Nav_PostDetails.Any())
{
foreach (var item2 in postFirst.Nav_PostDetails)
{
//去除有审批角色的人
var userCharge = users.FirstOrDefault(t => t.Nav_Person != null && t.Nav_Person.POST_ID == item2.POST_ID && t.APPROVE_ROLE_ID != null);
if (userCharge == null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
de.MineType = libFirst != null ? libFirst.MineType : SKProductionUnit.All;
de.PRODUCTION_UNIT_ID = libFirst != null ? libFirst.PRODUCTION_UNIT_ID : null;
de.CHECK_TYPE_ID = item.CHECK_TYPE_ID;
de.TYPE_NAME = item.Nav_CheckType?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = item.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID;
de.CHECK_CYCLE = item.CHECK_CYCLE;
de.CHECK_TYPE = item.CHECK_TYPE;
de.DEPARTMENT_ID = item.DEPARTMENT_ID;
de.DEPART_NAME = item.Nav_Department?.NAME;
de.POST_ID = item2.POST_ID;
de.POST_NAME = item2.Nav_Post?.NAME;
conDepartlist.Add(de);
}
}
}
}
else
{
if (item.CHECK_TYPE == SKDepartmentTypeEnum.)
{
item.POST_NAME = "班组负责人";
}
else if (item.CHECK_TYPE == SKDepartmentTypeEnum.)
{
item.POST_NAME = "车间安全员";
}
else if (item.CHECK_TYPE == SKDepartmentTypeEnum.)
{
item.POST_NAME = "部门安全员";
}
else
{
item.POST_NAME = "安环部安全员";
}
var userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == item.POST_NAME);
if (userInfo == null)
{
var depart = departs.FirstOrDefault(t => t.ID == item.DEPARTMENT_ID);
if (depart != null && depart.USER_ID != null)
{
userInfo = users.FirstOrDefault(t => t.ID == depart.USER_ID);
}
}
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART de = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
de.MineType = libFirst != null ? libFirst.MineType : SKProductionUnit.All;
de.PRODUCTION_UNIT_ID = libFirst != null ? libFirst.PRODUCTION_UNIT_ID : null;
de.CHECK_TYPE_ID = item.CHECK_TYPE_ID;
de.TYPE_NAME = item.Nav_CheckType?.NAME;
de.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = item.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID;
de.CHECK_CYCLE = item.CHECK_CYCLE;
de.CHECK_TYPE = item.CHECK_TYPE;
de.DEPARTMENT_ID = item.DEPARTMENT_ID;
de.DEPART_NAME = item.Nav_Department?.NAME;
de.POST_ID = userInfo?.Nav_Person?.POST_ID;
de.POST_NAME = item.POST_NAME;
conDepartlist.Add(de);
}
}
}
if (conDepartlist != null && conDepartlist.Any())
{
var group = conDepartlist.GroupBy(t => new { t.PRODUCTION_UNIT_ID, t.CHECK_TYPE, t.CHECK_CYCLE, t.DEPART_NAME, t.DEPARTMENT_ID, t.CHECK_TYPE_ID, t.TYPE_NAME, t.POST_NAME, t.POST_ID }).ToList();
foreach (var item in group)
{
CheckListNew listNew = new CheckListNew();
listNew.PRODUCTION_UNIT_ID = item.Key.PRODUCTION_UNIT_ID;
listNew.Cycle = item.Key.CHECK_CYCLE;
listNew.DepartType = item.Key.CHECK_TYPE;
listNew.MineType = productions.FirstOrDefault(t => t.ID == item.Key.PRODUCTION_UNIT_ID)?.NAME;
listNew.CheckType = item.Key.TYPE_NAME;
listNew.CheckCycle = item.Key.CHECK_CYCLE.GetDescription();
listNew.CheckLevel = item.Key.CHECK_TYPE.GetDescription();
listNew.Num = (int)item.Key.CHECK_TYPE;
listNew.CheckDepart = item.Key.DEPART_NAME;
listNew.CheckPostId = item.Key.POST_ID;
listNew.CheckPost = item.Key.POST_NAME;
listNew.CheckDepartId = item.Key.DEPARTMENT_ID;
listNew.CheckTypeId = item.Key.CHECK_TYPE_ID;
var depathaveIds = conDepartlist.Where(t => t.DEPARTMENT_ID == item.Key.DEPARTMENT_ID && t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.CHECK_TYPE == item.Key.CHECK_TYPE && t.CHECK_CYCLE == item.Key.CHECK_CYCLE && t.PRODUCTION_UNIT_ID == item.Key.PRODUCTION_UNIT_ID && t.POST_NAME == item.Key.POST_NAME && t.POST_ID == item.Key.POST_ID).Select(m => m.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID).Distinct().ToList();
var temps = contents.Where(t => depathaveIds.Contains(t.ID)).Distinct().ToList();
if (temps != null && temps.Any())
{
List<CheckListDetail> listDetail = new List<CheckListDetail>();
foreach (var tem in temps)
{
var detailFirst = libraryDetails.FirstOrDefault(t => t.ID == tem.ENTERPRISE_LIBRARY_DETAIL_ID);
var libFirst = librarys.FirstOrDefault(t => t.ID == detailFirst?.ENTERPRISE_LIBRARY_ID);
CheckListDetail checkListDetail = new CheckListDetail();
checkListDetail.ID = tem.ID;
checkListDetail.CHECK_CONTENTS_ID = tem.CHECK_CONTENTS_ID;
checkListDetail.CHECK_CONTENTS_NAME = tem.Nav_Contents?.CHECKCONTENT;
checkListDetail.RISK_NAME = libFirst?.RISK_NAME;
checkListDetail.ENTERPRISE_LIBRARY_ID = libFirst?.ID;
checkListDetail.RISK_AREA_ID = libFirst?.AREA_ID;
checkListDetail.RISK_AREA_NAME = libFirst?.Nav_Area?.NAME;
checkListDetail.CHECKPROOF = tem.CHECK_BASIC;
checkListDetail.CHECKSTANDARD = tem.CHECK_STANDARD;
checkListDetail.ENTERPRISE_LIBRARY_DETAIL_ID = detailFirst?.ID;
checkListDetail.MEASURES_NAME = detailFirst?.MEASURES_NAME;
listDetail.Add(checkListDetail);
}
listNew.details = listDetail.GroupBy(n => new { n.RISK_AREA_ID, n.RISK_NAME, n.CHECK_CONTENTS_ID }).Select(g => g.FirstOrDefault()).OrderBy(t => t.RISK_AREA_NAME).ThenBy(m => m.RISK_NAME).ToList();
}
list.Add(listNew);
}
list = list.OrderBy(y => y.PRODUCTION_UNIT_ID).ThenBy(x => x.Num).ThenBy(n => n.CheckDepart).ToList();
}
if (list != null && list.Any())
{
foreach (var item in list)
{
T_SK_CHECK_SET set = new T_SK_CHECK_SET();
set.ORG_ID = filter.OrgId;
set.DEPARTMENT_ID = item.CheckDepartId;
set.POST_ID = item.CheckPostId;
set.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID;
set.CHECK_TYPE_ID = item.CheckTypeId;
set.CHECK_CYCLE = item.Cycle;
set.CHECK_TYPE = item.DepartType;
set.POST_NAME = item.CheckPost;
sets.Add(set);
if (item.details != null && item.details.Any())
{
var i = 1;
foreach (var item2 in item.details)
{
if (item2 != null && item2.CHECK_CONTENTS_ID != null && item2.ID != null)
{
T_SK_CHECK_SET_CONTENTS detail = new T_SK_CHECK_SET_CONTENTS();
detail.ORG_ID = filter.OrgId;
detail.CHECK_SET_ID = set.ID;
detail.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID;
detail.CHECK_CONTENT = item2.CHECK_CONTENTS_NAME;
detail.CHECK_STANDARD = item2.CHECKSTANDARD;
detail.NUM = i;
detail.AREA_ID = item2.RISK_AREA_ID;
detail.RISK_NAME = item2.RISK_NAME;
detail.ENTERPRISE_LIBRARY_ID = item2.ENTERPRISE_LIBRARY_ID;
detail.ENTERPRISE_LIBRARY_DETAIL_ID = item2.ENTERPRISE_LIBRARY_DETAIL_ID;
detail.MEASURES_NAME = item2.MEASURES_NAME;
setContents.Add(detail);
i++;
//var hiddens = contentHiddens.Where(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == item2.ID).ToList();
//if (hiddens != null && hiddens.Any())
//{
// foreach (var item3 in hiddens)
// {
// if (item3 != null && item3.CHECK_QUESTION_ID!=null && item3.HIDDEN_LEVEL !=null)
// {
// T_SK_CHECK_SET_CONTENTS_HIDDEN hid = new T_SK_CHECK_SET_CONTENTS_HIDDEN();
// hid.ORG_ID = filter.OrgId;
// hid.CHECK_CONTENTS_SET_ID = detail.ID;
// hid.CHECK_QUESTION_ID = item3.CHECK_QUESTION_ID;
// hid.NUM = item3.NUM;
// hid.HIDDEN_LEVEL = item3 != null ? (SKHiddenLevel)item3.HIDDEN_LEVEL : SKHiddenLevel.General;
// hid.RECTIFICATION_MEASURES = item3.RECTIFICATION_MEASURES;
// hid.HIDDEN_DESCRIPTION = item3.HIDDEN_DESCRIPTION;
// setConHiddens.Add(hid);
// }
// }
//}
}
}
}
}
}
UnifiedCommit(() =>
{
if (deleteHidIds != null && deleteHidIds.Any())
BantchDeleteEntityNoCommit<T_SK_CHECK_SET_CONTENTS_HIDDEN>(deleteHidIds);
if (deleteConIds != null && deleteConIds.Any())
BantchDeleteEntityNoCommit<T_SK_CHECK_SET_CONTENTS>(deleteConIds);
if (deleteSetIds != null && deleteSetIds.Any())
BantchDeleteEntityNoCommit<T_SK_CHECK_SET>(deleteSetIds);
if (sets != null && sets.Any())
BantchSaveEntityNoCommit(sets);
if (setContents != null && setContents.Any())
BantchSaveEntityNoCommit(setContents);
//if (setConHiddens != null && setConHiddens.Any())
// BantchSaveEntityNoCommit(setConHiddens);
});
}
catch (Exception ex)
{
if (!string.IsNullOrEmpty(ex.StackTrace))
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
else
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
}
return true;
});
}
}
}