动作作业

This commit is contained in:
何美荣 2025-11-21 00:34:07 +08:00
parent c1c43bd636
commit ab40fdc893
9 changed files with 136376 additions and 145 deletions

View File

@ -2486,6 +2486,7 @@ namespace APT.BaseData.Services.DomainServices
{
var entity = this.GetEntity<T_FO_FIRE_JOB>(modelApp.DATA_ID);
entity.STATUS = PFStandardStatus.Archived;
entity.FIRE_STATUS = FOFireStatus.ApprovingFinish;
UnifiedCommit(() =>
{
if (modelApp != null)
@ -2535,6 +2536,7 @@ namespace APT.BaseData.Services.DomainServices
{
var entity = this.GetEntity<T_FO_FIRE_JOB_WB>(modelApp.DATA_ID);
entity.STATUS = PFStandardStatus.Archived;
entity.FIRE_STATUS = FOFireStatus.ApprovingFinish;
UnifiedCommit(() =>
{
if (modelApp != null)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace APT.Data.Migrations.Migrations
{
public partial class hmr2025112101 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "IS_RUN",
table: "T_FO_FIRE_JOB_WB",
type: "bit",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "IS_RUN",
table: "T_FO_FIRE_JOB",
type: "bit",
nullable: false,
defaultValue: false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "IS_RUN",
table: "T_FO_FIRE_JOB_WB");
migrationBuilder.DropColumn(
name: "IS_RUN",
table: "T_FO_FIRE_JOB");
}
}
}

View File

@ -33016,6 +33016,9 @@ namespace APT.Data.Migrations.Migrations
b.Property<int?>("IS_LEAVE")
.HasColumnType("int");
b.Property<bool>("IS_RUN")
.HasColumnType("bit");
b.Property<string>("JOB_CONTENT")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
@ -33662,6 +33665,9 @@ namespace APT.Data.Migrations.Migrations
b.Property<int?>("IS_LEAVE")
.HasColumnType("int");
b.Property<bool>("IS_RUN")
.HasColumnType("bit");
b.Property<string>("JOB_CONTENT")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");

View File

@ -245,5 +245,7 @@ namespace APT.MS.Domain.Entities.FO
[Description("动火流程状态")]
[EnumName("FOFireStatus")]
public FOFireStatus FIRE_STATUS { get; set; }
[Description("是否已触发")]
public bool IS_RUN { get; set; } = false;
}
}

View File

@ -235,5 +235,8 @@ namespace APT.MS.Domain.Entities.FO
[Description("动火流程状态")]
[EnumName("FOFireStatus")]
public FOFireStatus FIRE_STATUS { get; set; }
[Description("是否已触发")]
public bool IS_RUN { get; set; } = false;
}
}

View File

