mh_jy_safe/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs
wyw 4759c66c1a 1、审批模板 审批明细 添加 ISHEAD
2、审批表单 添加 驳回api属性
3、总部获取 子公司信息修改
2025-10-24 11:47:37 +08:00

2812 lines
148 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Enums;
using APT.Infrastructure.Core;
using System;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Api;
using System.Collections.Generic;
using System.Linq;
using APT.MS.Domain.Enums;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices;
using System.Linq.Expressions;
using Newtonsoft.Json;
using APT.MS.Domain.Entities.PF;
using InfluxData.Net.InfluxDb.Models.Responses;
using APT.BaseData.Domain.IServices.BS;
using APT.MS.Domain.Entities.BS;
using APT.MS.Domain.Entities.HM;
namespace APT.BaseData.Services.Services.FM
{
/// <summary>
/// 送审后,单据特殊处理
/// wyw此文件如果引入别的service 可能导致整个服务 都要依赖注入(引用依赖)
/// </summary>
public class FMFlowPermitService : CommonService, IFMFlowPermitService
{
IPFCodeRuleService CodeRuleService { get; set; }
IFMNotificationTaskService NotificationTaskService { get; set; }
IPFSysLogService SysLogService { get; set; }
IPFApproveCallBackService ApproveCallBackService { get; set; }
public FMFlowPermitService(IRepository repository, IPFCodeRuleService codeRuleService, IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IPFApproveCallBackService approveCallBackService)
: base(repository)
{
CodeRuleService = codeRuleService;
NotificationTaskService = notificationTaskService;
SysLogService = sysLogService;
ApproveCallBackService = approveCallBackService;
}
/// <summary>
/// 审核后执行动作
/// </summary>
/// <param name="id">送审单ID</param>
/// <param name="flowPermitStatus">当前审批执行的动作</param>
public void AfterPermit(string id, int flowPermitStatus)
{
if (string.IsNullOrEmpty(id)) return;
var flowInstance = this.GetEntity<T_PF_FLOW_INSTANCE>(id);
if (flowInstance == null) return;
DoAfterPermit((PPFlowPermitStatusEnum)flowPermitStatus, (PFCodeRuleType)flowInstance.EntityType, flowInstance.EntityId.ToString(), (PPFlowStatusEnum)flowInstance.EntityFlowStatus);
}
/// <summary>
/// 自定义更新逻辑
/// </summary>
/// <param name="flowPermitStatus">当前审批执行的动作</param>
/// <param name="codeRuleType">单据类型</param>
/// <param name="entityId">实体ID</param>
/// <param name="flowStus">审核后实体的流程状态</param>
private void DoAfterPermit(PPFlowPermitStatusEnum flowPermitStatus, PFCodeRuleType codeRuleType, string entityId, PPFlowStatusEnum flowStus)
{
//分单据类型,自定义更新逻辑
switch (codeRuleType)
{
case PFCodeRuleType.:
if (flowStus == PPFlowStatusEnum.) //把接受数写入来料明细的可入库数
{
// entityId
//var entity = this.GetEntity<T_QC_SPECIAL_RECEIVE>(entityId, "Nav_CheckRecord");
//var inMaterialDetailId=entity.Nav_CheckRecord.IN_MATERIAL_DETAIL_ID;
//var inMaterialDetailentity = this.GetEntity<T_WH_IN_MATERIAL_DETAIL>(inMaterialDetailId.ToString());
//inMaterialDetailentity.ALLOW_STORAGE_QTY = entity.SPECIAL_RECEIVE_QTY;
//this.UpdateEntity(inMaterialDetailentity);
if (codeRuleType == PFCodeRuleType.)
{
#region Base项目
/*
var model = this.GetEntity<T_ED_CONTROL_ORDER>(x => x.ID == new Guid(entityId), "Nav_PerformUser");
if (model.IS_MSG && !string.IsNullOrEmpty(model.Nav_PerformUser.PHONE))
{
var org = this.GetEntity<T_FM_ORGANIZATION>(x => x.ID == model.ORG_ID);
var msg = $"{org.NAME}:调度指令,标题:{model.TITLE}";
var notice = new T_FM_NOTICE
{
ID = new Guid(),
ORG_ID = model.ORG_ID,
CREATE_TIME = DateTime.Now,
MESSAGE = msg,
USER_ID = model.PERFORM_USER_ID,
TEL = model.Nav_PerformUser.PHONE,
NOTICE_STATUS = (int)FMNoticeStatus.等待发送,
NOTICE_TYPE = (int)FMNoticeType.短信,
Message_TYPE = (int)FMMessageType.调度通知,
TRYCOUNT = 5,
Notifier_Type = (int)FMNotifierType.用户
};
this.AddEntity(notice);
}*/
#endregion
}
}
if (flowStus == PPFlowStatusEnum.) //未送审,修改出来状态为未处理
{
// entityId
//var entity = this.GetEntity<T_QC_SPECIAL_RECEIVE>(entityId);
//entity.STATUS = (int)SpecialStatusEnum.未处理;
//this.UpdateEntity(entity);
}
break;
}
}
/// <summary>
/// 審批流數據保存
/// </summary>
/// <param name="model">審批流程</param>
public bool UpdateApprove(T_PF_APPROVE model, Action action, Guid? APPROVE_ID = null)
{
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
List<T_PF_APPROVE_DETAIL> appdetails = new List<T_PF_APPROVE_DETAIL>();
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
var details = model.Nav_ApproveDetails;
model.ID = APPROVE_ID.HasValue ? APPROVE_ID.Value : Guid.NewGuid();
model.ORG_ID = orgId;
model.APPROVE_STATUS = (int)ApproveStatus.Doing;
model.Nav_ApproveDetails = null;
foreach (var item in details)
{
T_PF_APPROVE_DETAIL appdetail = new T_PF_APPROVE_DETAIL();
appdetail.ID = Guid.NewGuid();
appdetail.APPROVE_ID = model.ID;
appdetail.APPROVE_USER_ID = item.APPROVE_USER_ID;
appdetail.APPROVE_ROLE_ID = item.APPROVE_ROLE_ID;
appdetail.IS_CURRENT = false;
appdetail.NAME = item.NAME;
appdetail.NUM = item.NUM;
appdetail.ORG_ID = orgId;
appdetail.Nav_Approve = null;
appdetail.Nav_ApproveUser = null;
appdetails.Add(appdetail);
}
//发消息给第一顺序人且修改第一顺序人为当前审核人
if (model.IS_SEND_MESSAGE)
{
appdetails.Where(i => i.NUM == appdetails.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
var sendUser = appdetails.Where(i => i.NUM == appdetails.Min(x => x.NUM)).ToList();
var userIds = sendUser.Select(i => (Guid)i.APPROVE_USER_ID).ToList();
var user = this.GetEntities<T_FM_USER>(i => userIds.Contains(i.ID));
var userNames = user.Select(i => i.NAME).ToList();
//发消息
notices = InsertUserNoticeTask(model.NAME + "待审批", model.ID, orgId, userIds, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "PF119");
}
this.UnifiedCommit(() =>
{
if (action != null)
action();
if (notices.Any())
this.BantchAddEntityNoCommit(notices);
AddEntityNoCommit(model);
BantchAddEntityNoCommit(appdetails);
});
return true;
}
/// <summary>
/// 審批流驳回申请人
/// </summary>
/// <param name="model">審批流程</param>
public bool RejectApprove(Guid id, bool is_send_message, Action action)
{
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
var approve = this.GetEntity<T_PF_APPROVE>(id);
if (approve == null)
this.ThrowError("020027");
//审核状态改为驳回
approve.APPROVE_STATUS = (int)ApproveStatus.Reject;
approve.Nav_ApproveDetails = null;
var baseFilter = new BaseFilter(orgId);
baseFilter.Include = new string[] { "Nav_ApproveUser" };
var approveDetail = this.GetEntities<T_PF_APPROVE_DETAIL>(t => t.APPROVE_ID == approve.ID, baseFilter);
//将第一个审核人置为当前审核人
approveDetail.Where(i => i.NUM == approveDetail.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
//发消息
if (is_send_message)
{
var sendUser = approveDetail.Where(i => i.NUM == approveDetail.Min(x => x.NUM)).ToList();
var userIds = sendUser.Select(i => (Guid)i.APPROVE_USER_ID).ToList();
var userNames = sendUser.Select(i => i.Nav_ApproveUser.NAME).ToList();
//发消息
notices = InsertUserNoticeTask(approve.NAME + "待审批", approve.ID, orgId, userIds, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "PF119");
}
approveDetail.ForEach(i => i.Nav_ApproveUser = null);
this.UnifiedCommit(() =>
{
if (action != null)
action();
if (notices.Any())
this.BantchAddEntityNoCommit(notices);
UpdateEntityNoCommit(approve);
BantchUpdateEntityNoCommit(approveDetail);
});
return true;
}
/// <summary>
/// 发布审批流
/// </summary>
/// <param name="guid">发布审批流</param>
public bool SendApprove(Guid id, Action action, Expression<Func<T_PF_APPROVE, bool>> expression = null, bool isShowCode = true, string approveTaskName = "")
{
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
T_PF_APPROVE approve = null;
if (expression != null)
{
expression = expression.And(e => e.DATA_ID == id);
}
else
{
expression = e => e.DATA_ID == id;
}
approve = this.GetEntity<T_PF_APPROVE>(expression);
var baseFilter = new BaseFilter(orgId);
baseFilter.Include = new string[] { "Nav_ApproveUser" };
var approveDetail = this.GetEntities<T_PF_APPROVE_DETAIL>(t => t.APPROVE_ID == approve.ID, baseFilter);
approveDetail.Where(i => i.NUM == approveDetail.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
approve.CurrentNode = approveDetail.FirstOrDefault(t => t.IS_CURRENT == true);
var sendUser = approveDetail.Where(i => i.IS_CURRENT == true).ToList();
var userIds = sendUser.Select(i => (Guid)i.APPROVE_USER_ID).ToList();
var userNames = sendUser.Select(i => i.Nav_ApproveUser.NAME).ToList();
approveDetail.ForEach(i => i.Nav_ApproveUser = null);
notices = InsertUserNoticeTask(String.IsNullOrEmpty(approveTaskName) ? approve.NAME : approveTaskName + "待审批", approve.ID, orgId, userIds, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "PF119");
this.UnifiedCommit(() =>
{
if (action != null)
action();
if (notices.Any())
BantchAddEntityNoCommit(notices);
if (approve != null)
UpdateEntityNoCommit(approve);
if (approveDetail != null && approveDetail.Any())
BantchUpdateEntityNoCommit(approveDetail);
});
return true;
}
private List<T_FM_NOTIFICATION_TASK> InsertUserNoticeTask(string Name, Guid DataId, Guid? OrgId, List<Guid> UserIds,
DateTime startTime, DateTime endTime, int noticeType, string formCode)
{
List<T_FM_NOTIFICATION_TASK> notices = new List<T_FM_NOTIFICATION_TASK>();
if (UserIds.Count > 0)
{
var sysFilter = new SystemCodeFilter();
sysFilter.CodeType = (int)PFCodeRuleType.;
sysFilter.Count = UserIds.Count;
sysFilter.OrgId = OrgId;
var codes = CodeRuleService.NewGenSerial(sysFilter);
var codeList = codes.Split(new char[] { ',' });
var index = 0;
UserIds.ForEach(t =>
{
T_FM_NOTIFICATION_TASK notice = new T_FM_NOTIFICATION_TASK();
notice.CODE = codeList[index];
notice.NOTICE_TITLE = Name;
notice.SOURCE_DATA_ID = DataId;
notice.ORG_ID = OrgId;
notice.ID = Guid.NewGuid();
notice.TASK_STARTDT = startTime;
notice.TASK_ENDDT = endTime;
notice.NOTICE_TYPE = noticeType;
notice.NOTICE_STATUS = (int)FMNoticeStatusEnum.;
notice.USER_ID = t;
notice.SOURCE_FORMCODE = formCode;
notices.Add(notice);
index++;
});
}
return notices;
}
/// <summary>
/// 发布审批流
/// </summary>
/// <param name="serialCode">审批流编号</param>
/// <param name="fromCode">审批流模板配置中的编号PF001</param>
/// <param name="param">审批流模板配置中的自定义参数</param>
/// <param name="id">审批流对应主表IDDATA_ID</param>
/// <param name="approveCode">审批流对应 APPROVE_CODEFO017_SHOWPRINT</param>
/// <param name="finishNoticeId">待办ID传入需要结束的待办ID</param>
/// <param name="sendMessage">是否需要发送通知</param>
/// <param name="action"></param>
/// <param name="approveId">审批流ID主表如果有存传值进来 </param>
/// <param name="approveUserId">审批用户(主表如果有存传值进来 </param>
/// <param name="dicApproveUser">自定义审批流程人员信息</param>
/// <param name="dicApproveDepartMentID">自定义审批流程人员部门信息</param>
/// <param name="taskSourceFormCode">待办完成 后 已办事项 点击查看页面编号</param>
/// <param name="operaterID"></param>
/// <param name="approveTaskName">审批流名称</param>
/// <returns></returns>
public void InsertApprove(string serialCode, string fromCode, string param, Guid id, string approveCode, Guid? finishNoticeId, bool sendMessage, Action action, Guid? approveId = null, Guid? approveUserId = null, Dictionary<int, T_FM_USER> dicApproveUser = null, Dictionary<int, Guid> dicApproveDepartMentID = null, string NoticeCode = "", string taskSourceFormCode = "", Guid? operaterID = null, string approveTaskName = "", FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null, Guid? DATA_ID_LOG = null, Guid? DATA_ID_SUB = null, DateTime? dtTaskEnd = null, List<Guid> listDataIdSub = null, int? nextBSOperateEnum = null)
{
T_PF_APPROVE approve = null;
//上个消息
T_FM_NOTIFICATION_TASK finishNotice = null;
//发消息
T_FM_NOTIFICATION_TASK notice = null;
//细表
List<T_PF_APPROVE_DETAIL> appdetails = new List<T_PF_APPROVE_DETAIL>();
if (operaterID == null)
{
operaterID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
}
string CALLBACK_INTERFACE = string.Empty;
List<string> listDATA_ID = new List<string>();
List<T_BS_OPERATE_LOG> listBSLog = null;
if (sendMessage || approveId != null)// wyw 添加 || approveId != null 先添加审批流 但是不发送通知
{
Expression<Func<T_PF_APPROVE_TEMP, bool>> express = t => t.FORM_CODE == fromCode && t.ENABLE_STATUS == (int)FMEnableStatusEnum.;
if (!string.IsNullOrEmpty(param))
{
express = express.And(t => t.PARAM == param);
}
if (finishNoticeId != null && finishNoticeId != Guid.Empty)
{
finishNotice = NotificationTaskService.GetTaskFinishModel(finishNoticeId.Value, taskSourceFormCode);//wyw 之前方法 巡回安全检查填写会报错
if (finishNotice != null && finishNotice.SOURCE_DATA_ID.HasValue && finishNotice.SOURCE_DATA_ID != id && operaterID.HasValue)
{
try
{
SysLogService.AddAddLog(operaterID.Value, fromCode, finishNoticeId.Value.ToString(), id.ToString(), "可能TaskID串了 结束入参 TaskID:" + finishNoticeId + " 查找TaskID" + finishNotice.ID.ToString() + " SOURCE_DATA_ID: " + finishNotice.SOURCE_DATA_ID?.ToString() + "入参id: " + id.ToString());
}
catch { }
}
}
bool isDefaultChange = false;//是否方法会修改 T_PF_APPROVE_TEMP_DETAIL 中的值
//Dictionary<int, T_FM_USER> dic = null;
var approveTemp = this.GetEntity<T_PF_APPROVE_TEMP>(express, "Nav_ApproveTempDetails.Nav_ApproveRole");
if (approveTemp != null && approveTemp.Nav_ApproveTempDetails != null && approveTemp.Nav_ApproveTempDetails.Any())
{
//wyw 填充自定义流程人员信息
FillApproveTempUser(approveTemp.Nav_ApproveTempDetails, dicApproveUser, ref isDefaultChange);
FillApproveTempUser(approveTemp.Nav_ApproveTempDetails, dicApproveDepartMentID, ref isDefaultChange);
List<int> listNUM = new List<int>();
if (dicApproveUser != null)
{
foreach (var item in dicApproveUser)
{
listNUM.Add(item.Key);
}
}
if (dicApproveDepartMentID != null)
{
foreach (var item in dicApproveDepartMentID)
{
listNUM.Add(item.Key);
}
}
approve = new T_PF_APPROVE();
if (approveId != null)
{
approve.ID = approveId.Value;
}
//加入审批主表
approve.APPROVE_TEMP_ID = approveTemp.ID;
approve.ORG_ID = approveTemp.ORG_ID;
approve.APPROVE_STATUS = (int)ApproveStatus.Doing;
approve.Nav_ApproveDetails = null;
approve.DATA_ID = id;
approve.NAME = approveTemp.NAME;
approve.APPROVE_CODE = approveCode;
approve.CODE = String.IsNullOrEmpty(serialCode) ? DateTime.Now.ToString("yyyyMMddHHmmss") : serialCode;
approve.CALLBACK_INTERFACE = approveTemp.CALLBACK_INTERFACE;
//一个表单对应多个模板时,保存自定义参数
approve.PARAM = approveTemp.PARAM;
approve.REJECT_INTERFACE = approveTemp.REJECT_INTERFACE;
var approveRoles = approveTemp.Nav_ApproveTempDetails.Where(t => t.APPROVE_ROLE_ID != null).Select(x => (Guid)x.APPROVE_ROLE_ID).Distinct().ToList();
var ahApproveRole = this.GetEntities<T_PF_APPROVAL_ROLE>(t => t.NAME.Contains("安环"), new BaseFilter(approveTemp.ORG_ID)).Select(m => m.ID).ToList();
if (ahApproveRole != null && ahApproveRole.Any())
approveRoles.AddRange(ahApproveRole);
//如果有传人就用传入人的id,如果不是就用当前人
var loginUserId = approveUserId != null ? approveUserId : APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
List<Guid> listUserID = new List<Guid>();
listUserID.Add(loginUserId.Value);
foreach (var item in approveTemp.Nav_ApproveTempDetails)
{
if (item.DEFAULT_APPROVE_USER_ID != null && !listUserID.Contains(item.DEFAULT_APPROVE_USER_ID.Value))
{
listUserID.Add(item.DEFAULT_APPROVE_USER_ID.Value);
}
}
var hm = this.GetEntity<T_HM_EVALUATION_PLAN>(t => t.STATUS == FOPreMeetingStatusEnum.);
var users = this.GetEntities<T_FM_USER>(t => t.ENABLE_STATUS == 0, new BaseFilter(approveTemp.ORG_ID), "Nav_Department", "Nav_ApproveRole").ToList();//((t.APPROVE_ROLE_ID != null && approveRoles.Contains((Guid)t.APPROVE_ROLE_ID)) || listUserID.Contains(t.ID))
var userVacations = this.GetEntities<T_FM_USER_VACATION_SET>(t => t.START_DATE <= DateTime.Now && t.END_DATE >= DateTime.Now, new BaseFilter(approveTemp.ORG_ID), "Nav_Agent");
approveTemp.Nav_ApproveTempDetails.ForEach(t =>
{
//var user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID);
//if (loginUser.Nav_Department.DEPARTMENT_TYPE != (int)FMDepartmentType.公司)
// user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID && x.DEPARTMENT_ID == departmentId);
T_PF_APPROVE_DETAIL detail = new T_PF_APPROVE_DETAIL();
detail.APPROVE_ID = approve.ID;
detail.IS_CURRENT = false;
detail.ORG_ID = approveTemp.ORG_ID;
detail.NAME = t.NAME;
detail.NUM = t.NUM;
detail.APPROVE_ROLE_ID = t.APPROVE_ROLE_ID;
detail.IS_ALLOW_UPDATE = t.IS_ALLOW_UPDATE;
detail.ISHEAD = t.ISHEAD;
if (listNUM.Contains(t.NUM))
{
//如果传参未找到 就是没有
detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : null;
}
else
{
if (detail.NAME == "风险管理小组副组长" && hm != null)
{
detail.APPROVE_USER_ID = hm.DEPUTY_GROUP_LEADER_ID;
}
else if (detail.NAME == "风险管理小组组长" && hm != null)
{
detail.APPROVE_USER_ID = hm.GROUP_LEADER_ID;
}
else
{
var detailUserId = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : GetApproveUser(t, users, (Guid)loginUserId);
var userAgent = userVacations.FirstOrDefault(t => t.USER_ID == detailUserId);
var detailUserAgent = userAgent != null && userAgent.AGENT_ID != null ? userAgent.AGENT_ID : detailUserId;
detail.APPROVE_USER_ID = detailUserAgent;
}
}
if (detail.Nav_ApproveUser != null)
{
detail.Nav_ApproveUser = null;
}
detail.Nav_ApproveRole = t.Nav_ApproveRole;
//if (detail.APPROVE_USER_ID == null)
// throw new Exception("审批流未找到" + detail.NAME + ",请联系管理员维护");
if (detail.APPROVE_USER_ID != null)
appdetails.Add(detail);
});
appdetails.OrderBy(t => t.NUM);
var loginUser = users.FirstOrDefault(t => t.ID == loginUserId);
var departUser = this.GetEntity<T_FM_DEPARTMENT>(t => (t.USER_ID == loginUserId || t.CHARGEUSER_ID == loginUserId) && (t.NAME.Contains("安全环保") || t.NAME.Contains("安环部")));
if (departUser != null || (loginUser.Nav_ApproveRole != null && loginUser.Nav_ApproveRole.NAME.Contains("安环部负责人")) || (loginUser.Nav_ApproveRole != null && loginUser.Nav_ApproveRole.NAME.Contains("安环部安全员")))
{
var tempSafeD = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("部门安全员"));
var tempSafe = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("安环部安全员"));
if (tempSafe != null && tempSafeD != null && appdetails.Count() > 1 && tempSafeD.APPROVE_USER_ID == tempSafe.APPROVE_USER_ID)
{
appdetails.Remove(tempSafe);
}
var tempChargeD = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("部门负责人"));
var tempCharge = appdetails.FirstOrDefault(m => m.Nav_ApproveRole != null && m.Nav_ApproveRole.NAME.Contains("安环部负责人"));
if (tempCharge != null && tempChargeD != null && appdetails.Count() > 1 && tempChargeD.APPROVE_USER_ID == tempCharge.APPROVE_USER_ID)
{
appdetails.Remove(tempCharge);
}
}
appdetails.ForEach(i => i.Nav_ApproveRole = null);
appdetails.Where(i => i.NUM == appdetails.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
//当前节点
T_PF_APPROVE_DETAIL curentApprove = null;
string JsonApproveDetail = string.Empty;
GetApproveNodes(appdetails, ref curentApprove, ref JsonApproveDetail);
DealOperateApproveDetail(ref sendMessage, operaterID, ref appdetails, ref CALLBACK_INTERFACE, listDATA_ID, approve, ref curentApprove);//整理操作者审批流相关信息 wyw
if (sendMessage)
{
//所有节点均无审核人,直接归档
if (curentApprove == null)
{
//将审核流程置为已完成
approve.APPROVE_STATUS = (int)ApproveStatus.Done;
LogApprove(approve, loginUserId.Value, JsonApproveDetail);//添加日志
}
else
{
appdetails.Where(i => i.NUM == curentApprove.NUM).ForEach(i => i.IS_CURRENT = true);
if (!string.IsNullOrEmpty(JsonApproveDetail))
{
//如果人数不一致
LogApproveDetailReduce(approve, loginUserId.Value, JsonApproveDetail, appdetails);
}
var sendUserId = appdetails.Where(i => i.NUM == curentApprove.NUM).Select(t => (Guid)t.APPROVE_USER_ID).FirstOrDefault();
//var sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME;
var ue = users.Where(i => i.ID == sendUserId).FirstOrDefault();
string sendUserName = string.Empty;
if (ue != null)
{
sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME;
}
else
{
sendUserName = GetEntity<T_FM_USER>(t => t.ID == sendUserId && t.ENABLE_STATUS == 0)?.NAME;
}
string taskName = approveTaskName;
if (string.IsNullOrEmpty(taskName))
{
taskName = approve.NAME;
if (!taskName.Contains("待审批"))
{
taskName += "待审批";
}
}
var startTime = DateTime.Now;
var endTime = DateTime.Now.AddHours(24);
if (TASK_TYPE != null && TASK_TYPE.HasValue)
{
endTime = NotificationTaskService.GetTaskEndTime(TASK_TYPE.Value, approveTemp.ORG_ID.Value, startTime, FREQUENCYE, DateTimeLastest, null);
}
else
{
switch (fromCode)
{
case "HM104":
case "HM087":
case "HM111":
case "HM109":
case "HM107":
endTime = Convert.ToDateTime(DateTime.Now.AddDays(2).ToString("D").ToString()).AddSeconds(-1);
break;
case "FO015":
case "FO017":
case "HM062":
case "HM064":
case "HM102":
case "HM100":
case "HM122":
case "HM123":
endTime = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("D").ToString()).AddSeconds(-1);
break;
default: break;
}
}
//发消息
notice = NotificationTaskService.InsertUserNoticeTaskModel(taskName, approve.ID, approve.ORG_ID, (Guid)sendUserId, sendUserName, startTime,
endTime, (int)FMNoticeTypeEnum., "PF119");
}
}
}
else
{
throw new Exception("获取审批流信息失败【表单:" + fromCode + (string.IsNullOrEmpty(param) ? "" : "参数:" + param) + "】,请设置对应审批流!");
}
if (isDefaultChange)
{
//如果有改变 DEFAULT_APPROVE_USER_ID 需要还原
approveTemp.Nav_ApproveTempDetails.ForEach(e =>
{
e.DEFAULT_APPROVE_USER_ID = null;
});
}
if (finishNotice == null && dtTaskEnd != null)
{
finishNotice = new T_FM_NOTIFICATION_TASK();
finishNotice.ID = Guid.Empty;
finishNotice.TASK_ENDDT = dtTaskEnd.Value;
}
OPERATEPOINT_Enums? nextOPERATEPOINT = null;
if (nextBSOperateEnum != null)
{
nextOPERATEPOINT = (OPERATEPOINT_Enums)(nextBSOperateEnum.Value);
}
if (iBSOperateEnum != null)
{
if (iBSOperateEnum == 200 || iBSOperateEnum == 20 || iBSOperateEnum == 60 || iBSOperateEnum == 165)
{
if (listDataIdSub != null && listDataIdSub.Any())
listBSLog = GetOperateLogInfo(DATA_ID_LOG, approve.ORG_ID, appdetails, iBSOperateEnum, finishNotice, listDataIdSub);
else
listBSLog = GetOperateLogInfo(DATA_ID_LOG, approve.ORG_ID, appdetails, iBSOperateEnum, finishNotice, DATA_ID_SUB);//验收人确认整改
}
else
{
//修改参数到 if (iBSOperateEnum == 200)
listBSLog = GetOperateLogInfo(id, approve.ORG_ID, appdetails, iBSOperateEnum, finishNotice, approve.DATA_ID, nextOPERATEPOINT);
}
}
}
this.UnifiedCommit(() =>
{
if (action != null)
action();
if (approve != null)
AddEntityNoCommit(approve);
if (appdetails != null && appdetails.Any())
BantchAddEntityNoCommit(appdetails);
if (finishNotice != null && finishNotice.ID != Guid.Empty)
UpdateEntityNoCommit(finishNotice, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
if (notice != null)
AddEntityNoCommit(notice);
if (listBSLog != null && listBSLog.Any())
BantchSaveEntityNoCommit(listBSLog);//有修改和新增
});
#region //涉及到总部的人员 待办 直接把数据传到总部去
var checkAdd = appdetails.FirstOrDefault(e => e.ISHEAD && e.IS_CURRENT);
if (checkAdd != null)
{
try
{
}
catch (Exception ex) { }
}
#endregion
if (!string.IsNullOrEmpty(CALLBACK_INTERFACE))
{
if (CALLBACK_INTERFACE.EndsWith("New"))
{
this.UnifiedCommit(() =>
{
ApproveCallBackService.CallBackNew(CALLBACK_INTERFACE, approve, false);
});
}
else
{
this.UnifiedCommit(() =>
{
ApproveCallBackService.CallBack(CALLBACK_INTERFACE, listDATA_ID);
});
}
}
}
/// <summary>
/// 单人顺序审批 填充审批人信息
/// </summary>
/// <param name="listTempDetail">审批模板详情</param>
/// <param name="dicApproveUser">自定义填充人员信息</param>
private void FillApproveTempUser(ICollection<T_PF_APPROVE_TEMP_DETAIL> listTempDetail, Dictionary<int, T_FM_USER> dicApproveUser, ref bool isDefaultChange)
{
if (listTempDetail == null || listTempDetail.Count < 1 || dicApproveUser == null || dicApproveUser.Count < 1)
return;
foreach (var item in listTempDetail)
{
if (dicApproveUser.ContainsKey(item.NUM))
{
//if (item.DEFAULT_APPROVE_USER_ID.HasValue)
// continue;
//isDefaultChange = true;
//item.Nav_DefaultApproveUser = dicApproveUser[item.NUM];
//item.DEFAULT_APPROVE_USER_ID = dicApproveUser[item.NUM].ID;
//字典有值传进来审核是什么
//item.Nav_DefaultApproveUser = dicApproveUser[item.NUM];
item.DEFAULT_APPROVE_USER_ID = dicApproveUser[item.NUM].ID;
isDefaultChange = false;
}
}
}
/// <summary>
/// 单人顺序审批 填充审批人信息
/// </summary>
/// <param name="listTempDetail">审批模板详情</param>
/// <param name="dicApproveDepartMentID">自定义填充人部门ID</param>
private void FillApproveTempUser(ICollection<T_PF_APPROVE_TEMP_DETAIL> listTempDetail, Dictionary<int, Guid> dicApproveDepartMentID, ref bool isDefaultChange)
{
if (listTempDetail == null || listTempDetail.Count < 1 || dicApproveDepartMentID == null || dicApproveDepartMentID.Count < 1)
return;
T_FM_USER userTemp = null;
Guid DEPARTMENT_ID = Guid.Empty;
T_FM_DEPARTMENT department = null;
foreach (var item in listTempDetail)
{
if (dicApproveDepartMentID.ContainsKey(item.NUM))
{
if (item.DEFAULT_APPROVE_USER_ID.HasValue)
continue;
DEPARTMENT_ID = dicApproveDepartMentID[item.NUM];
userTemp = this.GetEntity<T_FM_USER>(x => x.APPROVE_ROLE_ID == item.APPROVE_ROLE_ID && DEPARTMENT_ID == (Guid)x.DEPARTMENT_ID);//如果需要循环获取 修改此方法
if (userTemp == null)
{
do
{
department = GetEntity<T_FM_DEPARTMENT>(DEPARTMENT_ID);
if (department.PARENT_ID == Guid.Empty || department.PARENT_ID == null)
{
break;
}
DEPARTMENT_ID = department.PARENT_ID.Value;
userTemp = this.GetEntity<T_FM_USER>(x => x.APPROVE_ROLE_ID == item.APPROVE_ROLE_ID && DEPARTMENT_ID == (Guid)x.DEPARTMENT_ID);
} while (userTemp == null);
}
if (userTemp != null)
{
isDefaultChange = true;
//item.Nav_DefaultApproveUser = userTemp;
item.DEFAULT_APPROVE_USER_ID = userTemp.ID;
}
}
}
}
/// <summary>
/// 发布审批流
/// </summary>
/// <param name="listSerialCode">审批流编号</param>
/// <param name="fromCode">审批流模板配置中的编号PF001</param>
/// <param name="id">审批流对应主表IDDATA_ID</param>
/// <param name="approveCode">审批流对应 APPROVE_CODEFO017_SHOWPRINT点击时页面跳转配置项</param>
/// <param name="finishNoticeId">待办ID传入需要结束的待办ID</param>
/// <param name="isSendMessage">是否需要发送通知</param>
/// <param name="action"></param>
/// <param name="listParam">审批流模板配置中的自定义参数</param>
/// <param name="listApproveId">审批流ID主表如果有存传值进来 </param>
/// <param name="approveUserId">审批用户(主表如果有存传值进来 </param>
/// <param name="taskSourceFormCode">待办完成 后 已办事项 点击查看页面编号</param>
/// <param name="operaterID">发起者 用户ID 如未传参 默认当前登陆者 如果审批流包含此人 默认审批流从他开始 他所在节点默认审批通过</param>
/// <exception cref="Exception"></exception>
public void InsertApprove(List<string> listSerialCode, string fromCode, List<Guid> listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List<string> listParam = null, List<Guid> listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null)
{
if (listSerialCode.Count != listID.Count)
{
throw new Exception("传参有误审批流编号的数量必须与数据源ID的数量一致");
}
if (listParam != null && listParam.Count != listSerialCode.Count)
{
throw new Exception("传参有误,审批其它参数的数量必须与审批流编号的数量一致!");
}
if (listApproveId != null && listApproveId.Count != listSerialCode.Count)
{
throw new Exception("传参有误审批流ID的数量必须与审批流编号的数量一致");
}
if (operaterID == null)
{
operaterID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
}
List<T_PF_APPROVE> listApprove = new List<T_PF_APPROVE>();
List<T_PF_APPROVE_DETAIL> appdetails = new List<T_PF_APPROVE_DETAIL>();
List<T_PF_APPROVE_DETAIL> appdetailsTemp = null;
//上个消息
T_FM_NOTIFICATION_TASK finishNotice = null;
//发消息
List<T_FM_NOTIFICATION_TASK> listNotice = new List<T_FM_NOTIFICATION_TASK>();
//细表
if (finishNoticeId != null && finishNoticeId != Guid.Empty)
{
finishNotice = NotificationTaskService.GetTaskFinishModel(finishNoticeId.Value, taskSourceFormCode);//wyw 之前方法 巡回安全检查填写会报错
}
string CALLBACK_INTERFACE = string.Empty;//回调方法名称
List<string> listDATA_ID = new List<string>();//回调参数
Expression<Func<T_PF_APPROVE_TEMP, bool>> express = t => t.FORM_CODE == fromCode && t.ENABLE_STATUS == (int)FMEnableStatusEnum.;
if (listParam != null && listParam.Count > 0)
{
if (approveCode == "BS006_SHOWPRINT" && !listParam.Contains("20"))
{
//如果没找到 到 A级
List<string> listParamTemp = new List<string>();
foreach (var item in listParam)
{
listParamTemp.Add(item);
}
listParamTemp.Add("20");
express = express.And(t => listParamTemp.Contains(t.PARAM));
}
else
{
express = express.And(t => listParam.Contains(t.PARAM));
}
}
var approveTemplist = this.GetEntities<T_PF_APPROVE_TEMP>(express, "Nav_ApproveTempDetails.Nav_ApproveRole");//此处暂不做优化
if (approveTemplist == null || !approveTemplist.Any())
{
throw new Exception("未获取到审批模板!");
}
List<T_PF_APPROVE_TEMP> listApproveTemp = approveTemplist.ToList();
T_FM_USER userTemp = null;
if (listParam != null && listParam.Count > 0)
{
#region
string approveName = string.Empty;
for (int i = 0; i < listParam.Count; i++)
{
LevelChange:
appdetailsTemp = new List<T_PF_APPROVE_DETAIL>();
var approveTemp = listApproveTemp.FirstOrDefault(e => e.PARAM == listParam[i]);
if (approveTemp != null && approveTemp.Nav_ApproveTempDetails != null && approveTemp.Nav_ApproveTempDetails.Any())
{
T_PF_APPROVE approve = new T_PF_APPROVE();
if (listApproveId != null)
{
approve.ID = listApproveId[i];
}
//加入审批主表
approve.ORG_ID = approveTemp.ORG_ID;
approve.APPROVE_TEMP_ID = approveTemp.ID;
approve.APPROVE_STATUS = (int)ApproveStatus.Doing;
approve.Nav_ApproveDetails = null;
approve.DATA_ID = listID[i];
if (string.IsNullOrEmpty(approveName))
{
approve.NAME = approveTemp.NAME;
}
else
{
approve.NAME = approveName;
approveName = "";
}
approve.APPROVE_CODE = approveCode;
approve.CODE = listSerialCode[i];
approve.CALLBACK_INTERFACE = approveTemp.CALLBACK_INTERFACE;
//一个表单对应多个模板时,保存自定义参数
approve.PARAM = approveTemp.PARAM;
var approveRoles = approveTemp.Nav_ApproveTempDetails.Select(x => x.APPROVE_ROLE_ID).Distinct().ToList();
//如果有传人就用传入人的id,如果不是就用当前人
var loginUserId = approveUserId != null ? approveUserId : APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var users = this.GetEntities<T_FM_USER>(t => approveRoles.Contains(t.APPROVE_ROLE_ID) || t.ID == loginUserId, new BaseFilter(approveTemp.ORG_ID), "Nav_Department").ToList();
//var loginUser = users.FirstOrDefault(t => t.ID == loginUserId);
approveTemp.Nav_ApproveTempDetails.ForEach(t =>
{
//var user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID);
//if (loginUser.Nav_Department.DEPARTMENT_TYPE != (int)FMDepartmentType.公司)
// user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID && x.DEPARTMENT_ID == departmentId);
T_PF_APPROVE_DETAIL detail = new T_PF_APPROVE_DETAIL();
detail.APPROVE_ID = approve.ID;
detail.IS_CURRENT = false;
detail.ORG_ID = approveTemp.ORG_ID;
detail.NAME = t.NAME;
detail.NUM = t.NUM;
detail.APPROVE_ROLE_ID = t.APPROVE_ROLE_ID;
detail.IS_ALLOW_UPDATE = t.IS_ALLOW_UPDATE;
detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : GetApproveUser(t, users, (Guid)loginUserId);
appdetailsTemp.Add(detail);
});
appdetailsTemp.Where(i => i.NUM == appdetailsTemp.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
//当前节点
T_PF_APPROVE_DETAIL curentApprove = null;
string JsonApproveDetail = string.Empty;
GetApproveNodes(appdetailsTemp, ref curentApprove, ref JsonApproveDetail);// GetApproveNodes(appdetails, ref curentApprove);
bool isSendMessagePer = isSendMessage;//当前是否发送待办
DealOperateApproveDetail(ref isSendMessagePer, operaterID, ref appdetailsTemp, ref CALLBACK_INTERFACE, listDATA_ID, approve, ref curentApprove);//整理操作者审批流相关信息
if (isSendMessagePer)
{
//所有节点均无审核人,直接归档
if (curentApprove == null)
{
if (approveCode == "BS006_SHOWPRINT")
{
approveName = approve.NAME;
listParam[i] = "20";
//从头再来
goto LevelChange;
}
//将审核流程置为已完成
approve.APPROVE_STATUS = (int)ApproveStatus.Done;
//直接执行回调方法不合理,因为命名需要审批的,没审批就直接过了,怕出问题
//先记日志
//LogApprove(approve, loginUserId.Value, JsonApproveDetail);
}
else
{
appdetailsTemp.Where(i => i.NUM == curentApprove.NUM).ForEach(i => i.IS_CURRENT = true);//appdetails=>appdetailsTemp
if (!string.IsNullOrEmpty(JsonApproveDetail))
{
//如果人数不一致
LogApproveDetailReduce(approve, loginUserId.Value, JsonApproveDetail, appdetailsTemp);
}
var sendUserId = appdetailsTemp.Where(i => i.NUM == curentApprove.NUM).Select(t => (Guid)t.APPROVE_USER_ID).FirstOrDefault();//appdetails=>appdetailsTemp
userTemp = users.Where(i => i.ID == sendUserId).FirstOrDefault();
//var sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME;
if (userTemp == null)
{
userTemp = this.GetEntity<T_FM_USER>(sendUserId);
}
var sendUserName = userTemp.NAME;
//发消息
T_FM_NOTIFICATION_TASK notice = NotificationTaskService.InsertUserNoticeTaskModel(approve.NAME, approve.ID, approve.ORG_ID, (Guid)sendUserId, sendUserName, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "PF119");
listNotice.Add(notice);
}
}
appdetails.AddRange(appdetailsTemp);
listApprove.Add(approve);
}
else
{
throw new Exception("获取审批流信息失败【表单:" + fromCode + (string.IsNullOrEmpty(listParam[i]) ? "" : "参数:" + listParam[i]) + "】,请设置对应审批流!");
}
}
#endregion
}
else if (listSerialCode.Count == 1)
{
#region
var approveTemp = listApproveTemp[0];
if (approveTemp != null && approveTemp.Nav_ApproveTempDetails != null && approveTemp.Nav_ApproveTempDetails.Any())
{
T_PF_APPROVE approve = new T_PF_APPROVE();
if (listApproveId != null)
{
approve.ID = listApproveId[0];
}
//加入审批主表
approve.ORG_ID = approveTemp.ORG_ID;
approve.APPROVE_STATUS = (int)ApproveStatus.Doing;
approve.Nav_ApproveDetails = null;
approve.DATA_ID = listID[0];
approve.NAME = approveTemp.NAME;
approve.APPROVE_CODE = approveCode;
approve.CODE = listSerialCode[0];
approve.CALLBACK_INTERFACE = approveTemp.CALLBACK_INTERFACE;
//一个表单对应多个模板时,保存自定义参数
approve.PARAM = approveTemp.PARAM;
approve.APPROVE_TEMP_ID = approveTemp.ID;
var approveRoles = approveTemp.Nav_ApproveTempDetails.Select(x => x.APPROVE_ROLE_ID).Distinct().ToList();
//如果有传人就用传入人的id,如果不是就用当前人
var loginUserId = approveUserId != null ? approveUserId : APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var users = this.GetEntities<T_FM_USER>(t => approveRoles.Contains(t.APPROVE_ROLE_ID) || t.ID == loginUserId, new BaseFilter(approveTemp.ORG_ID), "Nav_Department").ToList();
//var loginUser = users.FirstOrDefault(t => t.ID == loginUserId);
T_FM_USER modelApproveUser = null;
approveTemp.Nav_ApproveTempDetails.ForEach(t =>
{
//var user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID);
//if (loginUser.Nav_Department.DEPARTMENT_TYPE != (int)FMDepartmentType.公司)
// user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID && x.DEPARTMENT_ID == departmentId);
T_PF_APPROVE_DETAIL detail = new T_PF_APPROVE_DETAIL();
detail.APPROVE_ID = approve.ID;
detail.IS_CURRENT = false;
detail.ORG_ID = approveTemp.ORG_ID;
detail.NAME = t.NAME;
detail.NUM = t.NUM;
detail.APPROVE_ROLE_ID = t.APPROVE_ROLE_ID;
detail.IS_ALLOW_UPDATE = t.IS_ALLOW_UPDATE;
detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : GetApproveUser(t, users, (Guid)loginUserId);
//if (t.DEFAULT_APPROVE_USER_ID != null)
//{
// detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID;
//}
//else
//{
// modelApproveUser = GetApproveUserInfo(t, users, (Guid)loginUserId);
// if (modelApproveUser != null)
// {
// detail.APPROVE_USER_ID = modelApproveUser.ID;
// detail. = modelApproveUser.NAME;
// }
//}
appdetails.Add(detail);
});
appdetails.Where(i => i.NUM == appdetails.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
//当前节点
T_PF_APPROVE_DETAIL curentApprove = null;
string JsonApproveDetail = string.Empty;
GetApproveNodes(appdetails, ref curentApprove, ref JsonApproveDetail);
DealOperateApproveDetail(ref isSendMessage, operaterID, ref appdetails, ref CALLBACK_INTERFACE, listDATA_ID, approve, ref curentApprove);//整理操作者审批流相关信息
if (isSendMessage)
{
//所有节点均无审核人,直接归档
if (curentApprove == null)
{
//将审核流程置为已完成
approve.APPROVE_STATUS = (int)ApproveStatus.Done;
//LogApprove(approve, loginUserId.Value, JsonApproveDetail);
}
else
{
appdetails.Where(i => i.NUM == curentApprove.NUM && i.APPROVE_USER_ID != operaterID).ForEach(i => i.IS_CURRENT = true);//同节点多人 得改
if (!string.IsNullOrEmpty(JsonApproveDetail))
{
//如果人数不一致
LogApproveDetailReduce(approve, loginUserId.Value, JsonApproveDetail, appdetails);
}
var sendUserId = appdetails.Where(i => i.NUM == curentApprove.NUM).Select(t => (Guid)t.APPROVE_USER_ID).FirstOrDefault();
var sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME;
//发消息
T_FM_NOTIFICATION_TASK notice = NotificationTaskService.InsertUserNoticeTaskModel(approve.NAME, approve.ID, approve.ORG_ID, (Guid)sendUserId, sendUserName, DateTime.Now,
DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum., "PF119");
listNotice.Add(notice);
}
}
listApprove.Add(approve);
}
else
{
throw new Exception("获取审批流信息失败【表单:" + fromCode + (string.IsNullOrEmpty(listParam[0]) ? "" : "参数:" + listParam[0]) + "】,请设置对应审批流!");
}
#endregion
}
else
{
throw new Exception("方法不知以什么方式来添加多个审批流!");
}
this.UnifiedCommit(() =>
{
if (action != null)
action();
if (listApprove != null)
BantchAddEntityNoCommit(listApprove);
if (appdetails != null && appdetails.Any())
BantchAddEntityNoCommit(appdetails);
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
if (listNotice.Count > 0)
BantchAddEntityNoCommit(listNotice);
});
//如果 审批流需要执行默认审批 调用 回调方法
//回调方法写在之后 不然之前数据都没有保存到数据库 原有的方法不能使用
//this.UnifiedCommit(() =>
//{
// ApproveCallBackService.CallBack(CALLBACK_INTERFACE, listDATA_ID);
//});
if (!string.IsNullOrEmpty(CALLBACK_INTERFACE) && listDATA_ID.Count > 0)
{
if (CALLBACK_INTERFACE.EndsWith("New"))
{
foreach (var item in listApprove)
{
if (item.APPROVE_STATUS == 10)
{
this.UnifiedCommit(() =>
{
ApproveCallBackService.CallBackNew(CALLBACK_INTERFACE, item, false);
});
}
}
}
else
{
this.UnifiedCommit(() =>
{
ApproveCallBackService.CallBack(CALLBACK_INTERFACE, listDATA_ID);
});
}
}
}
/// <summary>
/// 发布审批流(隐患上报)
/// </summary>
/// <param name="listSerialCode">审批流编号</param>
/// <param name="fromCode">审批流模板配置中的编号PF001</param>
/// <param name="id">审批流对应主表IDDATA_ID</param>
/// <param name="approveCode">审批流对应 APPROVE_CODEFO017_SHOWPRINT点击时页面跳转配置项</param>
/// <param name="finishNoticeId">待办ID传入需要结束的待办ID</param>
/// <param name="isSendMessage">是否需要发送通知</param>
/// <param name="action"></param>
/// <param name="listParam">审批流模板配置中的自定义参数</param>
/// <param name="listApproveId">审批流ID主表如果有存传值进来 </param>
/// <param name="approveUserId">审批用户(主表如果有存传值进来 </param>
/// <param name="taskSourceFormCode">待办完成 后 已办事项 点击查看页面编号</param>
/// <param name="operaterID">发起者 用户ID 如未传参 默认当前登陆者 如果审批流包含此人 默认审批流从他开始 他所在节点默认审批通过</param>
/// <param name="ListDepIDNone">审批流未找到审批人默认组织安全员</param>
/// <exception cref="Exception"></exception>
public void InsertApproveRisk(List<string> listSerialCode, string fromCode, List<Guid> listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List<string> listParam = null, List<Guid> listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null, List<Guid> ListDepIDNone = null, FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null, Guid? RiskID = null, List<int> listLevel = null, Dictionary<int, List<Guid>> dicLevelSubID = null) //List<Guid> listDataID_Sub
{
#region
if (listSerialCode.Count != listID.Count)
{
throw new Exception("传参有误审批流编号的数量必须与数据源ID的数量一致");
}
if (listParam != null && listParam.Count != listSerialCode.Count)
{
throw new Exception("传参有误,审批其它参数的数量必须与审批流编号的数量一致!");
}
if (listApproveId != null && listApproveId.Count != listSerialCode.Count)
{
throw new Exception("传参有误审批流ID的数量必须与审批流编号的数量一致");
}
if (operaterID == null)
{
operaterID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
}
#endregion
List<T_PF_APPROVE> listApprove = new List<T_PF_APPROVE>();
List<T_BS_OPERATE_LOG> listBSLog = new List<T_BS_OPERATE_LOG>();
List<T_PF_APPROVE_DETAIL> appdetails = new List<T_PF_APPROVE_DETAIL>();
List<T_PF_APPROVE_DETAIL> appdetailsTemp = null;
IEnumerable<T_PF_APPROVAL_ROLE> iEnumApprovalRole = null;
//上个消息
T_FM_NOTIFICATION_TASK finishNotice = null;
//发消息
List<T_FM_NOTIFICATION_TASK> listNotice = new List<T_FM_NOTIFICATION_TASK>();
//细表
if (finishNoticeId != null && finishNoticeId != Guid.Empty)
{
finishNotice = NotificationTaskService.GetTaskFinishModel(finishNoticeId.Value, taskSourceFormCode);//wyw 之前方法 巡回安全检查填写会报错
}
string CALLBACK_INTERFACE = string.Empty;//回调方法名称
List<string> listDATA_ID = new List<string>();//回调参数
//隐患上报 找
IEnumerable<T_FM_DEPARTMENT> listDep = null;
if (ListDepIDNone != null && ListDepIDNone.Count > 0)
{
listDep = GetEntities<T_FM_DEPARTMENT>(e => ListDepIDNone.Contains(e.ID));
}
Expression<Func<T_PF_APPROVE_TEMP, bool>> express = t => t.FORM_CODE == fromCode && t.ENABLE_STATUS == (int)FMEnableStatusEnum.;
DateTime dtAuditEnd = DateTime.Now.AddHours(24);
if (TASK_TYPE.HasValue)
{
dtAuditEnd = NotificationTaskService.GetTaskEndTime(TASK_TYPE.Value, APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value, DateTime.Now, FREQUENCYE, DateTimeLastest);
}
if (listParam != null && listParam.Count > 0)
{
if (approveCode == "BS006_SHOWPRINT")//&& !listParam.Contains("20")
{
//如果没找到 到 隐患上报未找到审批人 //如果没找到 到 A级
List<string> listParamTemp = new List<string>();
foreach (var item in listParam)
{
listParamTemp.Add(item);
}
listParamTemp.Add("0");//责任人 listParamTemp.Add("20");
express = express.And(t => listParamTemp.Contains(t.PARAM));
}
else
{
express = express.And(t => listParam.Contains(t.PARAM));
}
}
var approveTemplist = this.GetEntities<T_PF_APPROVE_TEMP>(express, "Nav_ApproveTempDetails.Nav_ApproveRole");//此处暂不做优化
if (approveTemplist == null || !approveTemplist.Any())
{
throw new Exception("未获取到审批模板!");
}
List<T_PF_APPROVE_TEMP> listApproveTemp = approveTemplist.ToList();
T_FM_USER userTemp = null;
if (listParam != null && listParam.Count > 0)
{
#region
int gotoCount = 0;
string approveName = string.Empty;
for (int i = 0; i < listParam.Count; i++)
{
gotoCount = 0;
LevelChange:
appdetailsTemp = new List<T_PF_APPROVE_DETAIL>();
var approveTemp = listApproveTemp.FirstOrDefault(e => e.PARAM == listParam[i]);
gotoCount++;
if (gotoCount == 5)
throw new Exception("审批流找未找到责任人,请联系管理员配置信息!");
if (approveTemp != null && approveTemp.Nav_ApproveTempDetails != null && approveTemp.Nav_ApproveTempDetails.Any())
{
T_PF_APPROVE approve = new T_PF_APPROVE();
if (listApproveId != null)
{
approve.ID = listApproveId[i];
}
//加入审批主表
approve.ORG_ID = approveTemp.ORG_ID;
approve.APPROVE_TEMP_ID = approveTemp.ID;
approve.APPROVE_STATUS = (int)ApproveStatus.Doing;
approve.Nav_ApproveDetails = null;
approve.DATA_ID = listID[i];
if (string.IsNullOrEmpty(approveName))
{
approve.NAME = approveTemp.NAME;
}
else
{
approve.NAME = approveName;
approveName = "";
}
approve.APPROVE_CODE = approveCode;
approve.CODE = listSerialCode[i];
approve.CALLBACK_INTERFACE = approveTemp.CALLBACK_INTERFACE;
//一个表单对应多个模板时,保存自定义参数
approve.PARAM = approveTemp.PARAM;
var approveRoles = approveTemp.Nav_ApproveTempDetails.Select(x => x.APPROVE_ROLE_ID).Distinct().ToList();
//如果有传人就用传入人的id,如果不是就用当前人
var loginUserId = approveUserId != null ? approveUserId : APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var users = this.GetEntities<T_FM_USER>(t => approveRoles.Contains(t.APPROVE_ROLE_ID) || t.ID == loginUserId, new BaseFilter(approveTemp.ORG_ID), "Nav_Department").ToList();
//var loginUser = users.FirstOrDefault(t => t.ID == loginUserId);
approveTemp.Nav_ApproveTempDetails.ForEach(t =>
{
//var user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID);
//if (loginUser.Nav_Department.DEPARTMENT_TYPE != (int)FMDepartmentType.公司)
// user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID && x.DEPARTMENT_ID == departmentId);
T_PF_APPROVE_DETAIL detail = new T_PF_APPROVE_DETAIL();
detail.APPROVE_ID = approve.ID;
detail.IS_CURRENT = false;
detail.ORG_ID = approveTemp.ORG_ID;
detail.NAME = t.NAME;
detail.NUM = t.NUM;
detail.APPROVE_ROLE_ID = t.APPROVE_ROLE_ID;
detail.IS_ALLOW_UPDATE = t.IS_ALLOW_UPDATE;
if (approveCode == "BS006_SHOWPRINT" && approve.PARAM == "0")
{
//隐患上报 没找到人 找责任组织的安全员
//ListDepIDNone[i]
var depTemp = listDep.First(e => e.ID == ListDepIDNone[i]);
//FMDepartmentType 部门 = 0, 车间 = 1, 班组 = 2, 公司 = 3
if (iEnumApprovalRole == null)
iEnumApprovalRole = GetEntities<T_PF_APPROVAL_ROLE>(e => e.NAME.Contains("安全员"));
T_PF_APPROVAL_ROLE approvalRole = null;
if (depTemp.DEPARTMENT_STATUS == 2)
{
//安环部 相等的时候为 安环部负责人自己
if (depTemp.USER_ID != operaterID)
{
approvalRole = iEnumApprovalRole.FirstOrDefault(e => e.NAME.Contains("安环"));
}
}
else
{
//生产部门
switch (depTemp.DEPARTMENT_TYPE)
{
case 0:
approvalRole = iEnumApprovalRole.FirstOrDefault(e => e.NAME.Contains("部门"));
break;
case 1:
//车间级
approvalRole = iEnumApprovalRole.FirstOrDefault(e => e.NAME.Contains("车间"));
break;
case 2:
//班组级 班长
//detail.APPROVE_USER_ID = depTemp.USER_ID;
break;
case 3:
approvalRole = iEnumApprovalRole.FirstOrDefault(e => e.NAME.Contains("公司"));
break;
default:
break;
}
}
if (approvalRole == null)
{
detail.APPROVE_USER_ID = depTemp.USER_ID;
}
else
{
var userApro = GetEntity<T_FM_USER>(e => e.DEPARTMENT_ID == ListDepIDNone[i] && e.APPROVE_ROLE_ID == approvalRole.ID);
if (userApro != null)
{
detail.APPROVE_USER_ID = userApro.ID;
}
else if (gotoCount == 4 && depTemp.USER_ID.HasValue)
{
detail.APPROVE_USER_ID = depTemp.USER_ID;
}
}
}
else
{
detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : GetApproveUser(t, users, (Guid)loginUserId);
}
appdetailsTemp.Add(detail);
});
appdetailsTemp.Where(i => i.NUM == appdetailsTemp.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
//当前节点
T_PF_APPROVE_DETAIL curentApprove = null;
string JsonApproveDetail = string.Empty;
GetApproveNodes(appdetailsTemp, ref curentApprove, ref JsonApproveDetail);// GetApproveNodes(appdetails, ref curentApprove);
bool isSendMessagePer = isSendMessage;//当前是否发送待办
DealOperateApproveDetail(ref isSendMessagePer, operaterID, ref appdetailsTemp, ref CALLBACK_INTERFACE, listDATA_ID, approve, ref curentApprove);//整理操作者审批流相关信息
if (isSendMessagePer)
{
//所有节点均无审核人,直接归档
if (curentApprove == null)
{
if (approveCode == "BS006_SHOWPRINT")
{
approveName = approve.NAME;
listParam[i] = "0";// listParam[i] = "20";
//从头再来
goto LevelChange;
}
//将审核流程置为已完成
approve.APPROVE_STATUS = (int)ApproveStatus.Done;
//直接执行回调方法不合理,因为命名需要审批的,没审批就直接过了,怕出问题
//先记日志
LogApprove(approve, loginUserId.Value, JsonApproveDetail);
}
else
{
appdetailsTemp.Where(i => i.NUM == curentApprove.NUM).ForEach(i => i.IS_CURRENT = true);//appdetails=>appdetailsTemp
if (!string.IsNullOrEmpty(JsonApproveDetail))
{
//如果人数不一致
LogApproveDetailReduce(approve, loginUserId.Value, JsonApproveDetail, appdetailsTemp);
}
var sendUserId = appdetailsTemp.Where(i => i.NUM == curentApprove.NUM).Select(t => (Guid)t.APPROVE_USER_ID).FirstOrDefault();//appdetails=>appdetailsTemp
userTemp = users.Where(i => i.ID == sendUserId).FirstOrDefault();
//var sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME;
if (userTemp == null)
{
userTemp = this.GetEntity<T_FM_USER>(sendUserId);
}
var sendUserName = userTemp.NAME;
//发消息
T_FM_NOTIFICATION_TASK notice = NotificationTaskService.InsertUserNoticeTaskModel(approve.NAME, approve.ID, approve.ORG_ID, (Guid)sendUserId, sendUserName, DateTime.Now, dtAuditEnd, (int)FMNoticeTypeEnum., "PF119");
listNotice.Add(notice);
}
}
appdetails.AddRange(appdetailsTemp);
listApprove.Add(approve);
List<Guid> listLevelSubID = null;
if (dicLevelSubID != null)
{
if (dicLevelSubID.ContainsKey(listLevel[i]))
{
listLevelSubID = dicLevelSubID[listLevel[i]];
}
if (listLevelSubID != null && listLevelSubID.Any())
{
listBSLog.AddRange(GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, listLevelSubID));
}
else
{
listBSLog.AddRange(GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, approve.DATA_ID));
}
}
}
else
{
throw new Exception("获取审批流信息失败【表单:" + fromCode + (string.IsNullOrEmpty(listParam[i]) ? "" : "参数:" + listParam[i]) + "】,请设置对应审批流!");
}
}
#endregion
}
else if (listSerialCode.Count == 1)
{
#region
var approveTemp = listApproveTemp[0];
if (approveTemp != null && approveTemp.Nav_ApproveTempDetails != null && approveTemp.Nav_ApproveTempDetails.Any())
{
T_PF_APPROVE approve = new T_PF_APPROVE();
if (listApproveId != null)
{
approve.ID = listApproveId[0];
}
//加入审批主表
approve.ORG_ID = approveTemp.ORG_ID;
approve.APPROVE_TEMP_ID = approveTemp.ID;
approve.APPROVE_STATUS = (int)ApproveStatus.Doing;
approve.Nav_ApproveDetails = null;
approve.DATA_ID = listID[0];
approve.NAME = approveTemp.NAME;
approve.APPROVE_CODE = approveCode;
approve.CODE = listSerialCode[0];
approve.CALLBACK_INTERFACE = approveTemp.CALLBACK_INTERFACE;
//一个表单对应多个模板时,保存自定义参数
approve.PARAM = approveTemp.PARAM;
var approveRoles = approveTemp.Nav_ApproveTempDetails.Select(x => x.APPROVE_ROLE_ID).Distinct().ToList();
//如果有传人就用传入人的id,如果不是就用当前人
var loginUserId = approveUserId != null ? approveUserId : APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
var users = this.GetEntities<T_FM_USER>(t => approveRoles.Contains(t.APPROVE_ROLE_ID) || t.ID == loginUserId, new BaseFilter(approveTemp.ORG_ID), "Nav_Department").ToList();
//var loginUser = users.FirstOrDefault(t => t.ID == loginUserId);
T_FM_USER modelApproveUser = null;
approveTemp.Nav_ApproveTempDetails.ForEach(t =>
{
//var user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID);
//if (loginUser.Nav_Department.DEPARTMENT_TYPE != (int)FMDepartmentType.公司)
// user = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == t.APPROVE_ROLE_ID && x.DEPARTMENT_ID == departmentId);
T_PF_APPROVE_DETAIL detail = new T_PF_APPROVE_DETAIL();
detail.APPROVE_ID = approve.ID;
detail.IS_CURRENT = false;
detail.ORG_ID = approveTemp.ORG_ID;
detail.NAME = t.NAME;
detail.NUM = t.NUM;
detail.APPROVE_ROLE_ID = t.APPROVE_ROLE_ID;
detail.IS_ALLOW_UPDATE = t.IS_ALLOW_UPDATE;
detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID != null ? t.DEFAULT_APPROVE_USER_ID : GetApproveUser(t, users, (Guid)loginUserId);
//if (t.DEFAULT_APPROVE_USER_ID != null)
//{
// detail.APPROVE_USER_ID = t.DEFAULT_APPROVE_USER_ID;
//}
//else
//{
// modelApproveUser = GetApproveUserInfo(t, users, (Guid)loginUserId);
// if (modelApproveUser != null)
// {
// detail.APPROVE_USER_ID = modelApproveUser.ID;
// detail. = modelApproveUser.NAME;
// }
//}
appdetails.Add(detail);
});
appdetails.Where(i => i.NUM == appdetails.Min(x => x.NUM)).ForEach(i => i.IS_CURRENT = true);
//当前节点
T_PF_APPROVE_DETAIL curentApprove = null;
string JsonApproveDetail = string.Empty;
GetApproveNodes(appdetails, ref curentApprove, ref JsonApproveDetail);
DealOperateApproveDetail(ref isSendMessage, operaterID, ref appdetails, ref CALLBACK_INTERFACE, listDATA_ID, approve, ref curentApprove);//整理操作者审批流相关信息
if (isSendMessage)
{
//所有节点均无审核人,直接归档
if (curentApprove == null)
{
//将审核流程置为已完成
approve.APPROVE_STATUS = (int)ApproveStatus.Done;
LogApprove(approve, loginUserId.Value, JsonApproveDetail);
}
else
{
appdetails.Where(i => i.NUM == curentApprove.NUM && i.APPROVE_USER_ID != operaterID).ForEach(i => i.IS_CURRENT = true);//同节点多人 得改
if (!string.IsNullOrEmpty(JsonApproveDetail))
{
//如果人数不一致
LogApproveDetailReduce(approve, loginUserId.Value, JsonApproveDetail, appdetails);
}
var sendUserId = appdetails.Where(i => i.NUM == curentApprove.NUM).Select(t => (Guid)t.APPROVE_USER_ID).FirstOrDefault();
var sendUserName = users.Where(i => i.ID == sendUserId).FirstOrDefault().NAME;
//发消息
T_FM_NOTIFICATION_TASK notice = NotificationTaskService.InsertUserNoticeTaskModel(approve.NAME, approve.ID, approve.ORG_ID, (Guid)sendUserId, sendUserName, DateTime.Now, dtAuditEnd, (int)FMNoticeTypeEnum., "PF119");
listNotice.Add(notice);
}
}
listApprove.Add(approve);
List<Guid> listLevelSubID = null;
if (dicLevelSubID.ContainsKey(listLevel[0]))
{
listLevelSubID = dicLevelSubID[listLevel[0]];
}
if (listLevelSubID != null && listLevelSubID.Any())
{
listBSLog = GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, listLevelSubID);
}
else
{
listBSLog = GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, approve.DATA_ID);
}
//listBSLog = GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, ((listDataID_Sub != null && listDataID_Sub.Any()) ? listDataID_Sub[0] : approve.DATA_ID));
}
else
{
throw new Exception("获取审批流信息失败【表单:" + fromCode + (string.IsNullOrEmpty(listParam[0]) ? "" : "参数:" + listParam[0]) + "】,请设置对应审批流!");
}
#endregion
}
else
{
throw new Exception("方法不知以什么方式来添加多个审批流!");
}
this.UnifiedCommit(() =>
{
if (action != null)
action();
if (listApprove != null)
BantchAddEntityNoCommit(listApprove);
if (appdetails != null && appdetails.Any())
BantchAddEntityNoCommit(appdetails);
if (listBSLog != null && listBSLog.Any())
BantchSaveEntityNoCommit(listBSLog);
if (finishNotice != null)
UpdateEntityNoCommit(finishNotice, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
if (listNotice.Count > 0)
BantchAddEntityNoCommit(listNotice);
});
//如果 审批流需要执行默认审批 调用 回调方法
//回调方法写在之后 不然之前数据都没有保存到数据库 原有的方法不能使用
if (!string.IsNullOrEmpty(CALLBACK_INTERFACE) && listDATA_ID.Count > 0)
{
if (CALLBACK_INTERFACE.EndsWith("New"))
{
foreach (var item in listApprove)
{
if (item.APPROVE_STATUS == 10)
{
this.UnifiedCommit(() =>
{
ApproveCallBackService.CallBackNew(CALLBACK_INTERFACE, item, false);
});
}
}
}
else
{
this.UnifiedCommit(() =>
{
ApproveCallBackService.CallBack(CALLBACK_INTERFACE, listDATA_ID);
});
}
}
}
/// <summary>
/// 根据部门树查找审核人
/// </summary>
/// <param name="approveDetails"></param>
/// <param name="approveNode"></param>
/// <returns></returns>
private Guid? GetApproveUser(T_PF_APPROVE_TEMP_DETAIL approveTempDetail, List<T_FM_USER> users, Guid loginUserId)
{
Guid? approveId = null;
if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Company)
{
var approveIds = users.Where(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID).Select(t => t.ID).ToList();
if (approveIds.Count() == 0)
{
if (approveTempDetail.Nav_ApproveRole.NAME == "安环部负责人")
{
var dep = GetEntity<T_FM_DEPARTMENT>(t => (t.NAME.Contains("安全环保") || t.NAME.Contains("安环部")) && t.DEPARTMENT_TYPE == 0 && t.ENABLE_STATUS == 0);
if (dep != null)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
}
}
}
else if (approveIds.Count() == 1)
{
approveId = approveIds.FirstOrDefault();
}
else
{
var user = users.FirstOrDefault(t => t.ID == loginUserId);
if (user.DEPARTMENT_ID != null)
{
List<Guid> departmentIds = new List<Guid>();
GetDepartmentId((Guid)user.DEPARTMENT_ID, ref departmentIds);
if (departmentIds.Any())
{
var dep = GetEntity<T_FM_DEPARTMENT>(t => departmentIds.Contains(t.ID) && t.DEPARTMENT_TYPE != 3 && approveIds.Contains((Guid)t.CHARGEUSER_ID));
if (dep != null)
approveId = dep.CHARGEUSER_ID;
}
}
}
}
else
{
var user = users.FirstOrDefault(t => t.ID == loginUserId);
if (user.DEPARTMENT_ID != null)
{
List<Guid> departmentIds = new List<Guid>();
GetDepartmentId((Guid)user.DEPARTMENT_ID, ref departmentIds);
if (departmentIds.Any())
{
var charge = this.GetEntity<T_PF_APPROVAL_ROLE>(t => t.NAME == "安环部负责人");
var chargeK = this.GetEntity<T_PF_APPROVAL_ROLE>(t => t.NAME == "安环部科长");
var chargeSafe = this.GetEntity<T_PF_APPROVAL_ROLE>(t => t.NAME == "安环部安全员");
foreach (var item in departmentIds)
{
var userTemp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (userTemp == null)
{
if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Department && approveTempDetail.Nav_ApproveRole != null && approveTempDetail.Nav_ApproveRole.NAME == "部门负责人")
{
if (charge != null)
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == charge.ID && x.DEPARTMENT_ID == item);
if (temp == null)
{
var temp2 = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp2 != null)
{
approveId = temp2.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == 0)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
else
{
approveId = temp?.ID;
break;
}
}
else
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp != null)
{
approveId = temp.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == 0)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
}
else if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Department && approveTempDetail.Nav_ApproveRole != null && approveTempDetail.Nav_ApproveRole.NAME == "部门安全员")
{
if (chargeSafe != null)
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == chargeSafe.ID && x.DEPARTMENT_ID == item);
if (temp == null)
{
var temp2 = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp2 != null)
{
approveId = temp2.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == 0)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
else
{
approveId = temp?.ID;
break;
}
}
else
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp != null)
{
approveId = temp.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == 0)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
}
else if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Workshop && approveTempDetail.Nav_ApproveRole != null && approveTempDetail.Nav_ApproveRole.NAME == "车间负责人")
{
if (chargeK != null)
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == chargeK.ID && x.DEPARTMENT_ID == item);
if (temp == null)
{
var temp2 = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp2 != null)
{
approveId = temp2.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == 1)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
else
{
approveId = temp?.ID;
break;
}
}
else
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp != null)
{
approveId = temp.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == 1)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
}
else if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Workshop && approveTempDetail.Nav_ApproveRole != null && approveTempDetail.Nav_ApproveRole.NAME == "车间安全员")
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp != null)
{
approveId = temp.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == 1)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
else
{
var temp = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && x.DEPARTMENT_ID == item);
if (temp != null)
{
approveId = temp.ID;
break;
}
else
{
var dep = GetEntity<T_FM_DEPARTMENT>(item);
if (dep != null && dep.DEPARTMENT_TYPE == approveTempDetail.DEPARTMENT_TYPE)
{
if (dep.USER_ID.HasValue)
{ approveId = dep.USER_ID.Value; }
else if (dep.CHARGEUSER_ID.HasValue)
{ approveId = dep.CHARGEUSER_ID.Value; }
break;
}
else
{
continue;
}
}
}
}
else
{
approveId = userTemp?.ID;
break;
}
}
}
}
}
return approveId;
}
/// <summary>
/// 根据部门树查找审核人
/// </summary>
/// <param name="approveDetails"></param>
/// <param name="approveNode"></param>
/// <returns></returns>
private T_FM_USER GetApproveUserInfo(T_PF_APPROVE_TEMP_DETAIL approveTempDetail, List<T_FM_USER> users, Guid loginUserId)
{
T_FM_USER? approveUser = null;
if (approveTempDetail.DEPARTMENT_TYPE == (int)FMDepartmentType.Company)
approveUser = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID);
else
{
var user = users.FirstOrDefault(t => t.ID == loginUserId);
if (user.DEPARTMENT_ID != null)
{
List<Guid> departmentIds = new List<Guid>();
GetDepartmentId((Guid)user.DEPARTMENT_ID, ref departmentIds);
approveUser = users.FirstOrDefault(x => x.APPROVE_ROLE_ID == approveTempDetail.APPROVE_ROLE_ID && departmentIds.Contains((Guid)x.DEPARTMENT_ID));
}
}
return approveUser;
}
/// <summary>
/// 返回所有部门节点
/// <returns></returns>
private void GetDepartmentId(Guid departmentId, ref List<Guid> departmentIds)
{
departmentIds.Add(departmentId);
var department = GetEntity<T_FM_DEPARTMENT>(t => t.ID == departmentId);
if (department.PARENT_ID != null)
{
GetDepartmentId((Guid)department.PARENT_ID, ref departmentIds);
}
}
/// <summary>
/// 获取下个审核节点、审核人
/// </summary>
/// <param name="approveDetails"></param>
/// <param name="approveNode"></param>
/// <param name="JsonApproveDetail"></param>
/// <returns></returns>
static void GetApproveNodes(List<T_PF_APPROVE_DETAIL> approveDetails, ref T_PF_APPROVE_DETAIL approveNode, ref string JsonApproveDetail)
{
if (approveDetails == null || approveDetails.Count() == 0)
return;
var curentNode = approveDetails.FirstOrDefault(i => i.NUM == approveDetails.Min(x => x.NUM));
if (curentNode.APPROVE_USER_ID == null)
{
if (string.IsNullOrEmpty(JsonApproveDetail))
{
JsonApproveDetail = " APPROVE_DETAIL:" + JsonConvert.SerializeObject(approveDetails);
}
approveDetails.Remove(curentNode);
approveNode = null;
if (!approveDetails.Any())
return;
GetApproveNodes(approveDetails, ref approveNode, ref JsonApproveDetail);
}
else
{
approveNode = curentNode;
return;
}
}
/// <summary>
/// 审批流未匹配到人员
/// </summary>
/// <param name="approve"></param>
/// <param name="loginUserId"></param>
/// <param name="detail"></param>
public void LogApprove(T_PF_APPROVE approve, Guid loginUserId, string detail)
{
string data = "APPROVE:" + JsonConvert.SerializeObject(approve);
string rep = ",\"CREATER_ID\":null,\"MODIFIER_ID\":null,\"DbConn\":null,\"Nav_Org\":null,\"TaskID\":\"00000000-0000-0000-0000-000000000000\",\"Nav_SysParams\":null";
string rep2 = ",\"ENTITY_ORG_TPYE\":0,\"FORM_ID\":null,\"FLOW_STATUS\":0,\"FLOW_SEND_STATUS\":0,\"FLOW_ID\":null";
detail = detail.Replace(rep, "").Replace(rep2, "").Replace(",\"Nav_Approve\":null", "").Replace(",\"CONTEXT\":null", "").Replace(",\"Nav_ApproveUser\":null", "").Replace(",\"IS_DELETED\":false", "");
SysLogService.AddLog(approve.ORG_ID.Value, loginUserId, PFSysLogTypeEnum.ExceptionApprove, "PF119", "审批流未找到审批人员", string.IsNullOrEmpty(approve.CALLBACK_INTERFACE) ? "" : "未执行回调:" + (approve.CALLBACK_INTERFACE + "(" + approve.DATA_ID + ")"), data + detail);
}
/// <summary>
/// 审批流 和审批模板不一致 添加日志
/// </summary>
/// <param name="approve"></param>
/// <param name="loginUserId"></param>
/// <param name="detail"></param>
/// <param name="appdetailsTemp"></param>
public void LogApproveDetailReduce(T_PF_APPROVE approve, Guid loginUserId, string detail, List<T_PF_APPROVE_DETAIL> appdetailsTemp)
{
string data = "APPROVE:" + JsonConvert.SerializeObject(approve);
string detailUser = " APPROVE_DETAIL_USER:{" + JsonConvert.SerializeObject(appdetailsTemp);
string rep = ",\"CREATER_ID\":null,\"MODIFIER_ID\":null,\"DbConn\":null,\"Nav_Org\":null,\"TaskID\":\"00000000-0000-0000-0000-000000000000\",\"Nav_SysParams\":null";
string rep2 = ",\"ENTITY_ORG_TPYE\":0,\"FORM_ID\":null,\"FLOW_STATUS\":0,\"FLOW_SEND_STATUS\":0,\"FLOW_ID\":null";
detailUser = detailUser.Replace(rep, "").Replace(rep2, "").Replace(",\"Nav_Approve\":null", "").Replace(",\"CONTEXT\":null", "").Replace(",\"Nav_ApproveUser\":null", "").Replace(",\"IS_DELETED\":false", "");
detail = detail.Replace(rep, "").Replace(rep2, "").Replace(",\"Nav_Approve\":null", "").Replace(",\"CONTEXT\":null", "").Replace(",\"Nav_ApproveUser\":null", "").Replace(",\"IS_DELETED\":false", "");
if (detailUser.Length > 1990)//数据截断 不然报错
{
detailUser = detailUser.Substring(0, 1990);
}
SysLogService.AddLog(approve.ORG_ID.Value, loginUserId, PFSysLogTypeEnum.ExceptionApproveDetailReduce, "PF119", "审批流明细减少", detailUser, data + detail);
}
/// <summary>
/// 处理操作者 相关审批流
/// </summary>
/// <param name="isSendMessage"></param>
/// <param name="operaterID"></param>
/// <param name="appdetails"></param>
/// <param name="CALLBACK_INTERFACE"></param>
/// <param name="listDATA_ID"></param>
/// <param name="approve"></param>
/// <param name="curentApprove"></param>
private static void DealOperateApproveDetail(ref bool isSendMessage, Guid? operaterID, ref List<T_PF_APPROVE_DETAIL> appdetails, ref string CALLBACK_INTERFACE, List<string> listDATA_ID, T_PF_APPROVE approve, ref T_PF_APPROVE_DETAIL curentApprove)
{
if (appdetails != null && appdetails.Count > 0)
{
appdetails = appdetails.OrderBy(e => e.NUM).ToList();
var approveOperater = appdetails.FirstOrDefault(e => e.APPROVE_USER_ID == operaterID);
if (approveOperater != null)
{
//设置为已审批
approveOperater.IS_CURRENT = false;
approveOperater.NODE_APPROVE_STATUS = (int)NodeApproveStatus.Done;
approveOperater.NODE_APPROVE_TIME = DateTime.Now;
approveOperater.MODIFY_TIME = approveOperater.NODE_APPROVE_TIME;
curentApprove = appdetails.FirstOrDefault(e => e.NUM == approveOperater.NUM && e.ID != approveOperater.ID);//即使此节点是多人 也暂时用选择的第一个人
if (approveOperater.NUM == appdetails.Max(e => e.NUM))
{
//最后一个节点
if (curentApprove == null)
{
//执行审批结束方法
//本次不需要发送待办了
isSendMessage = false;
approve.APPROVE_STATUS = (int)ApproveStatus.Done; //直接完成
//url: re.Data + "?id=" + this.state.data.DATA_ID,
//approveTemp.CALLBACK_INTERFACE
//approve.DATA_ID
if (string.IsNullOrEmpty(CALLBACK_INTERFACE))
{
CALLBACK_INTERFACE = approve.CALLBACK_INTERFACE;
}
listDATA_ID.Add(approve.DATA_ID.ToString());
}
}
else
{
//非最后节点
if (curentApprove == null)//本节点没数据了
{
//找下一个审批节点
//curentApprove = appdetails.FirstOrDefault(e => e.NUM == (approveOperater.NUM + 1));
var appdetailsMore = appdetails.FindAll(e => e.NUM > approveOperater.NUM).OrderBy(e => e.NUM);
if (appdetailsMore != null && appdetailsMore.Any())
{
curentApprove = appdetailsMore.ToList()[0];
foreach (var item in appdetails)
{
if (curentApprove.NUM == item.NUM)
{
item.IS_CURRENT = true;
}
}
}
}
}
if (approveOperater.NUM > 1)
{
//删除 前面的节点
for (int i = appdetails.Count - 1; i > -1; i--)
{
if (appdetails[i].NUM < approveOperater.NUM)
{
appdetails.Remove(appdetails[i]);
}
}
}
}
}
else
{
//执行审批结束方法
//本次不需要发送待办了
isSendMessage = false;
approve.APPROVE_STATUS = (int)ApproveStatus.Done; //直接完成
//url: re.Data + "?id=" + this.state.data.DATA_ID,
//approveTemp.CALLBACK_INTERFACE
//approve.DATA_ID
if (string.IsNullOrEmpty(CALLBACK_INTERFACE))
{
CALLBACK_INTERFACE = approve.CALLBACK_INTERFACE;
}
}
}
//public void CallBack(string CALLBACK_INTERFACE, List<string> listDATA_ID)
//{
// if (!string.IsNullOrEmpty(CALLBACK_INTERFACE))
// {
// switch (CALLBACK_INTERFACE)
// {
// case "BS/BSRiskSubmit/Notice":
// for (int i = 0; i < listDATA_ID.Count; i++)
// {
// Notice(listDATA_ID[i]);
// }
// break;
// default:
// break;
// }
// //判断执行回调方法
// }
//}
//#region 回调方法
//#region BS
///// <summary>
///// 隐患上报 审核通过 给每个通知负责人发送通知
///// </summary>
///// <param name="id"></param>
///// <returns></returns>
//public bool Notice(string id)
//{
// //给对应通知责任人发送待办
// T_BS_RISK_SUBMIT_NOTICE entity = this.GetEntity<T_BS_RISK_SUBMIT_NOTICE>(id, new string[] { "Nav_ListRiskSubmitContent", "Nav_ListRiskSubmitContent.Nav_User" });
// int delayDays = 0;
// var delays = GetEntity<T_BS_RISK_LEVEL_DELAY_DAYS>(e => e.QUESTION_LEVEL == entity.QUESTION_LEVEL);
// if (delays != null)
// {
// delayDays = delays.MAX_DELAY_DAYS;
// }
// else
// {
// switch (entity.QUESTION_LEVEL)
// {
// case (int)BSQuestionLevelEnum.重大:
// delayDays = (int)BSDelayDaysEnum.重大;
// break;
// case (int)BSQuestionLevelEnum.A:
// delayDays = (int)BSDelayDaysEnum.A;
// break;
// case (int)BSQuestionLevelEnum.B:
// delayDays = (int)BSDelayDaysEnum.B;
// break;
// case (int)BSQuestionLevelEnum.C:
// delayDays = (int)BSDelayDaysEnum.C;
// break;
// case (int)BSQuestionLevelEnum.D:
// delayDays = (int)BSDelayDaysEnum.D;
// break;
// default:
// break;
// }
// }
// List<T_BS_RISK_SUBMIT_CONTENT> listContent = entity.Nav_ListRiskSubmitContent;
// var sysFilter = new SystemCodeFilter();
// sysFilter.CodeType = (int)PFCodeRuleType.消息通知;
// sysFilter.Count = listContent.Count;
// sysFilter.OrgId = entity.ORG_ID;
// var codes = CodeRuleService.NewGenSerial(sysFilter);
// var codeList = codes.Split(new char[] { ',' });
// T_BS_RISK_SUBMIT entityMain = this.GetEntity<T_BS_RISK_SUBMIT>(entity.RISK_SUBMIT_ID.Value);
// List<T_FM_NOTIFICATION_TASK> listNotice = new List<T_FM_NOTIFICATION_TASK>();
// List<T_BS_RISK_SUBMIT_NOTICE_PERSON> listNoticePerson = new List<T_BS_RISK_SUBMIT_NOTICE_PERSON>();
// T_BS_RISK_SUBMIT_NOTICE_PERSON temp = null;
// List<Guid> listDataID = new List<Guid>();
// List<Guid> listUserID = new List<Guid>();
// List<string> listUserName = new List<string>();
// List<string> listName = new List<string>();
// int i = 0;
// foreach (var item in listContent)
// {
// i++;
// item.CODE = entity.CODE + "_" + i.ToString();
// item.NAME = "隐患整改通知:" + entity.NAME;
// item.LastDateSystem = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59")).AddDays(delayDays);
// item.NOTICEDATE = DateTime.Now;
// item.RiskContentState = (int)RiskContentState.Notice;
// //隐患上报 问题 通知责任人 相同 同一个通知 (后续分配整改信息)
// temp = listNoticePerson.FirstOrDefault(x => x.USER_ID == item.USER_ID);
// if (temp == null)
// {
// temp = new T_BS_RISK_SUBMIT_NOTICE_PERSON();
// temp.ID = Guid.NewGuid();
// temp.USER_ID = item.USER_ID.Value;
// temp.ORG_ID = item.ORG_ID;
// temp.NAME = item.NAME;
// temp.CODE = item.CODE;
// temp.RISK_SUBMIT_ID = item.RISK_SUBMIT_ID;
// temp.RISK_SUBMIT_NOTICE_ID = item.RISK_SUBMIT_NOTICE_ID;
// temp.QUESTION_LEVEL = item.QUESTION_LEVEL;
// listNoticePerson.Add(temp);
// listDataID.Add(temp.ID);
// listUserID.Add(temp.USER_ID);
// listUserName.Add(item.Nav_User.NAME);
// listName.Add(temp.NAME);
// }
// item.RISK_SUBMIT_NOTICE_PERSON_ID = temp.ID;//个人通知ID绑定明细
// }
// //更新日期
// //给隐患上报隐患通知责任人 发送待办
// listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "BS042");
// UnifiedCommit(() =>
// {
// if (listNoticePerson.Count > 0)
// BantchSaveEntityNoCommit(listNoticePerson);
// if (listContent.Count > 0)
// BantchUpdateEntityNoCommit(listContent);
// if (listNotice.Count > 0)
// BantchSaveEntityNoCommit(listNotice);
// });
// return true;
//}
//#endregion
//#endregion
private List<T_BS_OPERATE_LOG> GetOperateLogInfo(Guid? dataId, Guid? ORG_ID, List<T_PF_APPROVE_DETAIL> appdetails, int? iBSOperateEnum, T_FM_NOTIFICATION_TASK finishNotice, Guid? DATA_ID_SUB = null, OPERATEPOINT_Enums? nextOPERATEPOINT = null)
{
List<T_BS_OPERATE_LOG> listOperateLog = null;
if (iBSOperateEnum.HasValue && dataId.HasValue)
{
List<Guid> ListUserIDDone = new List<Guid>();
try
{
OPERATEPOINT_Enums OPERATEPOINT = (OPERATEPOINT_Enums)iBSOperateEnum;
List<Guid> ListUserID = new List<Guid>();
List<string> ListUserName = new List<string>();
if (appdetails != null && appdetails.Any())
{
foreach (var item in appdetails)
{
if (item.APPROVE_USER_ID.HasValue)
{
ListUserID.Add(item.APPROVE_USER_ID.Value);
if (item.NODE_APPROVE_STATUS == 10)
ListUserIDDone.Add(item.APPROVE_USER_ID.Value);
}
}
if (ListUserID.Count > 0)
{
var listUser = GetEntities<T_FM_USER>(e => ListUserID.Contains(e.ID));
for (int i = 0; i < ListUserID.Count; i++)
{
ListUserName.Add(listUser.FirstOrDefault(e => e.ID == ListUserID[i])?.NAME);
}
}
}
DateTime? taskEnd = null;
if (finishNotice != null)
taskEnd = finishNotice.TASK_ENDDT;
listOperateLog = GetListOperateLog(OPERATEPOINT, dataId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, ListUserID, ListUserName, ORG_ID, DATA_ID_SUB, ListUserIDDone, false, taskEnd, nextOPERATEPOINT);
}
catch { }
}
return listOperateLog;
}
/// <summary>
/// 更新某个 日志 并且添加多组带操作日志
/// </summary>
/// <param name="dataId"></param>
/// <param name="ORG_ID"></param>
/// <param name="appdetails"></param>
/// <param name="iBSOperateEnum"></param>
/// <param name="finishNotice"></param>
/// <param name="DATA_ID_SUB"></param>
/// <returns></returns>
private List<T_BS_OPERATE_LOG> GetOperateLogInfo(Guid? dataId, Guid? ORG_ID, List<T_PF_APPROVE_DETAIL> appdetails, int? iBSOperateEnum, T_FM_NOTIFICATION_TASK finishNotice, List<Guid> ListDATA_ID_SUB)
{
List<T_BS_OPERATE_LOG> listOperateLog = null;
if (iBSOperateEnum.HasValue && dataId.HasValue)
{
List<Guid> ListUserIDDone = new List<Guid>();
try
{
OPERATEPOINT_Enums OPERATEPOINT = (OPERATEPOINT_Enums)iBSOperateEnum;
List<Guid> ListUserID = new List<Guid>();
List<string> ListUserName = new List<string>();
if (appdetails != null && appdetails.Any())
{
foreach (var item in appdetails)
{
if (item.APPROVE_USER_ID.HasValue)
{
ListUserID.Add(item.APPROVE_USER_ID.Value);
if (item.NODE_APPROVE_STATUS == 10)
ListUserIDDone.Add(item.APPROVE_USER_ID.Value);
}
}
if (ListUserID.Count > 0)
{
var listUser = GetEntities<T_FM_USER>(e => ListUserID.Contains(e.ID));
for (int i = 0; i < ListUserID.Count; i++)
{
ListUserName.Add(listUser.FirstOrDefault(e => e.ID == ListUserID[i])?.NAME);
}
}
}
var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
DateTime? taskEnd = null;
if (finishNotice != null)
taskEnd = finishNotice.TASK_ENDDT;
listOperateLog = new List<T_BS_OPERATE_LOG>();
if (OPERATEPOINT == OPERATEPOINT_Enums.RiskDelayApply)
{
//手动隐患上报
//添加当前操作者的 处理信息
//给所有人 添加 带操作记录
foreach (var item in ListDATA_ID_SUB)
{
listOperateLog.Add(AddModel(OPERATEPOINT_Enums.RiskDelayApply, dataId.Value, LoginID, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID, 0, true, item));
for (int i = 0; i < ListUserID.Count; i++)
listOperateLog.Add(AddModel(OPERATEPOINT_Enums.RiskDelayApplyAudit, dataId.Value, ListUserID[i], ListUserName[i], ORG_ID, i, false, item));
}
}
else
{
//OPERATEPOINT_Enums.CheckResultAudit => //(int)OPERATEPOINT_Enums.RiskGet
if (OPERATEPOINT == OPERATEPOINT_Enums.RiskInfoCompleteSD)
{
//手动隐患上报
var modelLog = GetUpdateDeal(OPERATEPOINT, dataId.Value, LoginID, ListDATA_ID_SUB[0], taskEnd);
if (modelLog != null)
listOperateLog.Add(modelLog);
}
else
{
//看看 是不是可以改到上面方法
var modelLog = GetUpdateDeal(OPERATEPOINT, dataId.Value, LoginID, null, taskEnd);
if (modelLog != null)
listOperateLog.Add(modelLog);
}
foreach (var item in ListDATA_ID_SUB)
{
for (int i = 0; i < ListUserID.Count; i++)
listOperateLog.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, dataId.Value, ListUserID[i], ListUserName[i], ORG_ID, i, false, item));
}
}
}
catch { }
}
return listOperateLog;
}
#region BSOperateLogService
public List<T_BS_OPERATE_LOG> GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List<Guid> ListDATA_ID, List<Guid> ListUserID, List<string> ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List<Guid> ListUserIDDone = null, bool isEnd = false, DateTime? TASK_ENDDT = null, OPERATEPOINT_Enums? nextOPERATEPOINT = null)
{
List<T_BS_OPERATE_LOG> listResult = new List<T_BS_OPERATE_LOG>();
T_BS_OPERATE_LOG modelLogUpdate = null;
switch (OPERATEPOINT)
{
case OPERATEPOINT_Enums.GotCheck:
//系统触发 只是新增
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++)
listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
break;
case OPERATEPOINT_Enums.CheckForm:
//BS032保存并发送 到审批流
modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin, null, TASK_ENDDT);
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++)
listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));//OPERATEPOINT => OPERATEPOINT_Enums.CheckAudit
break;
case OPERATEPOINT_Enums.CheckAudit:
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++)//最后一个审批人 添加 通知
listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
break;
case OPERATEPOINT_Enums.CheckerCheck:
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
break;
case OPERATEPOINT_Enums.CheckRegister:
//检查登记
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (ListUserID != null && ListUserName != null && ListUserID.Any())
{
if (nextOPERATEPOINT == null)
nextOPERATEPOINT = OPERATEPOINT_Enums.CheckAgree;
for (int i = 0; i < ListUserID.Count; i++) //发起检查结果确认
listResult.Add(AddModel(nextOPERATEPOINT.Value, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
}
break;
case OPERATEPOINT_Enums.CheckAgree:
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++) //检查结果确认完 直接到审批
listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
break;
case OPERATEPOINT_Enums.CheckResultAudit:
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (isEnd) //最后一个审批就归档
{
var logEnd = AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID);
logEnd.OPERTETIME = DateTime.Now;
if (modelLogUpdate != null)
logEnd.ISINTTIME = modelLogUpdate.ISINTTIME;
listResult.Add(logEnd);
}
else if (DATA_ID_SUB != null)
{
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++)
listResult.Add(AddModel(OPERATEPOINT_Enums.RiskGet, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
}
break;
case OPERATEPOINT_Enums.CheckEnd:
//此处没操作
break;
case OPERATEPOINT_Enums.RiskNoticeSD:
break;
case OPERATEPOINT_Enums.RiskUpSD:
break;
case OPERATEPOINT_Enums.RiskInfoCompleteSD:
break;
case OPERATEPOINT_Enums.RiskGet:
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++)
listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
break;
//case OPERATEPOINT_Enums.RiskSend:
// modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
// if (modelLogUpdate != null)
// listResult.Add(modelLogUpdate);
// if (ListUserID != null && ListUserName != null && ListUserID.Any())
// for (int i = 0; i < ListUserID.Count; i++)
// listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
// break;
case OPERATEPOINT_Enums.RiskSendAudit:
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++)
listResult.Add(AddModel(OPERATEPOINT_Enums.RiskAssignActure, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
break;
case OPERATEPOINT_Enums.RiskAssignActure:
break;
case OPERATEPOINT_Enums.RiskNoticeCheckerCheck:
break;
case OPERATEPOINT_Enums.RiskNoticeActureCheck:
break;
case OPERATEPOINT_Enums.RiskDeal:
break;
case OPERATEPOINT_Enums.RiskDealDealCheck:
break;
case OPERATEPOINT_Enums.RiskDealCheckerCheck:
modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
if (modelLogUpdate != null)
listResult.Add(modelLogUpdate);
if (ListUserID != null && ListUserName != null && ListUserID.Any())
for (int i = 0; i < ListUserID.Count; i++)
listResult.Add(AddModel(OPERATEPOINT_Enums.RiskDealAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
break;
case OPERATEPOINT_Enums.RiskDealAudit:
break;
case OPERATEPOINT_Enums.RiskEnd:
break;
default:
break;
}
if (ListUserIDDone != null && ListUserIDDone.Count > 0)
{
//除了登陆者 需要默认操作的
listResult.ForEach(e =>
{
if (ListUserIDDone.Contains(e.USER_ID))
e.OPERTETIME = DateTime.Now;
});
}
return listResult;
}
/// <summary>
/// 获取新记录
/// </summary>
/// <param name="OPERATEPOINT"></param>
/// <param name="DATA_ID"></param>
/// <param name="UserID"></param>
/// <param name="UserName"></param>
/// <param name="ORG_ID"></param>
/// <returns></returns>
private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0, bool isAddLog = false, Guid? DATA_ID_SUB = null)
{
if (!string.IsNullOrEmpty(UserName) && UserName.Contains("=>"))
{
try
{
UserName = UserName.Split(" ")[2];
}
catch { }
}
T_BS_OPERATE_LOG ModelAdd = new T_BS_OPERATE_LOG()
{
ID = Guid.NewGuid(),
ORG_ID = ORG_ID,
LOGTYPE = ((int)OPERATEPOINT) > 80 ? LOGTYPE_Enums.RiskSubmit : LOGTYPE_Enums.SafeCheck,
DATA_ID = DATA_ID,
DATA_ID_SUB = DATA_ID_SUB,
OPERATEPOINT = OPERATEPOINT,
USER_ID = UserID,
USRTNAME = UserName,
ORDERNO = ORDERNO,
//OPERTETIME = null,
//ISINTTIME = false,
CREATE_TIME = DateTime.Now,
CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID
};
if (isAddLog || (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID))
{
ModelAdd.OPERTETIME = DateTime.Now;//默认通过
ModelAdd.ISINTTIME = true;
}
return ModelAdd;
}
/// <summary>
/// 获取需要修改的Model
/// </summary>
/// <param name="OPERATEPOINT">操作节点</param>
/// <param name="DATA_ID"></param>
/// <param name="UserID"></param>
/// <param name="DATA_ID_SUB"></param>
/// <param name="TASK_ENDDT"></param>
/// <param name="IsAutoFilter">自动处理转办</param>
/// <returns></returns>
private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null, DateTime? TASK_ENDDT = null, bool IsAutoFilter = true)
{
if (UserID == Guid.Empty)
{
return null;
}
Expression<Func<T_BS_OPERATE_LOG, bool>> expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT && e.USER_ID == UserID;
if (DATA_ID_SUB.HasValue)
expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB);
//var model = GetEntity(expression);
var listModel = GetEntities(expression);
T_BS_OPERATE_LOG model = null;
if (listModel != null && listModel.Any())
{
if (listModel.Count() == 1)
model = listModel.ToList()[0];
else
model = listModel.OrderByDescending(e => e.CREATE_TIME).ToList()[0];
}
if (model == null && IsAutoFilter)
{
//转办
expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT;
if (DATA_ID_SUB.HasValue)
expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB);
listModel = GetEntities(expression);
if (listModel != null && listModel.Count() == 1)
{
model = listModel.ToList()[0];
var UserOP = GetEntity<T_FM_USER>(UserID);
model.MODIFIER_ID = UserOP.ID;
model.USRTNAME += (" => " + UserOP.NAME);
}
}
if (model != null)
{
model.OPERTETIME = DateTime.Now;
if (TASK_ENDDT != null)
model.ISINTTIME = (model.OPERTETIME > TASK_ENDDT.Value ? false : true);
}
return model;
}
#endregion
#region
/// <summary>
/// 获取 审批流信息
/// </summary>
/// <param name="approveSetCode">审批流配置ID</param>
/// <param name="param">审批流配置参数</param>
/// <param name="DATA_ID">审批数据ID</param>
/// <param name="approveShowCode">审批流对应显示跳转页面</param>
/// <param name="finishTaskId">需要结束的待办ID</param>
/// <param name="taskEndSourceFormCode">待办结束对应结束表单编号</param>
/// <param name="approveCode">审批流编码(不传就按时间生成)</param>
/// <param name="dicApproveUser">审批人员</param>
/// <param name="approveId">预设审批流ID</param>
/// <param name="approveTaskName">审批流名称</param>
/// <param name="Msg">返回提示信息</param>
/// <param name="finishTask">结束的待办</param>
/// <param name="nextTask">审批待办</param>
/// <param name="CALLBACK_INTERFACE">是否审批直接结束 如果是则无脑调用公共方法 </param>
/// <param name="TASK_TYPE">审批流结束时间获取方式</param>
/// <returns></returns>
public T_PF_APPROVE GetApproveInfo(string approveSetCode, string param, Guid DATA_ID, string approveShowCode, Guid? finishTaskId, string taskEndSourceFormCode, string approveCode, Dictionary<int, T_FM_USER> dicApproveUser, Guid? approveId, string approveTaskName, ref string Msg, ref T_FM_NOTIFICATION_TASK finishTask, ref T_FM_NOTIFICATION_TASK nextTask, ref string CALLBACK_INTERFACE, ref List<string> listDATA_ID, FMTASKTYPE? TASK_TYPE)
{
if (dicApproveUser == null || dicApproveUser.Count < 1)
{
Msg = "审批人员信息不能为空";
return null;
}
Expression<Func<T_PF_APPROVE_TEMP, bool>> expression = e => e.CODE == approveSetCode && !e.IS_DELETED && e.ENABLE_STATUS == 0;
T_PF_APPROVE_TEMP approveTemp = GetEntity(expression, "Nav_ApproveTempDetails");
if (approveTemp == null || approveTemp.Nav_ApproveTempDetails == null || !approveTemp.Nav_ApproveTempDetails.Any() || approveTemp.Nav_ApproveTempDetails.Count() < 1)
{
Msg = "审批模板配置缺失,编号" + approveSetCode;
return null;
}
T_PF_APPROVE approve = new T_PF_APPROVE();
List<T_PF_APPROVE_DETAIL> appdetails = new List<T_PF_APPROVE_DETAIL>();
if (approveId != null)
{
approve.ID = approveId.Value;
}
//加入审批主表
approve.APPROVE_TEMP_ID = approveTemp.ID;
approve.ORG_ID = approveTemp.ORG_ID;
approve.APPROVE_STATUS = (int)ApproveStatus.Doing;
approve.Nav_ApproveDetails = null;
approve.DATA_ID = DATA_ID;
approve.NAME = approveTemp.NAME;
approve.APPROVE_CODE = approveShowCode;
approve.CODE = String.IsNullOrEmpty(approveCode) ? DateTime.Now.ToString("yyyyMMddHHmmss") : approveCode;
approve.CALLBACK_INTERFACE = approveTemp.CALLBACK_INTERFACE;
//一个表单对应多个模板时,保存自定义参数
approve.PARAM = approveTemp.PARAM;
var listAPPROVE_ROLE_ID = approveTemp.Nav_ApproveTempDetails.Where(e => e.APPROVE_ROLE_ID.HasValue).Select(e => e.APPROVE_ROLE_ID.Value);
IEnumerable<T_FM_USER> iListUser = null;
if (listAPPROVE_ROLE_ID != null && listAPPROVE_ROLE_ID.Count() > 0)
{
iListUser = GetEntities<T_FM_USER>(e => e.APPROVE_ROLE_ID.HasValue && !e.IS_DELETED && e.ENABLE_STATUS == 0 && listAPPROVE_ROLE_ID.Contains(e.APPROVE_ROLE_ID.Value));
}
Guid? APPROVE_USER_ID = null;
approveTemp.Nav_ApproveTempDetails.ForEach(t =>
{
APPROVE_USER_ID = dicApproveUser.ContainsKey(t.NUM) ? dicApproveUser[t.NUM].ID : Guid.Empty;
if (APPROVE_USER_ID == Guid.Empty && iListUser != null && t.APPROVE_ROLE_ID.HasValue)
{
APPROVE_USER_ID = iListUser.FirstOrDefault(e => e.APPROVE_ROLE_ID.Value == t.APPROVE_ROLE_ID.Value)?.ID;
}
appdetails.Add(new T_PF_APPROVE_DETAIL()
{
APPROVE_ID = approve.ID,
IS_CURRENT = false,
ORG_ID = approveTemp.ORG_ID,
NAME = t.NAME,
NUM = t.NUM,
APPROVE_ROLE_ID = t.APPROVE_ROLE_ID,
IS_ALLOW_UPDATE = t.IS_ALLOW_UPDATE,
APPROVE_USER_ID = APPROVE_USER_ID
});
});
appdetails.OrderBy(t => t.NUM);
Guid? LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
int LoginNum = -1;
foreach (var item in dicApproveUser)
{
if (item.Value.ID == LoginID)
{
LoginNum = item.Key;
}
}
var listUserNull = appdetails.Where(e => !e.APPROVE_USER_ID.HasValue);
if (listUserNull != null && listUserNull.Any() && listUserNull.Count() > 0)
{
//有些没找到人
if (LoginNum == -1)
{
Msg = "获取审批人员信息失败";
return null;
}
else
{
int max = listUserNull.Max(e => e.NUM);
if (max > LoginNum)
{
//如果比登录者低,也是可以不用 直接过
Msg = "获取审批人员信息失败";
return null;
}
//删除没找到人的审批流
for (int i = 0; i < appdetails.Count; i++)
{
if (!appdetails[i].APPROVE_USER_ID.HasValue)
{
appdetails.RemoveAt(i);
i--;
}
}
}
}
if (finishTaskId != null && finishTaskId != Guid.Empty)
{
finishTask = NotificationTaskService.GetTaskFinishModel(finishTaskId.Value, taskEndSourceFormCode);//wyw 之前方法 巡回安全检查填写会报错
}
T_PF_APPROVE_DETAIL curentApprove = null;
bool isMsg = false;
DealOperateApproveDetail(ref isMsg, LoginID, ref appdetails, ref CALLBACK_INTERFACE, listDATA_ID, approve, ref curentApprove);//整理操作者审批流相关信息 wyw
if (curentApprove == null)
{
//Msg = "获取审批流当前节点信息失败";
//return null;
appdetails[0].IS_CURRENT = true;
curentApprove = appdetails[0];
}
var ApproveUserName = string.Empty;
foreach (var item in dicApproveUser)
{
if (item.Value.ID == curentApprove.APPROVE_USER_ID.Value)
{
ApproveUserName = item.Value.NAME;
break;
}
}
//发消息
nextTask = NotificationTaskService.InsertUserNoticeTaskModel(String.IsNullOrEmpty(approveTaskName) ? (approveTemp.NAME.EndsWith("待审批") ? approveTemp.NAME : approveTemp.NAME + "待审批") : approveTaskName, approve.ID, approve.ORG_ID, curentApprove.APPROVE_USER_ID.Value, ApproveUserName, DateTime.Now, 1, "PF119", (TASK_TYPE != null ? TASK_TYPE.Value : FMTASKTYPE.Default));
approve.Nav_ApproveDetails = appdetails;
if (!string.IsNullOrEmpty(CALLBACK_INTERFACE) && nextTask != null)
{
nextTask = NotificationTaskService.TaskFinishChangeProp(nextTask);
////如果直接结束 待办变成已办
//nextTask.TASK_DT = DateTime.Now;
//nextTask.NOTICE_STATUS = 1;
//nextTask.MODIFIER_ID = LoginID;
}
return approve;
//每个页面调用
//if (!string.IsNullOrEmpty(CALLBACK_INTERFACE))
//{
// if (CALLBACK_INTERFACE.EndsWith("New"))
// {
// this.UnifiedCommit(() =>
// {
// ApproveCallBackService.CallBackNew(CALLBACK_INTERFACE, approve, false);
// });
// }
// else
// {
// this.UnifiedCommit(() =>
// {
// ApproveCallBackService.CallBack(CALLBACK_INTERFACE, listDATA_ID);
// });
// }
//}
}
#endregion
}
}