554 lines
25 KiB
C#
554 lines
25 KiB
C#
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;
|
|
using APT.BaseData.Domain.IServices.FM;
|
|
using APT.Infrastructure.Core;
|
|
using APT.MS.Domain.Entities.TL;
|
|
using APT.MS.Domain.Enums;
|
|
using APT.Utility;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace APT.SC.WebApi.Controllers.Api.SC
|
|
{
|
|
[Route("api/TL/TLWatchDayly")]
|
|
public class TLWatchDaylyController : AuthorizeApiController<T_TL_WATCH_DAYLY>
|
|
{
|
|
IFMFlowPermitService MFlowPermitService { get; set; }
|
|
IFMNotificationTaskService NotificationTaskService { get; set; }
|
|
IPFApproveCallBackService ApproveCallBackService { get; set; }
|
|
public TLWatchDaylyController(IFMFlowPermitService mFlowPermitService, IFMNotificationTaskService notificationTaskService, IPFApproveCallBackService approveCallBackService)
|
|
{
|
|
MFlowPermitService = mFlowPermitService;
|
|
NotificationTaskService = notificationTaskService;
|
|
ApproveCallBackService = approveCallBackService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 日常观测记录
|
|
/// 保存 即保存
|
|
/// 保存并发送 需要观测人确认 确认完 走审批流
|
|
/// 不需要确认
|
|
/// 如果有配置审批流 直接走审批流
|
|
/// 否则归档
|
|
/// </summary>
|
|
/// <param name="entity"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("FullUpdate")]
|
|
public JsonActionResult<bool> FullUpdate([FromBody] T_TL_WATCH_DAYLY entity)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
T_FM_NOTIFICATION_TASK taskDo = null;
|
|
List<Guid> listTaskRemoveID = null; //只要有一个人操作了 检测待办 其余 删除 同一个 SOURCE_DATA_ID TL037
|
|
var loginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
|
|
|
|
#region 代办处理
|
|
|
|
if (!loginID.HasValue)
|
|
{
|
|
throw new Exception("获取您的登录信息失败,请重新登录后再操作!");
|
|
}
|
|
if ((entity.CREATE_TIME == null || (entity.CREATE_TIME.Value - DateTime.Now).TotalHours < 1) && entity.SUM_ID == Guid.Empty && entity.TaskID == Guid.Empty)
|
|
{
|
|
//判断为新增 无需任何处理
|
|
}
|
|
else if (entity.USER_ID.HasValue)
|
|
{
|
|
if (entity.USER_ID.Value != loginID)
|
|
{
|
|
var userSend = GetEntity<T_FM_USER>(entity.USER_ID.Value);
|
|
if (userSend != null)
|
|
{
|
|
throw new Exception("您不是【" + userSend.NAME + "】无权限操作此单!");
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("您无权限操作此单!");
|
|
}
|
|
}
|
|
}
|
|
else if (entity.TaskID == Guid.Empty)
|
|
{
|
|
var listTaskTemp = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID.Value == entity.ID && e.SOURCE_FORMCODE == "TL041", null, null);
|
|
|
|
if (listTaskTemp != null && listTaskTemp.Any())
|
|
{
|
|
taskDo = listTaskTemp.FirstOrDefault(e => e.USER_ID == loginID.Value);
|
|
if (taskDo == null)
|
|
{
|
|
var listUserName = listTaskTemp.Where(e => e.USER_ID != loginID).Select(e => e.USER_NAME);
|
|
if (listUserName == null)
|
|
{
|
|
throw new Exception("您无权限操作此单!");
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("您不是【" + String.Join(",", listUserName) + "】无权限操作此单!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
listTaskRemoveID = listTaskTemp.Where(e => e.USER_ID != loginID.Value).Select(e => e.ID).ToList();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
taskDo = GetEntity<T_FM_NOTIFICATION_TASK>(entity.TaskID, null);
|
|
if (taskDo == null)
|
|
{
|
|
throw new Exception("该日常观测已处理,您无需再次处理!");
|
|
}
|
|
else
|
|
{
|
|
var listTaskTemp = GetEntities<T_FM_NOTIFICATION_TASK>(e => e.SOURCE_DATA_ID.HasValue && e.SOURCE_DATA_ID.Value == taskDo.SOURCE_DATA_ID.Value && e.ID != taskDo.ID && e.SOURCE_FORMCODE == "TL037", null, null);
|
|
if (listTaskTemp != null && listTaskTemp.Any())
|
|
{
|
|
listTaskRemoveID = listTaskTemp.Select(e => e.ID).ToList();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
var liatDetail = entity.Nav_ListDetail;//明细
|
|
entity.Nav_ListDetail = null;
|
|
entity.DATE = entity.DATETIME.Value.Date;
|
|
var listUsers = entity.Nav_ListUser;
|
|
entity.Nav_ListUser = null;
|
|
|
|
if (!entity.USER_ID.HasValue || entity.USER_ID == Guid.Empty)
|
|
{
|
|
entity.USER_ID = loginID.Value;
|
|
entity.DEPARTMENT_ID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
|
|
}
|
|
if (entity.USER_ID != loginID.Value)
|
|
{
|
|
throw new Exception("只能操作自己提交的记录!");
|
|
}
|
|
|
|
T_TL_WATCH_SUM sum = null;
|
|
if (entity.SUM_ID == Guid.Empty)
|
|
{
|
|
sum = GetEntity<T_TL_WATCH_SUM>(e => e.DATE == DateTime.Now.Date);
|
|
if (sum == null)
|
|
{
|
|
sum = new T_TL_WATCH_SUM();
|
|
sum.ID = Guid.NewGuid();
|
|
sum.ORG_ID = entity.ORG_ID;
|
|
sum.DATE = DateTime.Now.Date;
|
|
sum.TAILING_NAME = entity.TAILING_NAME;
|
|
sum.TAILING_ID = entity.TAILING_ID;
|
|
}
|
|
entity.SUM_ID = sum.ID;
|
|
}
|
|
|
|
if (entity.STATUS == PFStandardStatus.Approving)
|
|
{
|
|
if (entity.DATE.Date > DateTime.Now.Date)
|
|
{
|
|
throw new Exception("日期不能大于今天【" + DateTime.Now.ToString("yyyy-MM-dd") + "】!");
|
|
}
|
|
if (liatDetail == null || !liatDetail.Any())
|
|
{
|
|
throw new Exception("日常观测明细不能为空!");
|
|
}
|
|
|
|
//taskDo = GetEntity<T_FM_NOTIFICATION_TASK>(entity.TaskID, null);
|
|
if (taskDo != null)
|
|
{
|
|
//操作待办处理
|
|
taskDo.TASK_DT = DateTime.Now;
|
|
taskDo.SOURCE_FORMCODE = "TL037_SHOWPRINT";
|
|
if (taskDo.TASK_ENDDT >= taskDo.TASK_DT)
|
|
taskDo.NOTICE_STATUS = (int)FMNoticeStatusEnum.正常已办;
|
|
else
|
|
taskDo.NOTICE_STATUS = (int)FMNoticeStatusEnum.超期办理;
|
|
}
|
|
}
|
|
List<Guid> listUserID = null;
|
|
//List<T_TL_WATCH_DAYLY_DETAIL_USER> listUsers = null;//观测人
|
|
//List<T_TL_WATCH_DAYLY_DETAIL_USER> listUserTemp = null;//观测人
|
|
if (liatDetail != null && liatDetail.Any())
|
|
{
|
|
int rowIndex = 0;
|
|
foreach (var item in liatDetail)
|
|
{
|
|
#region 数据填充
|
|
if (entity.TAILING_ID != Guid.Empty)
|
|
{
|
|
item.TAILING_ID = entity.TAILING_ID;
|
|
}
|
|
if (string.IsNullOrEmpty(item.TAILING_NAME) && !string.IsNullOrEmpty(entity.TAILING_NAME))
|
|
{
|
|
item.TAILING_NAME = entity.TAILING_NAME;
|
|
}
|
|
|
|
item.DATE = entity.DATETIME;
|
|
item.DAYLY_ID = entity.ID;
|
|
item.SUM_ID = entity.SUM_ID;
|
|
|
|
#endregion
|
|
rowIndex++;
|
|
if (entity.STATUS != PFStandardStatus.Approving)
|
|
{
|
|
continue;
|
|
}
|
|
if (!item.IS_DELETED && !item.ITEM_VALUE.HasValue)
|
|
{
|
|
throw new Exception("观测项行【" + rowIndex + "】不能为空!");
|
|
}
|
|
|
|
//if (item.DATE == DateTime.MinValue)
|
|
//{
|
|
// throw new Exception("观测日期行【" + rowIndex + "】不能为空!");
|
|
//}
|
|
//if (!item.LONG.HasValue)
|
|
//{
|
|
// throw new Exception("干滩长度/m行【" + rowIndex + "】不能为空!");
|
|
//}
|
|
//if (!item.WATERLINE.HasValue)
|
|
//{
|
|
// throw new Exception("库水位/m行【" + rowIndex + "】不能为空!");
|
|
//}
|
|
//if (!item.DREEP.HasValue)
|
|
//{
|
|
// throw new Exception("降雨量/mm行【" + rowIndex + "】不能为空!");
|
|
//}
|
|
//if (!item.HIGHTEST.HasValue)
|
|
//{
|
|
// throw new Exception("滩顶高程行【" + rowIndex + "】不能为空!");
|
|
//}
|
|
//if (!item.HIGHT_MORE.HasValue)
|
|
//{
|
|
// throw new Exception("安全超高行【" + rowIndex + "】不能为空!");
|
|
//}
|
|
//if (item.Nav_ListUser == null || !item.Nav_ListUser.Any())
|
|
//{
|
|
// throw new Exception("观测人员行【" + rowIndex + "】不能为空!");
|
|
//}
|
|
}
|
|
}
|
|
|
|
|
|
if (listUsers != null && listUsers.Any())
|
|
{
|
|
foreach (var itemWatch in listUsers)
|
|
{
|
|
if (itemWatch.USER_ID == entity.USER_ID)
|
|
{
|
|
itemWatch.ISCHECK = true;
|
|
}
|
|
else
|
|
{
|
|
itemWatch.ISCHECK = false;
|
|
}
|
|
}
|
|
if (entity.STATUS == PFStandardStatus.Approving && listUsers.Count() > 0)
|
|
{
|
|
if (listUserID == null)
|
|
{
|
|
listUserID = new List<Guid>();
|
|
}
|
|
foreach (var itemUser in listUsers)
|
|
{
|
|
if (itemUser.USER_ID != entity.USER_ID && !listUserID.Contains(itemUser.USER_ID) && !itemUser.IS_DELETED)
|
|
{
|
|
listUserID.Add(itemUser.USER_ID);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
List<T_FM_NOTIFICATION_TASK> listTask = null;
|
|
//发送 确认单 待办
|
|
if (listUserID != null && listUserID.Any())
|
|
{
|
|
//接收确认 待办
|
|
List<T_FM_USER> listUserSend = GetEntities<T_FM_USER>(e => listUserID.Contains(e.ID), null, null).ToList();
|
|
entity.STATUS = PFStandardStatus.Sign;
|
|
List<Guid> listSendUserID = new List<Guid>();
|
|
List<string> listSendUserNAME = new List<string>();
|
|
foreach (var item in listUserSend)
|
|
{
|
|
listSendUserID.Add(item.ID);
|
|
listSendUserNAME.Add(item.NAME);
|
|
}
|
|
listTask = NotificationTaskService.InsertUserNoticeTaskModels("尾矿库日常观测记录确认-" + entity.DATE.ToString("MMdd"), entity.ID, entity.ORG_ID, listSendUserID, listSendUserNAME, DateTime.Now, 0, "TL037_SHOWPRINT", FMTASKTYPE.Default);
|
|
}
|
|
|
|
|
|
bool isApprove = false;
|
|
if (entity.STATUS == PFStandardStatus.Approving)
|
|
{
|
|
var approveTemp = GetEntity<T_PF_APPROVE_TEMP>(e => e.CODE == "TL037");
|
|
if (approveTemp != null)
|
|
{
|
|
isApprove = true;
|
|
}
|
|
}
|
|
if (listUsers != null && listUsers.Any())
|
|
{
|
|
foreach (var item in listUsers)
|
|
{
|
|
item.Nav_User = null;
|
|
}
|
|
}
|
|
if (isApprove)
|
|
{
|
|
MFlowPermitService.InsertApprove(DateTime.Now.ToString("yyyyMMddHHmmss"), "TL037", null, entity.ID, "TL037_SHOWPRINT", null, true, () =>
|
|
{
|
|
if (sum != null)
|
|
UpdateEntityNoCommit(sum);
|
|
if (entity != null)//待办信息主题保存
|
|
UpdateEntityNoCommit(entity);
|
|
if (liatDetail != null && liatDetail.Any())//明细
|
|
BantchSaveEntityNoCommit(liatDetail);
|
|
if (listUsers != null && listUsers.Any())//观测人
|
|
BantchSaveEntityNoCommit(listUsers);
|
|
|
|
if (entity.STATUS != PFStandardStatus.Draft && taskDo != null)//检测记录待办删除
|
|
UpdateEntityNoCommit(taskDo);
|
|
if (listTaskRemoveID != null && listTaskRemoveID.Any())//同部门岗位人员检测待办 删除
|
|
BantchDeleteEntity<T_FM_NOTIFICATION_TASK>(listTaskRemoveID);
|
|
if (listTask != null && listTask.Any())//多检测人添加确认待办
|
|
BantchSaveEntityNoCommit(listTask);
|
|
}, null, null, null, null, null, "TL037_SHOWPRINT", null, null, FMTASKTYPE.Default);
|
|
}
|
|
else
|
|
{
|
|
this.UnifiedCommit(() =>
|
|
{
|
|
if (sum != null)
|
|
UpdateEntityNoCommit(sum);
|
|
if (entity != null)//待办信息主题保存
|
|
UpdateEntityNoCommit(entity);
|
|
if (liatDetail != null && liatDetail.Any())//明细
|
|
BantchSaveEntityNoCommit(liatDetail);
|
|
if (listUsers != null && listUsers.Any())//观测人
|
|
BantchSaveEntityNoCommit(listUsers);
|
|
|
|
if (entity.STATUS != PFStandardStatus.Draft && taskDo != null)//检测记录待办删除
|
|
UpdateEntityNoCommit(taskDo);
|
|
if (listTaskRemoveID != null && listTaskRemoveID.Any())//同部门岗位人员检测待办 删除
|
|
BantchDeleteEntity<T_FM_NOTIFICATION_TASK>(listTaskRemoveID);
|
|
if (listTask != null && listTask.Any())//多检测人添加确认待办
|
|
BantchSaveEntityNoCommit(listTask);
|
|
});
|
|
}
|
|
|
|
//if (listUsers != null && listUsers.Any())
|
|
//{
|
|
// foreach (var item in listUsers)
|
|
// {
|
|
// item.Nav_User = null;
|
|
// }
|
|
//}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 确认
|
|
/// </summary>
|
|
/// <param name="filter"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("sendCheck")]
|
|
public JsonActionResult<bool> sendCheck([FromBody] KeywordFilter filter)
|
|
{
|
|
return SafeExecute<bool>(() =>
|
|
{
|
|
if (string.IsNullOrEmpty(filter.Keyword) || string.IsNullOrEmpty(filter.Parameter1))
|
|
throw new Exception("获取参数有误");
|
|
|
|
Guid id = Guid.Empty;
|
|
try
|
|
{
|
|
id = new Guid(filter.Keyword);
|
|
}
|
|
catch
|
|
{
|
|
throw new Exception("获取参数有误");
|
|
}
|
|
|
|
Guid taskID = Guid.Empty;
|
|
if (!string.IsNullOrEmpty(filter.Parameter1))
|
|
{
|
|
try
|
|
{
|
|
taskID = new Guid(filter.Parameter1);
|
|
}
|
|
catch
|
|
{
|
|
throw new Exception("获取参数有误");
|
|
}
|
|
}
|
|
|
|
Guid LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
|
|
|
|
var detail = GetEntities<T_TL_WATCH_DAYLY_DETAIL>(e => e.DAYLY_ID == id, null, "Nav_ListUser");
|
|
List<T_TL_WATCH_DAYLY_DETAIL_USER> listDestUserLogin = new List<T_TL_WATCH_DAYLY_DETAIL_USER>();
|
|
bool isOther = false;
|
|
if (detail != null && detail.Any())
|
|
{
|
|
foreach (var item in detail)
|
|
{
|
|
if (item.Nav_ListUser != null && item.Nav_ListUser.Any())
|
|
{
|
|
try
|
|
{
|
|
var listDestUserTempLogin = item.Nav_ListUser.Where(e => !e.ISCHECK && e.USER_ID == LoginID);
|
|
if (listDestUserTempLogin != null && listDestUserTempLogin.Any())
|
|
{
|
|
listDestUserLogin.AddRange(listDestUserTempLogin);
|
|
}
|
|
|
|
if (!isOther)
|
|
{
|
|
var listDestUserTempNotLogin = item.Nav_ListUser.Where(e => !e.ISCHECK && e.USER_ID != LoginID);
|
|
if (listDestUserTempNotLogin != null && listDestUserTempNotLogin.Any())
|
|
{
|
|
isOther = true;
|
|
}
|
|
}
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
}
|
|
|
|
var task = NotificationTaskService.GetEntityTask(taskID);
|
|
if (listDestUserLogin != null && listDestUserLogin.Any())
|
|
listDestUserLogin.ForEach(e => { e.ISCHECK = true; e.MODIFY_TIME = DateTime.Now; });
|
|
|
|
T_TL_WATCH_DAYLY modelLine = null;
|
|
//如果没有未确认的观测人 修改主表状态
|
|
bool isApprove = false;
|
|
if (!isOther)
|
|
{
|
|
modelLine = GetEntity<T_TL_WATCH_DAYLY>(id);
|
|
modelLine.MODIFY_TIME = DateTime.Now;
|
|
var approveTemp = GetEntity<T_PF_APPROVE_TEMP>(e => e.CODE == "TL037");
|
|
if (approveTemp != null)
|
|
{
|
|
isApprove = true;
|
|
modelLine.STATUS = PFStandardStatus.Approving;
|
|
}
|
|
else
|
|
{
|
|
modelLine.STATUS = PFStandardStatus.Archived;
|
|
}
|
|
}
|
|
if (isApprove)
|
|
{
|
|
MFlowPermitService.InsertApprove(DateTime.Now.ToString("yyyyMMddHHmmss"), "TL037", null, id, "TL037_SHOWPRINT", null, true, () =>
|
|
{
|
|
if (task != null)//代办消息 清除
|
|
UpdateEntityNoCommit(task);//状态修改
|
|
if (listDestUserLogin != null && listDestUserLogin.Count > 0)
|
|
BantchSaveEntityNoCommit(listDestUserLogin);
|
|
if (modelLine != null)//代办消息 清除
|
|
UpdateEntityNoCommit(modelLine);//状态修改
|
|
}, null, null, null, null, null, "TL037_SHOWPRINT", null, null, FMTASKTYPE.Default);
|
|
}
|
|
else
|
|
{
|
|
this.UnifiedCommit(() =>
|
|
{
|
|
if (task != null)//代办消息 清除
|
|
UpdateEntityNoCommit(task);//状态修改
|
|
if (listDestUserLogin != null && listDestUserLogin.Count > 0)
|
|
BantchSaveEntityNoCommit(listDestUserLogin);
|
|
if (modelLine != null)//代办消息 清除
|
|
UpdateEntityNoCommit(modelLine);//状态修改
|
|
});
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取日常观测配置信息
|
|
/// </summary>
|
|
/// <param name="filter"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("GetItemsByTailingID")]
|
|
public JsonActionResult<List<T_TL_WATCH_DAYLY_DETAIL>> GetItemsByTailingID([FromBody] KeywordFilter filter)
|
|
{
|
|
return SafeExecute(() =>
|
|
{
|
|
Guid? TAILING_ID = null;
|
|
if (string.IsNullOrEmpty(filter.Keyword))
|
|
{
|
|
throw new Exception("获取传参信息失败!");
|
|
}
|
|
else
|
|
{
|
|
TAILING_ID = new Guid(filter.Keyword);
|
|
}
|
|
if (!TAILING_ID.HasValue)
|
|
{
|
|
throw new Exception("获取传参信息失败!");
|
|
}
|
|
var listItems = GetEntities<T_TL_SET_WATCH_DAYLY_ITEM>(e => e.TAILING_ID == TAILING_ID.Value && e.ENABLE_STATUS == FMEnableStatusEnum.启用 && !e.IS_DELETED, null, null);
|
|
if (listItems == null || !listItems.Any())
|
|
{
|
|
throw new Exception("请去后台完善该尾矿库的日常观测点位配置信息!");
|
|
}
|
|
List<T_TL_WATCH_DAYLY_DETAIL> listResult = new List<T_TL_WATCH_DAYLY_DETAIL>();
|
|
listItems = listItems.OrderBy(e => e.ROW_NO);
|
|
string REMIND = string.Empty;
|
|
foreach (var item in listItems)
|
|
{
|
|
REMIND = "单位:" + item.UNITE;
|
|
if (item.MIN.HasValue || item.MAX.HasValue)
|
|
{
|
|
if (item.MIN.HasValue && item.MAX.HasValue)
|
|
{
|
|
REMIND += " 范围:" + item.MIN.Value + " ~ " + item.MAX.Value;
|
|
}
|
|
else if (item.MIN.HasValue)
|
|
{
|
|
REMIND += " 下限值:" + item.MIN.Value;
|
|
}
|
|
else
|
|
{
|
|
REMIND += " 上限值:" + item.MAX.Value;
|
|
}
|
|
}
|
|
listResult.Add(new T_TL_WATCH_DAYLY_DETAIL()
|
|
{
|
|
ID = Guid.NewGuid(),
|
|
ORG_ID = filter.OrgId,
|
|
TAILING_ID = TAILING_ID.Value,
|
|
ITEM_ID = item.ID,
|
|
Nav_Item = item,
|
|
REMIND = REMIND
|
|
});
|
|
}
|
|
return listResult;
|
|
});
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 日常观测审批
|
|
/// </summary>
|
|
/// <param name="entity"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("BackUpdateNew")]
|
|
public JsonActionResult<bool> BackUpdateNew([FromBody] T_PF_APPROVE entity)
|
|
{
|
|
return SafeExecute(() =>
|
|
{
|
|
return ApproveCallBackService.CallBackNew("TL/TLWatchDayly/BackUpdateNew", entity);
|
|
});
|
|
}
|
|
}
|
|
} |