From 855028cd0834793ee6091a6f441ff5bcca3919fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=BE=8E=E8=8D=A3?= <10755671+mei-rong-he@user.noreply.gitee.com> Date: Wed, 28 Jan 2026 14:42:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E4=BC=81=E4=B8=9A=E5=BA=93=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=9B=B4=E6=96=B0=E6=A3=80=E6=9F=A5=E6=B8=85=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/SKController.cs | 262 +++++++++++++++++- 1 file changed, 260 insertions(+), 2 deletions(-) diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs index 51a1c60..947f894 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs @@ -74,7 +74,8 @@ namespace APT.PP.WebApi.Controllers.Api public List 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; }); + } + /// + /// 定时更新系统管理下面的检查清单 + /// + /// + /// + [HttpPost, Route("UpdateCheckList")] + public JsonActionResult UpdateCheckList([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var deleteHidIds = this.GetEntities(t => true, new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); + var deleteConIds = this.GetEntities(t => true, new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); + var deleteSetIds = this.GetEntities(t => true, new BaseFilter(filter.OrgId)).Select(m => m.ID).ToList(); + List sets = new List(); + List setContents = new List(); + List setConHiddens = new List(); + List list = new List(); + List conDepartlist = new List(); + var departs = this.GetEntities(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_User"); + var users = this.GetEntities(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 => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); + //企业库 + var librarys = this.GetEntities(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 => !t.IS_DELETED && libIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId)).ToList(); + //管控措施 + var libraryDetails = this.GetEntities(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 => !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 => !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 => !t.IS_DELETED, new BaseFilter(filter.OrgId)).ToList(); + //辨识岗位 + var posts = this.GetEntities(t => !t.IS_DELETED && libIds.Contains(t.ENTERPRISE_LIBRARY_ID), new BaseFilter(filter.OrgId), "Nav_PostDetails.Nav_Post").ToList(); + //岗位排查 + var checkTypeIds = this.GetEntities(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 listDetail = new List(); + 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(deleteHidIds); + if (deleteConIds != null && deleteConIds.Any()) + BantchDeleteEntityNoCommit(deleteConIds); + if (deleteSetIds != null && deleteSetIds.Any()) + BantchDeleteEntityNoCommit(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; + }); } } }