mh_sms/APT.MicroApi/APT.PP.WebApi/Controllers/Api/PTController.cs
2024-01-22 09:17:01 +08:00

898 lines
53 KiB
C#

using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.SE;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
using System;
using APT.MS.Domain.Entities.FO;
using APT.MS.Domain.Entities.SC.PT;
using APT.BaseData.Domain.Entities;
using APT.MS.Domain.Entities.SC;
using System.Linq.Expressions;
using APT.BaseData.Domain.Enums;
using System.Net.WebSockets;
using Microsoft.CodeAnalysis.Differencing;
using Org.BouncyCastle.Crypto.Modes.Gcm;
using NPOI.SS.Formula.Functions;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.ApiModel.PF;
using System.Reflection.Metadata;
using System.Threading.Tasks;
using APT.WebApi.Models;
namespace APT.PP.WebApi.Controllers.Api
{
/// <summary>
/// 方针与目标管理跑批任务
/// </summary>
[Route("api/PP/PTController")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public class PTController : AuthorizeApiController<T_FM_BASE_CONFIG>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public PTController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 方针与目标模块所有跑批
/// </summary>
/// <returns></returns>
[HttpPost, Route("SafetyPolicySync")]
public JsonActionResult<bool> SafetyPolicySync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
//触发安全方针调查表
CreateSafePolicy(filter);
////触发安全生产目标与指标制定
CreateIndicatorFormulation(filter);
////触发安全生产方针征集表
//CreateSafePolicyCollect(filter);
return true;
});
}
/// <summary>
/// 触发安全生产方针征集表
/// </summary>
/// <returns></returns>
[HttpPost, Route("SafePolicyCollectSync")]
public JsonActionResult<bool> SafePolicyCollectSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
////触发安全生产方针征集表
CreateSafePolicyCollect(filter);
return true;
});
}
/// <summary>
/// 触发班组监测与考核记录表
/// </summary>
/// <param name="filter"></param>
[HttpPost, Route("MonitorAssessmentSync")]
public JsonActionResult<bool> MonitorAssessmentSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var dtNow = DateTime.Now;
var month = dtNow.Month;
var day = dtNow.Day;
var time = dtNow.TimeOfDay;
var week = dtNow.DayOfWeek;
Expression<Func<T_PT_TIME_SET, bool>> expression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
var timeSet = this.GetOrderEntities<T_PT_TIME_SET>(expression, filter).ToList();
if (timeSet.Count < 1)
return true;
List<T_PT_TIME_SET> runList = new List<T_PT_TIME_SET>();
List<T_PT_MONITOR_ASSESSMENT> monitorList = new List<T_PT_MONITOR_ASSESSMENT>();
List<T_PT_MONITOR_ASSESSMENT_DETAIL> monitorDetailList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT> detailContentList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
foreach (var item in timeSet)
{
switch (item.PLANCHECKFREQUENCY)
{
//case BSPLANCHECKFREQUENCYEnum.OneTime:
case BSPLANCHECKFREQUENCYEnum.Year:
if (item.MONTH == month && item.DATA == day)
runList.Add(item);
break;
case BSPLANCHECKFREQUENCYEnum.HalfYear:
if ((item.MONTH == month && item.DATA == day) || ((item.MONTH + 6) == month && (item.DATA + 183) == day))
runList.Add(item);
break;
case BSPLANCHECKFREQUENCYEnum.Date:
runList.Add(item);
break;
case BSPLANCHECKFREQUENCYEnum.Week:
if (item.WEEKDATA != null && (int)item.WEEKDATA.Value == (int)week)
runList.Add(item);
break;
case BSPLANCHECKFREQUENCYEnum.Month:
if (item.DATA == day)
runList.Add(item);
break;
case BSPLANCHECKFREQUENCYEnum.Quarter:
if (item.MONTH == 1)
{
if ((month == 1 || month == 4 || month == 7 || month == 10) && day == item.DATA)
{
runList.Add(item);
}
}
else if (item.MONTH == 2)
{
if ((month == 2 || month == 5 || month == 8 || month == 11) && day == item.DATA)
{
runList.Add(item);
}
}
else if (item.MONTH == 3)
{
if ((month == 3 || month == 6 || month == 9 || month == 12) && day == item.DATA)
{
runList.Add(item);
}
}
break;
default:
break;
}
}
if (runList != null && runList.Any())
{
Expression<Func<T_FM_DEPARTMENT, bool>> departExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
var departInfos = this.GetOrderEntities<T_FM_DEPARTMENT>(departExpression, filter, new string[] { "Nav_User" }).ToList();
Expression<Func<T_FM_USER, bool>> userExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
var userInfos = this.GetOrderEntities<T_FM_USER>(userExpression, filter, new string[] { "Nav_Department" }).ToList();
Expression<Func<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL, bool>> detailExpression = e => e.IS_DELETED == false;
var tempDetails = this.GetOrderEntities<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL>(detailExpression, filter, new string[] { "Nav_Contents" }).ToList();
foreach (var item in runList)
{
var type = PTAssessmentCycleEnums.Year;
switch (item.PLANCHECKFREQUENCY)
{
//case BSPLANCHECKFREQUENCYEnum.OneTime:
case BSPLANCHECKFREQUENCYEnum.Year:
type = PTAssessmentCycleEnums.Year;
break;
//case BSPLANCHECKFREQUENCYEnum.HalfYear:
// type = PTAssessmentCycleEnums.Year;
// break;
case BSPLANCHECKFREQUENCYEnum.Date:
type = PTAssessmentCycleEnums.Day;
break;
case BSPLANCHECKFREQUENCYEnum.Week:
type = PTAssessmentCycleEnums.Week;
break;
case BSPLANCHECKFREQUENCYEnum.Month:
type = PTAssessmentCycleEnums.Month;
break;
case BSPLANCHECKFREQUENCYEnum.Quarter:
type = PTAssessmentCycleEnums.Quarter;
break;
default:
break;
}
var departType = -1;
switch (item.DEPARTMENT_TYPE)
{
case FMDepartmentType.:
departType = 0;
break;
case FMDepartmentType.:
departType = 1;
break;
case FMDepartmentType.:
departType = 2;
break;
case FMDepartmentType.:
departType = -1;
break;
default:
departType = -1;
break;
}
monitorList.AddRange(CreateDepartMonitor(item, type, departInfos, userInfos, tempDetails, departType, ref notices));
}
}
if (monitorList != null && monitorList.Any())
{
monitorList.ForEach(t =>
{
if (t.Nav_Details != null && t.Nav_Details.Any())
{
t.Nav_Details.ForEach(t1 =>
{
if (t1.Nav_Contents != null && t1.Nav_Contents.Any())
{
detailContentList.AddRange(t1.Nav_Contents);
t1.Nav_Contents = null;
}
});
monitorDetailList.AddRange(t.Nav_Details);
t.Nav_Details = null;
}
});
}
UnifiedCommit(() =>
{
if (monitorList != null && monitorList.Any())
BantchAddEntityNoCommit(monitorList);
if (monitorDetailList != null && monitorDetailList.Any())
BantchAddEntityNoCommit(monitorDetailList);
if (detailContentList != null && detailContentList.Any())
BantchAddEntityNoCommit(detailContentList);
if (notices != null && notices.Any())
BantchAddEntityNoCommit(notices);
});
return true;
});
}
/// <summary>
/// 触发班组监测与考核记录表(新)
/// </summary>
/// <param name="filter"></param>
[HttpPost, Route("MonitorAssessmentNewSync")]
public JsonActionResult<bool> MonitorAssessmentNewSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
//var time = dtNow.TimeOfDay;
var week = dtNow.DayOfWeek;
filter.IgnoreDataRule = true;
var timeSet = this.GetEntities<T_PT_ASSESSMENT_PLAN_AUDIT>(e => e.STATUS == PFStandardStatus.Archived && e.IS_DELETED == false && (e.YEAR == year.ToString() || e.YEAR == (year - 1).ToString()), filter, "Nav_User", "Nav_Details", "Nav_Details.Nav_Contents").ToList();
if (timeSet.Count < 1)
return true;
List<T_PT_MONITOR_ASSESSMENT> monitorList = new List<T_PT_MONITOR_ASSESSMENT>();
List<T_PT_MONITOR_ASSESSMENT_DETAIL> monitorDetailList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
List<T_PT_MONITOR_ASSESSMENT_USER> monitorUserList = new List<T_PT_MONITOR_ASSESSMENT_USER>();
List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT> detailContentList = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
foreach (var item in timeSet)
{
if (item.Nav_User != null && item.Nav_User.APPROVE_ROLE_ID != null && item.Nav_Details != null && item.Nav_Details.Any())
{
//传任意参数可立即触发,不区分周期,仅供测试演示使用,只生成今年的数据
if (!string.IsNullOrEmpty(filter.Parameter1))
{
if (item.Nav_Details.Count() > 0)
{
monitorList.Add(CreateDepartMonitorNew(item, item.Nav_Details.ToList(), PTAssessmentCycleEnums.Year, year.ToString(), ref notices));
}
//var dataYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Year && t.YEAR == year.ToString()).ToList();
//if (dataYears.Count() > 0)
//{
// monitorList.Add(CreateDepartMonitorNew(item, dataYears, PTAssessmentCycleEnums.Year, year.ToString(), ref notices));
//}
//var dataHalfSecondYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear && t.YEAR == year.ToString()).ToList();
//if (dataHalfSecondYears.Count() > 0)
//{
// monitorList.Add(CreateDepartMonitorNew(item, dataHalfSecondYears, PTAssessmentCycleEnums.HalfYear, year.ToString(), ref notices));
//}
//var dataQuarterYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter && t.YEAR == year.ToString()).ToList();
//if (dataQuarterYears.Count() > 0)
//{
// monitorList.Add(CreateDepartMonitorNew(item, dataQuarterYears, PTAssessmentCycleEnums.Quarter, year.ToString(), ref notices));
//}
//var dataMonthYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month && t.YEAR == year.ToString()).ToList();
//if (dataMonthYears.Count() > 0)
//{
// monitorList.Add(CreateDepartMonitorNew(item, dataMonthYears, PTAssessmentCycleEnums.Month, year.ToString(), ref notices));
//}
}
else
{
//年度
var dataYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Year && t.YEAR == (year - 1).ToString()).ToList();
if (dataYears.Count() > 0)
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, dataYears, PTAssessmentCycleEnums.Year, (year - 1).ToString(), ref notices));
}
}
//上半年度
List<int> monthTemp = new List<int>() { 1, 2, 3, 4, 5, 6 };
var dataHalfYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
if (dataHalfYears.Count() > 0)
{
if (month == 7 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, dataHalfYears, PTAssessmentCycleEnums.HalfYear, year.ToString(), ref notices));
}
}
//下半年度
monthTemp = new List<int>() { 7, 8, 9, 10, 11, 12 };
var dataHalfSecondYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.HalfYear && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
if (dataHalfSecondYears.Count() > 0)
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, dataHalfSecondYears, PTAssessmentCycleEnums.HalfYear, (year - 1).ToString(), ref notices));
}
}
//季度(第四季度)
monthTemp = new List<int>() { 12 };
var dataThirdQuarterYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
if (dataThirdQuarterYears.Count() > 0)
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, dataThirdQuarterYears, PTAssessmentCycleEnums.Quarter, (year - 1).ToString(), ref notices));
}
}
//季度(第1、2、3季度)
var dataQuarterYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
if (dataQuarterYears.Count() > 0)
{
if ((month == 4 && day == 1) || (month == 7 && day == 1) || (month == 10 && (day == 28 || day == 29)))
{
monthTemp = new List<int>() { month - 1 };
monitorList.Add(CreateDepartMonitorNew(item, dataQuarterYears, PTAssessmentCycleEnums.Quarter, year.ToString(), ref notices));
}
}
//月度
monthTemp = new List<int>() { month - 1 };
var dataMonthYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month && t.YEAR == year.ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
if (dataMonthYears.Count() > 0)
{
if (month != 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, dataMonthYears, PTAssessmentCycleEnums.Month, year.ToString(), ref notices));
}
}
//月度(第十二月)
monthTemp = new List<int>() { 12 };
var dataLastMonthYears = item.Nav_Details.Where(t => t.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Month && t.YEAR == (year - 1).ToString() && monthTemp.Contains(t.CREATE_TIME.Value.Month)).ToList();
if (dataLastMonthYears.Count() > 0)
{
if (month == 1 && day == 1)
{
monitorList.Add(CreateDepartMonitorNew(item, dataLastMonthYears, PTAssessmentCycleEnums.Month, (year - 1).ToString(), ref notices));
}
}
}
}
}
if (monitorList != null && monitorList.Any())
{
monitorList.ForEach(t =>
{
if (t.Nav_Details != null && t.Nav_Details.Any())
{
t.Nav_Details.ForEach(t1 =>
{
if (t1.Nav_Contents != null && t1.Nav_Contents.Any())
{
detailContentList.AddRange(t1.Nav_Contents);
t1.Nav_Contents = null;
}
});
monitorDetailList.AddRange(t.Nav_Details);
t.Nav_Details = null;
}
if (t.Nav_MonitorUser != null && t.Nav_MonitorUser.Any())
{
monitorUserList.AddRange(t.Nav_MonitorUser);
t.Nav_MonitorUser = null;
}
});
}
UnifiedCommit(() =>
{
if (monitorList != null && monitorList.Any())
BantchSaveEntityNoCommit(monitorList);
if (monitorDetailList != null && monitorDetailList.Any())
BantchAddEntityNoCommit(monitorDetailList);
if (monitorUserList != null && monitorUserList.Any())
BantchAddEntityNoCommit(monitorUserList);
if (detailContentList != null && detailContentList.Any())
BantchAddEntityNoCommit(detailContentList);
if (notices != null && notices.Any())
BantchAddEntityNoCommit(notices);
});
return true;
});
}
/// <summary>
/// 触发年度监测汇总表
/// </summary>
/// <param name="filter"></param>
[HttpPost, Route("YearMonitorSummarySync")]
public JsonActionResult<bool> YearMonitorSummarySync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var dtNow = DateTime.Now;
var year = dtNow.Year;
var month = dtNow.Month;
var day = dtNow.Day;
var time = dtNow.TimeOfDay;
var week = dtNow.DayOfWeek;
T_PT_ANNUAL_MONOTOR_SUMMARY summary = null;
List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL> summaryDetailList = new List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL>();
List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT> detailContentList = new List<T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT>();
T_FM_NOTIFICATION_TASK notice = null;
if (month == 1 && day == 15)
{
var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0);
if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
{
userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
}
if (userInfo != null)
{
Expression<Func<T_PT_MONITOR_ASSESSMENT, bool>> expression = e => e.IS_DELETED == false && e.YEAR == (year - 1).ToString() && e.ASSESSMENT_CYCLE == PTAssessmentCycleEnums.Quarter;
var monitorAssessment = this.GetOrderEntities<T_PT_MONITOR_ASSESSMENT>(expression, filter).ToList();
if (monitorAssessment.Count < 1)
return true;
summary = new T_PT_ANNUAL_MONOTOR_SUMMARY();
summary.ORG_ID = filter.OrgId;
summary.YEAR = (year - 1).ToString();
summary.SET_TIME = dtNow;
summary.STATUS = PFStandardStatus.Sign;
Expression<Func<T_FM_DEPARTMENT, bool>> departExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
var departmentIds = this.GetOrderEntities<T_FM_DEPARTMENT>(departExpression, filter).Select(t => new { t.ID, t.DEPARTMENT_TYPE }).Distinct().ToList();
if (departmentIds != null && departmentIds.Any())
{
foreach (var department in departmentIds)
{
T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL detail = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.MONITOR_SUMMARY_ID = summary.ID;
detail.DEPARTMENT_ID = department.ID;
detail.DEPARTMENT_TYPE = (FMDepartmentType)department.DEPARTMENT_TYPE;
summaryDetailList.Add(detail);
}
}
Expression<Func<T_FM_USER, bool>> userExpression = e => e.IS_DELETED == false && e.ENABLE_STATUS == 0;
var userIds = this.GetOrderEntities<T_FM_USER>(userExpression, filter, "Nav_Department").Where(m => m.DEPARTMENT_ID != null).Select(t => new { t.ID, t.DEPARTMENT_ID, DEPARTMENT_TYPE = t.Nav_Department.DEPARTMENT_TYPE }).Distinct().ToList();
if (userIds != null && userIds.Any())
{
foreach (var user in userIds)
{
T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL detail = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL();
detail.ORG_ID = filter.OrgId;
detail.MONITOR_SUMMARY_ID = summary.ID;
detail.DEPARTMENT_ID = user.DEPARTMENT_ID;
detail.USER_ID = user.ID;
detail.DEPARTMENT_TYPE = (FMDepartmentType)user.DEPARTMENT_TYPE;
summaryDetailList.Add(detail);
}
}
if (departmentIds.Count() == 0 && userIds.Count() == 0)
summary = null;
if (summaryDetailList != null && summaryDetailList.Any())
{
var monitorIds = monitorAssessment.Select(t => t.ID).ToList();
var monitorDetails = this.GetEntities<T_PT_MONITOR_ASSESSMENT_DETAIL>(t => monitorIds.Contains(t.MONITOR_ASSESSMENT_ID), new BaseFilter(filter.OrgId), "Nav_Contents").ToList();
foreach (var summaryDetail in summaryDetailList)
{
//第一季度
var firtstQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 4 && t.CREATE_TIME.Value.Day == 1);
if (firtstQuarter != null && firtstQuarter.Nav_Contents != null && firtstQuarter.Nav_Contents.Any())
{
summaryDetail.FIRST_SCORE = firtstQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
foreach (var c in firtstQuarter.Nav_Contents)
{
T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
content.ORG_ID = c.ORG_ID;
content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
content.ROW_NO = c.ROW_NO;
content.METHOD = c.METHOD;
content.SCORE = c.SCORE;
content.NAME = c.NAME;
content.QUARTER_TYPE = PTQuarterTypeEnum.FirstQuarter;
detailContentList.Add(content);
}
}
//第二季度
var secondQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 7 && t.CREATE_TIME.Value.Day == 1);
if (secondQuarter != null && secondQuarter.Nav_Contents != null && secondQuarter.Nav_Contents.Any())
{
summaryDetail.SECOND_SCORE = secondQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
foreach (var c in secondQuarter.Nav_Contents)
{
T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
content.ORG_ID = c.ORG_ID;
content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
content.ROW_NO = c.ROW_NO;
content.METHOD = c.METHOD;
content.SCORE = c.SCORE;
content.NAME = c.NAME;
content.QUARTER_TYPE = PTQuarterTypeEnum.SecondQuarter;
detailContentList.Add(content);
}
}
//第三季度
var thirdQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == (year - 1) && t.CREATE_TIME.Value.Month == 10 && t.CREATE_TIME.Value.Day == 11);
if (thirdQuarter != null && thirdQuarter.Nav_Contents != null && thirdQuarter.Nav_Contents.Any())
{
summaryDetail.THIRD_SCORE = thirdQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
foreach (var c in thirdQuarter.Nav_Contents)
{
T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
content.ORG_ID = c.ORG_ID;
content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
content.ROW_NO = c.ROW_NO;
content.METHOD = c.METHOD;
content.SCORE = c.SCORE;
content.NAME = c.NAME;
content.QUARTER_TYPE = PTQuarterTypeEnum.ThirdQuarter;
detailContentList.Add(content);
}
}
//第四季度
var fourthQuarter = monitorDetails.FirstOrDefault(t => t.DEPARTMENT_ID == summaryDetail.DEPARTMENT_ID && t.USER_ID == summaryDetail.USER_ID && t.CREATE_TIME.Value.Year == year && t.CREATE_TIME.Value.Month == 1 && t.CREATE_TIME.Value.Day == 1);
if (fourthQuarter != null && fourthQuarter.Nav_Contents != null && fourthQuarter.Nav_Contents.Any())
{
summaryDetail.FOURTH_SCORE = fourthQuarter.Nav_Contents.Where(m => m.RESULT_SCORE != null).Sum(t => t.RESULT_SCORE);
foreach (var c in fourthQuarter.Nav_Contents)
{
T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT content = new T_PT_ANNUAL_MONOTOR_SUMMARY_DETAIL_CONTENT();
content.ORG_ID = c.ORG_ID;
content.MONOTOR_SUMMARY_DETAIL_ID = summaryDetail.ID;
content.ROW_NO = c.ROW_NO;
content.METHOD = c.METHOD;
content.SCORE = c.SCORE;
content.NAME = c.NAME;
content.QUARTER_TYPE = PTQuarterTypeEnum.FourthQuarter;
detailContentList.Add(content);
}
}
//年度
summaryDetail.YEAR_SCORE = (summaryDetail.FIRST_SCORE ?? 0) + (summaryDetail.SECOND_SCORE ?? 0) + (summaryDetail.THIRD_SCORE ?? 0) + (summaryDetail.FOURTH_SCORE ?? 0);
}
}
notice = NotificationTaskService.InsertUserNoticeTaskModel("年度监测汇总表", summary.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum., "PT036_SHOWPRINT");
}
}
UnifiedCommit(() =>
{
if (summary != null)
UpdateEntityNoCommit(summary);
if (summaryDetailList != null && summaryDetailList.Any())
BantchAddEntityNoCommit(summaryDetailList);
if (detailContentList != null && detailContentList.Any())
BantchAddEntityNoCommit(detailContentList);
if (notice != null)
UpdateEntityNoCommit(notice);
});
return true;
});
}
/// <summary>
/// 清除安全生产方针调查表待办
/// </summary>
/// <returns></returns>
[HttpPost, Route("DealSafePolicySync")]
public JsonActionResult<bool> DealSafePolicySync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo);
var tasks = new List<T_FM_NOTIFICATION_TASK>();
var safetys = GetEntities<T_PT_SAFETY_POLICY_SURVEY>(i => i.COMPLETE_DATE >= Convert.ToDateTime(miniTime) && i.COMPLETE_DATE <= Convert.ToDateTime(maxTime) && i.IS_DEAL == 0, new BaseFilter(filter.OrgId));
if (safetys != null && safetys.Any())
{
var createTime = safetys.FirstOrDefault().CREATE_TIME;
safetys.ForEach(t =>
{
t.IS_DEAL = 1;
if (t.CREATE_TIME < createTime)
createTime = t.CREATE_TIME;
});
var safetyIds = safetys.Select(i => i.ID).ToList();
tasks = this.GetEntities<T_FM_NOTIFICATION_TASK>(t => t.CREATE_TIME > createTime && safetyIds.Contains(t.SOURCE_DATA_ID.Value) && t.NOTICE_STATUS == 0, new BaseFilter(filter.OrgId)).ToList();
if (tasks != null && tasks.Any())
{
tasks.ForEach(t =>
{
t.NOTICE_STATUS = 4;
});
}
}
UnifiedCommit(() =>
{
if (safetys != null && safetys.Any())
BantchSaveEntityNoCommit(safetys);
if (tasks != null && tasks.Any())
BantchSaveEntityNoCommit(tasks);
});
return true;
});
}
/// <summary>
/// 触发安全生产方针征集表
/// </summary>
/// <param name="filter"></param>
private void CreateSafePolicyCollect([FromBody] KeywordFilter filter)
{
var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo);
filter.IgnoreDataRule = true;
var safetyLists = GetEntities<T_PT_SAFETY_POLICY_SURVEY>(i => i.COMPLETE_DATE >= Convert.ToDateTime(miniTime) && i.COMPLETE_DATE <= Convert.ToDateTime(maxTime) && i.IS_RUN == 0, filter).ToList();
List<T_FM_NOTIFICATION_TASK> sendNotices = null;
//List<T_PT_SAFETY_POLICY_SURVEY> survey = null;
if (safetyLists != null && safetyLists.Any())
{
var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0);
if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
{
userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
}
if (userInfo != null)
{
sendNotices = new List<T_FM_NOTIFICATION_TASK>();
safetyLists.ForEach(t =>
{
t.IS_RUN = 1;
//survey.Add(t);
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("安全生产方针征集表", t.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum., "PT014_SHOWPRINT"));
});
}
}
UnifiedCommit(() =>
{
if (safetyLists != null && safetyLists.Any())
BantchSaveEntityNoCommit(safetyLists);
if (sendNotices != null && sendNotices.Any())
BantchAddEntityNoCommit(sendNotices);
});
}
/// <summary>
/// 触发安全方针调查表
/// </summary>
/// <param name="filter"></param>
private void CreateSafePolicy([FromBody] KeywordFilter filter)
{
var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo);
var timeSet = GetEntity<T_PT_TIME_SET>(i => i.PLANCHECKFREQUENCY == 0 && i.SET_TYPE == PTSetTypeEnum.SafePolicy && i.POLICY_DATETIME != null && i.POLICY_DATETIME.Value.Year == DateTime.Now.Year && i.POLICY_DATETIME.Value.Date == DateTime.Now.Date && i.POLICY_DATETIME.Value.Hour == DateTime.Now.Hour);
T_FM_NOTIFICATION_TASK sendNotice = null;
T_PT_SAFETY_POLICY_SURVEY safety = null;
if (timeSet != null)
{
var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0);
if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
{
userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
}
if (userInfo != null)
{
var safe = this.GetEntity<T_PT_SAFETY_POLICY_SURVEY>(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == timeSet.POLICY_DATETIME.Value.Date);
if (safe == null)
{
safety = new T_PT_SAFETY_POLICY_SURVEY();
safety.ORG_ID = filter.GetOrgId();
safety.USER_ID = userInfo.ID;
safety.DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
safety.YEAR = DateTime.Now.Year.ToString();
sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全生产方针调查表", safety.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum., "PT014");
}
}
}
UnifiedCommit(() =>
{
if (safety != null)
UpdateEntityNoCommit(safety);
if (sendNotice != null)
UpdateEntityNoCommit(sendNotice);
});
}
/// <summary>
/// 触发安全生产目标与指标制定
/// </summary>
/// <param name="filter"></param>
private void CreateIndicatorFormulation([FromBody] KeywordFilter filter)
{
//var miniTime = DateTime.Now.ToString("yyyy/MM/dd 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
//var maxTime = DateTime.Now.ToString("yyyy/MM/dd 23:59:59", System.Globalization.DateTimeFormatInfo.InvariantInfo);
var timeSet = GetEntity<T_PT_TIME_SET>(i => i.PLANCHECKFREQUENCY == 0 && i.SET_TYPE == PTSetTypeEnum.IndicatorForm && i.TARGET_DATETIME != null && i.TARGET_DATETIME.Value.Year == DateTime.Now.Year && i.TARGET_DATETIME.Value.Date == DateTime.Now.Date && i.TARGET_DATETIME.Value.Hour == DateTime.Now.Hour);
T_FM_NOTIFICATION_TASK sendNotice = null;
T_PT_INDICATOR_FORMULATION indicator = null;
if (timeSet != null)
{
var userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部负责人" && t.ENABLE_STATUS == 0);
if (userInfo == null && filter.OrgId.ToString() == "3efd5276-632b-e379-9ff3-7a7546591fca")
{
userInfo = this.GetEntity<T_FM_USER>(t => t.Nav_ApproveRole != null && t.Nav_ApproveRole.NAME == "安环部安全员" && t.ENABLE_STATUS == 0);
}
if (userInfo != null)
{
var safe = this.GetEntity<T_PT_INDICATOR_FORMULATION>(t => t.USER_ID == userInfo.ID && t.CREATE_TIME.Value.Date == timeSet.TARGET_DATETIME.Value.Date);
if (safe == null)
{
indicator = new T_PT_INDICATOR_FORMULATION();
indicator.ORG_ID = filter.GetOrgId();
indicator.USER_ID = userInfo.ID;
indicator.DEPARTMENT_ID = userInfo.DEPARTMENT_ID;
indicator.YEAR = DateTime.Now.Year.ToString();
indicator.NAME = "安全生产目标与指标制定";
sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("安全生产目标与指标制定表", indicator.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum., "PT017");
}
}
}
UnifiedCommit(() =>
{
if (indicator != null)
UpdateEntityNoCommit(indicator);
if (sendNotice != null)
UpdateEntityNoCommit(sendNotice);
});
}
/// <summary>
/// 触发班组监测与考核记录表
/// </summary>
/// <param name="item"></param>
/// <param name="type"></param>
/// <param name="departInfos"></param>
/// <param name="tempDetails"></param>
/// <param name="userInfos"></param>
/// <param name="departType"></param>
/// <param name="notices"></param>
private List<T_PT_MONITOR_ASSESSMENT> CreateDepartMonitor(T_PT_TIME_SET item, PTAssessmentCycleEnums type, List<T_FM_DEPARTMENT> departInfos, List<T_FM_USER> userInfos, List<T_PT_ASSESSMENT_PLAN_AUDIT_TEMP_DETAIL> tempDetails, int departType, ref List<T_FM_NOTIFICATION_TASK> notices)
{
var result = new List<T_PT_MONITOR_ASSESSMENT>();
var departAlls = departInfos.Where(t => t.DEPARTMENT_TYPE == (int)item.DEPARTMENT_TYPE).ToList();
if (departAlls != null && departAlls.Any())
{
//var userIds = departmentInfos.Select(t => t.USER_ID).Distinct().ToList();
foreach (var depart in departAlls)
{
if (depart.USER_ID != null)
{
T_PT_MONITOR_ASSESSMENT newDepart = new T_PT_MONITOR_ASSESSMENT();
newDepart.ORG_ID = depart.ORG_ID;
newDepart.DEPARTMENT_TYPE = (FMDepartmentType)depart.DEPARTMENT_TYPE;
newDepart.SET_TIME = DateTime.Now;
newDepart.USER_ID = depart.USER_ID;
newDepart.DEPARTMENT_ID = depart.ID;
newDepart.YEAR = DateTime.Now.Year.ToString();
newDepart.ASSESSMENT_CYCLE = type;
var details = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
var departIds = departInfos.Where(t => t.DEPARTMENT_TYPE == departType && t.PARENT_ID == depart.ID).Select(t => t.ID).ToList();
var userInfoTemps = userInfos.Where(t => t.DEPARTMENT_ID == depart.ID).ToList();
var userIds = userInfoTemps.Select(t => t.ID).ToList();
if (departIds.Any())
{
foreach (var department in departIds)
{
//细表
T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL();
detail.ORG_ID = newDepart.ORG_ID;
detail.DEPARTMENT_ID = department;
detail.MONITOR_ASSESSMENT_ID = newDepart.ID;
details.Add(detail);
}
}
if (userInfoTemps.Any())
{
foreach (var user in userInfoTemps)
{
//细表
T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL();
detail.ORG_ID = newDepart.ORG_ID;
detail.DEPARTMENT_ID = user.DEPARTMENT_ID;
detail.USER_ID = user.ID;
detail.MONITOR_ASSESSMENT_ID = newDepart.ID;
details.Add(detail);
}
}
var temps = tempDetails.Where(t => (t.DEPARTMENT_ID != null && departIds.Contains(t.DEPARTMENT_ID.Value)) || (t.USER_ID != null && userIds.Contains(t.USER_ID.Value))).ToList();
if (details != null && details.Any())
{
details.ForEach(t =>
{
var tempCurrent = tempDetails.FirstOrDefault(t1 => t1.DEPARTMENT_ID == t.DEPARTMENT_ID && t1.USER_ID == t.USER_ID && t1.YEAR == newDepart.YEAR);
if (tempCurrent != null && tempCurrent.Nav_Contents != null && tempCurrent.Nav_Contents.Any())
{
var contents = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
tempCurrent.Nav_Contents.ForEach(t1 =>
{
T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT();
content.ORG_ID = t1.ORG_ID;
content.MONITOR_ASSESSMENT_DETAIL_ID = t.ID;
content.ROW_NO = t1.ROW_NO;
content.METHOD = t1.METHOD;
content.SCORE = t1.SCORE;
content.NAME = t1.NAME;
contents.Add(content);
});
t.Nav_Contents = contents;
}
//details.Add(t);
});
newDepart.Nav_Details = details;
}
result.Add(newDepart);
var name = Enum.GetName(typeof(FMDepartmentType), depart.DEPARTMENT_TYPE);
//发消息
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel(name + "监测与考核记录", newDepart.ID, newDepart.ORG_ID, newDepart.USER_ID.Value, depart?.Nav_User?.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "PT029"));
}
}
}
return result;
}
/// <summary>
/// 触发班组监测与考核记录表
/// </summary>
/// <param name="item"></param>
/// <param name="details"></param>
/// <param name="notices"></param>
private T_PT_MONITOR_ASSESSMENT CreateDepartMonitorNew(T_PT_ASSESSMENT_PLAN_AUDIT item, List<T_PT_ASSESSMENT_PLAN_AUDIT_DETAIL> details, PTAssessmentCycleEnums cycle, string year, ref List<T_FM_NOTIFICATION_TASK> notices)
{
var monitor = new T_PT_MONITOR_ASSESSMENT();
monitor.ORG_ID = item.ORG_ID;
monitor.DEPARTMENT_TYPE = item.DEPARTMENT_TYPE;
monitor.SET_TIME = DateTime.Now;
monitor.USER_ID = item.USER_ID;
monitor.DEPARTMENT_ID = item.DEPARTMENT_ID;
monitor.YEAR = year;
monitor.ASSESSMENT_CYCLE = cycle;
monitor.STATUS = PFStandardStatus.Draft;
var monitorUsers = new List<T_PT_MONITOR_ASSESSMENT_USER>();
T_PT_MONITOR_ASSESSMENT_USER user = new T_PT_MONITOR_ASSESSMENT_USER();
user.ORG_ID = item.ORG_ID;
user.MONITOR_ASSESSMENT_ID = monitor.ID;
user.USER_ID = item.USER_ID;
monitorUsers.Add(user);
monitor.Nav_MonitorUser = monitorUsers;
var monitorDetails = new List<T_PT_MONITOR_ASSESSMENT_DETAIL>();
foreach (var d in details)
{
T_PT_MONITOR_ASSESSMENT_DETAIL detail = new T_PT_MONITOR_ASSESSMENT_DETAIL();
detail.ORG_ID = monitor.ORG_ID;
detail.DEPARTMENT_ID = d.DEPARTMENT_ID;
detail.USER_ID = d.USER_ID;
detail.MONITOR_ASSESSMENT_ID = monitor.ID;
//details.Add(detail);
if (d.Nav_Contents != null && d.Nav_Contents.Any())
{
var contents = new List<T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT>();
foreach (var c in d.Nav_Contents)
{
T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT content = new T_PT_MONITOR_ASSESSMENT_DETAIL_CONTENT();
content.ORG_ID = c.ORG_ID;
content.MONITOR_ASSESSMENT_DETAIL_ID = detail.ID;
content.ROW_NO = c.ROW_NO;
content.METHOD = c.METHOD;
content.SCORE = c.SCORE;
content.NAME = c.NAME;
contents.Add(content);
}
detail.Nav_Contents = contents;
}
monitorDetails.Add(detail);
}
monitor.Nav_Details = monitorDetails;
var name = Enum.GetName(typeof(FMDepartmentType), item.DEPARTMENT_TYPE);
var cycleName = monitor.ASSESSMENT_CYCLE.GetDescription();
//发消息
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("(" + cycleName + ")" + name + "监测与考核记录", monitor.ID, monitor.ORG_ID, item.USER_ID.Value, item?.Nav_User?.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "PT029"));
return monitor;
}
}
}