@ -7,6 +7,7 @@ using APT.BaseData.Services.DomainServices;
using APT.BaseData.Services.Services.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.FO;
using APT.MS.Domain.Entities.OG;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
@ -147,7 +148,7 @@ namespace APT.FO.WebApi.Controllers
var userList = new List<T_FO_FIRE_JOB_USER>();
if (users != null && users.Any())
{
var userTypes = this.GetEntities<T_FO_USER_TYPE>(t => t.NAME == "动火操作人员" || t.NAME == "瓦检员" || t.NAME == "喷水人员", new BaseFilter(entity.ORG_ID));
var userTypes = this.GetEntities<T_OG_RELATED_USER_TYPE>(t => t.NAME == "动火操作人员" || t.NAME == "瓦检员" || t.NAME == "喷水人员", new BaseFilter(entity.ORG_ID));
var userTypeIds = userTypes.Select(m => m.ID).ToList();
var dhUser = userTypes.FirstOrDefault(t => t.NAME == "动火操作人员");
if (dhUser == null)
@ -248,7 +249,58 @@ namespace APT.FO.WebApi.Controllers
monitorFileList.Add(item);
}
}
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
//监护人员填写
if (entity.FIRE_STATUS == FOFireStatus.Monitor)
{
//触发给动火部门负责人、安全管理人员审阅
var sendUser = this.GetEntities<T_FM_USER>(t => t.ID == entity.FIRE_USER_ID || t.ID == entity.SAFE_USER_ID, new BaseFilter(entity.ORG_ID)).ToList();
if (sendUser != null && sendUser.Any())
{
var sendUserIds = sendUser.Select(t => t.ID).Distinct().ToList();
var sendUserNames = sendUser.Select(t => t.NAME).Distinct().ToList();
entity.FIRE_STATUS = FOFireStatus.ReadingFinish;
notices = NotificationTaskService.InsertUserNoticeTaskModels("动火作业工作票完工验收", entity.ID, entity.ORG_ID, sendUserIds, sendUserNames, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO043_SHOWPRINT");
}
else
{
//直接归档
entity.FIRE_STATUS = FOFireStatus.Archived;
}
}
//动火作业人员填写
else if (entity.FIRE_STATUS == FOFireStatus.Sign)
{
//触发给动火部门负责人、安全管理人员、矿调度人员审阅
var sendUser = this.GetEntities<T_FM_USER>(t => t.ID == entity.FIRE_USER_ID || t.ID == entity.SAFE_USER_ID || t.ID == entity.DISPATCH_USER_ID, new BaseFilter(entity.ORG_ID)).ToList();
if (sendUser != null && sendUser.Any())
{
var sendUserIds = sendUser.Select(t => t.ID).Distinct().ToList();
var sendUserNames = sendUser.Select(t => t.NAME).Distinct().ToList();
entity.FIRE_STATUS = FOFireStatus.Reading;
notices = NotificationTaskService.InsertUserNoticeTaskModels("动火作业工作票审阅", entity.ID, entity.ORG_ID, sendUserIds, sendUserNames, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO043_SHOWPRINT");
}
else
{
//没有审阅人就触发给监护人填写
var monitorUser = this.GetEntity<T_FM_USER>(t => t.ID == entity.MONITOR_USER_ID);
if (monitorUser != null)
{
entity.FIRE_STATUS = FOFireStatus.Monitor;
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("动火作业工作票全程监护", entity.ID, entity.ORG_ID, monitorUser.ID, monitorUser.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO043"));
}
else
{
throw new Exception("监护人不能为空,请联系管理员补充填写");
}
}
}
else
{
//触发审批
entity.STATUS = BaseData.Domain.Enums.PF.PFStandardStatus.Approving;
@ -305,6 +357,7 @@ namespace APT.FO.WebApi.Controllers
}, null, null, null, null, null, "FO043_SHOWPRINT", null, "动火作业工作票", FMTASKTYPE.JobSite);
return true;
}
}
this.UnifiedCommit(() =>
{
if (detailFileIds != null && detailFileIds.Any())
@ -341,6 +394,100 @@ namespace APT.FO.WebApi.Controllers
this.BantchSaveEntityNoCommit(fireFileList);
if (fileList != null && fileList.Any())
this.BantchSaveEntityNoCommit(fileList);
if (notices != null && notices.Any())
this.BantchSaveEntityNoCommit(notices);
});
return true;
});
}
/// <summary>
/// 部门负责人、安全管理人员审阅
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("IdentityUpdate")]
public JsonActionResult<bool> IdentityUpdate([FromBody] T_FO_FIRE_JOB entity)
{
return SafeExecute(() =>
{
var fire = this.GetEntity<T_FO_FIRE_JOB>(entity.ID);
var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (entity.TaskID != Guid.Empty)
{
var currTask = GetEntity<T_FM_NOTIFICATION_TASK>(t => t.ID == entity.TaskID);
if (currTask != null)
{
userId = currTask.USER_ID;
}
}
if (fire == null)
{
throw new Exception("未获取到动火作业工作票数据,请联系管理员确认");
}
T_FM_NOTIFICATION_TASK notice = null;
if (fire.FIRE_STATUS == FOFireStatus.Reading)
{
if (fire.FIRE_USER_ID == userId)
{
fire.USER_DEAL_STATUS = FOUserShiftStatusEnum.;
}
if (fire.SAFE_USER_ID == userId)
{
fire.SAFE_DEAL_STATUS = FOUserShiftStatusEnum.;
}
if (fire.DISPATCH_USER_ID == userId)
{
fire.DISPATCH_DEAL_STATUS = FOUserShiftStatusEnum.;
}
if (fire.USER_DEAL_STATUS == FOUserShiftStatusEnum. && fire.SAFE_DEAL_STATUS == FOUserShiftStatusEnum. && fire.DISPATCH_DEAL_STATUS == FOUserShiftStatusEnum.)
{
//触发给监护人填写
var monitorUser = this.GetEntity<T_FM_USER>(t => t.ID == fire.MONITOR_USER_ID);
if (monitorUser != null)
{
fire.FIRE_STATUS = FOFireStatus.Monitor;
notice = NotificationTaskService.InsertUserNoticeTaskModel("动火作业工作票全程监护", fire.ID, fire.ORG_ID, monitorUser.ID, monitorUser.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO043");
}
else
{
throw new Exception("监护人不能为空,请联系管理员补充填写");
}
}
}
else if (fire.FIRE_STATUS == FOFireStatus.ReadingFinish)
{
if (fire.FIRE_USER_ID == userId)
{
fire.USER_DEAL_FINISH_STATUS = FOUserShiftStatusEnum.;
}
if (fire.SAFE_USER_ID == userId)
{
fire.SAFE_DEAL_FINISH_STATUS = FOUserShiftStatusEnum.;
}
if (fire.USER_DEAL_FINISH_STATUS == FOUserShiftStatusEnum. && fire.SAFE_DEAL_FINISH_STATUS == FOUserShiftStatusEnum.)
{
fire.FIRE_STATUS = FOFireStatus.Archived;
}
}
else
{
throw new Exception("当前非审阅状态,请联系管理员排查");
}
T_FM_NOTIFICATION_TASK task = null;
if (entity.TaskID != Guid.Empty)
{
task = NotificationTaskService.GetTaskFinishModel(entity.TaskID);
task.SOURCE_FORMCODE = "FO043_SHOWPRINT";
}
UnifiedCommit(() =>
{
if (fire != null)
this.UpdateEntityNoCommit(fire);
if (task != null)
this.UpdateEntityNoCommit(task);
if (notice != null)
this.UpdateEntityNoCommit(notice);
});
return true;
});
@ -381,6 +528,12 @@ namespace APT.FO.WebApi.Controllers
throw new Exception("获取驳回信息失败!");
var entity = this.GetEntity<T_FO_FIRE_JOB>(model.DATA_ID, new string[] { "Nav_ApplyUser" });
entity.STATUS = BaseData.Domain.Enums.PF.PFStandardStatus.Rejected;
entity.FIRE_STATUS = FOFireStatus.Rejected;
entity.USER_DEAL_STATUS = FOUserShiftStatusEnum.;
entity.USER_DEAL_FINISH_STATUS = FOUserShiftStatusEnum.;
entity.SAFE_DEAL_STATUS = FOUserShiftStatusEnum.;
entity.SAFE_DEAL_FINISH_STATUS = FOUserShiftStatusEnum.;
entity.DISPATCH_DEAL_STATUS = FOUserShiftStatusEnum.;
var persons = this.GetEntities<T_FO_FIRE_JOB_USER>(t => t.FIRE_JOB_ID == model.DATA_ID, new BaseFilter(entity.ORG_ID));
if (persons.Any())
persons.ForEach(t => { t.DEAL_STATUS = 0; t.Nav_User = null; });

View File

@ -7,6 +7,7 @@ using APT.BaseData.Services.DomainServices;
using APT.BaseData.Services.Services.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.FO;
using APT.MS.Domain.Entities.OG;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
@ -147,7 +148,7 @@ namespace APT.FO.WebApi.Controllers
var userList = new List<T_FO_FIRE_JOB_WB_USER>();
if (users != null && users.Any())
{
var userTypes = this.GetEntities<T_FO_USER_TYPE>(t => t.NAME == "动火操作人员" || t.NAME == "瓦检员" || t.NAME == "喷水人员", new BaseFilter(entity.ORG_ID));
var userTypes = this.GetEntities<T_OG_RELATED_USER_TYPE>(t => t.NAME == "动火操作人员" || t.NAME == "瓦检员" || t.NAME == "喷水人员", new BaseFilter(entity.ORG_ID));
var userTypeIds = userTypes.Select(m => m.ID).ToList();
var dhUser = userTypes.FirstOrDefault(t => t.NAME == "动火操作人员");
if (dhUser == null)
@ -262,7 +263,40 @@ namespace APT.FO.WebApi.Controllers
monitorFileList.Add(item);
}
}
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
//监护人员填写
if (entity.FIRE_STATUS == FOFireStatus.Monitor)
{
//外部施工单位,安全员自动置为已审阅
entity.USER_DEAL_FINISH_STATUS = FOUserShiftStatusEnum.;
entity.SAFE_DEAL_FINISH_STATUS = FOUserShiftStatusEnum.;
//直接归档
entity.FIRE_STATUS = FOFireStatus.Archived;
}
//发起人填写
else if (entity.FIRE_STATUS == FOFireStatus.Sign)
{
//外部施工单位,安全员自动置为已审阅
entity.USER_DEAL_STATUS = FOUserShiftStatusEnum.;
entity.SAFE_DEAL_STATUS = FOUserShiftStatusEnum.;
//触发给监护人员
entity.FIRE_STATUS = FOFireStatus.Monitor;
//触发给监护人填写
var monitorUser = this.GetEntity<T_FM_USER>(t => t.ID == entity.MONITOR_USER_ID);
if (monitorUser != null)
{
entity.FIRE_STATUS = FOFireStatus.Monitor;
notices.Add(NotificationTaskService.InsertUserNoticeTaskModel("动火作业工作票全程监护(外包)", entity.ID, entity.ORG_ID, monitorUser.ID, monitorUser.NAME, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO045"));
}
else
{
throw new Exception("监护人不能为空,请联系管理员补充填写");
}
}
else
{
//触发审批
entity.STATUS = BaseData.Domain.Enums.PF.PFStandardStatus.Approving;
@ -318,6 +352,9 @@ namespace APT.FO.WebApi.Controllers
this.BantchSaveEntityNoCommit(fileList);
}, null, null, null, null, null, "FO045_SHOWPRINT", null, "动火作业工作票(外包)", FMTASKTYPE.JobSite);
return true;
}
}
this.UnifiedCommit(() =>
{
@ -355,6 +392,8 @@ namespace APT.FO.WebApi.Controllers
this.BantchSaveEntityNoCommit(fireFileList);
if (fileList != null && fileList.Any())
this.BantchSaveEntityNoCommit(fileList);
if (notices != null && notices.Any())
this.BantchSaveEntityNoCommit(notices);
});
return true;
});

