mh_jy_safe/APT.MicroApi/APT.PP.WebApi/Controllers/Api/WBController.cs

789 lines
47 KiB
C#
Raw Permalink Normal View History

2025-08-25 09:56:57 +08:00
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;
});
}
}
}