From e0f2f6dce3ba932f4653bf0f10cf187aeefd5f00 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: Fri, 12 Dec 2025 17:53:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=B8=85=E5=8D=95=E8=B7=91?= =?UTF-8?q?=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/SKController.cs | 195 ++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs index dedfc35..51a1c60 100644 --- a/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs +++ b/APT.MicroApi/APT.PP.WebApi/Controllers/Api/SKController.cs @@ -5743,6 +5743,201 @@ namespace APT.PP.WebApi.Controllers.Api } return true; }); + } + + /// + /// 系统管理-检查清单。自动触发检查通知 + /// + /// + /// + [HttpPost, Route("CheckSetSync")] + public JsonActionResult CheckSetSync([FromBody] KeywordFilter filter) + { + return SafeExecute(() => + { + try + { + var dtNow = DateTime.Now; + var year = dtNow.Year; + var month = dtNow.Month; + var day = dtNow.Day; + var week = dtNow.DayOfWeek; + List setList = new List(); + //查配置表,有配才执行 + var timeSets = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + if (timeSets != null && timeSets.Any()) + { + foreach (var set in timeSets) + { + switch (set.CHECK_CYCLE) + { + case SKPLANCHECKFREQUENCYEnum.Year: + if (set.MONTH == month && set.DATA == day) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.HalfYear: + if ((set.MONTH == month && set.DATA == day) || ((set.MONTH + 6) == month && (set.DATA + 183) == day)) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Date: + setList.Add(set); + break; + //case SKPLANCHECKFREQUENCYEnum.Class: + // setList.Add(set); + break; + case SKPLANCHECKFREQUENCYEnum.Week: + if (set.WEEKDATA != null && (int)set.WEEKDATA.Value == (int)week) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Month: + if (set.DATA == day) + { + setList.Add(set); + } + break; + case SKPLANCHECKFREQUENCYEnum.Quarter: + if (set.MONTH == 1) + { + if ((month == 1 || month == 4 || month == 7 || month == 10) && set.DATA == day) + { + setList.Add(set); + } + } + if (set.MONTH == 2) + { + if ((month == 2 || month == 5 || month == 8 || month == 11) && set.DATA == day) + { + setList.Add(set); + } + } + if (set.MONTH == 3) + { + if ((month == 3 || month == 6 || month == 9 || month == 12) && set.DATA == day) + { + setList.Add(set); + } + } + break; + default: + break; + } + } + } + DateTime dt = DateTime.Now; + if (filter.Parameter1 != null) + { + dt = DateTime.Parse(filter.Parameter1); + } + List notices = new List(); + List details = new List(); + List tasks = new List(); + var checkSets = GetEntities(i => i.IS_AUTO == true, new BaseFilter(filter.OrgId)).ToList(); + var checkSetIds = checkSets.Select(t => t.ID).ToList(); + var checkSetUsers= GetEntities(i => checkSetIds.Contains(i.CHECK_SET_ID), new BaseFilter(filter.OrgId)).ToList(); + var contents = GetEntities(i => checkSetIds.Contains(i.CHECK_SET_ID), new BaseFilter(filter.OrgId)).ToList(); + var users = GetEntities(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList(); + if (checkSets != null && checkSets.Any()) + { + var baseFilter = new BaseFilter(filter.GetOrgId()); + baseFilter.IgnoreDataRule = true; + baseFilter.SelectField = new string[] { "PRODUCTION_UNIT_ID", "CHECK_TYPE_ID", "APPLY_DEPARTMENT_ID", "APPLY_USER_ID", "PLANCHECKFREQUENCY", "DEPARTMENT_TYPE", "CREATE_TIME" }; //指定字段,包括导航属性 + Expression> expression = i => i.IS_DELETED == false && (i.CREATE_TIME.Value.Date == DateTime.Now.Date || i.CREATE_TIME.Value.Date == DateTime.Now.AddDays(-1).Date); + List noticeExsiss = this.GetOrderEntities(expression, baseFilter).ToList(); + foreach (var set in checkSets) + { + var setUserIds = checkSetUsers.Where(t => t.CHECK_SET_ID == set.ID).Select(m => m.USER_ID).Distinct().ToList(); + var timeSet = setList.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == set.PRODUCTION_UNIT_ID && t.CHECK_CYCLE == set.CHECK_CYCLE); + var sendUsers = users.Where(t => setUserIds.Contains(t.ID)).ToList(); + if (sendUsers != null && sendUsers.Any() && timeSet != null && timeSet.CHECKTIME.Value.Hour == dt.Hour) + { + var j = 1; + //触发给检查人 + foreach (var user in sendUsers) + { + //判断是否重复触发 + var exist = noticeExsiss.FirstOrDefault(t => t.APPLY_USER_ID == user.ID && t.DEPARTMENT_TYPE == set.CHECK_TYPE && t.CHECK_TYPE_ID == set.CHECK_TYPE_ID && t.PLANCHECKFREQUENCY == set.CHECK_CYCLE && t.CREATE_TIME.Value.Date == dt.Date); + if (exist == null) + { + T_SK_SECURITY_INSPECTION_NOTICE notice = new T_SK_SECURITY_INSPECTION_NOTICE(); + notice.ORG_ID = set.ORG_ID; + notice.APPLY_USER_ID = user.ID; + notice.APPLY_DEPARTMENT_ID = user.DEPARTMENT_ID; + notice.PRODUCTION_UNIT_ID = set.PRODUCTION_UNIT_ID; + notice.CHECK_TYPE_ID = set.CHECK_TYPE_ID; + notice.PLANCHECKFREQUENCY = set.CHECK_CYCLE; + notice.DEPARTMENT_TYPE = set.CHECK_TYPE; + notice.NOTICE_CODE = "JCXD" + DateTime.Now.ToString("yyyyMMddHH") + j.ToString().PadLeft(4, '0'); + notices.Add(notice); + var checkContents = contents.Where(t => t.CHECK_SET_ID == set.ID).ToList(); + if (checkContents != null && checkContents.Any()) + { + foreach (var con in checkContents) + { + T_SK_SECURITY_INSPECTION_NOTICE_DETAIL de = new T_SK_SECURITY_INSPECTION_NOTICE_DETAIL(); + de.ORG_ID = set.ORG_ID; + de.SECURITY_INSPECTION_NOTICE_ID = notice.ID; + de.CHECK_CONTENTS_ID = con.CHECK_CONTENTS_ID; + de.CHECKCONTENT = con.CHECK_CONTENT; + de.CHECKSTANDARD = con.CHECK_STANDARD; + de.RISK_AREA_ID = con.AREA_ID; + details.Add(de); + } + } + var date = DateTime.Now.Year + DateTime.Now.Month.PadLeft(2, '0') + DateTime.Now.AddHours(4).Day.PadLeft(2, '0'); + var endtime = DateTime.Now.AddHours(24); + if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Week) + { + endtime = DateTime.Now.AddDays(7); + } + if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Month) + { + endtime = DateTime.Now.AddMonths(1); + } + if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.HalfYear) + { + endtime = DateTime.Now.AddMonths(6); + } + if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Year) + { + endtime = DateTime.Now.AddMonths(12); + } + if (set.CHECK_CYCLE == SKPLANCHECKFREQUENCYEnum.Quarter) + { + endtime = DateTime.Now.AddMonths(3); + } + var task = NotificationTaskService.InsertUserNoticeTaskModel(set.CHECK_CYCLE.GetDescription() + "安全检查通知" + date, notice.ID, set.ORG_ID, user.ID, user.NAME, DateTime.Now, endtime, (int)FMNoticeTypeEnum.消息, "SK006"); + tasks.Add(task); + j++; + } + } + } + } + } + UnifiedCommit(() => + { + if (notices != null && notices.Any()) + BantchSaveEntityNoCommit(notices); + if (details != null && details.Any()) + BantchSaveEntityNoCommit(details); + if (tasks != null && tasks.Any()) + BantchSaveEntityNoCommit(tasks); + }); + } + 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; + }); } } }