826 lines
49 KiB
C#
826 lines
49 KiB
C#
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;
|
||
});
|
||
}
|
||
}
|
||
}
|