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;
+ });
}
}
}