View File

@ -1,28 +1,29 @@
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.ApiModel;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.IServices;
using APT.BaseData.Domain.IServices.FM;
using APT.BaseData.Services.DomainServices;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.FO;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Entities.OG;
using APT.MS.Domain.Enums;
using APT.Utility;
using APT.WebApi.Models;
using Castle.Core.Internal;
using InfluxData.Net.InfluxDb.Models.Responses;
using log4net.Filter;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.VisualBasic;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Linq;
using APT.BaseData.Domain.IServices.FM;
using APT.MS.Domain.Enums;
using APT.MS.Domain.Entities.HM;
using InfluxData.Net.InfluxDb.Models.Responses;
using NPOI.SS.Formula.Functions;
using APT.BaseData.Services.DomainServices;
using log4net.Filter;
using Castle.Core.Internal;
using APT.WebApi.Models;
using static Microsoft.AspNetCore.Razor.Language.TagHelperMetadata;
using APT.BaseData.Domain.ApiModel;
using System.Numerics;
using Microsoft.VisualBasic;
using Microsoft.Extensions.Logging;
using static Microsoft.AspNetCore.Razor.Language.TagHelperMetadata;
namespace APT.PP.WebApi.Controllers.Api.PP
{
@ -1911,15 +1912,18 @@ namespace APT.PP.WebApi.Controllers.Api.PP
try
{
var notices = new List<T_FM_NOTIFICATION_TASK>();
var dt = DateTime.Now.AddMinutes(-30);
var userType = this.GetEntity<T_FO_USER_TYPE>(t => t.NAME == "动火操作人员");
var dt = DateTime.Now.AddMinutes(-60);
var dtEnd = DateTime.Now.AddMinutes(-30);
var userType = this.GetEntity<T_OG_RELATED_USER_TYPE>(t => t.NAME == "动火操作人员");
var steps = this.GetEntities<T_HM_OPERATION_STEP>(t =>t.IS_DELETED ==false, new BaseFilter(filter.OrgId));
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && !t.CODE.Contains("admin"), new BaseFilter(filter.OrgId));
var jobs = this.GetEntities<T_FO_FIRE_JOB>(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.JOB_DATE <= dt, new BaseFilter(filter.OrgId), "Nav_Users");
var jobs = this.GetEntities<T_FO_FIRE_JOB>(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.JOB_DATE >= dt && t.JOB_DATE <= dtEnd && t.IS_RUN == false, new BaseFilter(filter.OrgId), "Nav_Users");
if (userType!=null &&jobs != null && jobs.Any())
{
foreach (var item in jobs)
{
item.IS_RUN = true;
item.FIRE_STATUS = FOFireStatus.Sign;
var step = steps.FirstOrDefault(t => t.ID == item.OPERATION_STEP_ID);
if (item.Nav_Users != null && item.Nav_Users.Any())
{
@ -1927,30 +1931,38 @@ namespace APT.PP.WebApi.Controllers.Api.PP
if (sendUser != null)
{
var userName = users.FirstOrDefault(t => t.ID == sendUser.USER_ID)?.NAME;
var notice = NotificationTaskService.InsertUserNoticeTaskModel("动火作业工作票" + step?.NAME, item.ID, item.ORG_ID, (Guid)sendUser.USER_ID, userName, DateTime.Now,
var notice = NotificationTaskService.InsertUserNoticeTaskModel("动火作业工作票现场验收" + step?.NAME, item.ID, item.ORG_ID, (Guid)sendUser.USER_ID, userName, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO043");
notices.Add(notice);
}
}
}
}
var jobWbs = this.GetEntities<T_FO_FIRE_JOB_WB>(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.JOB_DATE <= dt, new BaseFilter(filter.OrgId), "Nav_Users");
var jobWbs = this.GetEntities<T_FO_FIRE_JOB_WB>(t => t.STATUS == BaseData.Domain.Enums.PF.PFStandardStatus.Archived && t.JOB_DATE >= dt && t.JOB_DATE <= dtEnd && t.IS_RUN == false, new BaseFilter(filter.OrgId), "Nav_Users");
if (userType != null && jobWbs != null && jobWbs.Any())
{
foreach (var item in jobs)
foreach (var item in jobWbs)
{
item.IS_RUN = true;
item.FIRE_STATUS = FOFireStatus.Sign;
var step = steps.FirstOrDefault(t => t.ID == item.OPERATION_STEP_ID);
if (item.APPLY_USER_ID != null )
{
var userName = users.FirstOrDefault(t => t.ID == item.APPLY_USER_ID)?.NAME;
var notice = NotificationTaskService.InsertUserNoticeTaskModel("动火作业工作票(外包)" + step?.NAME, item.ID, item.ORG_ID, (Guid)item.APPLY_USER_ID, userName, DateTime.Now,
var notice = NotificationTaskService.InsertUserNoticeTaskModel("动火作业工作票现场验收(外包)" + step?.NAME, item.ID, item.ORG_ID, (Guid)item.APPLY_USER_ID, userName, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "FO045");
notices.Add(notice);
}
}
}
jobs.ForEach(t => t.Nav_Users = null);
jobWbs.ForEach(t => t.Nav_Users = null);
UnifiedCommit(() =>
{
if (jobs != null && jobs.Any())
BantchSaveEntityNoCommit(jobs);
if (jobWbs != null && jobWbs.Any())
BantchSaveEntityNoCommit(jobWbs);
if (notices != null && notices.Any())
BantchSaveEntityNoCommit(notices);
});