mh_jy_safe/APT.MicroApi/APT.PP.WebApi/Controllers/Api/WBController.cs
2025-08-25 09:56:57 +08:00

789 lines
47 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.SK;
using APT.MS.Domain.Entities.WB;
using APT.Utility;
using APT.WebApi.Models;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using APT.BaseData.Domain.Enums;
using APT.MS.Domain.Enums;
namespace APT.PP.WebApi.Controllers.Api
{
[Route("api/PP/WBController")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public class WBController : AuthorizeApiController<T_FM_BASE_CONFIG>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public WBController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 判断跑批时间是否符合
/// </summary>
/// <param name="RUNSETTIME"></param>
/// <param name="dtNow"></param>
/// <param name="minAdvance"></param>
/// <param name="minLaster"></param>
/// <returns></returns>
private bool ISTimeOK(DateTime? RUNSETTIME, DateTime dtNow, int minAdvance, int minLaster)
{
if (RUNSETTIME == null)
{
return false;
}
if (RUNSETTIME != null)
{
if (minAdvance != 0 || minLaster != 0)
{
//DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy") + RUNSETTIME.Value.ToString("-MM-dd HH:mm:ss"));
DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd") + RUNSETTIME.Value.ToString(" HH:mm:ss"));
if (minAdvance > 0 && minLaster > 0)
{
if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
{
return true;
}
}
else if (minAdvance > 0)
{
if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow)
{
//如果设置时间小于当前时间 并且 设置使劲按大于 当前时间大于当前时间往前偏移分钟数
return true;
}
}
else
{
if (dtNow <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
{
//如果 设置时间大于当前时间 并且设置时间小于当前时间往后偏移分钟数
return true;
}
}
}
else
{
if (RUNSETTIME.Value.ToString("HH:mm") == dtNow.ToString("HH:mm"))
{
return true;
}
}
}
return false;
}
/// <summary>
/// 创建安全检查记录
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("createSafeCheckRecord")]
public JsonActionResult<bool> createSafeCheckRecord([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
try
{
DateTime time = DateTime.Now.AddHours(1);
T_FM_SYNC_TASK task = null;
bool isUpdate = false;
if (!string.IsNullOrEmpty(filter.Parameter1))
{
try
{
//接收来自页面的参数
DateTime deParm = Convert.ToDateTime(filter.Parameter1);
time = deParm;
}
catch { }
}
task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
DateTime CURR_TASK_START_TIME = DateTime.Now;
if (task != null)
{
task.CURR_TASK_START_TIME = CURR_TASK_START_TIME;//上次同步结束时间
task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
task.SYNC_PARAM = "";//清空参数
}
#region
List<T_FM_NOTIFICATION_TASK> tasks = new List<T_FM_NOTIFICATION_TASK>();
List<T_WB_SAFE_CHECK_RECORD> records = null;
List<T_WB_SAFE_CHECK_RECORD_DETAIL> recorddetails = null;
BaseFilter basefilter = new BaseFilter(filter.OrgId);
basefilter.Include = new string[] { "Nav_Details" };
//var notices = GetEntities<T_WB_SAFE_CHECK_TASK>(t => t.CHECK_TIME <= time && t.STATUS == PFStandardStatus.Reading, basefilter);
var notices = GetEntities<T_WB_SAFE_CHECK_TASK>(t => t.CHECK_TIME <= time && !t.ISSENDRECORD, basefilter);
if (notices != null && notices.Any())
{
records = new List<T_WB_SAFE_CHECK_RECORD>();
recorddetails = new List<T_WB_SAFE_CHECK_RECORD_DETAIL>();
T_FM_NOTIFICATION_TASK taskCheck = null;
IEnumerable<Guid> listUserID = null;
IEnumerable<T_FM_USER> listUser = null;
foreach (var item in notices)
{
listUserID = item.Nav_Details.Where(e => e.USER_ID.HasValue).Select(e => e.USER_ID.Value).Distinct();
listUser = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null, null);
item.STATUS = PFStandardStatus.Archived;
var record = new T_WB_SAFE_CHECK_RECORD();
record.ID = Guid.NewGuid();
record.ORG_ID = filter.GetOrgId();
record.TASK_ID = item.ID;
record.DEPARTMENT_ID = item.DEPARTMENT_ID;
records.Add(record);
foreach (var detail in item.Nav_Details)
{
if (!detail.MineType.HasValue || !detail.USER_ID.HasValue)
{
continue;
}
var recorddetail = new T_WB_SAFE_CHECK_RECORD_DETAIL();
recorddetail.ID = Guid.NewGuid();
recorddetail.PARENT_ID = record.ID;
recorddetail.ORG_ID = filter.GetOrgId();
recorddetail.MineType = detail.MineType.Value;
recorddetail.AREA_ID = detail.AREA_ID;//recorddetail.AREA = detail.AREA;
recorddetail.CHECK_CONTENT = detail.CHECK_CONTENT;
recorddetail.CHECK_BASIS = detail.CHECK_BASIS;
recorddetail.ROW_NUM = detail.ROW_NUM;
recorddetail.PROJECT_ID = item.PROJECT_ID;
recorddetail.USER_ID = detail.USER_ID.Value;
recorddetail.TASK_DETAIL_ID = detail.ID;
recorddetails.Add(recorddetail);
taskCheck = tasks.FirstOrDefault(e => e.USER_ID == detail.USER_ID && e.SOURCE_DATA_ID == record.ID);
if (taskCheck == null)
{
tasks.Add(NotificationTaskService.InsertUserNoticeTaskModel("外包工程安全检查记录", record.ID, filter.GetOrgId(), detail.USER_ID.Value, listUser.FirstOrDefault(e => e.ID == detail.USER_ID.Value)?.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB031"));
}
}
item.Nav_Details = null;
item.ISSENDRECORD = true;
}
}
UnifiedCommit(() =>
{
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
if (tasks != null && tasks.Any())
BantchSaveEntityNoCommit(tasks);
if (records != null && records.Any())
BantchSaveEntityNoCommit(records);
if (recorddetails != null && recorddetails.Any())
BantchSaveEntityNoCommit(recorddetails);
if (!isUpdate && task != null)
{
UpdateEntityNoCommit(task);
isUpdate = true;
}
});
#endregion
#region
//按部门岗位 触发 待办
//T_WB_SAFE_CHECK_TASK
filter.Parameter1 = " ENABLE_STATUS = false ";
Expression<Func<T_WB_CHECK_TYPE_ENUM, bool>> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;//&& e.DEPARTMENT_ID.HasValue;
List<T_WB_CHECK_TYPE_ENUM> listPlanSet = this.GetOrderEntities(expression, filter, new string[] { "Nav_CheckType" }).ToList();
List<T_WB_CHECK_TYPE_ENUM> listPlanSetRund = new List<T_WB_CHECK_TYPE_ENUM>();
if (listPlanSet.Count < 1)
{
return true;//没找到审批信息
}
T_FM_USER User = GetEntity<T_FM_USER>(e => e.CODE.StartsWith("admin") && e.ENABLE_STATUS == 0);
if (User == null)
{
User = GetEntity<T_FM_USER>(e => e.ID == listPlanSet[0].CREATER_ID.Value);//随便取一个不影响信息
}
int min = 5;//按设置时间 可以提前5分钟执行跑批生成代办任务
List<DateTime> listEndTime = new List<DateTime>();
#region
//5 单次 每天10, 每周20, 每月30, 每季40,
for (int i = 0; i < listPlanSet.Count; i++)
{
//if (listPlanSet[i].CHECKTIME != null)
//{
if (ISTimeOK(listPlanSet[i].RUNSETTIME, time, min, min))//设置时间往前后各偏移 5 分钟 判断跑批
{
switch (listPlanSet[i].PLANCHECKFREQUENCY)
{
case BSPLANCHECKFREQUENCYEnum.None: //每年 0
#region
if (!string.IsNullOrEmpty(listPlanSet[i].RUNDATA))//05-01,10-01
{
List<string> listMMdd = listPlanSet[i].RUNDATA.Split(",").ToList();
if (listPlanSet[i].RUNDATA.Contains("-"))
{
for (int j = 0; j < listMMdd.Count; j++)
{
try
{
if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(time.Year.ToString() + ("-") + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy-MM-dd")) || Convert.ToDateTime(time.Year.ToString() + "-" + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy-M-d"))))
{
listEndTime.Add(Convert.ToDateTime(time.Date.Year + "-12-31 23:59:59"));
listPlanSetRund.Add(listPlanSet[i]);
break;
}
}
catch { }
}
}
else if (listPlanSet[i].RUNDATA.Contains("/"))
{
for (int j = 0; j < listMMdd.Count; j++)
{
try
{
if (!string.IsNullOrEmpty(listMMdd[j]) && (Convert.ToDateTime(time.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy/MM/dd")) || Convert.ToDateTime(time.Year.ToString("yyyy/") + listMMdd[j]) == Convert.ToDateTime(time.ToString("yyyy/M/d"))))
{
listEndTime.Add(Convert.ToDateTime(time.Date.Year + "-12-31 23:59:59"));
listPlanSetRund.Add(listPlanSet[i]);
break;
}
}
catch { }
}
}
}
#endregion
break;
case BSPLANCHECKFREQUENCYEnum.Date:// 10:
//每日天执行 时间匹配就添加
//if (listPlanSet[i].Nav_CheckTypeLevel.Nav_Enums.NAME != "班组级" || (listPlanSet[i].Nav_CheckTypeLevel.Nav_Enums.NAME == "班组级" && listPlanSet[i].CHECKTIME.HasValue))
//{
listPlanSetRund.Add(listPlanSet[i]);//如果是班组级 跳过(另外一个跑批)
listEndTime.Add(time.Date.AddDays(1).AddSeconds(-1));
//}
break;
case BSPLANCHECKFREQUENCYEnum.Week:// 20:
if (listPlanSet[i].WEEKDATA != null && (int)time.DayOfWeek == listPlanSet[i].WEEKDATA.Value)
{
//星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4
listPlanSetRund.Add(listPlanSet[i]);
listEndTime.Add(time.Date.AddDays(7 - listPlanSet[i].WEEKDATA.Value).AddSeconds(-1));
}
break;
case BSPLANCHECKFREQUENCYEnum.Month:// 30:
if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day)
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listPlanSetRund.Add(listPlanSet[i]);
listEndTime.Add(Convert.ToDateTime(time.ToString("yyyy-MM-01 00:00:00")).AddMonths(1).AddSeconds(-1));
}
break;
case BSPLANCHECKFREQUENCYEnum.Quarter:// 40:
if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day && (time.Month == 1 || time.Month == 4 || time.Month == 7 || time.Month == 10))
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listPlanSetRund.Add(listPlanSet[i]);
if (time.Month <= 3)
{
listEndTime.Add(Convert.ToDateTime("yyyy-03-31 23:59:59"));
}
else if (time.Month <= 6)
{
listEndTime.Add(Convert.ToDateTime("yyyy-06-30 23:59:59"));
}
else if (time.Month <= 9)
{
listEndTime.Add(Convert.ToDateTime("yyyy-09-30 23:59:59"));
}
else if (time.Month <= 12)
{
listEndTime.Add(Convert.ToDateTime("yyyy-12-31 23:59:59"));
}
}
break;
case BSPLANCHECKFREQUENCYEnum.HalfYear:// 50:
if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day && (time.Month == 1 || time.Month == 7))
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listPlanSetRund.Add(listPlanSet[i]);
if (time.Month < 7)
{
listEndTime.Add(Convert.ToDateTime("yyyy-06-30 23:59:59"));
}
else
{
listEndTime.Add(Convert.ToDateTime("yyyy-12-31 23:59:59"));
}
}
break;
case BSPLANCHECKFREQUENCYEnum.Year:// 60:
if (listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == time.Day && time.Month == 1)
{
//日匹配 (季度是季度第一月的某日 刚好也符合)
listPlanSetRund.Add(listPlanSet[i]);
listEndTime.Add(Convert.ToDateTime("yyyy-12-31 23:59:59"));
}
break;
default:
break;
}
}
//}
//else
//{
// //只有每个季度执行的没有明确时间
// if (listPlanSet[i].PLANCHECKFREQUENCY == 40 && listPlanSet[i].DATA != null && listPlanSet[i].DATA.Value == dtNow.Day)
// {
// listPlanSetRund.Add(listPlanSet[i]);
// }
//}
}
#endregion
if (listPlanSetRund.Count > 0)
{
#region
string formCode = "WB029";
DateTime dtFirst = Convert.ToDateTime(time.ToString("yyyy-MM-dd 00:00:00"));
// 系统生成10 用户主动创建20 今天 生成的
List<T_WB_SAFE_CHECK_TASK> listSafeCheck = this.GetOrderEntities<T_WB_SAFE_CHECK_TASK>(e => e.CREACTTYPE == CREACTTYPEEnum.System && e.CREATE_TIME >= dtFirst, filter).ToList();
List<T_WB_SAFE_CHECK> listCheck = this.GetOrderEntities<T_WB_SAFE_CHECK>(e => e.PLAN_SET_ID.HasValue && e.CREATE_TIME >= dtFirst, filter).ToList();
Guid CHECK_PLAN_SETL_ID = Guid.Empty;
T_WB_SAFE_CHECK_TASK modelCheck = null;
T_WB_SAFE_CHECK modelSafeCheck = null;
List<T_WB_SAFE_CHECK_TASK> listSafeCheckAdd = new List<T_WB_SAFE_CHECK_TASK>(); //需要插入数据库的安检记录
List<T_FM_USER> listFMUserNotice = null;//每项设置的通知人员(中间表)
List<T_WB_PROJECT_INPUT> listProject = null;//每项设置的通知人员(中间表)
List<T_WB_PROJECT_INPUT> listProjectSafe = null;//每项设置的通知人员(中间表)
List<T_WB_SAFE_CHECK> listCheckAdd = new List<T_WB_SAFE_CHECK>(); //检查记录WB027
List<int> listCheckObject = new List<int>();
for (int i = 0; i < listPlanSetRund.Count; i++)
{
listSafeCheckAdd = new List<T_WB_SAFE_CHECK_TASK>();
listCheckAdd = new List<T_WB_SAFE_CHECK>();
var noticeTitles = new List<string>();
var noticeDataIds = new List<Guid>();
var noticeUserIds = new List<Guid>();
var noticeUserNames = new List<string>();
CHECK_PLAN_SETL_ID = listPlanSetRund[i].ID;
modelCheck = listSafeCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID);
if (modelCheck != null)
continue;//有添加检查信息
modelSafeCheck = listCheck.FirstOrDefault(e => e.PLAN_SET_ID == CHECK_PLAN_SETL_ID);
if (modelSafeCheck != null)
continue; //有添加检查记录信息
#region
if (listPlanSetRund[i].IS_SCENE_USERID)
{
if (listProject == null)
{
//所有项目 对应的建设项目现场负责人
listProject = GetEntities<T_WB_PROJECT_INPUT>(e => e.SCENE_USER_ID != Guid.Empty, null, "Nav_SceneUser").ToList();
}
}
else if (listPlanSetRund[i].IS_SAFE)
{
if (listProjectSafe == null)
{
//所有项目 对应的建设项目现场负责人
listProjectSafe = GetEntities<T_WB_PROJECT_INPUT>(e => e.USER_ID_SAFE.HasValue && e.USER_ID_SAFE != Guid.Empty, null, "Nav_UserSafe").ToList();
}
}
else if (listPlanSetRund[i].USER_ID.HasValue)
{
listFMUserNotice = new List<T_FM_USER>();
listFMUserNotice = GetEntities<T_FM_USER>(e => e.ID == listPlanSetRund[i].USER_ID.Value && e.ENABLE_STATUS == 0 && e.PERSON_ID.HasValue, null, "Nav_Person").ToList();
}
else
{
listFMUserNotice = new List<T_FM_USER>();
listFMUserNotice = GetEntities<T_FM_USER>(e => e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == listPlanSetRund[i].DEPARTMENT_ID && e.ENABLE_STATUS == 0 && e.PERSON_ID.HasValue && e.Nav_Person.POST_ID.HasValue && e.Nav_Person.POST_ID.Value == listPlanSetRund[i].POST_ID, null, "Nav_Person").ToList();
}
if (listPlanSetRund[i].IS_SCENE_USERID)
{
if (listProject == null || listProject.Count < 1)
{
continue; //没有找到通知人员信息
}
for (int j = 0; j < listProject.Count; j++)
{
#region model
T_WB_SAFE_CHECK_TASK modelRun = new T_WB_SAFE_CHECK_TASK();
modelRun.ID = Guid.NewGuid();
modelRun.ORG_ID = filter.GetOrgId();
modelRun.NAME = listPlanSetRund[i].Nav_CheckType.NAME + "-制定(" + time.ToString("MMdd") + "";
modelRun.CODE = time.ToString("yyyyMMddHHmm") + i.ToString() + j.ToString();
//modelRun.PROJECT_ID= listPlanSetRund[i].
modelRun.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value;
modelRun.MineType = listPlanSetRund[i].MineType;
modelRun.PLAN_SET_ID = listPlanSetRund[i].ID;
modelRun.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成
modelRun.CREATER_ID = listProject[j].Nav_SceneUser.ID;//安全检查的创建人 就是通知人
modelRun.USERID_DOPLAN = listProject[j].Nav_SceneUser.ID;//制表人
modelRun.DEPARTMENTID = listPlanSetRund[i].DEPARTMENT_ID;//检查部门(公司/部门/车间/班组 ID
modelRun.STATUS = (int)HMAuditStatusEnmu.稿;
modelRun.ISSENDRECORD = false;
modelRun.LIMITDATETIME = listEndTime[i];
modelRun.PROJECT_ID = listProject[j].ID;
modelRun.DEPARTMENTID = listProject[j].DEPARTMENT_ID;
listSafeCheckAdd.Add(modelRun);
noticeDataIds.Add(modelRun.ID);
noticeUserIds.Add(listProject[j].Nav_SceneUser.ID);
noticeUserNames.Add(listProject[j].Nav_SceneUser.NAME);
noticeTitles.Add("【外包工程】" + modelRun.NAME);//每天的 加上日期
#endregion
}
}
else if (listPlanSetRund[i].IS_SAFE)
{
//WB027
if (listProjectSafe == null || listProjectSafe.Count < 1)
{
continue; //没有找到通知人员信息
}
for (int j = 0; j < listProjectSafe.Count; j++)
{
#region model
T_WB_SAFE_CHECK modelRunRecord = new T_WB_SAFE_CHECK();
modelRunRecord.ID = Guid.NewGuid();
modelRunRecord.ORG_ID = filter.GetOrgId();
modelRunRecord.PLAN_SET_ID = listPlanSetRund[i].ID;
modelRunRecord.CODE = time.ToString("yyyyMMddHHmm") + i.ToString() + j.ToString();
modelRunRecord.NAME = listPlanSetRund[i].Nav_CheckType.NAME + "-记录(" + time.ToString("MMdd") + "";
modelRunRecord.CREATER_ID = listProjectSafe[j].USER_ID_SAFE.Value;//安全检查的创建人 就是通知人
modelRunRecord.MODIFIER_ID = listProjectSafe[j].USER_ID_SAFE.Value;//安全检查的创建人 就是通知人
modelRunRecord.CREATE_TIME = DateTime.Now;
modelRunRecord.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value;
//modelRunRecord.MineType = listPlanSetRund[i].MineType;
//modelRunRecord.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成
//modelRunRecord.USERID_DOPLAN = listProjectSafe[j].Nav_SceneUser.ID;//制表人
//modelRunRecord.DEPARTMENTID = listPlanSetRund[i].DEPARTMENT_ID;//检查部门(公司/部门/车间/班组 ID
//modelRunRecord.LIMITDATETIME = listEndTime[i];
modelRunRecord.CHECK_TIME = dtFirst;
modelRunRecord.CHECK_CATEGORY = WBCHECKCATAGORY.;
modelRunRecord.STATUS = (int)HMAuditStatusEnmu.稿;
modelRunRecord.PROJECT_ID = listProjectSafe[j].ID;
modelRunRecord.DEPARTMENT_ID = listProjectSafe[j].DEPARTMENT_ID;
listCheckAdd.Add(modelRunRecord);
noticeDataIds.Add(modelRunRecord.ID);
noticeUserIds.Add(listProjectSafe[j].Nav_UserSafe.ID);
noticeUserNames.Add(listProjectSafe[j].Nav_UserSafe.NAME);
noticeTitles.Add(modelRunRecord.NAME);//每天的 加上日期
#endregion
}
}
else
{
if (listFMUserNotice.Count < 1)
{
continue; //没有找到通知人员信息
}
for (int j = 0; j < listFMUserNotice.Count; j++)
{
#region model
T_WB_SAFE_CHECK_TASK modelRun = new T_WB_SAFE_CHECK_TASK();
modelRun.ID = Guid.NewGuid();
modelRun.ORG_ID = filter.GetOrgId();
modelRun.NAME = listPlanSetRund[i].Nav_CheckType.NAME + "-制定(" + time.ToString("MMdd") + "";
modelRun.CODE = time.ToString("yyyyMMddHHmm") + i.ToString() + j.ToString();
//modelRun.PROJECT_ID= listPlanSetRund[i].
modelRun.CHECK_TYPE_ID = listPlanSetRund[i].CHECK_TYPE_ID.Value;
modelRun.MineType = listPlanSetRund[i].MineType;
modelRun.PLAN_SET_ID = listPlanSetRund[i].ID;
modelRun.CREACTTYPE = CREACTTYPEEnum.System;// 10;//系统生成
modelRun.CREATER_ID = listFMUserNotice[j].ID;//安全检查的创建人 就是通知人
modelRun.USERID_DOPLAN = listFMUserNotice[j].ID;//制表人
modelRun.DEPARTMENTID = listPlanSetRund[i].DEPARTMENT_ID;//检查部门(公司/部门/车间/班组 ID
modelRun.STATUS = (int)HMAuditStatusEnmu.稿;
modelRun.ISSENDRECORD = false;
modelRun.LIMITDATETIME = listEndTime[i];
listSafeCheckAdd.Add(modelRun);
noticeDataIds.Add(modelRun.ID);
noticeUserIds.Add(listFMUserNotice[j].ID);
noticeUserNames.Add(listFMUserNotice[j].NAME);
noticeTitles.Add("【外包工程】" + modelRun.NAME);//每天的 加上日期
#endregion
}
}
#endregion
////超时时间设置
if (noticeTitles.Count > 0)
{
#region
if (task != null)
{
task.UPDATE_SUCCES_TIME = DateTime.Now;
}
if (listPlanSetRund[i].IS_SAFE)
{
formCode = "WB027";//检查记录
}
else
{
formCode = "WB029";//检查任务
}
NotificationTaskService.SendNotificationTask(noticeTitles, noticeDataIds, filter.GetOrgId(), noticeUserIds, noticeUserNames, DateTime.Now, listEndTime[i], 0, formCode, () =>
{
if (listSafeCheckAdd != null && listSafeCheckAdd.Any() && listSafeCheckAdd.Count() > 0)
this.BantchAddEntityNoCommit(listSafeCheckAdd);
if (listCheckAdd != null && listCheckAdd.Any() && listCheckAdd.Count() > 0)
this.BantchAddEntityNoCommit(listCheckAdd);
if (!isUpdate && task != null)
{
UpdateEntityNoCommit(task);
isUpdate = true;
}
});
#endregion
}
}
#endregion
}
#endregion
#region 7 1 2
DateTime dtWarm = time.Date.AddDays(8).AddSeconds(-1);
var listWarm = GetEntities<T_WB_REGISTER_3>(e => e.VALID_TIME.HasValue && e.VALID_TIME >= time.Date && e.VALID_TIME <= dtWarm && (!e.MODIFY_TIME.HasValue || e.MODIFY_TIME.Value.Date != time.Date), null);
var listWarm2 = GetEntities<T_WB_REGISTER_2>(e => e.VALID_DATE.HasValue && e.VALID_DATE >= time.Date && e.VALID_DATE <= dtWarm && (!e.MODIFY_TIME.HasValue || e.MODIFY_TIME.Value.Date != time.Date), null);
var listWarm4 = GetEntities<T_WB_REGISTER_4>(e => e.DATE_LIMIT.HasValue && e.DATE_LIMIT >= time.Date && e.DATE_LIMIT <= dtWarm && (!e.MODIFY_TIME.HasValue || e.MODIFY_TIME.Value.Date != time.Date), null);
if ((listWarm.Any() && listWarm.Count() > 0) || (listWarm2.Any() && listWarm2.Count() > 0) || (listWarm4.Any() && listWarm4.Count() > 0))
{
List<T_FM_NOTIFICATION_TASK> listTaskWarm = new List<T_FM_NOTIFICATION_TASK>();
DateTime dtTaskEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.Default, filter.OrgId.Value, null, null, null);
List<Guid> listRegistID = new List<Guid>();
if (listWarm.Any() && listWarm.Count() > 0)
{
listRegistID = listWarm.Select(e => e.PARENT_ID).Distinct().ToList();
}
if (listWarm2.Any() && listWarm2.Count() > 0)
{
listRegistID.AddRange(listWarm2.Select(e => e.PARENT_ID).Distinct().ToList());
}
if (listWarm4.Any() && listWarm4.Count() > 0)
{
listRegistID.AddRange(listWarm4.Select(e => e.PARENT_ID).Distinct().ToList());
}
var listRegister = GetEntities<T_WB_REGISTER>(e => e.STATUS == PFStandardStatus.Archived && e.ENABLE_STATUS == FMEnableStatusEnum. && listRegistID.Contains(e.ID), null, "Nav_Project.Nav_SceneUser");
if (listRegister != null && listRegister.Count() > 0)
{
var listPhone = listRegister.Select(e => e.Nav_Project.WB_USER_PHONE);
var listProjID = listRegister.Select(e => e.PROJECT_ID);
var listUserWBAQY = GetEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.PROJECT_ID.HasValue && listProjID.Contains(e.PROJECT_ID.Value) && listPhone.Contains(e.PHONE), null, null);
T_FM_USER UserAQ = null;
if (listUserWBAQY != null && listUserWBAQY.Any())
{
foreach (var item in listRegister)
{
UserAQ = listUserWBAQY.FirstOrDefault(e => e.PHONE == item.Nav_Project.WB_USER_PHONE);
if (UserAQ != null)
{
string Warm = string.Empty;
if (listWarm != null && listWarm.Any())
{
var listWarmPer = listWarm.Where(e => e.PARENT_ID == item.ID);
if (listWarmPer != null && listWarmPer.Count() > 0)
{
Warm = "资质即将到期提醒:";
foreach (var itemP in listWarmPer)
{
Warm += "【" + itemP.CERTIFICATE_NAME + "】到期日期:" + itemP.VALID_TIME.Value.ToString("yyyy-MM-dd") + "";
}
Warm = Warm.Substring(0, Warm.Length - 1);
}
}
if (listWarm2 != null && listWarm2.Any())
{
var listWarmPer = listWarm2.Where(e => e.PARENT_ID == item.ID);
if (listWarmPer != null && listWarmPer.Count() > 0)
{
Warm += ((Warm.Length > 0 ? "" : "") + "人员证书即将到期提醒:");
foreach (var itemP in listWarmPer)
{
Warm += (itemP.NAME + " 【" + itemP.CERTIFICATE_NAME + "】到期日期:" + itemP.VALID_DATE.Value.ToString("yyyy-MM-dd") + "");
}
Warm = Warm.Substring(0, Warm.Length - 1);
}
}
if (listWarm4 != null && listWarm4.Any())
{
var listWarmPer = listWarm4.Where(e => e.PARENT_ID == item.ID);
if (listWarmPer != null && listWarmPer.Count() > 0)
{
Warm += ((Warm.Length > 0 ? "" : "") + "设备设施检测报告有效期即将到期提醒:");
foreach (var itemP in listWarmPer)
{
Warm += (itemP.NAME + " 【" + itemP.NAME + "】到期日期:" + itemP.DATE_LIMIT.Value.ToString("yyyy-MM-dd") + "");
}
Warm = Warm.Substring(0, Warm.Length - 1);
}
}
//外包安全员
listTaskWarm.Add(NotificationTaskService.InsertUserNoticeTaskModel(Warm, Guid.Empty, item.ORG_ID, UserAQ.ID, UserAQ.NAME, DateTime.Now, dtTaskEnd, 2, ""));
//建设项目现场负责人
listTaskWarm.Add(NotificationTaskService.InsertUserNoticeTaskModel("【外包单位:" + item.Nav_Project.UNIT_NAME + "】" + Warm, Guid.Empty, item.ORG_ID, item.Nav_Project.SCENE_USER_ID, item.Nav_Project.Nav_SceneUser.NAME, DateTime.Now, dtTaskEnd, 2, ""));
}
}
}
}
if (listTaskWarm != null && listTaskWarm.Count() > 0)
{
if (listWarm != null && listWarm.Count() > 0)
{
foreach (var item in listWarm)
{
item.MODIFY_TIME = (time > DateTime.Now ? time : DateTime.Now);
}
}
if (listWarm2 != null && listWarm2.Count() > 0)
{
foreach (var item in listWarm2)
{
item.MODIFY_TIME = (time > DateTime.Now ? time : DateTime.Now);
}
}
if (listWarm4 != null && listWarm4.Count() > 0)
{
foreach (var item in listWarm4)
{
item.MODIFY_TIME = (time > DateTime.Now ? time : DateTime.Now);
}
}
UnifiedCommit(() =>
{
this.BantchAddEntityNoCommit(listTaskWarm);
if (listWarm != null && listWarm.Count() > 0)
BantchSaveEntityNoCommit(listWarm);
if (listWarm2 != null && listWarm2.Count() > 0)
BantchSaveEntityNoCommit(listWarm2);
if (!isUpdate && task != null)
{
UpdateEntityNoCommit(task);
isUpdate = true;
}
});
}
}
#endregion
#region WB048
////触发讲师确认
//task = NotificationTaskService.InsertUserNoticeTaskModel(Record.Nav_Parent.Nav_Project.UNIT_NAME + "安全培训记录结果确认", Record.ID, Record.ORG_ID, (Guid)Record.Nav_Parent.USER_ID, Record.Nav_Parent.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB048");
var listRecord = GetEntities<T_WB_OUTSOURCE_TRAIN_RECORD>(e => !e.IS_DELETED && !e.ISEND && !e.ISEND && e.END_TIME.HasValue && e.END_TIME.Value <= time, null, "Nav_Parent.Nav_Project", "Nav_Parent.Nav_User");
if (listRecord != null && listRecord.Any())
{
var listRecordID = listRecord.Select(e => e.ID);
//外包单位培训/答题 WB008_OPERATE
var listRecordUser = GetEntities<T_WB_OUTSOURCE_TRAIN_RECORD_USERS>(e => e.DEAL_STATUS == 0 && listRecordID.Contains(e.PARENT_ID), null, null);
List<T_FM_NOTIFICATION_TASK> listTask048 = new List<T_FM_NOTIFICATION_TASK>();
List<Guid> listRecordUserID = new List<Guid>();
foreach (var item in listRecordUser)
{
item.SIGN_STATUS = FOUserShiftStatusEnum.;//FOUserShiftStatusEnum.已处理; 考试 待老师 确认 后 也是需要再次确认
item.DEAL_STATUS = ExamStatusEnum.;//.已处理 ;
item.MODIFY_TIME = DateTime.Now;
listRecordUserID.Add(item.ID);
}
var listTNE = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_FORMCODE == "WB008_OPERATE" && e.SOURCE_DATA_ID.HasValue && listRecordUserID.Contains(e.SOURCE_DATA_ID.Value), null, null);
foreach (var item in listTNE)
{
item.NOTICE_STATUS = (int)FMNoticeStatusEnum.;
item.TASK_DT = DateTime.Now;
}
listTask048.AddRange(listTNE);
foreach (var item in listRecord)
{
item.MODIFY_TIME = DateTime.Now;
item.ISEND = true;
item.STATUS = SETrainNotifyStatus.;//.签到完成;//API SavePapers
listTask048.Add(NotificationTaskService.InsertUserNoticeTaskModel(item.Nav_Parent.Nav_Project.UNIT_NAME + "安全培训记录结果确认", item.ID, item.ORG_ID, (Guid)item.Nav_Parent.USER_ID, item.Nav_Parent.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "WB048"));
}
UnifiedCommit(() =>
{
BantchSaveEntityNoCommit(listRecord);
if (listTask048 != null && listTask048.Count() > 0)
BantchSaveEntityNoCommit(listTask048);
if (listRecordUser != null && listRecordUser.Count() > 0)
BantchSaveEntityNoCommit(listRecordUser);
});
}
#endregion
}
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;
});
}
}
}