mh_sms/APT.MicroApi/APT.PP.WebApi/Controllers/Api/DMController.cs

821 lines
41 KiB
C#
Raw Normal View History

2024-01-22 09:17:01 +08:00
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 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>(() =>
{
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);
return true;
});
}
#region HMR
/// <summary>
/// 触发设备设施检测检验
/// </summary>
/// <returns></returns>
[HttpPost, Route("InspectionSync")]
public JsonActionResult<bool> InspectionSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
var dtNow = DateTime.Now;
var month = dtNow.Month;
var day = dtNow.Day;
var time = dtNow.TimeOfDay;
var week = dtNow.DayOfWeek;
bool isSend = false;
List<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
T_DM_DETECTION_INSPECTION_RECORD record = null;
var newFilter = new BaseFilter(filter.OrgId);
newFilter.SelectField = new List<string> { "PLANCHECKFREQUENCY", "MONTH", "DATA", "WEEKDATA", "RUNSETTIME" };
var timeSet = GetEntity<T_PT_TIME_SET>(i => i.SET_TYPE == PTSetTypeEnum.Inspection, newFilter);
if (timeSet != null)
{
switch (timeSet.PLANCHECKFREQUENCY)
{
//case BSPLANCHECKFREQUENCYEnum.OneTime:
case BSPLANCHECKFREQUENCYEnum.Year:
if (timeSet.MONTH == month && timeSet.DATA == day)
isSend = true;
break;
case BSPLANCHECKFREQUENCYEnum.HalfYear:
if ((timeSet.MONTH == month && timeSet.DATA == day) || ((timeSet.MONTH + 6) == month && (timeSet.DATA + 183) == day))
isSend = true;
break;
case BSPLANCHECKFREQUENCYEnum.Date:
isSend = true;
break;
case BSPLANCHECKFREQUENCYEnum.Week:
if (timeSet.WEEKDATA != null && (int)timeSet.WEEKDATA.Value == (int)week)
isSend = true;
break;
case BSPLANCHECKFREQUENCYEnum.Month:
if (timeSet.DATA == day)
isSend = true;
break;
case BSPLANCHECKFREQUENCYEnum.Quarter:
if (timeSet.MONTH == 1)
{
if ((month == 1 || month == 4 || month == 7 || month == 10) && timeSet.DATA == day)
isSend = true;
}
if (timeSet.MONTH == 2)
{
if ((month == 2 || month == 5 || month == 8 || month == 11) && timeSet.DATA == day)
isSend = true;
}
if (timeSet.MONTH == 3)
{
if ((month == 3 || month == 6 || month == 9 || month == 12) && timeSet.DATA == day)
isSend = true;
}
break;
default:
break;
}
}
if (isSend)
{
var userInfo = this.GetEntity<T_FM_PARAM_SET>(t => t.NAME == "检测检验责任人", "Nav_User");
if (userInfo != null)
{
record = new T_DM_DETECTION_INSPECTION_RECORD();
record.ORG_ID = userInfo.ORG_ID;
record.STATUS = PFStandardStatus.Draft;
record.TIME = DateTime.Now;
record.RESULT = DMInspectionResultEnum.;
record.USER_ID = userInfo.USER_ID;
var user = this.GetEntity<T_FM_USER>(t => t.ID == userInfo.USER_ID);
record.DEPARTMENT_ID = user?.DEPARTMENT_ID;
sendNotices.Add(NotificationTaskService.InsertUserNoticeTaskModel("设备设施检测检验记录", record.ID, filter.GetOrgId(), userInfo.USER_ID.Value, userInfo.Nav_User.NAME, DateTime.Now, DateTime.Now.AddDays(30), (int)FMNoticeTypeEnum., "DM012"));
}
}
UnifiedCommit(() =>
{
if (record != null)
UpdateEntityNoCommit(record);
if (sendNotices != null && sendNotices.Any())
BantchSaveEntityNoCommit(sendNotices);
});
return true;
});
}
/// <summary>
/// 触发设备设施归还记录
/// </summary>
/// <returns></returns>
[HttpPost, Route("DeviceReturnSync")]
public JsonActionResult<bool> DeviceReturnSync([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
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);
});
return true;
});
}
#endregion
}
}