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.AE; 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/DMDeviceMaintenanceCheck")] public class DMDeviceMaintenanceCheckController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } IFMFlowPermitService MFlowPermitService { get; set; } public DMDeviceMaintenanceCheckController(IFMNotificationTaskService notificationTaskService, IPFApproveCallBackService approveCallBackService, IFMFlowPermitService mflowPermitService) { NotificationTaskService = notificationTaskService; ApproveCallBackService = approveCallBackService; MFlowPermitService = mflowPermitService; } /// /// 设备设施维保计划 修改 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_DM_DEVICE_MAINTENANCE_CHECK entity) { return SafeExecute(() => { var ListUser = entity.Nav_ListUser; entity.Nav_ListUser = null; var ListDetail = entity.Nav_ListDetail; entity.Nav_ListDetail = null; T_FM_NOTIFICATION_TASK task = null; List listTask = null; if (entity.STATUS_APPROVE != PFStandardStatus.Draft) { int rowIndex = 1; foreach (var item in ListDetail) { if (item.Result == null) { throw new Exception("请填写行:【" + rowIndex + "】的维保情况!"); } rowIndex++; } if (entity.TaskID != Guid.Empty) { task = NotificationTaskService.GetEntityTask(entity.TaskID, "DM030_SHOWPRINT"); } //给其余人 确认 List UserId = new List(); List userName = new List(); foreach (var item in ListUser) { if (item.USER_ID != APT.Infrastructure.Api.AppContext.CurrentSession.UserID) { UserId.Add(item.USER_ID); userName.Add(item.Nav_User.NAME); } } listTask = NotificationTaskService.InsertUserNoticeTaskModels("设备设施维保确认", entity.ID, entity.ORG_ID, UserId, userName, DateTime.Now, DateTime.Now.AddDays(1), 1, "DM030_SHOWPRINT"); } this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); if (task != null) UpdateEntityNoCommit(task); if (ListDetail != null)//结束待办 BantchSaveEntityNoCommit(ListDetail); if (listTask != null && listTask.Any())//结束待办 BantchSaveEntityNoCommit(listTask); }); return true; }); } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("GetShow")] public JsonActionResult Get([FromBody] KeywordFilter filter) { return SafeExecute(() => { var check = GetEntity(null, filter, null); if (check != null && check.STATUS_APPROVE == PFStandardStatus.Draft) { check.CHECKDATETIME = DateTime.Now; } if (check.Nav_ListUser != null && check.Nav_ListUser.Any()) { check.Nav_ListUser = check.Nav_ListUser.OrderByDescending(e => e.ISMAIN).ToList(); } return check; }); } /// /// 点检人 确认 /// [HttpPost, Route("Check")] public JsonActionResult Check([FromBody] KeywordFilter filter) { return SafeExecute(() => { 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; T_DM_DEVICE_MAINTENANCE_CHECK check = null; var CheckUser = GetEntity(e => e.USER_ID == loginID && e.CHECK_ID == guid); if (CheckUser == null) { //记录人 上级 确认 this.UnifiedCommit(() => { if (task != null) UpdateEntityNoCommit(task); }); throw new Exception("未找到需要您确认的信息!"); } else if (CheckUser.ISCHECK) { this.UnifiedCommit(() => { if (task != null) UpdateEntityNoCommit(task); }); throw new Exception("您已审阅,无需再次操作!"); } else { CheckUser.ISCHECK = true; CheckUser.CHECKTIME = DateTime.Now; var UnCheck = GetEntity(e => e.USER_ID != loginID && e.CHECK_ID == guid && !e.ISCHECK); List ListTask = null; if (UnCheck == null) { //check = GetEntity(guid, "Nav_ListDetail.Nav_DeviceBase.Nav_User"); check = GetEntity(guid, "Nav_User"); check.STATUS_APPROVE = PFStandardStatus.Approving; //设备设施库 管理责任人员审阅 //List listUserId = new List(); //List listUserName = new List(); //foreach (var item in check.Nav_ListDetail) //{ // if (item.Nav_DeviceBase.USER_ID.HasValue && !listUserId.Contains(item.Nav_DeviceBase.USER_ID.Value)) // { // listUserId.Add(item.Nav_DeviceBase.USER_ID.Value); // listUserName.Add(item.Nav_DeviceBase.Nav_User.NAME); // } //} if (check.USER_ID.HasValue) { //listUserId.Add(check.USER_ID.Value); //listUserName.Add(check.Nav_User.NAME); //ListTask = NotificationTaskService.InsertUserNoticeTaskModels("设备设施维保确认", guid, CheckUser.ORG_ID, listUserId, listUserName, DateTime.Now, DateTime.Now.AddDays(1), 1, "DM030_SHOWPRINT"); //添加 审批流 check.APPROVE_ID = Guid.NewGuid(); Dictionary dicApproveUser = new Dictionary(); dicApproveUser.Add(1, check.Nav_User); MFlowPermitService.InsertApprove("WB" + DateTime.Now.ToString("yyyyMMddHHmmss"), "DM030", null, check.ID, "DM030_SHOWPRINT", null, true, () => { if (task != null) UpdateEntityNoCommit(task); if (CheckUser != null) UpdateEntityNoCommit(CheckUser); if (ListTask != null && ListTask.Any())//给设备管理员 发送审阅 BantchSaveEntityNoCommit(ListTask); if (check != null)//状态修改 UpdateEntityNoCommit(check); }, check.APPROVE_ID, null, dicApproveUser, null, null, "DM030_SHOWPRINT"); } else { check.STATUS_APPROVE = PFStandardStatus.Archived;//如果没有找到负责人 this.UnifiedCommit(() => { if (task != null) UpdateEntityNoCommit(task); if (CheckUser != null) UpdateEntityNoCommit(CheckUser); if (ListTask != null && ListTask.Any())//给设备管理员 发送审阅 BantchSaveEntityNoCommit(ListTask); if (check != null)//状态修改 UpdateEntityNoCommit(check); }); } } else { //还有别人未 确认 this.UnifiedCommit(() => { if (task != null) UpdateEntityNoCommit(task); if (CheckUser != null) UpdateEntityNoCommit(CheckUser); if (ListTask != null && ListTask.Any())//给设备管理员 发送审阅 BantchSaveEntityNoCommit(ListTask); if (check != null)//状态修改 UpdateEntityNoCommit(check); }); } } return true; }); } /// /// 回调函数 /// /// /// [HttpGet, Route("Audit")] public JsonActionResult Audit(string id) { return SafeExecute(() => { return ApproveCallBackService.CallBack("DM/DMDeviceMaintenanceCheck/Audit", id); }); } } }