1509 lines
91 KiB
C#
1509 lines
91 KiB
C#
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.Enums.PF;
|
|
using APT.BaseData.Domain.IServices.FM;
|
|
using APT.Infrastructure.Core;
|
|
using APT.MS.Domain.Entities.DM;
|
|
using APT.MS.Domain.Entities.SC.DM;
|
|
using APT.MS.Domain.Entities.SC.PT;
|
|
using APT.MS.Domain.Enums;
|
|
using APT.Utility;
|
|
using APT.WebApi.Models;
|
|
using InfluxData.Net.InfluxDb.Models.Responses;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace APT.PP.WebApi.Controllers.Api.PP
|
|
{
|
|
[Route("api/PP/DM")]
|
|
[TypeFilter(typeof(CustomActionFilterAttribute))]
|
|
public partial class DMController : AuthorizeApiController<T_DM_DEVICE_MAINTENANCE_PLAN>
|
|
{
|
|
|
|
IFMNotificationTaskService NotificationTaskService { get; set; }
|
|
IFMUserService UserService { get; set; }
|
|
IPFSysLogService SysLogService { get; set; }
|
|
IFMSyncLogDetailService SyncLogDetailService { get; set; }
|
|
public DMController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IFMUserService userService, IFMSyncLogDetailService syncLogDetailService)
|
|
{
|
|
NotificationTaskService = notificationTaskService;
|
|
SysLogService = sysLogService;
|
|
UserService = userService;
|
|
SyncLogDetailService = syncLogDetailService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断跑批时间是否符合
|
|
/// </summary>
|
|
/// <param name="RUNSETTIME"></param>
|
|
/// <param name="dtNow"></param>
|
|
/// <param name="minAdvance"></param>
|
|
/// <param name="minLaster"></param>
|
|
/// <returns></returns>
|
|
private bool ISTimeOK(DateTime? RUNSETTIME, DateTime dtNow, int minAdvance, int minLaster)
|
|
{
|
|
if (RUNSETTIME == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (RUNSETTIME != null)
|
|
{
|
|
if (minAdvance != 0 || minLaster != 0)
|
|
{
|
|
DateTime dtSetTime = Convert.ToDateTime(dtNow.ToString("yyyy-MM-dd") + RUNSETTIME.Value.ToString(" HH:mm:ss"));
|
|
if (minAdvance > 0 && minLaster > 0)
|
|
{
|
|
if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
else if (minAdvance > 0)
|
|
{
|
|
if (dtNow.AddMinutes(-1 * minAdvance) <= dtSetTime && dtSetTime <= dtNow)
|
|
{
|
|
//如果设置时间小于当前时间 并且 设置使劲按大于 当前时间大于当前时间往前偏移分钟数
|
|
return true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (dtNow <= dtSetTime && dtSetTime <= dtNow.AddMinutes(minLaster))
|
|
{
|
|
//如果 设置时间大于当前时间 并且设置时间小于当前时间往后偏移分钟数
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (RUNSETTIME.Value.ToString("HH:mm") == dtNow.ToString("HH:mm"))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 机电管理 每天触发
|
|
/// 数据逻辑自己控制
|
|
/// 如果要写入此方法 每个人的代码用代码块包起来 以免冲突
|
|
/// </summary>
|
|
/// <param name="filter"></param>
|
|
/// <returns></returns>
|
|
//[HttpPost, Route("DailyRun")]
|
|
//public JsonActionResult<bool> DailyRun([FromBody] KeywordFilter filter)
|
|
//{
|
|
// return SafeExecute<bool>(() =>
|
|
// {
|
|
// try
|
|
// {
|
|
// DateTime dtNow = DateTime.Now;
|
|
// if (!string.IsNullOrEmpty(filter.Parameter1))
|
|
// {
|
|
// try
|
|
// {
|
|
// dtNow = Convert.ToDateTime(filter.Parameter1);
|
|
// }
|
|
// catch
|
|
// {
|
|
// dtNow = DateTime.Now;
|
|
// }
|
|
// }
|
|
|
|
// bool isCheck = true;//点检 巡检
|
|
// bool isPlan = true; //设备维保
|
|
// int min = 5;//按设置时间 可以提前5分钟执行跑批生成代办任务
|
|
|
|
// #region wyw 维保计划录入
|
|
|
|
// var listDMPlan = GetEntities<T_DM_DEVICE_MAINTENANCE_PLAN>(e => e.PLANCHECKFREQUENCY != BSPLANCHECKFREQUENCYEnum.None && e.DEVICEBASE_ID.HasValue && e.ENABLE_STATUS == FMEnableStatusEnum.启用 && e.STATUS_APPROVE == PFStandardStatus.Archived && !e.IS_DELETED, null, "Nav_ListUser.Nav_User");
|
|
|
|
// List<T_DM_DEVICE_MAINTENANCE_PLAN> listPlan = new List<T_DM_DEVICE_MAINTENANCE_PLAN>();
|
|
// if (listDMPlan != null && listDMPlan.Any())
|
|
// {
|
|
|
|
// foreach (var item in listDMPlan)
|
|
// {
|
|
// if (ISTimeOK(item.RUNSETTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批
|
|
// {
|
|
// switch (item.PLANCHECKFREQUENCY)
|
|
// {
|
|
// case BSPLANCHECKFREQUENCYEnum.None:
|
|
// break;
|
|
// //case BSPLANCHECKFREQUENCYEnum.OneTime:
|
|
// case BSPLANCHECKFREQUENCYEnum.Year:
|
|
// if (!string.IsNullOrEmpty(item.RUNDATA))//05-01,10-01
|
|
// {
|
|
// List<string> listMMdd = item.RUNDATA.Split(",").ToList();
|
|
// if (item.RUNDATA.Contains("-"))
|
|
// {
|
|
// for (int j = 0; j < listMMdd.Count; j++)
|
|
// {
|
|
// try
|
|
// {
|
|
// if (!string.IsNullOrEmpty(listMMdd[j]) && (listMMdd[j] == dtNow.ToString("MM-dd") || listMMdd[j] == dtNow.ToString("M-d")))
|
|
// {
|
|
// listPlan.Add(item);
|
|
// break;
|
|
// }
|
|
// }
|
|
// catch { }
|
|
// }
|
|
// }
|
|
// else if (item.RUNDATA.Contains("/"))
|
|
// {
|
|
// for (int j = 0; j < listMMdd.Count; j++)
|
|
// {
|
|
// try
|
|
// {
|
|
// if (!string.IsNullOrEmpty(listMMdd[j]) && (listMMdd[j] == dtNow.ToString("MM/dd") || listMMdd[j] == dtNow.ToString("M/d")))
|
|
// {
|
|
// listPlan.Add(item);
|
|
// break;
|
|
// }
|
|
// }
|
|
// catch { }
|
|
// }
|
|
// }
|
|
// }
|
|
// break;
|
|
// case BSPLANCHECKFREQUENCYEnum.Date:
|
|
// listPlan.Add(item);
|
|
// break;
|
|
// case BSPLANCHECKFREQUENCYEnum.Week:
|
|
// if (item.WEEKDATA != null && (int)dtNow.DayOfWeek == (int)item.WEEKDATA.Value)
|
|
// {
|
|
// //星期匹配 DateTime.Now.DayOfWeek Thursday (int)DateTime.Now.DayOfWeek 4
|
|
// listPlan.Add(item);
|
|
// }
|
|
// break;
|
|
// case BSPLANCHECKFREQUENCYEnum.Month:
|
|
// case BSPLANCHECKFREQUENCYEnum.Quarter:
|
|
// if (item.DATA != null && item.DATA.Value == dtNow.Day)
|
|
// {
|
|
// listPlan.Add(item); //日匹配 (季度是季度第一月的某日 刚好也符合)
|
|
// }
|
|
// break;
|
|
// default:
|
|
// break;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
// DateTime dtNowEdit = DateTime.Now;
|
|
|
|
|
|
// if (listPlan.Count < 1)
|
|
// {
|
|
// isPlan = false;
|
|
// }
|
|
// var listPlanID = listPlan.Select(e => e.ID);
|
|
// var listDateCheck = GetEntities<T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL>(e => e.CREATE_TIME.Value.Date == dtNowEdit.Date && listPlanID.Contains(e.ID), null, null);
|
|
// if (listDateCheck != null && listDateCheck.Any())
|
|
// {
|
|
// for (int i = listPlan.Count(); i > -1; i--)
|
|
// {
|
|
// var checkDate = listDateCheck.FirstOrDefault(e => e.ID == listPlan[i].ID);
|
|
// if (checkDate != null)
|
|
// {
|
|
// listPlan.RemoveAt(i);
|
|
// }
|
|
// }
|
|
// }
|
|
// if (listPlan.Count < 1)
|
|
// {
|
|
// isPlan = false;
|
|
// }
|
|
|
|
|
|
// #region 点检 巡检
|
|
|
|
// List<T_DM_DEVICE_BASE> listDeviceBase = null; //点检 巡检 结果
|
|
// var listDeviceBaseT = GetEntities<T_DM_DEVICE_BASE>(e => !e.IS_DELETED && e.Nav_ListCheck != null && e.Nav_ListCheck.Any(), null, "Nav_ListCheck.Nav_ListUser.Nav_User");//&& e.QTY > 0
|
|
// if (listDeviceBaseT == null || !listDeviceBaseT.Any())
|
|
// {
|
|
// isCheck = false;
|
|
// }
|
|
// else
|
|
// {
|
|
|
|
// //今天
|
|
// var ListDetail = GetEntities<T_DM_DEVICE_CHECK_DETAIL>(e => e.CREATE_TIME.HasValue && e.CREATE_TIME.Value.Date == dtNowEdit.Date, null, null);//listBaseCheckID.Contains(e.BASECHECK_ID) &&
|
|
|
|
// listDeviceBase = listDeviceBaseT.ToList();
|
|
// List<T_DM_DEVICE_BASE_CHECK> listBaseCheck = null;
|
|
// foreach (var item in listDeviceBaseT)
|
|
// {
|
|
// var listBaseCheckT = item.Nav_ListCheck;
|
|
// if (listBaseCheckT != null && listBaseCheckT.Any())
|
|
// {
|
|
// listBaseCheck = listBaseCheckT.ToList();
|
|
// for (int i = listBaseCheck.Count - 1; i > -1; i--)
|
|
// {
|
|
// if (listBaseCheck[i].IS_DELETED)
|
|
// {
|
|
// listBaseCheck.RemoveAt(i);
|
|
// continue;
|
|
// }
|
|
// if (ListDetail != null && ListDetail.Any())
|
|
// {
|
|
// //var detail = ListDetail.FirstOrDefault(e => e.BASECHECK_ID == listBaseCheck[i].ID);
|
|
// var detail = ListDetail.FirstOrDefault(e => e.BASECHECK_ID == listBaseCheck[i].ID);
|
|
// if (detail != null)
|
|
// {
|
|
// listBaseCheck.RemoveAt(i);
|
|
// continue;
|
|
// }
|
|
// }
|
|
// if (ISTimeOK(listBaseCheck[i].CHECKTIME, dtNow, min, min))//设置时间往前后各偏移 5 分钟 判断跑批
|
|
// {
|
|
// switch (listBaseCheck[i].PLANCHECKFREQUENCY)
|
|
// {
|
|
// case BSPLANCHECKFREQUENCYEnum.None:
|
|
// break;
|
|
// //TODO 0525
|
|
// //case BSPLANCHECKFREQUENCYEnum.OneTime:
|
|
// case BSPLANCHECKFREQUENCYEnum.Year:
|
|
// if (!string.IsNullOrEmpty(listBaseCheck[i].RUNDATA))//05-01,10-01
|
|
// {
|
|
// List<string> listMMdd = listBaseCheck[i].RUNDATA.Split(",").ToList();
|
|
// if (!listMMdd.Contains(dtNow.ToString("MM-dd")) && !listMMdd.Contains(dtNow.ToString("M-d")) && !listMMdd.Contains(dtNow.ToString("MM/dd")) && !listMMdd.Contains(dtNow.ToString("M/d")))
|
|
// {
|
|
// listBaseCheck.RemoveAt(i);
|
|
// }
|
|
// }
|
|
// break;
|
|
// case BSPLANCHECKFREQUENCYEnum.Date:
|
|
// //listPlan.Add(listBaseCheck[i]);
|
|
// break;
|
|
// case BSPLANCHECKFREQUENCYEnum.Week:
|
|
// if (listBaseCheck[i].WEEKDATA == null || (int)dtNow.DayOfWeek != (int)listBaseCheck[i].WEEKDATA.Value)
|
|
// {
|
|
// listBaseCheck.RemoveAt(i);
|
|
// }
|
|
// break;
|
|
// case BSPLANCHECKFREQUENCYEnum.Month:
|
|
// case BSPLANCHECKFREQUENCYEnum.Quarter:
|
|
// if (listBaseCheck[i].DATA == null || listBaseCheck[i].DATA.Value != dtNow.Day)
|
|
// {
|
|
// listBaseCheck.RemoveAt(i);
|
|
// }
|
|
// break;
|
|
// default:
|
|
// break;
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// listBaseCheck.RemoveAt(i);
|
|
// }
|
|
// }
|
|
// item.Nav_ListCheck = listBaseCheck;
|
|
// }
|
|
// }
|
|
|
|
// for (int i = listDeviceBase.Count - 1; i > -1; i--)
|
|
// {
|
|
// if (listDeviceBase[i].Nav_ListCheck == null || listDeviceBase[i].Nav_ListCheck.Count() == 0)
|
|
// {
|
|
// listDeviceBase.RemoveAt(i);
|
|
// }
|
|
// }
|
|
// }
|
|
// if (listDeviceBase == null || listDeviceBase.Count < 1)
|
|
// {
|
|
// isCheck = false;
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
// if (!isPlan && !isCheck)//没有 维保计划 和点检、巡检
|
|
// {
|
|
// return true;
|
|
// }
|
|
|
|
// List<T_DM_DEVICE_MAINTENANCE_CHECK> listCheck = new List<T_DM_DEVICE_MAINTENANCE_CHECK>();
|
|
// List<T_DM_DEVICE_MAINTENANCE_CHECK_USER> listCheckUser = new List<T_DM_DEVICE_MAINTENANCE_CHECK_USER>();
|
|
// List<T_DM_DEVICE_MAINTENANCE_CHECK_USER> listCheckUserTemp = null;
|
|
// List<T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL> listCheckDetail = new List<T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL>();
|
|
// List<T_FM_NOTIFICATION_TASK> listTaskMaintCheck = new List<T_FM_NOTIFICATION_TASK>();
|
|
|
|
// var listBaseID = listPlan.Select(e => e.DEVICEBASE_ID.Value);
|
|
|
|
// var listBase = GetEntities<T_DM_DEVICE_BASE>(e => listBaseID.Contains(e.ID), null, "Nav_ListCheck.Nav_ListUser.Nav_User", "Nav_User");
|
|
|
|
|
|
// if (listBase == null || !listBase.Any())
|
|
// {
|
|
// isPlan = false;
|
|
// }
|
|
// else
|
|
// {
|
|
// foreach (var item in listPlan)
|
|
// {
|
|
// var DeviceBase = listBase.FirstOrDefault(e => e.ID == item.DEVICEBASE_ID.Value);
|
|
// if (DeviceBase != null)
|
|
// item.Nav_DeviceBase = DeviceBase;
|
|
// }
|
|
// }
|
|
|
|
// if (isPlan)//维保计划
|
|
// {
|
|
// Guid CheckID = Guid.Empty;
|
|
// Guid UserID = Guid.Empty;
|
|
// string UserName = string.Empty;
|
|
// bool isHave = false;
|
|
// for (int i = 0; i < listPlan.Count; i++)
|
|
// {
|
|
// //所有 维保 计划 如果维保人员 维保设备负责人 完全一致 合并单
|
|
// foreach (var item in listCheck)
|
|
// {
|
|
// if (item.Nav_ListUser.Count() == listPlan[i].Nav_ListUser.Count() && listPlan[i].Nav_DeviceBase != null && item.USER_ID == listPlan[i].Nav_DeviceBase.USER_ID)
|
|
// {
|
|
// isHave = true;
|
|
// //查找 维保人员 如果一致
|
|
// foreach (var itemUser in item.Nav_ListUser)
|
|
// {
|
|
// var userCheck = listPlan[i].Nav_ListUser.FirstOrDefault(e => e.USER_ID == itemUser.USER_ID && e.ISMAIN == itemUser.ISMAIN);
|
|
// if (userCheck == null)
|
|
// {
|
|
// //没找到
|
|
// isHave = false;
|
|
// CheckID = Guid.Empty;
|
|
// break;
|
|
// }
|
|
// }
|
|
|
|
// if (!isHave)
|
|
// {
|
|
// continue;
|
|
// }
|
|
|
|
// CheckID = item.ID;
|
|
// break;
|
|
// }
|
|
// }
|
|
|
|
// //如果 没有找到之前 一致的 维保ID
|
|
// if (CheckID == Guid.Empty)
|
|
// {
|
|
// CheckID = Guid.NewGuid();
|
|
|
|
// listCheck.Add(new T_DM_DEVICE_MAINTENANCE_CHECK()
|
|
// {
|
|
// ID = CheckID,
|
|
// CODE = "WB" + dtNowEdit.ToString("yyyyMMddHHmmss"),
|
|
// NAME = "设备设施维保" + dtNowEdit.ToString("MMdd"),
|
|
// CHECKDATETIME = dtNowEdit,
|
|
// STATUS_APPROVE = PFStandardStatus.Draft,
|
|
// //APPROVE_ID = ,
|
|
// IS_DELETED = false,
|
|
// ORG_ID = listPlan[i].ORG_ID,
|
|
// //ENTITY_ORG_TPYE = ,
|
|
// //FORM_ID = ,
|
|
// //FLOW_STATUS = ,
|
|
// //FLOW_SEND_STATUS = ,
|
|
// //FLOW_ID = ,
|
|
// CREATE_TIME = dtNowEdit,
|
|
// MODIFY_TIME = dtNowEdit,
|
|
// //CREATER_ID = ,
|
|
// //MODIFIER_ID = ,
|
|
// USER_ID = listPlan[i].Nav_DeviceBase.USER_ID
|
|
// });
|
|
// listCheckUserTemp = new List<T_DM_DEVICE_MAINTENANCE_CHECK_USER>();
|
|
// foreach (var item in listPlan[i].Nav_ListUser)
|
|
// {
|
|
// if (item.ISMAIN)
|
|
// {
|
|
// UserID = item.USER_ID;
|
|
// UserName = item.Nav_User.NAME;
|
|
// }
|
|
// listCheckUserTemp.Add(new T_DM_DEVICE_MAINTENANCE_CHECK_USER()
|
|
// {
|
|
// ID = Guid.NewGuid(),
|
|
// CHECK_ID = CheckID,
|
|
// USER_ID = item.USER_ID,
|
|
// ISMAIN = item.ISMAIN,
|
|
// ISCHECK = item.ISMAIN,
|
|
// //CHECKTIME = ,
|
|
// IS_DELETED = false,
|
|
// ORG_ID = item.ORG_ID,
|
|
// //ENTITY_ORG_TPYE = ,
|
|
// //FORM_ID = ,
|
|
// //FLOW_STATUS = ,
|
|
// //FLOW_SEND_STATUS = ,
|
|
// //FLOW_ID = ,
|
|
// CREATE_TIME = dtNowEdit,
|
|
// MODIFY_TIME = dtNowEdit,
|
|
// //CREATER_ID = ,
|
|
// //MODIFIER_ID = ,
|
|
// });
|
|
// }
|
|
|
|
// //维保人员赋值 容易查找
|
|
// listCheck[listCheck.Count - 1].Nav_ListUser = listCheckUserTemp;
|
|
// listCheckUser.AddRange(listCheckUserTemp);
|
|
|
|
// //待办
|
|
// listTaskMaintCheck.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施维保", CheckID, listCheck[0].ORG_ID, UserID, UserName, dtNowEdit, dtNowEdit.AddDays(1), 1, "DM030"));
|
|
|
|
// }
|
|
|
|
|
|
// //检查明细
|
|
// listCheckDetail.Add(new T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL()
|
|
// {
|
|
// ID = Guid.NewGuid(),
|
|
// PLANID = listPlan[i].ID,
|
|
// CHECK_ID = CheckID,
|
|
// DEVICEBASE_ID = listPlan[i].DEVICEBASE_ID,
|
|
// MACHINE_NAME = listPlan[i].MACHINE_NAME,
|
|
// SPEC = listPlan[i].SPEC,
|
|
// COUNT = listPlan[i].COUNT,
|
|
// POSITION = listPlan[i].POSITION,
|
|
// CONTENT = listPlan[i].CONTENT,
|
|
// //Result = ,
|
|
// IS_DELETED = false,
|
|
// ORG_ID = listPlan[i].ORG_ID,
|
|
// //ENTITY_ORG_TPYE = ,
|
|
// //FORM_ID = ,
|
|
// //FLOW_STATUS = ,
|
|
// //FLOW_SEND_STATUS = ,
|
|
// //FLOW_ID = ,
|
|
// CREATE_TIME = dtNowEdit,
|
|
// MODIFY_TIME = dtNowEdit,
|
|
// //CREATER_ID = ,
|
|
// //MODIFIER_ID = ,
|
|
// });
|
|
// }
|
|
// }
|
|
|
|
|
|
// //符合 条件的 计划 做设备点检、巡检
|
|
// //var listBaseID = listPlan.Select(e => e.DEVICEBASE_ID.Value);
|
|
|
|
// //var listBase = GetEntities<T_DM_DEVICE_BASE>(e => listBaseID.Contains(e.ID), null, "Nav_ListCheck.Nav_ListUser.Nav_User");
|
|
// //if (listBase == null || !listBase.Any())
|
|
// //{
|
|
// // return true;
|
|
// //}
|
|
|
|
// //给 符合条件的 计划 对应 设备设施库 中 点检、巡检 发送 点检 巡检 待办 给 第一个 巡检人员
|
|
|
|
// List<T_DM_DEVICE_CHECK> listCheckSend = new List<T_DM_DEVICE_CHECK>();
|
|
// List<T_DM_DEVICE_CHECK_DETAIL> listCheckDetailSend = new List<T_DM_DEVICE_CHECK_DETAIL>();
|
|
// List<T_DM_DEVICE_CHECK_USER> listCheckUserSend = new List<T_DM_DEVICE_CHECK_USER>();
|
|
// List<T_FM_NOTIFICATION_TASK> listTask = new List<T_FM_NOTIFICATION_TASK>();
|
|
|
|
// if (isCheck)//点检 巡检
|
|
// {
|
|
// int RowIndex = 1;
|
|
// Guid UserId = Guid.Empty;
|
|
// Guid CheckId = Guid.Empty;
|
|
// string userName = String.Empty;
|
|
// T_DM_DEVICE_BASE_CHECK_USER UserMain = null;
|
|
// T_DM_DEVICE_CHECK_DETAIL CheckDetail = null;
|
|
// CheckType? lastCheckType = null;
|
|
// foreach (var item in listDeviceBase)// listBase
|
|
// {
|
|
// if (item.Nav_ListCheck == null || !item.Nav_ListCheck.Any())
|
|
// {
|
|
// continue;
|
|
// }
|
|
|
|
// //var listCheckCircle = item.Nav_ListCheck.Where(e => e.Nav_ListUser != null && e.Nav_ListUser.Any() && e.CHECKTYPE == CheckType.CheckCircuit);
|
|
// //var listCheck = item.Nav_ListCheck.Where(e => e.Nav_ListUser != null && e.Nav_ListUser.Any() && e.CHECKTYPE == CheckType.Check);
|
|
|
|
// var listCheckBase = item.Nav_ListCheck.Where(e => e.Nav_ListUser != null && e.Nav_ListUser.Any()).OrderBy(e => e.CHECKTYPE);
|
|
|
|
// if (listCheckBase != null && listCheckBase.Any())
|
|
// {
|
|
// RowIndex = 1;
|
|
// //巡检单
|
|
// foreach (var itemDetail in listCheckBase)
|
|
// {
|
|
// //检查人员
|
|
// UserMain = itemDetail.Nav_ListUser.FirstOrDefault(e => e.ISMAIN);
|
|
|
|
// if (UserId == Guid.Empty || UserMain.USER_ID != UserId || (lastCheckType != null && lastCheckType != itemDetail.CHECKTYPE))
|
|
// {
|
|
// UserId = UserMain.USER_ID;
|
|
// userName = UserMain.Nav_User.NAME;
|
|
|
|
// T_DM_DEVICE_CHECK checkCircle = new T_DM_DEVICE_CHECK();
|
|
|
|
// #region 点检 巡检 单
|
|
|
|
// checkCircle.ID = Guid.NewGuid();
|
|
// checkCircle.DEVICEBASE_ID = item.ID;
|
|
// checkCircle.CHECKTYPE = itemDetail.CHECKTYPE;
|
|
|
|
// //checkCircle.PLANID = listPlan.Find(e => e.DEVICEBASE_ID == item.ID).ID;// null;
|
|
// checkCircle.CODE = dtNowEdit.ToString("yyyyMMddHHmmss") + RowIndex.ToString();
|
|
// checkCircle.NAME = (itemDetail.CHECKTYPE == CheckType.Check ? "点检" : "巡检") + dtNowEdit.ToString("MMdd");
|
|
|
|
// checkCircle.RECORD_DATE = dtNowEdit;
|
|
|
|
|
|
// //checkCircle.START_TIME = ;
|
|
// //checkCircle.END_TIME = ;
|
|
// //checkCircle.TEAM_NAME = ;
|
|
// //checkCircle.TEAM_ID = ;
|
|
// //checkCircle.SCHEDULIN_ID = ;
|
|
|
|
// checkCircle.MACHINE_NAME = item.NAME;
|
|
// checkCircle.SPEC = item.SPEC;
|
|
// checkCircle.MACHINE_CODE = item.CODE;
|
|
// checkCircle.POSITION_NAME = item.POSITION;
|
|
// checkCircle.STATUS = PFStandardStatus.Draft;
|
|
// checkCircle.IS_DELETED = false;
|
|
// checkCircle.ORG_ID = item.ORG_ID;
|
|
// //checkCircle.ENTITY_ORG_TPYE = ;
|
|
// //checkCircle.FORM_ID = ;
|
|
// //checkCircle.FLOW_STATUS = ;
|
|
// //checkCircle.FLOW_SEND_STATUS = ;
|
|
// //checkCircle.FLOW_ID = ;
|
|
// checkCircle.CREATE_TIME = dtNowEdit;
|
|
// checkCircle.MODIFY_TIME = dtNowEdit;
|
|
// //checkCircle.CREATER_ID = ;
|
|
// //checkCircle.MODIFIER_ID = ;
|
|
// #endregion
|
|
|
|
// CheckId = checkCircle.ID;
|
|
// listCheckSend.Add(checkCircle);
|
|
|
|
|
|
// //添加待办
|
|
// listTask.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施" + (itemDetail.CHECKTYPE == CheckType.Check ? "点检" : "巡检"), checkCircle.ID, checkCircle.ORG_ID, UserId, userName, dtNowEdit, dtNowEdit.AddDays(1), 1, (itemDetail.CHECKTYPE == CheckType.Check ? "DM010" : "DM032")));
|
|
|
|
// #region 检查明细 检查人员
|
|
|
|
// foreach (var itemDetailUser in itemDetail.Nav_ListUser)
|
|
// {
|
|
// listCheckUserSend.Add(new T_DM_DEVICE_CHECK_USER()
|
|
// {
|
|
// ID = Guid.NewGuid(),
|
|
// CHECK_ID = CheckId,// CheckDetail.ID,
|
|
// USER_ID = itemDetailUser.USER_ID,
|
|
// ISMAIN = itemDetailUser.ISMAIN,
|
|
// ISCHECK = itemDetailUser.ISMAIN ? true : false,//记录人 默认 确认过
|
|
// IS_DELETED = false,
|
|
// ORG_ID = itemDetailUser.ORG_ID,
|
|
// //ENTITY_ORG_TPYE = ,
|
|
// //FORM_ID = ,
|
|
// //FLOW_STATUS = ,
|
|
// //FLOW_SEND_STATUS = ,
|
|
// //FLOW_ID = ,
|
|
// CREATE_TIME = dtNowEdit,
|
|
// MODIFY_TIME = dtNowEdit,
|
|
// //CREATER_ID = ,
|
|
// //MODIFIER_ID = ,
|
|
// });
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
// }
|
|
|
|
// #region 点检、巡检 检查明细
|
|
|
|
// CheckDetail = new T_DM_DEVICE_CHECK_DETAIL()
|
|
// {
|
|
// ID = Guid.NewGuid(),
|
|
// DEVICE_CHECK_ID = CheckId,
|
|
// ROW_NO = RowIndex,
|
|
// DEVICEBASE_ID = item.ID,
|
|
// ITEM1 = itemDetail.ITEM1,
|
|
// ITEM2 = itemDetail.ITEM2,
|
|
// ITEM3 = itemDetail.ITEM3,
|
|
// //CHECK_VALUE = ,
|
|
// ////DESCRIPTION = ,
|
|
// IS_DELETED = false,
|
|
// ORG_ID = itemDetail.ORG_ID,
|
|
// //ENTITY_ORG_TPYE = ,
|
|
// //FORM_ID = ,
|
|
// //FLOW_STATUS = ,
|
|
// //FLOW_SEND_STATUS = ,
|
|
// //FLOW_ID = ,
|
|
// CREATE_TIME = dtNowEdit,
|
|
// MODIFY_TIME = dtNowEdit,
|
|
// //CREATER_ID = ,
|
|
// //MODIFIER_ID = ,
|
|
// BASECHECK_ID = itemDetail.ID,
|
|
// };
|
|
// listCheckDetailSend.Add(CheckDetail);
|
|
|
|
// #endregion
|
|
|
|
// RowIndex++;
|
|
// lastCheckType = itemDetail.CHECKTYPE;//检查类型赋值
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// #region 跑批信息修改
|
|
|
|
// T_FM_SYNC_TASK task = null;
|
|
// task = GetEntity<T_FM_SYNC_TASK>(filter.Keyword);
|
|
// if (task != null)
|
|
// {
|
|
// task.UPDATE_SUCCES_TIME = DateTime.Now;//上次同步结束时间
|
|
// task.SYNC_PARAM = "";//清空参数
|
|
// }
|
|
|
|
// #endregion
|
|
|
|
// this.UnifiedCommit(() =>
|
|
// {
|
|
// if (task != null)
|
|
// UpdateEntityNoCommit(task);//跑批信息
|
|
|
|
// //点检 巡检
|
|
// if (listCheckSend != null && listCheckSend.Any())
|
|
// BantchSaveEntityNoCommit(listCheckSend);
|
|
// if (listCheckDetailSend != null && listCheckDetailSend.Any())
|
|
// BantchSaveEntityNoCommit(listCheckDetailSend);
|
|
// if (listCheckUserSend != null && listCheckUserSend.Any())
|
|
// BantchSaveEntityNoCommit(listCheckUserSend);
|
|
// if (listTask != null && listTask.Any())
|
|
// BantchSaveEntityNoCommit(listTask);
|
|
|
|
// //维保
|
|
// if (listCheckUser != null && listCheckUser.Any())
|
|
// BantchSaveEntityNoCommit(listCheckUser);
|
|
// if (listCheck != null && listCheck.Any())
|
|
// BantchSaveEntityNoCommit(listCheck);
|
|
// if (listCheckDetail != null && listCheckDetail.Any())
|
|
// BantchSaveEntityNoCommit(listCheckDetail);
|
|
// if (listTaskMaintCheck != null && listTaskMaintCheck.Any())
|
|
// BantchSaveEntityNoCommit(listTaskMaintCheck);
|
|
// });
|
|
|
|
// int Count = ((listCheckSend != null && listCheckSend.Any()) ? listCheckSend.Count : 0) + ((listCheckDetailSend != null && listCheckDetailSend.Any()) ? listCheckDetailSend.Count : 0) + ((listCheckUserSend != null && listCheckUserSend.Any()) ? listCheckUserSend.Count : 0) + ((listTask != null && listTask.Any()) ? listTask.Count : 0) + ((listCheckUser != null && listCheckUser.Any()) ? listCheckUser.Count : 0) + ((listCheck != null && listCheck.Any()) ? listCheck.Count : 0) + ((listCheckDetail != null && listCheckDetail.Any()) ? listCheckDetail.Count : 0) + ((listTaskMaintCheck != null && listTaskMaintCheck.Any()) ? listTaskMaintCheck.Count : 0);
|
|
// SyncLogDetailService.InsertSyncLogDetail(HttpContext.Items, HttpContext.TraceIdentifier, filter.OrgId, Count, filter.Parameter1, SyncLogType.BSCreateCheckPlanSet);
|
|
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// if (!string.IsNullOrEmpty(ex.StackTrace))
|
|
// throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
|
|
// else
|
|
// throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
|
|
// }
|
|
// return true;
|
|
// });
|
|
//}
|
|
|
|
#region HMR
|
|
/// <summary>
|
|
/// 触发设备设施检测检验
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("InspectionSync")]
|
|
public JsonActionResult<bool> InspectionSync([FromBody] KeywordFilter filter)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
try
|
|
{
|
|
var dtNow = DateTime.Now;
|
|
var month = dtNow.Month;
|
|
var day = dtNow.Day;
|
|
var time = dtNow.TimeOfDay;
|
|
var week = dtNow.DayOfWeek;
|
|
List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
|
|
List<T_PT_TIME_SET> timeSetLists = new List<T_PT_TIME_SET>();
|
|
T_DM_DETECTION_INSPECTION_RECORD record = null;
|
|
var newFilter = new BaseFilter(filter.OrgId);
|
|
newFilter.SelectField = new List<string> { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA", "RUNSETTIME", "DEVICE_BASE_ID", "MineType", "POST_ID", "DEPARTMENT_ID", "DEVICE_ID" };
|
|
var timeSets = GetEntities<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.Inspection, newFilter);
|
|
if (timeSets != null && timeSets.Any())
|
|
{
|
|
foreach (var timeSet in timeSets)
|
|
{
|
|
switch (timeSet.PLANCHECKFREQUENCY)
|
|
{
|
|
//case BSPLANCHECKFREQUENCYEnum.OneTime:
|
|
case BSPLANCHECKFREQUENCYEnum.Year:
|
|
if (timeSet.MONTH == month && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.HalfYear:
|
|
if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day))
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Date:
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Week:
|
|
if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week)
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Month:
|
|
if (timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Quarter:
|
|
if (timeSet.MONTH == 1)
|
|
{
|
|
if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
}
|
|
if (timeSet.MONTH == 2)
|
|
{
|
|
if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
}
|
|
if (timeSet.MONTH == 3)
|
|
{
|
|
if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (timeSetLists!=null && timeSetLists.Any())
|
|
{
|
|
var deviceIds = timeSetLists.Select(t => t.DEVICE_ID).Distinct().ToList();
|
|
var deviceBases = this.GetEntities<T_DM_DEVICE_BASE>(t => deviceIds.Contains(t.DEVICE_ID), new BaseFilter(filter.OrgId));
|
|
var deviceBaseIds = deviceBases.Select(t => t.ID).ToList();
|
|
var records = this.GetEntities<T_DM_DETECTION_INSPECTION_RECORD>(t => deviceBaseIds.Contains((Guid)t.DEVICE_BASE_ID) && t.CREATE_TIME >= dtNow.Date, new BaseFilter(filter.OrgId));
|
|
var departIds = timeSetLists.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
|
|
var postIds = timeSetLists.Select(t => t.POST_ID).Distinct().ToList();
|
|
var users = this.GetEntities<T_FM_USER>(t => departIds.Contains(t.ID) || (t.Nav_Person != null && postIds.Contains(t.Nav_Person.POST_ID)), new BaseFilter(filter.OrgId), "Nav_Person");
|
|
foreach (var item in timeSetLists)
|
|
{
|
|
var userInfo = users.FirstOrDefault(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_Person.POST_ID == item.POST_ID);
|
|
var devices = deviceBases.Where(t => t.DEVICE_ID == item.DEVICE_ID).ToList();
|
|
foreach (var device in devices)
|
|
{
|
|
var recordExist = records.FirstOrDefault(t => t.DEVICE_BASE_ID == device.ID);
|
|
if (userInfo != null && recordExist == null)
|
|
{
|
|
var deviceBase = deviceBases.FirstOrDefault(t => t.ID == device.ID);
|
|
record = new T_DM_DETECTION_INSPECTION_RECORD();
|
|
record.ORG_ID = filter.OrgId;
|
|
record.STATUS = PFStandardStatus.Draft;
|
|
record.TIME = DateTime.Now;
|
|
record.RESULT = DMInspectionResultEnum.不合格;
|
|
record.USER_ID = userInfo?.ID;
|
|
record.DEPARTMENT_ID = item.DEPARTMENT_ID;
|
|
record.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY;
|
|
record.MineType = item.MineType;
|
|
record.DEVICE_BASE_ID = deviceBase.ID;
|
|
record.MACHINE_CODE = deviceBase?.MACHINE_CODE;
|
|
record.SPEC = deviceBase?.SPEC;
|
|
record.POSITION = deviceBase?.POSITION;
|
|
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施检测检验记录", record.ID, filter.GetOrgId(), userInfo.ID, userInfo.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "DM012"));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
UnifiedCommit(() =>
|
|
{
|
|
if (record != null)
|
|
UpdateEntityNoCommit(record);
|
|
if (sendNotices != null && sendNotices.Any())
|
|
BantchSaveEntityNoCommit(sendNotices);
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (!string.IsNullOrEmpty(ex.StackTrace))
|
|
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
|
|
else
|
|
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 触发设备设施归还记录
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("DeviceReturnSync")]
|
|
public JsonActionResult<bool> DeviceReturnSync([FromBody] KeywordFilter filter)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
try
|
|
{
|
|
var dtNow = DateTime.Now;
|
|
List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
|
|
var details = GetEntities<T_DM_DEVICE_ISSUE_DETAIL>(i => i.RETURN_STATUS == DMIsReturnEnum.NG && i.RETURN_TIME.Value.Date == dtNow.Date, new BaseFilter(filter.OrgId), "Nav_User", "Nav_DeviceBase");
|
|
if (details != null && details.Any())
|
|
{
|
|
foreach (var item in details)
|
|
{
|
|
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备" + item.Nav_DeviceBase.NAME + "归还记录", item.ID, filter.GetOrgId(), item.USER_ID.Value, item.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum.消息, "DM026"));
|
|
}
|
|
}
|
|
UnifiedCommit(() =>
|
|
{
|
|
if (sendNotices != null && sendNotices.Any())
|
|
BantchSaveEntityNoCommit(sendNotices);
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (!string.IsNullOrEmpty(ex.StackTrace))
|
|
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
|
|
else
|
|
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 触发设备设施点检/巡检
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("DeviceCheckSync")]
|
|
public JsonActionResult<bool> DeviceCheckSync([FromBody] KeywordFilter filter)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
try
|
|
{
|
|
var dtNow = DateTime.Now;
|
|
var month = dtNow.Month;
|
|
var day = dtNow.Day;
|
|
var time = dtNow.TimeOfDay;
|
|
var week = dtNow.DayOfWeek;
|
|
List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
|
|
List<T_DM_DEVICE_CHECK> checks = new List<T_DM_DEVICE_CHECK>();
|
|
List<T_DM_DEVICE_CHECK_DETAIL> details = new List<T_DM_DEVICE_CHECK_DETAIL>();
|
|
List<T_DM_DEVICE_CHECK_USER> checkUsers = new List<T_DM_DEVICE_CHECK_USER>();
|
|
List<T_DM_TIME_RUN> sets = new List<T_DM_TIME_RUN>();
|
|
List<T_FM_DEPARTMENT_SCHEDULING> shiftClassList = new List<T_FM_DEPARTMENT_SCHEDULING>();
|
|
var timeSets = GetEntities<T_DM_TIME_RUN>(i => i.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Contents", "Nav_DeviceBase");
|
|
if (timeSets != null && timeSets.Any())
|
|
{
|
|
foreach (var timeSet in timeSets)
|
|
{
|
|
switch (timeSet.PLANCHECKFREQUENCY)
|
|
{
|
|
//case BSPLANCHECKFREQUENCYEnum.OneTime:
|
|
case BSPLANCHECKFREQUENCYEnum.Year:
|
|
if (timeSet.MONTH == month && timeSet.DATA == day)
|
|
sets.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.HalfYear:
|
|
if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day))
|
|
sets.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Date:
|
|
sets.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Week:
|
|
if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week)
|
|
sets.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Month:
|
|
if (timeSet.DATA == day)
|
|
sets.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Quarter:
|
|
if (timeSet.MONTH == 1)
|
|
{
|
|
if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day)
|
|
sets.Add(timeSet);
|
|
}
|
|
if (timeSet.MONTH == 2)
|
|
{
|
|
if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day)
|
|
sets.Add(timeSet);
|
|
}
|
|
if (timeSet.MONTH == 3)
|
|
{
|
|
if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day)
|
|
sets.Add(timeSet);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (sets!=null && sets.Any())
|
|
{
|
|
var deviceIds = timeSets.Select(t => t.DEVICE_ID).Distinct().ToList();
|
|
var deviceBases = this.GetEntities<T_DM_DEVICE_BASE>(t => deviceIds.Contains(t.DEVICE_ID) && t.DEVICE_STATUS == DMDeviceStatusEnum.使用中, new BaseFilter(filter.OrgId));
|
|
var userInfos = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, new BaseFilter(filter.OrgId), "Nav_Person");
|
|
TimeSpan halfHour = TimeSpan.FromHours(0.5); // 半小时的时间间隔
|
|
var departmentIds = deviceBases.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
|
|
var teamInfos = this.GetEntities<T_FM_TEAM>(t => departmentIds.Contains(t.DEPARTMENT_ID), new BaseFilter(filter.OrgId));
|
|
var teamIds = teamInfos.Select(t => t.ID).ToList();
|
|
//查排班
|
|
shiftClassList = this.GetEntities<T_FM_DEPARTMENT_SCHEDULING>(s => s.DATE_TIME.Date == dtNow.Date && s.START_TIME != s.END_TIME && s.TEAM_ID != null && teamIds.Contains((Guid)s.TEAM_ID) && s.RUN_CHECKRECORD == 0, new BaseFilter(filter.OrgId), "Nav_DepartmentSchedulingDetail.Nav_Person").ToList();
|
|
//点检按排班触发
|
|
var checkSets = sets.Where(t => t.SET_TYPE == DMSetTypeEnum.Check).ToList();
|
|
if (checkSets != null && checkSets.Any())
|
|
{
|
|
foreach (var item in checkSets)
|
|
{
|
|
var devices = deviceBases.Where(t => t.DEVICE_ID == item.DEVICE_ID).ToList();
|
|
foreach (var device in devices)
|
|
{
|
|
if (device != null && device.USER_ID != null)
|
|
{
|
|
var user = userInfos.FirstOrDefault(t => t.ID == device.USER_ID);
|
|
var currentTeamId = teamInfos.FirstOrDefault(t => t.DEPARTMENT_ID == device.DEPARTMENT_ID)?.ID;
|
|
var currentShift = shiftClassList.FirstOrDefault(t => t.TEAM_ID == currentTeamId);
|
|
if (currentShift != null)
|
|
{
|
|
DateTime start = currentShift.START_TIME - halfHour;//排班开始时间的前半小时
|
|
if (dtNow > start && dtNow < currentShift.START_TIME)//跑批半小时一次,在开始时间前半小时到开始时间之间就触发
|
|
{
|
|
//找到排班里面该岗位的人
|
|
var personInfo = currentShift.Nav_DepartmentSchedulingDetail.FirstOrDefault(t => t.PERSON_ID == user?.PERSON_ID);
|
|
if (personInfo != null)
|
|
{
|
|
T_DM_DEVICE_CHECK check = new T_DM_DEVICE_CHECK();
|
|
check.MineType = item.MineType;
|
|
check.ORG_ID = filter.OrgId;
|
|
check.DEVICEBASE_ID = device.ID;
|
|
check.CHECKTYPE = CheckType.Check;
|
|
check.CODE = dtNow.ToString("yyyyMMddHHmmss") + new Random().Next().ToString();
|
|
check.NAME = device?.NAME + ("点检") + dtNow.ToString("MMdd");
|
|
check.RECORD_DATE = dtNow;
|
|
check.MACHINE_NAME = device?.NAME;
|
|
check.SPEC = device?.SPEC;
|
|
check.MACHINE_CODE = device?.MACHINE_CODE;
|
|
check.POSITION_NAME = device?.POSITION;
|
|
check.STATUS = PFStandardStatus.Draft;
|
|
checks.Add(check);
|
|
T_DM_DEVICE_CHECK_USER checkuser = new T_DM_DEVICE_CHECK_USER();
|
|
checkuser.ORG_ID = filter.OrgId;
|
|
checkuser.CHECK_ID = check.ID;
|
|
checkuser.USER_ID = user.ID;
|
|
checkuser.ISMAIN = true;
|
|
checkUsers.Add(checkuser);
|
|
if (item.Nav_Contents.Any())
|
|
{
|
|
var i = 0;
|
|
foreach (var content in item.Nav_Contents)
|
|
{
|
|
T_DM_DEVICE_CHECK_DETAIL detail = new T_DM_DEVICE_CHECK_DETAIL();
|
|
detail.ORG_ID = filter.OrgId;
|
|
detail.DEVICE_CHECK_ID = check.ID;
|
|
detail.DEVICEBASE_ID = device.ID;
|
|
detail.ROW_NO = i + 1;
|
|
detail.ITEM1 = content.POSITION;
|
|
detail.ITEM2 = content.CONTENT;
|
|
detail.ITEM3 = content.STANDARD;
|
|
details.Add(detail);
|
|
i++;
|
|
}
|
|
}
|
|
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施点检", check.ID, check.ORG_ID, user.ID, user.NAME, dtNow, dtNow.AddDays(4), 1, "DM010"));
|
|
currentShift.RUN_CHECKRECORD = FMTureOrFalse.是;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//if (device.USE_DEPARTMENT_ID != null)
|
|
//{
|
|
// var currentTeamId = teamInfos.FirstOrDefault(t => t.DEPARTMENT_ID == device.USE_DEPARTMENT_ID).ID;
|
|
// var currentShift = shiftClassList.FirstOrDefault(t => t.TEAM_ID == currentTeamId);
|
|
// if (currentShift != null)
|
|
// {
|
|
// DateTime start = currentShift.START_TIME - halfHour;//排班开始时间的前半小时
|
|
// if (dtNow > start && dtNow < currentShift.START_TIME)//跑批半小时一次,在开始时间前半小时到开始时间之间就触发
|
|
// {
|
|
// //找到排班里面该岗位的人
|
|
// var personInfo = currentShift.Nav_DepartmentSchedulingDetail.Where(t => t.Nav_Person != null && t.Nav_Person.POST_ID == device.USE_USER_POST_ID).ToList();
|
|
// if (personInfo != null && personInfo.Any())
|
|
// {
|
|
// var personIds = personInfo.Select(t => t.PERSON_ID).ToList();
|
|
// var users = userInfos.Where(t => personIds.Contains((Guid)t.PERSON_ID)).ToList();
|
|
// var userIds = users.Select(t => t.ID).ToList();
|
|
// var userNames = users.Select(t => t.NAME).ToList();
|
|
// T_DM_DEVICE_CHECK check = new T_DM_DEVICE_CHECK();
|
|
// check.MineType = item.MineType;
|
|
// check.ORG_ID = filter.OrgId;
|
|
// check.DEVICEBASE_ID = device.ID;
|
|
// check.CHECKTYPE = CheckType.Check;
|
|
// check.CODE = dtNow.ToString("yyyyMMddHHmmss") + new Random().Next().ToString();
|
|
// check.NAME = device?.NAME + ("点检") + dtNow.ToString("MMdd");
|
|
// check.RECORD_DATE = dtNow;
|
|
// check.MACHINE_NAME = device?.NAME;
|
|
// check.SPEC = device?.SPEC;
|
|
// check.MACHINE_CODE = device?.CODE;
|
|
// check.POSITION_NAME = device?.POSITION;
|
|
// check.STATUS = PFStandardStatus.Draft;
|
|
// checks.Add(check);
|
|
// if (item.Nav_Contents.Any())
|
|
// {
|
|
// var i = 0;
|
|
// foreach (var content in item.Nav_Contents)
|
|
// {
|
|
// T_DM_DEVICE_CHECK_DETAIL detail = new T_DM_DEVICE_CHECK_DETAIL();
|
|
// detail.ORG_ID = filter.OrgId;
|
|
// detail.DEVICE_CHECK_ID = check.ID;
|
|
// detail.DEVICEBASE_ID = device.ID;
|
|
// detail.ROW_NO = i + 1;
|
|
// detail.ITEM1 = content.POSITION;
|
|
// detail.ITEM2 = content.CONTENT;
|
|
// detail.ITEM3 = content.STANDARD;
|
|
// details.Add(detail);
|
|
// i++;
|
|
// }
|
|
// }
|
|
// sendNotices.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("设备设施点检", check.ID, check.ORG_ID, userIds, userNames, dtNow, dtNow.AddDays(1), 1, "DM010"));
|
|
// currentShift.RUN_CHECKRECORD = FMTureOrFalse.是;
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
//巡检按排班触发
|
|
var checkCircuitSets = sets.Where(t => t.SET_TYPE == DMSetTypeEnum.CheckCircuit).ToList();
|
|
if (checkCircuitSets != null && checkCircuitSets.Any())
|
|
{
|
|
var departments = this.GetEntities<T_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0 && t.USER_ID != null, new BaseFilter(filter.OrgId));
|
|
foreach (var item in checkCircuitSets)
|
|
{
|
|
var devices = deviceBases.Where(t => t.DEVICE_ID == item.DEVICE_ID).ToList();
|
|
foreach (var device in devices)
|
|
{
|
|
if (device != null && device.DEPARTMENT_ID != null)
|
|
{
|
|
var currentTeamId = teamInfos.FirstOrDefault(t => t.DEPARTMENT_ID == device.DEPARTMENT_ID)?.ID;
|
|
var currentShift = shiftClassList.FirstOrDefault(t => t.TEAM_ID == currentTeamId);
|
|
if (currentShift != null)
|
|
{
|
|
DateTime start = currentShift.START_TIME - halfHour;//排班开始时间的前半小时
|
|
if (dtNow > start && dtNow < currentShift.START_TIME)//跑批半小时一次,在开始时间前半小时到开始时间之间就触发
|
|
{
|
|
//找到排班里面该岗位的人,触发给当前层级负责人
|
|
var deparId = (Guid)device.DEPARTMENT_ID;
|
|
var userInfo = departments.FirstOrDefault(t => t.ID == deparId);
|
|
if (userInfo != null)
|
|
{
|
|
var user = userInfos.FirstOrDefault(t => t.ID == userInfo.USER_ID);
|
|
T_DM_DEVICE_CHECK check = new T_DM_DEVICE_CHECK();
|
|
check.MineType = item.MineType;
|
|
check.ORG_ID = filter.OrgId;
|
|
check.DEVICEBASE_ID = device.ID;
|
|
check.CHECKTYPE = CheckType.CheckCircuit;
|
|
check.CODE = dtNow.ToString("yyyyMMddHHmmss") + new Random().Next().ToString();
|
|
check.NAME = device?.NAME + ("巡检") + dtNow.ToString("MMdd");
|
|
check.RECORD_DATE = dtNow;
|
|
check.MACHINE_NAME = device?.NAME;
|
|
check.SPEC = device?.SPEC;
|
|
check.MACHINE_CODE = device?.MACHINE_CODE;
|
|
check.POSITION_NAME = device?.POSITION;
|
|
check.STATUS = PFStandardStatus.Draft;
|
|
checks.Add(check);
|
|
T_DM_DEVICE_CHECK_USER checkuser = new T_DM_DEVICE_CHECK_USER();
|
|
checkuser.ORG_ID = filter.OrgId;
|
|
checkuser.CHECK_ID = check.ID;
|
|
checkuser.USER_ID = user.ID;
|
|
checkuser.ISMAIN = true;
|
|
checkUsers.Add(checkuser);
|
|
if (item.Nav_Contents.Any())
|
|
{
|
|
var i = 0;
|
|
foreach (var content in item.Nav_Contents)
|
|
{
|
|
T_DM_DEVICE_CHECK_DETAIL detail = new T_DM_DEVICE_CHECK_DETAIL();
|
|
detail.ORG_ID = filter.OrgId;
|
|
detail.DEVICE_CHECK_ID = check.ID;
|
|
detail.DEVICEBASE_ID = device.ID;
|
|
detail.ROW_NO = i + 1;
|
|
detail.ITEM1 = content.POSITION;
|
|
detail.ITEM2 = content.CONTENT;
|
|
detail.ITEM3 = content.STANDARD;
|
|
details.Add(detail);
|
|
i++;
|
|
}
|
|
}
|
|
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施巡检", check.ID, check.ORG_ID, user.ID, user?.NAME, dtNow, dtNow.AddDays(4), 1, "DM032"));
|
|
currentShift.RUN_CHECKRECORD = FMTureOrFalse.是;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
UnifiedCommit(() =>
|
|
{
|
|
if (checks != null && checks.Any())
|
|
BantchSaveEntityNoCommit(checks);
|
|
if (details != null && details.Any())
|
|
BantchSaveEntityNoCommit(details);
|
|
if (checkUsers != null && checkUsers.Any())
|
|
BantchSaveEntityNoCommit(checkUsers);
|
|
if (sendNotices != null && sendNotices.Any())
|
|
BantchSaveEntityNoCommit(sendNotices);
|
|
if (shiftClassList != null && shiftClassList.Any())
|
|
BantchSaveEntityNoCommit(shiftClassList);
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (!string.IsNullOrEmpty(ex.StackTrace))
|
|
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
|
|
else
|
|
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 触发设备设施维保计划
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("MaintenancePlanSync")]
|
|
public JsonActionResult<bool> MaintenancePlanSync([FromBody] KeywordFilter filter)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
try
|
|
{
|
|
var dtNow = DateTime.Now;
|
|
var month = dtNow.Month;
|
|
var day = dtNow.Day;
|
|
var time = dtNow.TimeOfDay;
|
|
var week = dtNow.DayOfWeek;
|
|
List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
|
|
List<T_DM_DEVICE_MAINTENANCE_PLAN> plans = new List<T_DM_DEVICE_MAINTENANCE_PLAN>();
|
|
List<T_DM_DEVICE_MAINTENANCE_PLAN_DETAIL> details = new List<T_DM_DEVICE_MAINTENANCE_PLAN_DETAIL>();
|
|
List<T_PT_TIME_SET> timeSetLists = new List<T_PT_TIME_SET>();
|
|
var timeSets = GetEntities<T_PT_TIME_SET>(i => i.ENABLE_STATUS == 0 && i.SET_TYPE == PTSetTypeEnum.MaintenancePlan,new BaseFilter(filter.OrgId));
|
|
if (timeSets != null && timeSets.Any())
|
|
{
|
|
foreach (var timeSet in timeSets)
|
|
{
|
|
switch (timeSet.PLANCHECKFREQUENCY)
|
|
{
|
|
//case BSPLANCHECKFREQUENCYEnum.OneTime:
|
|
case BSPLANCHECKFREQUENCYEnum.Year:
|
|
if (timeSet.MONTH == month && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.HalfYear:
|
|
if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day))
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Date:
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Week:
|
|
if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week)
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Month:
|
|
if (timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Quarter:
|
|
if (timeSet.MONTH == 1)
|
|
{
|
|
if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
}
|
|
if (timeSet.MONTH == 2)
|
|
{
|
|
if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
}
|
|
if (timeSet.MONTH == 3)
|
|
{
|
|
if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day)
|
|
timeSetLists.Add(timeSet);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (timeSetLists != null && timeSetLists.Any())
|
|
{
|
|
var minetypes = timeSetLists.Select(t => t.MineType).Distinct().ToList();
|
|
var departmentIds = timeSetLists.Select(t => t.DEPARTMENT_ID).Distinct().ToList();
|
|
//设备设施库
|
|
var deviceBases = this.GetEntities<T_DM_DEVICE_BASE>(t => minetypes.Contains(t.MineType) && t.DEVICE_STATUS == DMDeviceStatusEnum.使用中, new BaseFilter(filter.OrgId));
|
|
var userInfos = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && departmentIds.Contains(t.DEPARTMENT_ID), new BaseFilter(filter.OrgId),"Nav_Person");
|
|
//判断是否今天已经触发过
|
|
var planExists = this.GetEntities<T_DM_DEVICE_MAINTENANCE_PLAN>(t => minetypes.Contains(t.MineType) && t.CREATE_TIME >= dtNow.Date, new BaseFilter(filter.OrgId));
|
|
var sync = Guid.NewGuid();
|
|
foreach (var item in timeSetLists)
|
|
{
|
|
var user = userInfos.FirstOrDefault(t => t.DEPARTMENT_ID == item.DEPARTMENT_ID && t.Nav_Person!=null && t.Nav_Person.POST_ID == item.POST_ID);
|
|
var planExist = planExists.FirstOrDefault(t => t.MineType == item.MineType);
|
|
if (user != null && planExist == null)
|
|
{
|
|
//触发维保计划表
|
|
T_DM_DEVICE_MAINTENANCE_PLAN plan = new T_DM_DEVICE_MAINTENANCE_PLAN();
|
|
plan.ID = Guid.NewGuid();
|
|
plan.SYNC_ID = sync;
|
|
plan.ORG_ID = filter.OrgId;
|
|
plan.YEARPLAN = DateTime.Now.Year;
|
|
plan.DEPARTMENT_ID = user?.DEPARTMENT_ID;
|
|
plan.USER_ID = user?.ID;
|
|
plan.MineType = item.MineType;
|
|
plan.IS_RUN = 0;
|
|
plans.Add(plan);
|
|
//设备子表
|
|
var devices = deviceBases.Where(t => t.MineType == item.MineType).ToList();
|
|
if (devices != null && devices.Any())
|
|
{
|
|
foreach (var device in devices)
|
|
{
|
|
T_DM_DEVICE_MAINTENANCE_PLAN_DETAIL detail = new T_DM_DEVICE_MAINTENANCE_PLAN_DETAIL();
|
|
detail.ORG_ID = filter.OrgId;
|
|
detail.DEVICE_MAINTENANCE_PLAN_ID = plan.ID;
|
|
detail.DEVICEBASE_ID = device.ID;
|
|
detail.COUNT = device.QTY;
|
|
detail.SPEC = device.SPEC;
|
|
detail.POSITION = device.POSITION;
|
|
detail.DEPARTMENT_ID = plan.DEPARTMENT_ID;
|
|
detail.USER_ID = plan.USER_ID;
|
|
detail.RUNSETTIME = DateTime.Now.Date;
|
|
detail.PLANCHECKFREQUENCY = item.PLANCHECKFREQUENCY;
|
|
details.Add(detail);
|
|
}
|
|
}
|
|
//触发待办
|
|
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施维保年度计划表", plan.ID, plan.ORG_ID, user.ID, user.NAME, dtNow, dtNow.AddDays(1), 1, "DM008"));
|
|
|
|
}
|
|
}
|
|
}
|
|
UnifiedCommit(() =>
|
|
{
|
|
if (plans != null && plans.Any())
|
|
BantchSaveEntityNoCommit(plans);
|
|
if (details != null && details.Any())
|
|
BantchSaveEntityNoCommit(details);
|
|
if (sendNotices != null && sendNotices.Any())
|
|
BantchSaveEntityNoCommit(sendNotices);
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (!string.IsNullOrEmpty(ex.StackTrace))
|
|
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
|
|
else
|
|
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 触发设备设施维保记录
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("MaintenanceRecordSync")]
|
|
public JsonActionResult<bool> MaintenanceRecordSync([FromBody] KeywordFilter filter)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
try
|
|
{
|
|
var dtNow = DateTime.Now;
|
|
if (filter.Parameter1 != null)
|
|
{
|
|
dtNow = DateTime.Parse(filter.Parameter1);
|
|
}
|
|
var month = dtNow.Month;
|
|
var day = dtNow.Day;
|
|
var time = dtNow.TimeOfDay;
|
|
var week = dtNow.DayOfWeek;
|
|
List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
|
|
List<T_DM_DEVICE_MAINTENANCE_CHECK> records = new List<T_DM_DEVICE_MAINTENANCE_CHECK>();
|
|
List<T_DM_DEVICE_MAINTENANCE_PLAN_DETAIL> planDetails = new List<T_DM_DEVICE_MAINTENANCE_PLAN_DETAIL>();
|
|
List<T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL> details = new List<T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL>();
|
|
List<T_DM_DEVICE_MAINTENANCE_CHECK_FILE> files = new List<T_DM_DEVICE_MAINTENANCE_CHECK_FILE>();
|
|
var classFilter = new BaseFilter(filter.GetOrgId());
|
|
classFilter.IgnoreDataRule = true;
|
|
var plans = GetEntities<T_DM_DEVICE_MAINTENANCE_PLAN>(i => i.YEARPLAN == DateTime.Now.Year && i.STATUS_APPROVE == PFStandardStatus.Archived && i.IS_RUN == 0, classFilter, "Nav_PlanDetails", "Nav_PlanDetails.Nav_DeviceBase", "Nav_Files");
|
|
if (plans != null && dtNow.Hour == 8)
|
|
{
|
|
foreach (var item in plans)
|
|
{
|
|
if (item.Nav_PlanDetails != null && item.Nav_PlanDetails.Any())
|
|
{
|
|
foreach (var item2 in item.Nav_PlanDetails)
|
|
{
|
|
var checkTime = dtNow;
|
|
if (item2.RUNSETTIME == DateTime.Parse("0001-01-01 00:00:00"))
|
|
{
|
|
checkTime = item2.RUNSETTIME;
|
|
}
|
|
else
|
|
{
|
|
checkTime = item2.RUNSETTIME.AddDays(-3);
|
|
}
|
|
switch (item2.PLANCHECKFREQUENCY)
|
|
{
|
|
//case BSPLANCHECKFREQUENCYEnum.OneTime:
|
|
case BSPLANCHECKFREQUENCYEnum.Year:
|
|
if (checkTime.Month == month && checkTime.Day == day)
|
|
{
|
|
planDetails.Add(item2);
|
|
}
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.HalfYear:
|
|
if ((checkTime.Month == month && checkTime.Day == day) || ((checkTime.Month + 6) == month && (checkTime.Day + 183) == day))
|
|
{
|
|
planDetails.Add(item2);
|
|
}
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Date:
|
|
planDetails.Add(item2);
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Week:
|
|
if (checkTime.DayOfWeek == week)
|
|
{
|
|
planDetails.Add(item2);
|
|
}
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Month:
|
|
if (checkTime.Day == day)
|
|
{
|
|
planDetails.Add(item2);
|
|
}
|
|
break;
|
|
case BSPLANCHECKFREQUENCYEnum.Quarter:
|
|
if (checkTime.Month == 1)
|
|
{
|
|
if ((month == 1 || month == 4 || month == 7 || month == 10) && checkTime.Day == day)
|
|
{
|
|
planDetails.Add(item2);
|
|
}
|
|
}
|
|
if (checkTime.Month == 2)
|
|
{
|
|
if ((month == 2 || month == 5 || month == 8 || month == 11) && checkTime.Day == day)
|
|
{
|
|
planDetails.Add(item2);
|
|
}
|
|
}
|
|
if (checkTime.Month == 3)
|
|
{
|
|
if ((month == 3 || month == 6 || month == 9 || month == 12) && checkTime.Day == day)
|
|
{
|
|
planDetails.Add(item2);
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (planDetails!=null && planDetails.Any())
|
|
{
|
|
var planIds = planDetails.Select(t => t.DEVICE_MAINTENANCE_PLAN_ID).Distinct().ToList();
|
|
var planUserIds = planDetails.Select(t => t.USER_ID).Distinct().ToList();
|
|
var userInfos = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0 && planUserIds.Contains(t.ID), new BaseFilter(filter.OrgId));
|
|
if (planIds != null && planIds.Any())
|
|
{
|
|
foreach (var item in planIds)
|
|
{
|
|
//触发维保记录表
|
|
T_DM_DEVICE_MAINTENANCE_CHECK check = new T_DM_DEVICE_MAINTENANCE_CHECK();
|
|
check.ID = Guid.NewGuid();
|
|
check.ORG_ID = filter.OrgId;
|
|
check.CHECKDATETIME = dtNow;
|
|
check.CODE = "WB" + dtNow.ToString("yyyyMMddHHmmss");
|
|
check.NAME = "设备设施维保" + dtNow.ToString("MMdd");
|
|
check.STATUS_APPROVE = PFStandardStatus.Draft;
|
|
check.USER_ID = plans.FirstOrDefault(t=>t.ID == item)?.USER_ID;
|
|
check.DEVICE_MAINTENANCE_PLAN_ID = item;
|
|
records.Add(check);
|
|
var planFiles = plans.FirstOrDefault(t => t.ID == item);
|
|
if (planFiles!= null && planFiles.Nav_Files != null && planFiles.Nav_Files.Any())
|
|
{
|
|
foreach (var file in planFiles.Nav_Files)
|
|
{
|
|
T_DM_DEVICE_MAINTENANCE_CHECK_FILE tempFile = new T_DM_DEVICE_MAINTENANCE_CHECK_FILE();
|
|
tempFile.ORG_ID = filter.OrgId;
|
|
tempFile.IMG_FILE_ID = file.IMG_FILE_ID;
|
|
tempFile.DEVICE_MAINTENANCE_CHECK_ID = check.ID;
|
|
files.Add(tempFile);
|
|
}
|
|
}
|
|
//设备维保记录子表
|
|
var planTemps = planDetails.Where(t => t.DEVICE_MAINTENANCE_PLAN_ID == item).ToList();
|
|
if (planTemps != null && planTemps.Any())
|
|
{
|
|
foreach (var device in planTemps)
|
|
{
|
|
T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL detail = new T_DM_DEVICE_MAINTENANCE_CHECK_DETAIL();
|
|
detail.ORG_ID = filter.OrgId;
|
|
detail.PLANID = (Guid)item;
|
|
detail.CHECK_ID = check.ID;
|
|
detail.DEVICEBASE_ID = device.DEVICEBASE_ID;
|
|
detail.MACHINE_NAME = device?.Nav_DeviceBase?.NAME;
|
|
detail.SPEC = device.SPEC;
|
|
detail.POSITION = device.POSITION;
|
|
detail.COUNT = device.COUNT;
|
|
details.Add(detail);
|
|
}
|
|
}
|
|
//触发待办
|
|
var userName = userInfos.FirstOrDefault(t => t.ID == check.USER_ID)?.NAME;
|
|
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施维保记录表", check.ID, check.ORG_ID, check.USER_ID.Value, userName, dtNow, dtNow.AddDays(1), 1, "DM030"));
|
|
}
|
|
plans.Where(m => planIds.Contains(m.ID)).ForEach(o => { o.IS_RUN = 1; });
|
|
}
|
|
}
|
|
UnifiedCommit(() =>
|
|
{
|
|
if (records != null && records.Any())
|
|
BantchSaveEntityNoCommit(records);
|
|
if (details != null && details.Any())
|
|
BantchSaveEntityNoCommit(details);
|
|
if (sendNotices != null && sendNotices.Any())
|
|
BantchSaveEntityNoCommit(sendNotices);
|
|
if (plans != null && plans.Any())
|
|
BantchSaveEntityNoCommit(plans);
|
|
if (files != null && files.Any())
|
|
BantchSaveEntityNoCommit(files);
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (!string.IsNullOrEmpty(ex.StackTrace))
|
|
throw new Exception("错误日志:[StackTrace]" + ex.StackTrace);
|
|
else
|
|
throw new Exception("【" + HttpContext.Request.Path + "】错误日志:[Message]" + ex.Message);
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
#endregion
|
|
}
|
|
}
|