mh_sms/APT.MicroApi/APT.PP.WebApi/Controllers/Api/CMController.cs

1028 lines
54 KiB
C#
Raw Normal View History

2024-04-12 16:50:28 +08:00
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.BS;
using APT.MS.Domain.Entities.CM;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Entities.PF;
using APT.MS.Domain.Entities.SC;
using APT.MS.Domain.Enums;
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 System.Text;
using System.Text.RegularExpressions;
namespace APT.PP.WebApi.Controllers.Api.PP
{
[Route("api/PP/CM")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public partial class CMController : AuthorizeApiController<T_CM_DRILL_PLAN>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
IFMUserService UserService { get; set; }
IFMSyncLogDetailService SyncLogDetailService { get; set; }
//IBSSafeCheckService SafeCheckService { get; set; }, IBSSafeCheckService safeCheckService
IPFSysLogService SysLogService { get; set; }
public CMController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMUserService userService, IFMSyncLogDetailService syncLogDetailService)
{
NotificationTaskService = notificationTaskService;
SysLogService = sysLogService;
UserService = userService;
SyncLogDetailService = syncLogDetailService;
}
/// <summary>
/// 应急管理 每天触发一次
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("DailyRun")]
public JsonActionResult<bool> DailyRun([FromBody] KeywordFilter filter)
{
//自动触发日期配置 新增 接收部门 接收岗位(部门岗位搜索的任意一人)
// 如果没有配置 取【安环部负责人】(即保留原来的做法)
return SafeExecute<bool>(() =>
{
DateTime dtNow = DateTime.Now;
if (!string.IsNullOrEmpty(filter.Parameter1))
{
try
{
dtNow = Convert.ToDateTime(filter.Parameter1);
}
catch
{
dtNow = DateTime.Now;
}
}
string Parameter1 = filter.Parameter1;
var configDate = GetEntity<T_CM_CONFIG>(e => e.ORG_ID == filter.OrgId);
if (configDate == null)
{
configDate = new T_CM_CONFIG();
configDate.ID = Guid.NewGuid();
configDate.ORG_ID = filter.OrgId;
}
bool isUrgentEventTrigger = false;
#region 31
if (!configDate.URGENT_EVENT_TRIGGER_TIME.HasValue)
configDate.URGENT_EVENT_TRIGGER_TIME = Convert.ToDateTime(dtNow.Year + "-03-01");
if (configDate.URGENT_EVENT_TRIGGER_TIME.Value.ToString("MM-dd") == dtNow.ToString("MM-dd"))
isUrgentEventTrigger = true;
#endregion
//是否触发 应急装备需求调查
//1频率为每年每年3月1日定期触发待办事项给部门安全员截止时间3月15日确定。开始时间和截止时间在系统设置中可配置
bool isDemandSurvey = false;
bool isDemandSurveyEnd = false;
#region
if (!configDate.DEMAND_SURVEY_START_TIME.HasValue)
configDate.DEMAND_SURVEY_START_TIME = Convert.ToDateTime(DateTime.Now.Year + "-03-01");
if (!configDate.DEMAND_SURVEY_END_TIME.HasValue)
configDate.DEMAND_SURVEY_END_TIME = Convert.ToDateTime(DateTime.Now.Year + "-03-15");
if (configDate.DEMAND_SURVEY_START_TIME.Value.ToString("MM-dd") == dtNow.ToString("MM-dd"))
isDemandSurvey = true;
DateTime dtE = Convert.ToDateTime(dtNow.Year + "-" + configDate.DEMAND_SURVEY_END_TIME.Value.ToString("MM-dd HH:mm:ss"));
if (dtE >= dtNow)
isDemandSurveyEnd = true;
#endregion
//DRILL_PLAN_TRIGGER_TIME 年度应急演练计划触发时间
bool isDrillPlan = false;
#region
if (!configDate.DRILL_PLAN_TRIGGER_TIME.HasValue)
configDate.DRILL_PLAN_TRIGGER_TIME = Convert.ToDateTime(DateTime.Now.Year + "-01-01");
if (configDate.DRILL_PLAN_TRIGGER_TIME.Value.ToString("MM-dd") == dtNow.ToString("MM-dd"))
isDrillPlan = true;
#endregion
if ((!isUrgentEventTrigger && !isDrillPlan && !isDemandSurvey && !isDemandSurveyEnd)
|| configDate.LASTRUNDATE.Date == dtNow.Date)
{
//当前日期未设置值 或者 与设置日期 不一致 或者 今天已经跑过
return true;
}
string Msg = string.Empty;
T_FM_USER userSafeMaster = null;//安环部负责人
//T_CM_URGENT_EVENT ModelEvent = null;//潜在紧急事件清单触发日期
T_FM_NOTIFICATION_TASK TaskEvent = null;//潜在紧急事件清单触发日期
#region
if (isUrgentEventTrigger)
{
if (userSafeMaster == null)
{
if (configDate.DEPARTMENT_ID.HasValue && configDate.POST_ID.HasValue && configDate.DEPARTMENT_ID.Value != Guid.Empty && configDate.POST_ID.Value != Guid.Empty)
{
var listUser = UserService.GetDepPostUser(ref Msg, configDate.DEPARTMENT_ID.Value, configDate.POST_ID.Value, true);
if (listUser != null && listUser.Any())
userSafeMaster = listUser[0];
}
else
userSafeMaster = UserService.GetRoleUser(ref Msg, "安环部负责人", null, null);
}
if (userSafeMaster == null)
{
SysLogService.AddLog(filter.OrgId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, "系统缺少【安环部负责人】", Msg + " 体检计划接口【PP/CM/DailyRun】");
}
else
{
//潜在紧急事件清单触发日期
//每年3月1日触发给安环部负责人 发送待办
// 暂不-- 今日提醒消息类型:召开会议,消息内容:请召开潜在紧急事件讨论会
TaskEvent = NotificationTaskService.InsertUserNoticeTaskModel("潜在紧急事件", Guid.Empty, filter.OrgId, userSafeMaster.ID, userSafeMaster.NAME, DateTime.Now, DateTime.Now.AddDays(1), 0, "CM018");
}
}
#endregion
#region isDemandSurvey
List<T_CM_EQUIPMENT_DEMAND_SURVEY> listDemandSurvey = null;
List<T_FM_NOTIFICATION_TASK> listTaskDemandSurvey = null;
if (isDemandSurvey)
{
var listDemandSurveyCheck = GetEntities<T_CM_EQUIPMENT_DEMAND_SURVEY>(e => e.YEAR == dtNow.Year && !e.IS_DELETED, null, null);
//var listDemandSurveyCheck = GetEntities<T_CM_EQUIPMENT_DEMAND_SURVEY>(e => e.YEAR == dtNow.Year && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Date == dtNow.Date && !e.IS_DELETED, null, null);//不按每年走(可能有问题)
if (listDemandSurveyCheck == null || !listDemandSurveyCheck.Any())
{
//给所有部门级 安全员 发送【应急装备需求调查】待办
var approveRole = GetEntity<T_PF_APPROVAL_ROLE>(e => e.NAME.Contains("部门安全员"));
if (approveRole != null)
{
List<T_FM_USER> listUserSafe = new List<T_FM_USER>();
List<Guid> listDepID = new List<Guid>();
var listDepSafe = GetEntities<T_FM_USER>(e => e.APPROVE_ROLE_ID.HasValue && e.APPROVE_ROLE_ID == approveRole.ID && !e.IS_DELETED, null, "Nav_Department");
if (listDepSafe != null && listDepSafe.Any())
{
foreach (var item in listDepSafe)
{
//部门=0, 车间=1, 班组=2, 公司=3
if (item.Nav_Department.DEPARTMENT_TYPE == 0)
{
if (item.DEPARTMENT_ID.HasValue && !listDepID.Contains(item.DEPARTMENT_ID.Value))
{
listDepID.Add(item.DEPARTMENT_ID.Value);
listUserSafe.Add(item);
}
}
}
List<Guid> DataId = new List<Guid>();
List<Guid> UserId = new List<Guid>();
List<string> userName = new List<string>();
List<string> Title = new List<string>();
listDemandSurvey = new List<T_CM_EQUIPMENT_DEMAND_SURVEY>();
DateTime dtStart = Convert.ToDateTime(dtNow.Year + configDate.DEMAND_SURVEY_START_TIME.Value.ToString("-MM-dd 00:00:00"));
DateTime dtEnd = Convert.ToDateTime(dtNow.Year + configDate.DEMAND_SURVEY_END_TIME.Value.ToString("-MM-dd 23:59:59"));
T_CM_EQUIPMENT_DEMAND_SURVEY modelAdd = null;
foreach (var item in listUserSafe)
{
modelAdd = new T_CM_EQUIPMENT_DEMAND_SURVEY()
{
ID = Guid.NewGuid(),
START_TIME = dtStart,
END_TIME = dtEnd,
DEPARTMENT_ID = item.DEPARTMENT_ID,
USER_ID = item.ID,
YEAR = dtNow.Year,
STATUS = PFStandardStatus.Draft,
IS_DELETED = false,
ORG_ID = item.ORG_ID,
//ENTITY_ORG_TPYE = ,
//FORM_ID = ,
//FLOW_STATUS = ,
//FLOW_SEND_STATUS = ,
//FLOW_ID = ,
CREATE_TIME = dtNow,
MODIFY_TIME = dtNow,
//CREATER_ID = ,
//MODIFIER_ID = ,
};
listDemandSurvey.Add(modelAdd);
DataId.Add(modelAdd.ID);
UserId.Add(item.ID);
userName.Add(item.NAME);
Title.Add("应急装备需求调查");
}
listTaskDemandSurvey = NotificationTaskService.InsertUserNoticeTaskModels(Title, DataId, filter.OrgId.Value, UserId, userName, dtStart, dtEnd, 1, "CM030");
}
}
}
}
#endregion
#region
T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER modelSurveyMaster = null;
List<T_CM_EQUIPMENT_DEMAND_SURVEY_DETAIL> listSurveyDetail = null;
T_FM_NOTIFICATION_TASK taskSurveyMaster = null;
List<T_FM_NOTIFICATION_TASK> listTask = null;
if (isDemandSurveyEnd)
{
var SurveyMaster = GetEntity<T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER>(e => e.YEAR == dtNow.Year && !e.IS_DELETED);
if (SurveyMaster == null)
{
//if (userSafeMaster == null)
// userSafeMaster = UserService.GetRoleUser(ref Msg, "安环部负责人", null, null);
if (userSafeMaster == null)
{
if (configDate.DEPARTMENT_ID.HasValue && configDate.POST_ID.HasValue && configDate.DEPARTMENT_ID.Value != Guid.Empty && configDate.POST_ID.Value != Guid.Empty)
{
var listUser = UserService.GetDepPostUser(ref Msg, configDate.DEPARTMENT_ID.Value, configDate.POST_ID.Value, true);
if (listUser != null && listUser.Any())
userSafeMaster = listUser[0];
}
else
userSafeMaster = UserService.GetRoleUser(ref Msg, "安环部负责人", null, null);
}
if (userSafeMaster != null)
{
modelSurveyMaster = new T_CM_EQUIPMENT_DEMAND_SURVEY_MASTER();
modelSurveyMaster.ID = Guid.NewGuid();
modelSurveyMaster.START_TIME = dtNow;
modelSurveyMaster.END_TIME = dtNow.AddDays(1);
modelSurveyMaster.USER_ID = userSafeMaster.ID;
modelSurveyMaster.YEAR = dtNow.Year;
modelSurveyMaster.STATUS = PFStandardStatus.Draft;
modelSurveyMaster.IS_DELETED = false;
modelSurveyMaster.ORG_ID = filter.OrgId;
//modelSurveyMaster.ENTITY_ORG_TPYE = ;
//modelSurveyMaster.FORM_ID = ;
//modelSurveyMaster.FLOW_STATUS = ;
//modelSurveyMaster.FLOW_SEND_STATUS = ;
//modelSurveyMaster.FLOW_ID = ;
modelSurveyMaster.CREATE_TIME = dtNow;
modelSurveyMaster.MODIFY_TIME = dtNow;
//modelSurveyMaster.CREATER_ID = ;
//modelSurveyMaster.MODIFIER_ID = ;
var listSurvey = GetEntities<T_CM_EQUIPMENT_DEMAND_SURVEY>(e => e.YEAR == dtNow.Year && e.STATUS == PFStandardStatus.Sign && !e.IS_DELETED, null, "Nav_ListDetail");
if (listSurvey != null && listSurvey.Any())
{
listSurveyDetail = new List<T_CM_EQUIPMENT_DEMAND_SURVEY_DETAIL>();
foreach (var item in listSurvey)
{
listSurveyDetail.AddRange(item.Nav_ListDetail);
}
foreach (var item in listSurveyDetail)
{
item.SURVEY_MASTER_ID = modelSurveyMaster.ID;
}
}
taskSurveyMaster = NotificationTaskService.InsertUserNoticeTaskModel("应急装备需求评估", modelSurveyMaster.ID, modelSurveyMaster.ORG_ID, modelSurveyMaster.USER_ID.Value, userSafeMaster.NAME, dtNow, dtNow.AddDays(1), 0, "CM032");
//应急装备需求调查表 没填的 未办 无需处理
var taskEnd = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.NOTICE_STATUS == 0 && e.SOURCE_FORMCODE == "CM030", null, null);
if (taskEnd != null && taskEnd.Any())
{
listTask = new List<T_FM_NOTIFICATION_TASK>();
foreach (var item in taskEnd)
{
item.NOTICE_STATUS = (int)FMNoticeStatusEnum.;
listTask.Add(item);
}
}
}
}
}
#endregion
#region
T_CM_DRILL_PLAN modelDrillPlan = null;
T_FM_NOTIFICATION_TASK taskPlan = null;
if (isDrillPlan)
{
//if (userSafeMaster == null)
// userSafeMaster = UserService.GetRoleUser(ref Msg, "安环部负责人", null, null);
if (userSafeMaster == null)
{
if (configDate.DEPARTMENT_ID.HasValue && configDate.POST_ID.HasValue && configDate.DEPARTMENT_ID.Value != Guid.Empty && configDate.POST_ID.Value != Guid.Empty)
{
var listUser = UserService.GetDepPostUser(ref Msg, configDate.DEPARTMENT_ID.Value, configDate.POST_ID.Value, true);
if (listUser != null && listUser.Any())
userSafeMaster = listUser[0];
}
else
userSafeMaster = UserService.GetRoleUser(ref Msg, "安环部负责人", null, null);
}
if (userSafeMaster != null)
{
var planCheck = GetEntity<T_CM_DRILL_PLAN>(e => e.YEAR == dtNow.Year && !e.IS_DELETED);
if (planCheck == null)
{
modelDrillPlan = new T_CM_DRILL_PLAN();
modelDrillPlan.ID = Guid.NewGuid();
modelDrillPlan.YEAR = dtNow.Year;
modelDrillPlan.DEPARTMENT_ID = userSafeMaster.DEPARTMENT_ID;
modelDrillPlan.STATUS = PFStandardStatus.Draft;
//modelDrillPlan.APPROVE_ID =;
modelDrillPlan.IS_DELETED = false;
modelDrillPlan.ORG_ID = userSafeMaster.ORG_ID;
//modelDrillPlan.ENTITY_ORG_TPYE =;
//modelDrillPlan.FORM_ID =;
//modelDrillPlan.FLOW_STATUS =;
//modelDrillPlan.FLOW_SEND_STATUS =;
//modelDrillPlan.FLOW_ID =;
modelDrillPlan.CREATE_TIME = dtNow;
modelDrillPlan.MODIFY_TIME = dtNow;
//modelDrillPlan.CREATER_ID =;
//modelDrillPlan.MODIFIER_ID =;
taskPlan = NotificationTaskService.InsertUserNoticeTaskModel("年度应急演练计划表", modelDrillPlan.ID, modelDrillPlan.ORG_ID, userSafeMaster.ID, userSafeMaster.NAME, dtNow, dtNow.AddDays(1), 1, "CM002");
}
}
}
#endregion
#region
T_FM_SYNC_TASK task = null;
task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
if (task != null)
{
task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
task.SYNC_PARAM = "";//清空参数
}
#endregion
//if (listSurveyDetail != null && listSurveyDetail.Any())
//{
// foreach (var item in listSurveyDetail)
// {
// item.Nav_EQDSurvey = null;
// }
//}
configDate.LASTRUNDATE = DateTime.Now.Date;
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);//跑批信息
if (configDate != null)
UpdateEntityNoCommit(configDate);//配置信息
//if (ModelEvent != null)
// UpdateEntityNoCommit(ModelEvent);//潜在紧急事件清单
if (TaskEvent != null)
UpdateEntityNoCommit(TaskEvent);//潜在紧急事件清单 直接添加 表单
if (listDemandSurvey != null && listDemandSurvey.Any())
BantchAddEntityNoCommit(listDemandSurvey);//应急装备需求调查
if (listTaskDemandSurvey != null && listTaskDemandSurvey.Any())
BantchAddEntityNoCommit(listTaskDemandSurvey);//应急装备需求调查 待办
if (taskSurveyMaster != null)//应急装备需求评估表 待办
UpdateEntityNoCommit(taskSurveyMaster);
if (listTask != null && listTask.Any())
BantchSaveEntityNoCommit(listTask);//应急装备需求调查表 自动结束
if (modelSurveyMaster != null)//应急装备需求评估表
UpdateEntityNoCommit(modelSurveyMaster);
if (listSurveyDetail != null && listSurveyDetail.Any())
BantchSaveEntityNoCommit(listSurveyDetail);//应急装备需求评估表
if (taskPlan != null)//年度应急演练计划表
UpdateEntityNoCommit(taskPlan);
if (modelDrillPlan != null)//年度应急演练计划表
UpdateEntityNoCommit(modelDrillPlan);
});
int Count = ((listDemandSurvey != null && listDemandSurvey.Any()) ? listDemandSurvey.Count : 0) + ((listTaskDemandSurvey != null && listTaskDemandSurvey.Any()) ? listTaskDemandSurvey.Count : 0) + ((listTask != null && listTask.Any()) ? listTask.Count : 0) + ((listSurveyDetail != null && listSurveyDetail.Any()) ? listSurveyDetail.Count : 0);
SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, Parameter1, SyncLogType.BSCreateCheckPlanSet);
return true;
});
}
/// <summary>
/// 年度应急演练计划表 演练方案触发时间 触发
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("DrillPlanDetailWarm")]
public JsonActionResult<bool> DrillPlanDetailWarm([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
DateTime dtNow = DateTime.Now;
if (!string.IsNullOrEmpty(filter.Parameter1))
{
try
{
dtNow = Convert.ToDateTime(filter.Parameter1);
}
catch
{
dtNow = DateTime.Now;
}
}
#region
T_FM_SYNC_TASK task = null;
task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
if (task != null)
{
//if (task.UPDATE_SUCCES_TIME.HasValue && task.UPDATE_SUCCES_TIME.Value.Date == dtNow.Date)
//{
// //今天执行过了
// return true;
//}
task.UPDATE_SUCCES_TIME = dtNow;//上次同步结束时间
task.SYNC_PARAM = "";//清空参数
}
#endregion
var listPlanDetailID = GetEntities<T_CM_DRILL_RECORD>(e => e.CREATE_TIME.Value.Day == dtNow.Day && e.CREACTTYPE == CREACTTYPEEnum.System, null, null).Select(e => e.PLAN_DETAIL_ID);
Expression<Func<T_CM_DRILL_PLAN_DETAIL, bool>> expression = e => !e.IS_DELETED && e.TRIGGER_TIME.HasValue && e.TRIGGER_TIME.Value.Date == dtNow.Date;
if (listPlanDetailID != null && listPlanDetailID.Any())
{
expression = expression.And(e => !listPlanDetailID.Contains(e.ID));
}
var planDetail = GetEntities(expression, null, null);
if (planDetail != null && planDetail.Any())
{
string title = string.Empty;
List<Guid> listDetailID = planDetail.Select(e => e.ID).ToList();
var detail = GetEntities<T_CM_DRILL_PLAN_DETAIL>(e => listDetailID.Contains(e.ID) && !e.Nav_PLAN.IS_DELETED && e.Nav_PLAN.STATUS == PFStandardStatus.Archived && e.Nav_PLAN.YEAR == dtNow.Year, null, "Nav_PLAN", "Nav_User");
List<T_FM_NOTIFICATION_TASK> listTaskRead = null;
List<T_CM_DRILL_RECORD> listDrillRecord = null;
T_CM_DRILL_RECORD modelT = null;
if (detail != null && detail.Any())
{
listTaskRead = new List<T_FM_NOTIFICATION_TASK>();
listDrillRecord = new List<T_CM_DRILL_RECORD>();
int i = 0;
foreach (var item in detail)
{
listTaskRead.Add(NotificationTaskService.InsertUserNoticeTaskModel("请编制应急演练方案并召开应急演练方案讨论会", Guid.Empty, item.ORG_ID, item.USER_ID.Value, item.Nav_User.NAME, dtNow, dtNow.AddDays(1), 2, ""));
i++;
//应急演练活动记录表
modelT = new T_CM_DRILL_RECORD();
modelT.ID = Guid.NewGuid();
modelT.ORG_ID = item.ORG_ID;
modelT.CREATER_ID = item.USER_ID;
modelT.PLAN_DETAIL_ID = item.ID;
modelT.NAME_ID = item.NAME_ID;
modelT.CODE = "YJ" + dtNow.ToString("yyyyMMddHHmm") + i.ToString();
modelT.STATUS = PFStandardStatus.Draft;
modelT.CREACTTYPE = CREACTTYPEEnum.System;
listDrillRecord.Add(modelT);
title = item.DRLL_DATE.Value.ToString("yyyy-MM") + item.NAME + "-演练记录";
//年度应急演练计划触发应急演练活动 演练年月+演练名称-演练记录
listTaskRead.Add(NotificationTaskService.InsertUserNoticeTaskModel(title, modelT.ID, item.ORG_ID, item.USER_ID.Value, item.Nav_User.NAME, dtNow, 1, "CM034", FMTASKTYPE.Default, null, item.DRLL_DATE));
}
}
if (listTaskRead != null && listTaskRead.Any())
{
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);//跑批信息
BantchAddEntityNoCommit(listTaskRead);//今日提醒给责任人
if (listDrillRecord != null && listDrillRecord.Any())//应急演练记录
BantchAddEntityNoCommit(listDrillRecord);
});
int Count = ((listTaskRead != null && listTaskRead.Any()) ? listTaskRead.Count : 0) + ((listDrillRecord != null && listDrillRecord.Any()) ? listDrillRecord.Count : 0);
SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet);
}
}
return true;
});
}
// /// <summary>
// /// 体检结果录入表单
// /// </summary>
// /// <param name="filter"></param>
// /// <returns></returns>
// [HttpPost, Route("SendResultImport")]
// public JsonActionResult<bool> SendResultImport([FromBody] KeywordFilter filter)
// {
// return SafeExecute<bool>(() =>
// {
// DateTime dtNow = DateTime.Now;
// if (!string.IsNullOrEmpty(filter.Parameter1))
// {
// try
// {
// DateTime deParm = Convert.ToDateTime(filter.Parameter1);
// dtNow = deParm;
// }
// catch { }
// }
// var listNotice = GetEntities<T_OH_HEALTH_EXAM_NOTICE>(e => e.NOTICEIMPORTSTATE == NoticeImportState.Draft && e.END_TIME <= dtNow && !e.IS_DELETED, null, null);
// if (listNotice == null || !listNotice.Any())
// {
// return true;
// }
// string Msg = string.Empty;
// T_FM_USER userRS = UserService.GetPostUser(ref Msg);
// if (userRS == null)
// {
// if (string.IsNullOrEmpty(Msg))
// {
// SysLogService.AddLog(filter.OrgId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, "系统缺少【人事专员】岗位人员", "体检计划接口【PP/OH/SendResultImport】");
// }
// else
// {
// SysLogService.AddLog(filter.OrgId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, "系统缺少【人事专员】岗位人员", Msg + " 体检计划接口【PP/OH/SendResultImport】");
// }
// }
// else
// {
// T_FM_SYNC_TASK task = null;//跑批待办
// List<T_FM_NOTIFICATION_TASK> listNoticeImport = new List<T_FM_NOTIFICATION_TASK>(); //体检导入通知
// List<Guid> listPARENTID = new List<Guid>();
// List<Guid> listDataID = new List<Guid>();
// List<T_OH_HEALTH_EXAM_RESULT_IMPORT> listImportOrder = new List<T_OH_HEALTH_EXAM_RESULT_IMPORT>();
// List<string> Name = new List<string>();
// List<Guid> UserId = new List<Guid>();
// List<string> userName = new List<string>();
// //同一个 PARENTID 发送一个待办
// foreach (var item in listNotice)
// {
// item.NOTICEIMPORTSTATE = NoticeImportState.NoticeImport;
// if (item.PARENTID.HasValue && !listPARENTID.Contains(item.PARENTID.Value))
// {
// listPARENTID.Add(item.PARENTID.Value);
// T_OH_HEALTH_EXAM_RESULT_IMPORT modelImport = new T_OH_HEALTH_EXAM_RESULT_IMPORT();
// modelImport.ID = Guid.NewGuid();
// modelImport.ORG_ID = item.ORG_ID.Value;
// modelImport.NOTICE_ID = item.PARENTID.Value;
// listDataID.Add(modelImport.ID);
// listImportOrder.Add(modelImport);
// Name.Add("体检通知结果导入");
// UserId.Add(userRS.ID);
// userName.Add(userRS.NAME);
// }
// }
// List<T_FM_NOTIFICATION_TASK> listTaskImport = NotificationTaskService.InsertUserNoticeTaskModels(Name, listDataID, filter.OrgId, UserId, userName, DateTime.Now, DateTime.Now.AddDays(1), 1, "OH017_IMPORT");
// task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
// if (task != null)
// {
// task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
// task.SYNC_PARAM = "";//清空参数
// }
// this.UnifiedCommit(() =>
// {
// if (task != null)
// UpdateEntityNoCommit(task);//跑批信息
// if (listNotice != null && listNotice.Any())//修改状态
// BantchSaveEntityNoCommit(listNotice);
// if (listImportOrder != null && listImportOrder.Any())//添加导入Model
// BantchSaveEntityNoCommit(listImportOrder);
// if (listTaskImport != null && listTaskImport.Any())//添加待办
// BantchSaveEntityNoCommit(listTaskImport);
// });
// }
// return true;
// });
// }
// /// <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="filter"></param>
// /// <returns></returns>
// [HttpPost, Route("NoticeCycle")]
// public JsonActionResult<bool> NoticeCycle([FromBody] KeywordFilter filter)
// {
// return SafeExecute<bool>(() =>
// {
// DateTime dtNow = DateTime.Now;
// if (!string.IsNullOrEmpty(filter.Parameter1))
// {
// try
// {
// //接收来自页面的参数
// DateTime deParm = Convert.ToDateTime(filter.Parameter1);
// dtNow = deParm;
// }
// catch { }
// }
// int WarmDay = 15;
// DateTime dtSearch = dtNow.AddDays(WarmDay);
// //体检周期都是几个月的
// //所以半个月内有人需要体检就发送待办
// //如果有最近的未完成的待办 直接做今日提醒
// var listNotice = GetEntities<T_OH_HEALTH_EXAM_NOTICE_REGISTER>(e => e.NEXTDATE.HasValue && e.NEXTDATE <= dtSearch, null, null);
// if (listNotice == null || !listNotice.Any())
// {
// return true;
// }
// string Msg = string.Empty;
// T_FM_USER userRS = UserService.GetPostUser(ref Msg);
// if (userRS == null)
// {
// SysLogService.AddLog(filter.OrgId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, "系统缺少【人事专员】岗位人员", Msg + " 体检计划接口【PP/OH/ExamPlan】");
// return true;
// }
// var taskNotice = GetEntity<T_FM_NOTIFICATION_TASK>(e => e.USER_ID == userRS.ID && e.SOURCE_FORMCODE == "OH026" && e.NOTICE_STATUS == 0);
// if (taskNotice != null)
// {
// //有没处理的待办
// //位置靠前
// taskNotice.MODIFY_TIME = DateTime.Now;
// this.UnifiedCommit(() =>
// {
// if (taskNotice != null)
// UpdateEntityNoCommit(taskNotice);
// });
// }
// else
// {
// T_OH_HEALTH_EXAM_NOTICE modelWarm = new T_OH_HEALTH_EXAM_NOTICE();
// modelWarm.ID = Guid.NewGuid();
// modelWarm.CODE = "XTTJTZ" + dtNow.ToString("yyyyMMddHHmmss");
// //modelWarm.NAME =;
// //modelWarm.OTHER_STUFF =;
// modelWarm.STATUS = PFStandardStatus.Draft;
// //modelWarm.APPROVE_ID =;
// modelWarm.IS_DELETED = false;
// modelWarm.ORG_ID = filter.OrgId;
// //modelWarm.ENTITY_ORG_TPYE =;
// //modelWarm.FORM_ID =;
// //modelWarm.FLOW_STATUS =;
// //modelWarm.FLOW_SEND_STATUS =;
// //modelWarm.FLOW_ID =;
// //modelWarm.CREATE_TIME =;
// //modelWarm.MODIFY_TIME =;
// //modelWarm.CREATER_ID =;
// //modelWarm.MODIFIER_ID =;
// //modelWarm.PARENTID =;
// modelWarm.ISSYSTEM = true;//根据这个值前端要自动加载有审批周期待体检的人
// T_FM_NOTIFICATION_TASK taskNoticeRs = NotificationTaskService.InsertUserNoticeTaskModel("体检通知", modelWarm.ID, modelWarm.ORG_ID, userRS.ID, userRS.NAME,
//DateTime.Now, DateTime.Now.AddDays(1), 0, "OH026");
// T_FM_SYNC_TASK task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
// if (task != null)
// {
// task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
// task.SYNC_PARAM = "";//清空参数
// }
// this.UnifiedCommit(() =>
// {
// if (task != null)
// UpdateEntityNoCommit(task);
// if (taskNoticeRs != null)
// UpdateEntityNoCommit(taskNoticeRs);
// if (modelWarm != null)
// UpdateEntityNoCommit(modelWarm);
// });
// }
// return true;
// });
// }
// /// <summary>
// /// 发送检测记录
// /// </summary>
// /// <param name="filter"></param>
// /// <returns></returns>
// [HttpPost, Route("SendMonitor")]
// public JsonActionResult<bool> SendMonitor([FromBody] KeywordFilter filter)
// {
// return SafeExecute<bool>(() =>
// {
// //根据 职业危害因素监测规则 T_OH_HAZARD_MONITOR_RULE
// // 给 责任部门对应记录人 发送检测记录表
// DateTime dtNow = DateTime.Now;
// if (!string.IsNullOrEmpty(filter.Parameter1))
// {
// try
// {
// //接收来自页面的参数
// DateTime deParm = Convert.ToDateTime(filter.Parameter1);
// dtNow = deParm;
// }
// catch { }
// }
// int minLaster = 20;
// //30分钟
// DateTime dtEnd = dtNow.AddMinutes(minLaster);//
// var listRule = GetEntities<T_OH_HAZARD_MONITOR_RULE>(e => !e.IS_DELETED && e.MONITOR_INTERVAL != OHHazardMonitorIntervalEnum.None && e.TIME != DateTime.MinValue, null, new string[] { "Nav_RecordPost.Nav_Users.Nav_User", "Nav_Type" });
// //符合时间的 规则
// List<T_OH_HAZARD_MONITOR_RULE> listRun = new List<T_OH_HAZARD_MONITOR_RULE>();
// var listSendDetail = GetEntities<T_OH_HAZARD_MONITOR_JOB_DETAIL>(e => e.RULE_ID.HasValue && e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Date == dtNow.Date, null, null);
// if (listRule != null && listRule.Any())
// {
// DateTime dtCombin = dtNow.Date;
// foreach (var item in listRule)
// {
// if (!ISTimeOK(item.TIME, dtNow, 0, minLaster))
// {
// //设置时间往前后各偏移 20 分钟 判断跑批
// continue;
// }
// switch (item.MONITOR_INTERVAL)
// {
// case OHHazardMonitorIntervalEnum.Date://每天
// listRun.Add(item);
// break;
// case OHHazardMonitorIntervalEnum.Week://每周
// if (item.WEEKDATA != null && (int)dtNow.DayOfWeek == (int)item.WEEKDATA.Value)
// //星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4
// listRun.Add(item);
// break;
// case OHHazardMonitorIntervalEnum.Month://每月
// if (item.DAY == dtNow.Day)
// listRun.Add(item);
// break;
// case OHHazardMonitorIntervalEnum.Quarter://每季度
// if (item.DAY == dtNow.Day && (item.MONTH == dtNow.Month || item.MONTH == dtNow.Month - 3 || item.MONTH == dtNow.Month - 6 || item.MONTH == dtNow.Month - 9))//日相等 月相等 或者 月= 当前月-3n
// listRun.Add(item);
// break;
// case OHHazardMonitorIntervalEnum.HalfYear://每半年
// if (item.DAY == dtNow.Day && (item.MONTH == dtNow.Month || item.MONTH == dtNow.Month - 6))//日相等 月相等 或者 月= 当前月-6
// listRun.Add(item);
// break;
// case OHHazardMonitorIntervalEnum.Year://每年
// if (item.MONTH == dtNow.Month && item.DAY == dtNow.Day)
// listRun.Add(item);
// break;
// default:
// break;
// }
// }
// }
// if (listRun.Count < 1)
// {
// return true;
// }
// //OH024
// //监测记录
// List<T_OH_HAZARD_MONITOR_JOB> listMonitorJob = new List<T_OH_HAZARD_MONITOR_JOB>();
// List<T_OH_HAZARD_MONITOR_JOB_DETAIL> listMonitorJobDetail = new List<T_OH_HAZARD_MONITOR_JOB_DETAIL>();
// //责任部门 对应记录人 发送检测记录 单据
// List<T_FM_NOTIFICATION_TASK> listTask = new List<T_FM_NOTIFICATION_TASK>();
// T_OH_HAZARD_MONITOR_JOB_DETAIL modelCheckDetail = null;
// DateTime LAST_NOTIFY = DateTime.Now;
// List<T_OH_HAZARD_MONITOR_RULE> listRuleUpdate = new List<T_OH_HAZARD_MONITOR_RULE>();
// //责任部门 对应 记录人
// foreach (var item in listRun)
// {
// //判断今天有没有 添加 e.USER_ID_GET == itemPost.USER_ID &&
// modelCheckDetail = listSendDetail.FirstOrDefault(e => e.RULE_ID == item.ID);
// if (modelCheckDetail != null)
// {
// //今天有添加
// continue;
// }
// foreach (var itemPost in item.Nav_RecordPost.Nav_Users)
// {
// if (item.DEPARTMENT_ID != itemPost.Nav_User.DEPARTMENT_ID)
// {
// continue;
// }
// modelCheckDetail = listMonitorJobDetail.FirstOrDefault(e => e.RULE_ID == item.ID);
// if (modelCheckDetail != null)
// {
// //有加过(虽然人不一样)
// continue;
// }
// #region 检测单
// T_OH_HAZARD_MONITOR_JOB Job = listMonitorJob.FirstOrDefault(e => e.MONITOR_TYPE == item.Nav_Type.MONITOR_TYPE && e.USER_ID_GET == itemPost.USER_ID);
// if (Job == null)
// {
// Job = new T_OH_HAZARD_MONITOR_JOB();
// Job.ID = Guid.NewGuid();
// //Job.RULE_ID = item.ID;
// //Job.MONITOR_TIME =;
// //Job.USER_ID = itemPost.USER_ID;
// //Job.DEVICE_NAME =;
// //Job.DEVICE_SPEC =;
// //Job.MONITOR_METHOD =;
// //Job.SAMPLE_PEOPLE =;
// Job.STATUS = OHHazardMonitorJobStatusEnum.WaitSign;
// Job.IS_DELETED = false;
// Job.ORG_ID = item.ORG_ID;
// //Job.ENTITY_ORG_TPYE =;
// //Job.FORM_ID =;
// //Job.FLOW_STATUS =;
// //Job.FLOW_SEND_STATUS =;
// //Job.FLOW_ID =;
// //Job.CREATE_TIME = dtNow;
// //Job.MODIFY_TIME = dtNow;
// //Job.CREATER_ID = itemPost.USER_ID;
// //Job.MODIFIER_ID = itemPost.USER_ID;
// Job.USER_ID_GET = itemPost.USER_ID;
// Job.TYPE_ID = item.TYPE_ID;
// Job.MONITOR_TYPE = item.Nav_Type.MONITOR_TYPE;
// //添加监测记录单
// listMonitorJob.Add(Job);
// //添加待办
// T_FM_NOTIFICATION_TASK taskAdd = NotificationTaskService.InsertUserNoticeTaskModel(item.Nav_Type.MONITOR_TYPE.GetDescription(), Job.ID, Job.ORG_ID, itemPost.USER_ID, itemPost.Nav_User.NAME, dtNow, dtNow.AddDays(1), 0, "OH024");
// listTask.Add(taskAdd);
// //最后修改时间
// item.LAST_NOTIFY = DateTime.Now;//最后推送日期
// if (!listRuleUpdate.Contains(item))
// {
// listRuleUpdate.Add(item);
// }
// }
// #region 监测明细
// T_OH_HAZARD_MONITOR_JOB_DETAIL JobDetail = new T_OH_HAZARD_MONITOR_JOB_DETAIL();
// JobDetail.ID = Guid.NewGuid();
// JobDetail.JOB_ID = Job.ID;
// JobDetail.RULE_ID = item.ID;
// JobDetail.USER_ID_GET = itemPost.USER_ID;
// //JobDetail.SAMPLE_SOURCE =;
// //JobDetail.JOB_STATUS =;
// //JobDetail.PROTECT_STATUS =;
// //JobDetail.MONITOR_RESULT_LOW =;
// //JobDetail.MONITOR_RESULT_HIGH=;
// //JobDetail.OVER_LIMIT =;
// //JobDetail.MONITOR_RESULT_05 =;
// //JobDetail.MONITOR_RESULT_10 =;
// //JobDetail.MONITOR_RESULT_AROUND=;
// //JobDetail.SAMPLE_TIME =;
// //JobDetail.TEST_TIME =;
// //JobDetail.MONITOR_RESULT =;
// //JobDetail.TEST_DEPARTMENT=;
// //JobDetail.TESTER =;
// JobDetail.IS_DELETED = false;
// JobDetail.ORG_ID = item.ORG_ID;
// //JobDetail.ENTITY_ORG_TPYE =;
// //JobDetail.FORM_ID =;
// //JobDetail.FLOW_STATUS =;
// //JobDetail.FLOW_SEND_STATUS=;
// //JobDetail.FLOW_ID =;
// //JobDetail.CREATE_TIME =;
// //JobDetail.MODIFY_TIME =;
// //JobDetail.CREATER_ID =;
// //JobDetail.MODIFIER_ID =;
// listMonitorJobDetail.Add(JobDetail);
// #endregion
// #endregion
// }
// }
// T_FM_SYNC_TASK task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
// if (task != null)
// {
// task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
// task.SYNC_PARAM = "";//清空参数
// }
// this.UnifiedCommit(() =>
// {
// if (task != null)
// UpdateEntityNoCommit(task);
// if (listMonitorJob != null && listMonitorJob.Any())
// BantchSaveEntityNoCommit(listMonitorJob);
// if (listTask != null && listTask.Any())
// BantchSaveEntityNoCommit(listTask);
// if (listMonitorJobDetail != null && listMonitorJobDetail.Any())
// BantchSaveEntityNoCommit(listMonitorJobDetail);
// if (listRuleUpdate != null && listRuleUpdate.Any())
// BantchSaveEntityNoCommit(listRuleUpdate);
// });
// return true;
// });
// }
}
}