mh_sms/APT.MicroApi/APT.SC.WebApi/Controllers/Api/DMController/DMDeviceCheckController.cs

277 lines
12 KiB
C#
Raw Normal View History

2024-01-22 09:17:01 +08:00
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.DM;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace APT.SC.WebApi.Controllers.Api.DM
{
[Route("api/DM/DMDeviceCheck")]
public class DMDeviceCheckController : AuthorizeApiController<T_DM_DEVICE_CHECK>
{
IFMNotificationTaskService NotificationTaskService { get; set; }
public DMDeviceCheckController(IFMNotificationTaskService notificationTaskService)
{
NotificationTaskService = notificationTaskService;
}
/// <summary>
/// 设备设施维保计划 修改
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<bool> FullUpdate([FromBody] T_DM_DEVICE_CHECK entity)
{
return SafeExecute<bool>(() =>
{
var ListDetail = entity.Nav_ListDetail;
entity.Nav_ListDetail = null;
T_FM_NOTIFICATION_TASK taskEnd = null;
List<T_FM_NOTIFICATION_TASK> listTaskCheck = null;
var files = entity.Nav_Files;
entity.Nav_Files = null;
if (ListDetail == null)
{
throw new Exception(entity.CHECKTYPE.GetDescription() + "明细不能未空!");
}
if (entity.STATUS != PFStandardStatus.Draft)
{
int RowIndex = 1;
foreach (var item in ListDetail)
{
if (item.CHECK_VALUE == null)
{
throw new Exception("请选择行:" + RowIndex + "检查结论!");
}
//else if ((item.CHECK_VALUE.Value == CheckResult.CheckWork || item.CHECK_VALUE.Value == CheckResult.CheckStop) && string.IsNullOrEmpty(item.DESCRIPTION))
else if (item.CHECK_VALUE.Value == CheckResult.NotOK && string.IsNullOrEmpty(item.DESCRIPTION))
{
throw new Exception("请填写子表行:【" + RowIndex + "】的问题描述!");
}
RowIndex++;
}
if (entity.TaskID != Guid.Empty)
{
//taskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "DM010_SHOWPRINT");
taskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, (entity.CHECKTYPE == CheckType.CheckCircuit ? "DM032_SHOWPRINT" : "DM010_SHOWPRINT"));
}
//给其他人 发送待办 确认
var listUser = GetEntities<T_DM_DEVICE_CHECK_USER>(e => e.CHECK_ID == entity.ID && !e.ISMAIN, null, "Nav_User");
if (listUser == null || !listUser.Any())
{
//没有 别的检查人
entity.STATUS = PFStandardStatus.Archived;
}
else
{
List<Guid> UserId = new List<Guid>();
List<string> userName = new List<string>();
foreach (var item in listUser)
{
UserId.Add(item.USER_ID);
userName.Add(item.Nav_User.NAME);
}
//listTaskCheck = NotificationTaskService.InsertUserNoticeTaskModels((entity.CHECKTYPE == CheckType.CheckCircuit ? "设备巡检" : "设备点检") + "确认" + (entity.CREATE_TIME.HasValue ? entity.CREATE_TIME.Value.ToString("MMdd") : ""), entity.ID, entity.ORG_ID, UserId, userName, DateTime.Now, DateTime.Now.AddDays(1), 1, "DM010_SHOWPRINT");
listTaskCheck = NotificationTaskService.InsertUserNoticeTaskModels((entity.CHECKTYPE == CheckType.CheckCircuit ? "设备设施巡检" : "设备设施点检") + "确认" + (entity.CREATE_TIME.HasValue ? entity.CREATE_TIME.Value.ToString("MMdd") : ""), entity.ID, entity.ORG_ID, UserId, userName, DateTime.Now, DateTime.Now.AddDays(1), 1, (entity.CHECKTYPE == CheckType.CheckCircuit ? "DM032_SHOWPRINT" : "DM010_SHOWPRINT"));
}
}
this.UnifiedCommit(() =>
{
if (entity != null)
UpdateEntityNoCommit(entity);
if (files != null)
BantchSaveEntityNoCommit(files);
if (taskEnd != null)//结束待办
UpdateEntityNoCommit(taskEnd);
if (ListDetail != null && ListDetail.Any())//检查明细
BantchSaveEntityNoCommit(ListDetail);
if (listTaskCheck != null && listTaskCheck.Any())//检查明细
BantchSaveEntityNoCommit(listTaskCheck);
});
return true;
});
}
/// <summary>
/// 点检人 确认
/// </summary>
[HttpPost, Route("Check")]
public JsonActionResult<bool> Check([FromBody] KeywordFilter filter)
{
return SafeExecute<bool>(() =>
{
if (string.IsNullOrEmpty(filter.Keyword) || string.IsNullOrEmpty(filter.Parameter1))
{
throw new Exception("传参有误!");
}
var guid = new Guid(filter.Keyword);
var taskID = new Guid(filter.Parameter1);
if (guid == Guid.Empty || taskID == Guid.Empty)
{
throw new Exception("传参有误!");
}
var task = NotificationTaskService.GetEntityTask(taskID);
var loginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var Check = GetEntity<T_DM_DEVICE_CHECK_USER>(e => e.USER_ID == loginID && e.CHECK_ID == guid, "Nav_Check");
if (Check == null)
{
var DeviceCheck = GetEntity<T_DM_DEVICE_CHECK>(e => e.ID == guid); DeviceCheck.STATUS = PFStandardStatus.Archived;//状态修改
//记录人 上级 确认
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);
if (DeviceCheck != null)
UpdateEntityNoCommit(DeviceCheck);
});
}
else if (Check.ISCHECK)
{
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);
});
throw new Exception("您已审阅,无需再次操作!");
}
else
{
Check.ISCHECK = true;
var UnCheck = GetEntity<T_DM_DEVICE_CHECK_USER>(e => e.USER_ID != loginID && e.CHECK_ID == guid && !e.ISCHECK);
T_FM_NOTIFICATION_TASK taskMaster = null;
if (UnCheck == null)
{
//最后一个确认 记录人的 上级 确认
Guid UserId = Guid.Empty;
string userName = string.Empty;
Guid DEPID = Guid.Empty;
var CheckMain = GetEntity<T_DM_DEVICE_CHECK_USER>(e => e.CHECK_ID == guid && e.ISMAIN, "Nav_User.Nav_Department");
if (CheckMain.Nav_User.Nav_Department.USER_ID != CheckMain.USER_ID)
{
if (CheckMain.Nav_User.Nav_Department.USER_ID.HasValue)
{
UserId = CheckMain.Nav_User.Nav_Department.USER_ID.Value;
}
else
{
DEPID = CheckMain.Nav_User.DEPARTMENT_ID.Value;
}
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(CheckMain.Nav_User.Nav_Department.PARENT_ID.Value);
if (dep.USER_ID.HasValue)
{
UserId = dep.USER_ID.Value;
}
else
{
DEPID = dep.ID;
}
}
if (UserId != Guid.Empty)
{
userName = GetEntity<T_FM_USER>(UserId).NAME;
}
else
{
//先不管
}
if (UserId != Guid.Empty)
{
if (UserId == loginID)
{
//自己就是 填表人的 上级 不发送待办
}
else
{
taskMaster = NotificationTaskService.InsertUserNoticeTaskModel((Check.Nav_Check.CHECKTYPE == CheckType.CheckCircuit ? "设备巡检" : "设备点检") + "确认", CheckMain.CHECK_ID, CheckMain.ORG_ID, UserId, userName, DateTime.Now, DateTime.Now.AddDays(1), 1, (Check.Nav_Check.CHECKTYPE == CheckType.CheckCircuit ? "DM032_SHOWPRINT" : "DM010_SHOWPRINT"));
}
}
}
//还有别人未 确认
this.UnifiedCommit(() =>
{
if (task != null)
UpdateEntityNoCommit(task);
if (Check != null)
UpdateEntityNoCommit(Check);
if (taskMaster != null)
UpdateEntityNoCommit(taskMaster);
});
}
return true;
});
}
/// <summary>
/// 排序分页查询数据
/// </summary>
/// <param name="pageFilter">分页过滤实体</param>
/// <returns></returns>
[HttpPost, Route("OrderPagedSuit")]
public PagedActionResult<T_DM_DEVICE_CHECK> OrderPaged([FromBody] KeywordPageFilter pageFilter)
{
return SafeGetPagedData(delegate (PagedActionResult<T_DM_DEVICE_CHECK> result)
{
if (!string.IsNullOrEmpty(pageFilter.MenuParameter) && pageFilter.MenuParameter.Contains("="))
{
var listParm = pageFilter.MenuParameter.Split("=");
pageFilter.FilterGroup.Rules.Add(new FilterRule()
{
Field = listParm[0],
Value = listParm[1]
});
}
PagedActionResult<T_DM_DEVICE_CHECK> orderPageEntities = GetOrderPageEntities<T_DM_DEVICE_CHECK>(null, pageFilter, null);
result.Data = orderPageEntities.Data;
result.TotalCount = orderPageEntities.TotalCount;
});
}
/// <summary>
/// 获得单条实体数据
/// </summary>
/// <param name="filter">过滤实体</param>
/// <returns></returns>
[HttpPost, Route("GetSuit")]
public JsonActionResult<T_DM_DEVICE_CHECK> GetSuit([FromBody] KeywordFilter filter)
{
return SafeExecute(() =>
{
var result = GetEntity<T_DM_DEVICE_CHECK>(null, filter, null);
if (result.Nav_ListUser != null && result.Nav_ListUser.Any())
{
result.Nav_ListUser = result.Nav_ListUser.OrderByDescending(e => e.ISMAIN).ToList();
}
return result;
});
}
}
}