mh_sms/APT.MicroApi/APT.PP.WebApi/Controllers/Api/HMController.cs
2024-05-24 11:30:16 +08:00

826 lines
49 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.FM;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.IServices;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.FO;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using APT.BaseData.Domain.IServices.FM;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Enums;
using APT.MS.Domain.Entities.PF;
using Microsoft.AspNetCore.JsonPatch.Operations;
using NPOI.SS.Formula.Functions;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.CodeAnalysis;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
using System.Diagnostics.Eventing.Reader;
using System.Runtime.Intrinsics.Arm;
using APT.BaseData.Services.Services.FM;
using APT.WebApi.Models;
namespace APT.PP.WebApi.Controllers.Api.PP
{
/// <summary>
/// 风险管理跑批任务
/// </summary>
[Route("api/PP/HMController")]
[TypeFilter(typeof(CustomActionFilterAttribute))]
public class HMController : AuthorizeApiController<T_FM_BASE_CONFIG>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
IPFCodeRuleService CodeRuleService { get; set; }
IFMDepartmentService DepartmentService { get; set; }
public HMController(IFMNotificationTaskService notificationTaskService, IPFCodeRuleService codeRuleService, IFMDepartmentService departmentService)
{
NotificationTaskService = notificationTaskService;
CodeRuleService = codeRuleService;
DepartmentService = departmentService;
}
/// <summary>
/// 生成年度风险评价计划
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("CreateAnnualRiskEvaluatePlan")]
public JsonActionResult<bool> CreateAnnualRiskEvaluatePlan([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var orgId = filter.GetOrgId();
var isRun = GetEntities<T_HM_EVALUATION_SCHEDULE>(null, new BaseFilter(filter.GetOrgId())).FirstOrDefault();
if (isRun != null)
{
var today = DateTime.Now.ToShortDateString();
var runDate1 = isRun.START_TIME.ToShortDateString();
DateTime tempDate = isRun.START_TIME;
if (isRun.Cycle == HMCycleEnum.)
{
tempDate = tempDate.AddDays(7);
}
else if (isRun.Cycle == HMCycleEnum.)
{
tempDate = tempDate.AddMonths(1);
}
else if (isRun.Cycle == HMCycleEnum.)
{
tempDate = tempDate.AddMonths(3);
}
else if (isRun.Cycle == HMCycleEnum.)
{
tempDate = tempDate.AddYears(1);
}
var runDate2 = tempDate.ToShortDateString();
if (today.Equals(runDate1) || today.Equals(runDate2) || isRun.Cycle == HMCycleEnum.)
//if(true)
{
isRun.START_TIME = tempDate;
T_HM_EVALUATION_PLAN plan = new T_HM_EVALUATION_PLAN();
plan.ID = Guid.NewGuid();
plan.EVALUATION_DATE = DateTime.Now;
plan.STATUS = (int)FOPreMeetingStatusEnum.稿;
plan.ORG_ID = filter.GetOrgId();
plan.DOCUMENT_NAME = "年度风险评价计划";
List<T_HM_EVALUATION_DETAIL> riskEvaluationDetails = new List<T_HM_EVALUATION_DETAIL>();
List<T_HM_EVALUATION_DETAIL_IDENTIFYING> riskEvaluationDetailIdentifyings = new List<T_HM_EVALUATION_DETAIL_IDENTIFYING>();
List<T_HM_EVALUATION_DETAIL_AREA> riskEvaluationDetailAreas = new List<T_HM_EVALUATION_DETAIL_AREA>();
var allDeps = GetEntities<T_FM_DEPARTMENT>(t => t.DEPARTMENT_TYPE == (int)FMDepartmentType., new BaseFilter(orgId));//查出所有部门级
var DBfilter = new BaseFilter(orgId);
DBfilter.SelectField = new string[] { "AREA_ID", "LEVEL", "DEPARTMENT_LIABLE_ID", "IDENTIFYING_ID" };
var riskDB = GetEntities<T_HM_EVALUATE_RISK>(t => t.STATUS == 0 && t.DEPARTMENT_LIABLE_ID != null, DBfilter);
var hazardDB = GetEntities<T_HM_EVALUATE_HAZARD>(t => t.STATUS == 0 && t.DEPARTMENT_LIABLE_ID != null, DBfilter);
foreach (var dep in allDeps)//循环部门,查出部门下所有区域和层级
{
List<Guid> departmentIds = new List<Guid>() { dep.ID };
DepartmentService.GetDepartmentIds(filter.GetOrgId(), new List<Guid>() { dep.ID }, ref departmentIds);
var areas = riskDB.Where(t => departmentIds.Contains((Guid)t.DEPARTMENT_LIABLE_ID)).Select(t => t.AREA_ID).Distinct();
var allLevels = riskDB.Where(t => departmentIds.Contains((Guid)t.DEPARTMENT_LIABLE_ID)).Select(t => t.LEVEL).Distinct();
var allIdentifyings = riskDB.Where(t => departmentIds.Contains((Guid)t.DEPARTMENT_LIABLE_ID)).Select(t => t.IDENTIFYING_ID).Distinct();
T_HM_EVALUATION_DETAIL RiskEvaluationDetail1 = new T_HM_EVALUATION_DETAIL();
RiskEvaluationDetail1.ID = Guid.NewGuid();
RiskEvaluationDetail1.ORG_ID = orgId;
RiskEvaluationDetail1.PLAN_ID = plan.ID;
RiskEvaluationDetail1.RISK_TYPE = HMRiskTypeEnmu.;
if (dep.DEPARTMENT_TYPE == (int)FMDepartmentType.)
{
RiskEvaluationDetail1.CHARGE_USER_ID = GetEntity<T_FM_USER>(t => t.Nav_ApproveRole.NAME == "安环部负责人").ID; ;
}
else
{
RiskEvaluationDetail1.CHARGE_USER_ID = dep.USER_ID;
}
RiskEvaluationDetail1.START_TIME = null;
RiskEvaluationDetail1.END_TIME = null;
RiskEvaluationDetail1.CYCLE = HMCycleEnum.;
var levels = "_";
foreach (var db in allLevels)
{
if (db == FMDepartmentType.)
{
levels += "3_";
}
else if (db == FMDepartmentType.)
{
levels += "0_";
}
else if (db == FMDepartmentType.)
{
levels += "1_";
}
else if (db == FMDepartmentType.)
{
levels += "2_";
}
}
if (levels != "_")
{
RiskEvaluationDetail1.LEVEL = levels;
areas.ForEach(t =>
{
T_HM_EVALUATION_DETAIL_AREA area = new T_HM_EVALUATION_DETAIL_AREA();
area.ORG_ID = orgId;
area.DETAIL_ID = RiskEvaluationDetail1.ID;
area.AREA_ID = (Guid)t;
riskEvaluationDetailAreas.Add(area);
});
allIdentifyings.ForEach(t =>
{
T_HM_EVALUATION_DETAIL_IDENTIFYING identifying = new T_HM_EVALUATION_DETAIL_IDENTIFYING();
identifying.ORG_ID = orgId;
identifying.DETAIL_ID = RiskEvaluationDetail1.ID;
identifying.IDENTIFYING_ID = (Guid)t;
riskEvaluationDetailIdentifyings.Add(identifying);
});
riskEvaluationDetails.Add(RiskEvaluationDetail1);
}
var hazardAreas = hazardDB.Where(t => departmentIds.Contains((Guid)t.DEPARTMENT_LIABLE_ID)).Select(t => t.AREA_ID).Distinct();
var hazardIdentifyings = hazardDB.Where(t => departmentIds.Contains((Guid)t.DEPARTMENT_LIABLE_ID)).Select(t => t.IDENTIFYING_ID).Distinct();
if (hazardAreas.Any())
{
T_HM_EVALUATION_DETAIL RiskEvaluationDetail2 = new T_HM_EVALUATION_DETAIL();
RiskEvaluationDetail2.ID = Guid.NewGuid();
RiskEvaluationDetail2.LEVEL = "0";
RiskEvaluationDetail2.ORG_ID = orgId;
RiskEvaluationDetail2.PLAN_ID = plan.ID;
RiskEvaluationDetail2.RISK_TYPE = HMRiskTypeEnmu.;
RiskEvaluationDetail2.CHARGE_USER_ID = dep.USER_ID;
RiskEvaluationDetail2.START_TIME = null;
RiskEvaluationDetail2.END_TIME = null;
RiskEvaluationDetail2.CYCLE = HMCycleEnum.;
foreach (var hazardarea in hazardAreas)
{
T_HM_EVALUATION_DETAIL_AREA area = new T_HM_EVALUATION_DETAIL_AREA();
area.ORG_ID = orgId;
area.DETAIL_ID = RiskEvaluationDetail2.ID;
area.AREA_ID = (Guid)hazardarea;
riskEvaluationDetailAreas.Add(area);
}
hazardIdentifyings.ForEach(t =>
{
T_HM_EVALUATION_DETAIL_IDENTIFYING identifying = new T_HM_EVALUATION_DETAIL_IDENTIFYING();
identifying.ORG_ID = orgId;
identifying.DETAIL_ID = RiskEvaluationDetail2.ID;
identifying.IDENTIFYING_ID = t;
riskEvaluationDetailIdentifyings.Add(identifying);
});
riskEvaluationDetails.Add(RiskEvaluationDetail2);
}
}
Guid UserID;
string UserName;
T_FM_USER user = null;
if (isRun.APPROVE_ROLE_ID != null && isRun.APPROVE_ROLE_ID != Guid.Empty)
{
user = GetEntity<T_FM_USER>(t => t.APPROVE_ROLE_ID == isRun.APPROVE_ROLE_ID);
}
else
{
user = GetEntity<T_FM_USER>(t => t.Nav_ApproveRole.NAME == "安环部负责人");
}
if (user != null)
{
UserID = user.ID;
UserName = user.NAME;
plan.RELEASE_USER_ID = user.ID;
plan.CREATE_TIME = DateTime.Now;
}
else
{
throw new Exception("未找到安环部负责人!");
}
NotificationTaskService.SendNotificationTask(DateTime.Now.Year.ToString() + isRun.Cycle.GetDescription() +"风险评价计划", plan.ID, filter.GetOrgId(), UserID, UserName, DateTime.Now, DateTime.Parse(DateTime.Now.AddMonths(1).ToShortDateString() + " 23:59:59"), 0, "HM043", () =>
{
AddEntityNoCommit(plan);
UpdateEntityNoCommit(isRun, "START_TIME");
if (riskEvaluationDetails != null && riskEvaluationDetails.Any())
BantchAddEntityNoCommit(riskEvaluationDetails);
if (riskEvaluationDetailIdentifyings != null && riskEvaluationDetailIdentifyings.Any())
BantchAddEntityNoCommit(riskEvaluationDetailIdentifyings);
if (riskEvaluationDetailAreas != null && riskEvaluationDetailAreas.Any())
BantchAddEntityNoCommit(riskEvaluationDetailAreas);
});
}
}
return true;
});
}
/// <summary>
/// 更新年度风险评价计划
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("updateEvaluateTime")]
public JsonActionResult<bool> updateEvaluateTime([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
//BaseFilter baseFilter = new BaseFilter(filter.GetOrgId());
//baseFilter.Include = new string[] { "Nav_Details" };
//var evaluations = GetEntities<T_HM_RISK_EVALUATION>(t => t.ANNUAL.Year == DateTime.Now.Year, baseFilter);
//var usersGuids = new List<Guid?>();
//foreach (var item in evaluations)
//{
// foreach (var item1 in item.Nav_Details)
// {
// DateTime d1 = Convert.ToDateTime(DateTime.Now);
// DateTime d2 = Convert.ToDateTime(item1.START_TIME);
// switch (item1.CYCLE)
// {
// case HMCycleEnum.每天:
// if ((d1 - d2).Days % 1 == 0)
// {
// usersGuids.Add(item1.CHARGE_PERSON_ID);
// }
// break;
// case HMCycleEnum.每周:
// if ((d1 - d2).Days % 7 == 0)
// {
// usersGuids.Add(item1.CHARGE_PERSON_ID);
// }
// break;
// case HMCycleEnum.每月:
// if ((d1 - d2).Days % 30 == 0)
// {
// usersGuids.Add(item1.CHARGE_PERSON_ID);
// }
// break;
// case HMCycleEnum.每季度:
// if ((d1 - d2).Days % 90 == 0)
// {
// usersGuids.Add(item1.CHARGE_PERSON_ID);
// }
// break;
// case HMCycleEnum.每年:
// if ((d1 - d2).Days % 365 == 0)
// {
// usersGuids.Add(item1.CHARGE_PERSON_ID);
// }
// break;
// }
// }
//}
//var notificationTasks = GetEntities<T_FM_NOTIFICATION_TASK>(t => t.NOTICE_STATUS == 0 && (t.SOURCE_FORMCODE == "HM062" || t.SOURCE_FORMCODE == "HM102") && usersGuids.Contains(t.USER_ID), new BaseFilter(filter.GetOrgId())).ToList();
//foreach (var item in notificationTasks)
//{
// item.TASK_STARTDT = DateTime.Now;
// item.TASK_ENDDT = DateTime.Now.AddDays(1);
//}
//this.UnifiedCommit(() =>
//{
// BantchUpdateEntityNoCommit(notificationTasks, "TASK_STARTDT", "TASK_ENDDT");
//});
return true;
});
}
/// <summary>
/// 更新年度风险评价计划
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("updateOperationLink")]
public JsonActionResult<bool> updateOperationLink([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
List<T_HM_OPERATION_TASK_SAFE_CONFIRM> safeConfs = new List<T_HM_OPERATION_TASK_SAFE_CONFIRM>();
List<T_HM_OPERATION_TASK_SAFE_MEASURE> safeMeas = new List<T_HM_OPERATION_TASK_SAFE_MEASURE>();
List<T_HM_OPERATION_TASK_DEAL_MEASURE> dealMeas = new List<T_HM_OPERATION_TASK_DEAL_MEASURE>();
var operationLink = this.GetEntities<T_HM_OPERATION_LINK>(t => t.IS_RUN == DisableStatusEnum., new BaseFilter(filter.OrgId)).ToList();
if (operationLink != null && operationLink.Any())
{
foreach (var item in operationLink)
{
if (!string.IsNullOrEmpty(item.SafeConfirmsStr))
{
var conf = item.SafeConfirmsStr.Split(new[] { '' }, StringSplitOptions.RemoveEmptyEntries);
if (conf.Length > 0)
{
foreach (var c in conf)
{
T_HM_OPERATION_TASK_SAFE_CONFIRM safeConf = new T_HM_OPERATION_TASK_SAFE_CONFIRM();
safeConf.ORG_ID = filter.OrgId;
safeConf.OPERATION_LINK_ID = item.ID;
if (c.Contains(""))
{
var co = c.Split(new[] { '' }, StringSplitOptions.RemoveEmptyEntries);
if (co.Length > 0)
{
safeConf.NAME = co[1];
safeConf.NUM = int.Parse(co[0]);
}
else
{
safeConf.NAME = c;
safeConf.NUM = 1;
}
}
else
{
safeConf.NAME = c;
safeConf.NUM = 1;
}
safeConfs.Add(safeConf);
}
}
}
if (!string.IsNullOrEmpty(item.SafeMeasuresStr))
{
var conf = item.SafeMeasuresStr.Split(new[] { '' }, StringSplitOptions.RemoveEmptyEntries);
if (conf.Length > 0)
{
foreach (var c in conf)
{
T_HM_OPERATION_TASK_SAFE_MEASURE safeConf = new T_HM_OPERATION_TASK_SAFE_MEASURE();
safeConf.ORG_ID = filter.OrgId;
safeConf.OPERATION_LINK_ID = item.ID;
if (c.Contains(""))
{
var co = c.Split(new[] { '' }, StringSplitOptions.RemoveEmptyEntries);
if (co.Length > 0)
{
safeConf.NAME = co[1];
safeConf.NUM = int.Parse(co[0]);
}
else
{
safeConf.NAME = c;
safeConf.NUM = 1;
}
}
else
{
safeConf.NAME = c;
safeConf.NUM = 1;
}
safeMeas.Add(safeConf);
}
}
}
if (!string.IsNullOrEmpty(item.DealMeasuresStr))
{
var conf = item.DealMeasuresStr.Split(new[] { '' }, StringSplitOptions.RemoveEmptyEntries);
if (conf.Length > 0)
{
foreach (var c in conf)
{
T_HM_OPERATION_TASK_DEAL_MEASURE safeConf = new T_HM_OPERATION_TASK_DEAL_MEASURE();
safeConf.ORG_ID = filter.OrgId;
safeConf.OPERATION_LINK_ID = item.ID;
if (c.Contains(""))
{
var co = c.Split(new[] { '' }, StringSplitOptions.RemoveEmptyEntries);
if (co.Length > 0)
{
safeConf.NAME = co[1];
safeConf.NUM = int.Parse(co[0]);
}
else
{
safeConf.NAME = c;
safeConf.NUM = 1;
}
}
else
{
safeConf.NAME = c;
safeConf.NUM = 1;
}
dealMeas.Add(safeConf);
}
}
}
item.IS_RUN = DisableStatusEnum.;
}
}
UnifiedCommit(() =>
{
if (operationLink != null && operationLink.Any())
BantchUpdateEntityNoCommit(operationLink);
if (safeConfs != null && safeConfs.Any())
BantchSaveEntityNoCommit(safeConfs);
if (safeMeas != null && safeMeas.Any())
BantchSaveEntityNoCommit(safeMeas);
if (dealMeas != null && dealMeas.Any())
BantchAddEntityNoCommit(dealMeas);
});
return true;
});
}
/// <summary>
/// 导入更新,风险
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("updateHazard")]
public JsonActionResult<bool> updateHazard([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
List<T_HM_EVALUATE_HAZARD_INDIVIDUAL_MEASURES> addINDIVIDUAL = new List<T_HM_EVALUATE_HAZARD_INDIVIDUAL_MEASURES>();
List<T_HM_EVALUATE_HAZARD_ENGINEERING_MEASURES> addENGINEERING = new List<T_HM_EVALUATE_HAZARD_ENGINEERING_MEASURES>();
List<T_HM_EVALUATE_HAZARD_MANAGEMENT_MEASURES> addMANAGEMENT = new List<T_HM_EVALUATE_HAZARD_MANAGEMENT_MEASURES>();
List<T_HM_EVALUATE_HAZARD_EDUCATION_MEASURES> addEDUCATION = new List<T_HM_EVALUATE_HAZARD_EDUCATION_MEASURES>();
List<T_HM_EVALUATE_HAZARD_EMERGENCY_MEASURES> addEMERGENCY = new List<T_HM_EVALUATE_HAZARD_EMERGENCY_MEASURES>();
var INDIVIDUALs = GetEntities<T_HM_INDIVIDUAL_MEASURES>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var ENGINEERINGs = GetEntities<T_HM_ENGINEERING_MEASURES>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var MANAGEMENTs = GetEntities<T_HM_MANAGEMENT_MEASURES>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var EDUCATIONs = GetEntities<T_HM_EDUCATION_MEASURES>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var EMERGENCYs = GetEntities<T_HM_EMERGENCY_MEASURES>(t => t.IS_DELETED == false, new BaseFilter(filter.OrgId));
var operationLink = this.GetEntities<T_HM_EVALUATE_HAZARD>(t => t.STATUS == (int)HMOperationStepEnum., new BaseFilter(filter.OrgId)).ToList();
if (operationLink != null && operationLink.Any())
{
foreach (var item in operationLink)
{
if (!string.IsNullOrEmpty(item.IndividualMeasuresStr))
{
if (item.IndividualMeasuresStr != null)
{
var isin = INDIVIDUALs.FirstOrDefault(t => t.NAME == item.IndividualMeasuresStr);
T_HM_EVALUATE_HAZARD_INDIVIDUAL_MEASURES measure = new T_HM_EVALUATE_HAZARD_INDIVIDUAL_MEASURES();
measure.ORG_ID = filter.OrgId;
measure.EVALUATE_HAZARD_ID = item.ID;
if (isin == null)
{
T_HM_INDIVIDUAL_MEASURES additem = new T_HM_INDIVIDUAL_MEASURES();
additem.ID = Guid.NewGuid();
additem.NAME = item.IndividualMeasuresStr;
additem.ORG_ID = filter.GetOrgId();
measure.INDIVIDUAL_MEASURES_ID = additem.ID;
AddEntity(additem);
}
else
{
measure.INDIVIDUAL_MEASURES_ID = isin.ID;
}
addINDIVIDUAL.Add(measure);
}
}
if (!string.IsNullOrEmpty(item.EngineeringMeasuresStr))
{
if (item.EngineeringMeasuresStr != null)
{
var isin = ENGINEERINGs.FirstOrDefault(t => t.NAME == item.EducationTrainingMeasuresStr);
T_HM_EVALUATE_HAZARD_ENGINEERING_MEASURES measure = new T_HM_EVALUATE_HAZARD_ENGINEERING_MEASURES();
measure.ORG_ID = filter.OrgId;
measure.EVALUATE_HAZARD_ID = item.ID;
if (isin == null)
{
T_HM_ENGINEERING_MEASURES additem = new T_HM_ENGINEERING_MEASURES();
additem.ID = Guid.NewGuid();
additem.NAME = item.EngineeringMeasuresStr;
additem.ORG_ID = filter.GetOrgId();
measure.ENGINEERING_MEASURES_ID = additem.ID;
AddEntity(additem);
}
else
{
measure.ENGINEERING_MEASURES_ID = isin.ID;
}
addENGINEERING.Add(measure);
}
}
if (!string.IsNullOrEmpty(item.ManagementMeasuresStr))
{
if (item.ManagementMeasuresStr != null)
{
var isin = MANAGEMENTs.FirstOrDefault(t => t.NAME == item.ManagementMeasuresStr);
T_HM_EVALUATE_HAZARD_MANAGEMENT_MEASURES measure = new T_HM_EVALUATE_HAZARD_MANAGEMENT_MEASURES();
measure.ORG_ID = filter.OrgId;
measure.EVALUATE_HAZARD_ID = item.ID;
if (isin == null)
{
T_HM_MANAGEMENT_MEASURES additem = new T_HM_MANAGEMENT_MEASURES();
additem.ID = Guid.NewGuid();
additem.NAME = item.ManagementMeasuresStr;
additem.ORG_ID = filter.GetOrgId();
measure.MANAGEMENT_MEASURES_ID = additem.ID;
AddEntity(additem);
}
else
{
measure.MANAGEMENT_MEASURES_ID = isin.ID;
}
addMANAGEMENT.Add(measure);
}
}
if (!string.IsNullOrEmpty(item.EducationTrainingMeasuresStr))
{
if (item.EducationTrainingMeasuresStr != null)
{
var isin = EDUCATIONs.FirstOrDefault(t => t.NAME == item.EducationTrainingMeasuresStr);
T_HM_EVALUATE_HAZARD_EDUCATION_MEASURES measure = new T_HM_EVALUATE_HAZARD_EDUCATION_MEASURES();
measure.ORG_ID = filter.OrgId;
measure.EVALUATE_HAZARD_ID = item.ID;
if (isin == null)
{
T_HM_EDUCATION_MEASURES additem = new T_HM_EDUCATION_MEASURES();
additem.ID = Guid.NewGuid();
additem.NAME = item.EducationTrainingMeasuresStr;
additem.ORG_ID = filter.GetOrgId();
measure.EDUCATION_MEASURES_ID = additem.ID;
AddEntity(additem);
}
else
{
measure.EDUCATION_MEASURES_ID = isin.ID;
}
addEDUCATION.Add(measure);
}
}
if (!string.IsNullOrEmpty(item.EmergencyDisposalMeasuresStr))
{
if (item.EmergencyDisposalMeasuresStr != null)
{
var isin = EMERGENCYs.FirstOrDefault(t => t.NAME == item.EmergencyDisposalMeasuresStr);
T_HM_EVALUATE_HAZARD_EMERGENCY_MEASURES measure = new T_HM_EVALUATE_HAZARD_EMERGENCY_MEASURES();
measure.ORG_ID = filter.OrgId;
measure.EVALUATE_HAZARD_ID = item.ID;
if (isin == null)
{
T_HM_EMERGENCY_MEASURES additem = new T_HM_EMERGENCY_MEASURES();
additem.ID = Guid.NewGuid();
additem.NAME = item.EmergencyDisposalMeasuresStr;
additem.ORG_ID = filter.GetOrgId();
measure.EMERGENCY_MEASURES_ID = additem.ID;
AddEntity(additem);
}
else
{
measure.EMERGENCY_MEASURES_ID = isin.ID;
}
addEMERGENCY.Add(measure);
}
}
}
}
UnifiedCommit(() =>
{
if (addINDIVIDUAL != null && addINDIVIDUAL.Any())
BantchAddEntityNoCommit(addINDIVIDUAL);
if (addENGINEERING != null && addENGINEERING.Any())
BantchAddEntityNoCommit(addENGINEERING);
if (addMANAGEMENT != null && addMANAGEMENT.Any())
BantchAddEntityNoCommit(addMANAGEMENT);
if (addEDUCATION != null && addEDUCATION.Any())
BantchAddEntityNoCommit(addEDUCATION);
if (addEMERGENCY != null && addEMERGENCY.Any())
BantchAddEntityNoCommit(addEMERGENCY);
});
return true;
});
}
/// <summary>
/// 非班组的每日作业触发
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("everydayTask")]
public JsonActionResult<bool> everydayTask([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var jobs = new List<T_FO_CRUCIAL_LICENSE_JOB>();
var records = new List<T_FO_JOB_EVENT_RECORD>();
var notices = new List<T_FM_NOTIFICATION_TASK>();
var persons = new List<T_FO_JOB_EVENT_PERSON>();
var details = new List<T_FO_JOB_EVENT_DETAIL>();
var flows = new List<T_FO_JOB_EVENT_FLOW>();
var measures = new List<T_FO_JOB_EVENT_MEASURE>();
var jobDetails = new List<T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM>();
var jobFlows = new List<T_FO_CRUCIAL_LICENSE_SAFE_MEASURE>();
var jobMeasures = new List<T_FO_CRUCIAL_LICENSE_DEAL_MEASURE>();
if (DateTime.Now.Hour == 8)
{
var links = this.GetEntities<T_HM_OPERATION_LINK>(t => t.CYCLE_TYPE == HMCycleTypeEnum.Day && t.STATUS == (int)STATUSEnum., new BaseFilter(filter.OrgId), new string[] { "Nav_WorkPermitType", "Nav_SafeConfirms", "Nav_SafeMeasures", "Nav_DealMeasures" });
if (links != null && links.Any())
{
var linkIds = links.Select(t => t.ID).ToList();
var linkPosts = this.GetEntities<T_HM_OPERATION_LINK_POST>(t => linkIds.Contains(t.OPERATION_LINK_ID), new BaseFilter(filter.OrgId));
if (linkPosts != null && linkPosts.Any())
{
var postIds = linkPosts.Select(t => t.POST_ID).Distinct().ToList();
var users = this.GetEntities<T_FM_USER>(t => t.Nav_Department != null && t.Nav_Department.DEPARTMENT_TYPE != 2 && t.Nav_Person != null && postIds.Contains(t.Nav_Person.POST_ID) && t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), new string[] { "Nav_Person" });
if (users != null && users.Any())
{
foreach (var user in users)
{
var postLinkIds = linkPosts.Where(t => t.POST_ID == user.Nav_Person.POST_ID).Select(m => m.OPERATION_LINK_ID).ToList();
var postLinks = links.Where(t => postLinkIds.Contains(t.ID)).Distinct().ToList();
if (postLinks != null && postLinks.Any())
{
foreach (var link in postLinks)
{
//许可作业、非许可的关键任务
if (link != null && (link.Nav_WorkPermitType != null && link.Nav_WorkPermitType.NAME != "无") || (link.Nav_WorkPermitType != null && link.Nav_WorkPermitType.NAME == "无" && link.IS_IMPORTANT == (int)ISImportantEnum.))
{
//取审批流水码
var sysFilter = new SystemCodeFilter();
sysFilter.CodeType = (int)PFCodeRuleType.;
sysFilter.Count = 1;
sysFilter.OrgId = link.ORG_ID;
var codes = CodeRuleService.NewGenSerial(sysFilter);
var codeList = codes.Split(new char[] { ',' });
T_FO_CRUCIAL_LICENSE_JOB job = new T_FO_CRUCIAL_LICENSE_JOB();
//主表
job.CODE = codeList[0];
job.ORG_ID = link.ORG_ID;
job.APPLY_USER_ID = user.ID;
job.IS_AUTO = (int)ISImportantEnum.;
job.OPERATION_STEP_ID = link.OPERATION_STEP_ID;
job.AUDIT_LEVEL = link.AUDIT_LEVEL;
jobs.Add(job);
//作业前安全确认
if (link != null && link.Nav_SafeConfirms != null && link.Nav_SafeConfirms.Any())
{
link.Nav_SafeConfirms.ForEach(t =>
{
T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM detail = new T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM();
detail.CRUCIAL_LICENSE_JOB_ID = job.ID;
detail.NAME = t.NAME;
detail.ORG_ID = t.ORG_ID;
detail.NUM = t.NUM;
jobDetails.Add(detail);
});
}
//作业流程及安全措施
if (link != null && link.Nav_SafeMeasures != null && link.Nav_SafeMeasures.Any())
{
link.Nav_SafeMeasures.ForEach(t =>
{
T_FO_CRUCIAL_LICENSE_SAFE_MEASURE detail = new T_FO_CRUCIAL_LICENSE_SAFE_MEASURE();
detail.CRUCIAL_LICENSE_JOB_ID = job.ID;
detail.NAME = t.NAME;
detail.ORG_ID = t.ORG_ID;
detail.NUM = t.NUM;
jobFlows.Add(detail);
});
}
//作业后处理措施
if (link != null && link.Nav_DealMeasures != null && link.Nav_DealMeasures.Any())
{
link.Nav_DealMeasures.ForEach(t =>
{
T_FO_CRUCIAL_LICENSE_DEAL_MEASURE detail = new T_FO_CRUCIAL_LICENSE_DEAL_MEASURE();
detail.CRUCIAL_LICENSE_JOB_ID = job.ID;
detail.NAME = t.NAME;
detail.ORG_ID = t.ORG_ID;
detail.NUM = t.NUM;
jobMeasures.Add(detail);
});
}
var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModel("关键许可作业票", job.ID, link.ORG_ID, user.ID, user.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO017");
notices.Add(noticeTemp);
}
//非许可非关键的一般任务
if (link != null && (link.Nav_WorkPermitType == null || (link.Nav_WorkPermitType != null && link.Nav_WorkPermitType.NAME == "无")) && link.IS_IMPORTANT == (int)ISImportantEnum.)
{
//取审批流水码
var sysFilter = new SystemCodeFilter();
sysFilter.CodeType = (int)PFCodeRuleType.;
sysFilter.Count = 1;
sysFilter.OrgId = link.ORG_ID;
var codes = CodeRuleService.NewGenSerial(sysFilter);
var codeList = codes.Split(new char[] { ',' });
T_FO_JOB_EVENT_RECORD record = new T_FO_JOB_EVENT_RECORD();
//主表
record.CODE = codeList[0];
record.ORG_ID = link.ORG_ID;
record.OPERATION_STEP_ID = link.OPERATION_STEP_ID;
record.JOB_DATE = DateTime.Now.Date.ToString();
records.Add(record);
var userPostIds = users.Where(t => t.Nav_Person.POST_ID == user.Nav_Person.POST_ID).Select(m => m.ID).ToList();
//作业人员表
if (userPostIds != null && userPostIds.Any())
{
userPostIds.ForEach(t =>
{
T_FO_JOB_EVENT_PERSON person = new T_FO_JOB_EVENT_PERSON();
person.USER_ID = t;
person.JOB_EVENT_RECORD_ID = record.ID;
person.ORG_ID = link.ORG_ID;
persons.Add(person);
});
}
//作业前安全确认
if (link != null && link.Nav_SafeConfirms != null && link.Nav_SafeConfirms.Any())
{
link.Nav_SafeConfirms.ForEach(t =>
{
T_FO_JOB_EVENT_DETAIL detail = new T_FO_JOB_EVENT_DETAIL();
detail.JOB_EVENT_RECORD_ID = record.ID;
detail.SafeConfirmsStr = t.NAME;
detail.IS_CONFIRM = false;
detail.ORG_ID = t.ORG_ID;
detail.NUM = t.NUM;
details.Add(detail);
});
}
//作业流程及安全措施
if (link != null && link.Nav_SafeMeasures != null && link.Nav_SafeMeasures.Any())
{
link.Nav_SafeMeasures.ForEach(t =>
{
T_FO_JOB_EVENT_FLOW detail = new T_FO_JOB_EVENT_FLOW();
detail.JOB_EVENT_RECORD_ID = record.ID;
detail.SafeMeasuresStr = t.NAME;
detail.IS_CONFIRM = false;
detail.ORG_ID = t.ORG_ID;
detail.NUM = t.NUM;
flows.Add(detail);
});
}
//作业后处理措施
if (link != null && link.Nav_DealMeasures != null && link.Nav_DealMeasures.Any())
{
link.Nav_DealMeasures.ForEach(t =>
{
T_FO_JOB_EVENT_MEASURE detail = new T_FO_JOB_EVENT_MEASURE();
detail.JOB_EVENT_RECORD_ID = record.ID;
detail.DealMeasuresStr = t.NAME;
detail.IS_CONFIRM = false;
detail.ORG_ID = t.ORG_ID;
detail.NUM = t.NUM;
measures.Add(detail);
});
}
var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModel("作业活动记录表(一般作业)", record.ID, link.ORG_ID, user.ID, user.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO015");
notices.Add(noticeTemp);
}
}
}
}
}
}
}
}
UnifiedCommit(() =>
{
if (records != null && records.Any())
BantchSaveEntityNoCommit(records);
if (jobs != null && jobs.Any())
BantchSaveEntityNoCommit(jobs);
if (notices != null && notices.Any())
this.BantchSaveEntityNoCommit(notices);
if (persons != null && persons.Any())
this.BantchSaveEntityNoCommit(persons);
if (details != null && details.Any())
this.BantchSaveEntityNoCommit(details);
if (flows != null && flows.Any())
this.BantchSaveEntityNoCommit(flows);
if (measures != null && measures.Any())
this.BantchSaveEntityNoCommit(measures);
if (jobDetails != null && jobDetails.Any())
this.BantchSaveEntityNoCommit(jobDetails);
if (jobFlows != null && jobFlows.Any())
this.BantchSaveEntityNoCommit(jobFlows);
if (jobMeasures != null && jobMeasures.Any())
this.BantchSaveEntityNoCommit(jobMeasures);
});
return true;
});
}
}
}