/// <summary> /// 驳回 /// 如果NodeRejectStep不为空,优先使用;否则按照NodeRejectType驳回 /// </summary> /// <returns></returns> public bool NodeReject(VerificationReq reqest) { var user = _auth.GetCurrentUser().User; FlowInstance flowInstance = Get(reqest.FlowInstanceId); FlowRuntime wfruntime = new FlowRuntime(flowInstance); string resnode = ""; resnode = string.IsNullOrEmpty(reqest.NodeRejectStep) ? wfruntime.RejectNode(reqest.NodeRejectType) : reqest.NodeRejectStep; var tag = new Tag { Description = reqest.VerificationOpinion, Taged = (int)TagState.Reject, UserId = user.Id, UserName = user.Name }; wfruntime.MakeTagNode(wfruntime.currentNodeId, tag); flowInstance.IsFinish = 4;//4表示驳回(需要申请者重新提交表单) if (resnode != "") { flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = resnode; flowInstance.ActivityType = wfruntime.GetNodeType(resnode); flowInstance.ActivityName = wfruntime.Nodes[resnode].name; flowInstance.MakerList = GetNodeMakers(wfruntime.Nodes[resnode]);//当前节点可执行的人信息 AddTransHistory(wfruntime); } UnitWork.Update(flowInstance); UnitWork.Add(new FlowInstanceOperationHistory { InstanceId = reqest.FlowInstanceId , CreateUserId = user.Id , CreateUserName = user.Name , CreateDate = DateTime.Now , Content = "【" + wfruntime.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + reqest.VerificationOpinion }); UnitWork.Save(); wfruntime.NotifyThirdParty(_httpClientFactory.CreateClient(), tag); return(true); }
public string Verification(VerificationReq request) { try { _app.Verification(request); } catch (Exception ex) { Result.Code = 500; Result.Message = ex.InnerException?.Message ?? ex.Message; } return(JsonHelper.Instance.Serialize(Result)); }
public Response Verification(VerificationReq request) { var response = new Response(); try { _app.Verification(request); } catch (Exception ex) { response.Code = 500; response.Message = ex.InnerException?.Message ?? ex.Message; } return(response); }
/// <summary> /// 审核流程 /// <para>李玉宝于2017-01-20 15:44:45</para> /// </summary> public void Verification(VerificationReq request) { CheckNodeDesignate(request); bool isReject = TagState.Reject.Equals((TagState)Int32.Parse(request.VerificationFinally)); if (isReject) //驳回 { NodeReject(request); } else { NodeVerification(request); } }
/// <summary> /// 审核流程 /// </summary> public void Verification(VerificationReq request) { //驳回 if (request.VerificationFinally == "3") { NodeReject(request); } else if (request.VerificationFinally == "2")//表示不同意 { NodeVerification(request.FlowInstanceId, false, request.VerificationOpinion); } else if (request.VerificationFinally == "1")//表示同意 { NodeVerification(request.FlowInstanceId, true, request.VerificationOpinion); } }
/// <summary> /// 审核流程 /// <para>李玉宝于2017-01-20 15:44:45</para> /// </summary> public void Verification(VerificationReq request) { var user = _auth.GetCurrentUser().User; var tag = new Tag { UserName = user.Name, UserId = user.Id, Description = request.VerificationOpinion, Taged = Int32.Parse(request.VerificationFinally) }; //驳回 if (request.VerificationFinally == TagState.Reject.ToString()) { NodeReject(request); } else { NodeVerification(request.FlowInstanceId, tag); } }
/// <summary> /// 审核流程 /// <para>李玉宝于2017-01-20 15:44:45</para> /// </summary> public void Verification(VerificationReq request) { var user = _auth.GetCurrentUser().User; var tag = new Tag { UserName = user.Name, UserId = user.Id, Description = request.VerificationOpinion, Taged = Int32.Parse(request.VerificationFinally) }; bool isReject = TagState.Reject.Equals((TagState)tag.Taged); if (isReject) //驳回 { NodeReject(request); } else { NodeVerification(request.FlowInstanceId, tag); } }
/// <summary> /// 驳回 /// </summary> /// <returns></returns> public bool NodeReject(VerificationReq reqest) { var user = AuthUtil.GetCurrentUser().User; FlowInstance flowInstance = Get(reqest.FlowInstanceId); FlowRuntime wfruntime = new FlowRuntime(flowInstance); string resnode = ""; if (string.IsNullOrEmpty(reqest.NodeRejectStep)) { resnode = wfruntime.RejectNode(); } else { resnode = reqest.NodeRejectStep; } var tag = new Tag { Description = reqest.VerificationOpinion, Taged = 0, UserId = user.Id, UserName = user.Name }; wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag); flowInstance.IsFinish = 4;//4表示驳回(需要申请者重新提交表单) if (resnode != "") { flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = resnode; flowInstance.ActivityType = wfruntime.GetNodeType(resnode); flowInstance.ActivityName = wfruntime.runtimeModel.nodes[resnode].name; flowInstance.MakerList = GetMakerList(wfruntime.runtimeModel.nodes[resnode], flowInstance.PreviousId);//当前节点可执行的人信息 #region 流转记录 UnitWork.Add(new FlowInstanceTransitionHistory { InstanceId = flowInstance.Id, CreateUserId = user.Id, CreateUserName = user.Name, FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeType = wfruntime.runtimeModel.currentNodeType, ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeType = wfruntime.runtimeModel.nextNodeType, IsFinish = wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0, TransitionSate = 1 }); #endregion } UnitWork.Update(flowInstance); UnitWork.Add(new FlowInstanceOperationHistory { InstanceId = reqest.FlowInstanceId , CreateUserId = user.Id , CreateUserName = user.Name , CreateDate = DateTime.Now , Content = "【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + reqest.VerificationOpinion }); UnitWork.Save(); return(true); }
/// <summary> /// 驳回 /// 如果NodeRejectStep不为空,优先使用;否则按照NodeRejectType驳回 /// </summary> /// <returns></returns> public bool NodeReject(VerificationReq reqest) { var user = _auth.GetCurrentUser().User; FlowInstance flowInstance = Get(reqest.FlowInstanceId); if (flowInstance.MakerList != "1" && !flowInstance.MakerList.Contains(user.Id)) { throw new Exception("当前用户没有驳回该节点权限"); } FlowRuntime wfruntime = new FlowRuntime(flowInstance); string rejectNode = ""; //驳回的节点 rejectNode = string.IsNullOrEmpty(reqest.NodeRejectStep) ? wfruntime.RejectNode(reqest.NodeRejectType) : reqest.NodeRejectStep; var tag = new Tag { Description = reqest.VerificationOpinion, Taged = (int)TagState.Reject, UserId = user.Id, UserName = user.Name }; wfruntime.MakeTagNode(wfruntime.currentNodeId, tag); flowInstance.IsFinish = FlowInstanceStatus.Rejected; //4表示驳回(需要申请者重新提交表单) if (rejectNode != "") { flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = rejectNode; flowInstance.ActivityType = wfruntime.GetNodeType(rejectNode); flowInstance.ActivityName = wfruntime.Nodes[rejectNode].name; flowInstance.MakerList = GetNodeMarkers(wfruntime.Nodes[rejectNode], flowInstance.CreateUserId); AddTransHistory(wfruntime); } UnitWork.Update(flowInstance); UnitWork.Add(new FlowInstanceOperationHistory { InstanceId = reqest.FlowInstanceId, CreateUserId = user.Id, CreateUserName = user.Name, CreateDate = DateTime.Now, Content = "【" + wfruntime.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + reqest.VerificationOpinion }); //给流程创建人发送通知信息 _messageApp.SendMsgTo(flowInstance.CreateUserId, $"你的流程[{flowInstance.CustomName}]已被{user.Name}驳回。备注信息:{reqest.VerificationOpinion}"); UnitWork.Save(); wfruntime.NotifyThirdParty(_httpClientFactory.CreateClient(), tag); return(true); }
/// <summary> /// 节点审核 /// </summary> /// <param name="instanceId"></param> /// <returns></returns> public bool NodeVerification(VerificationReq request) { var user = _auth.GetCurrentUser().User; var instanceId = request.FlowInstanceId; var tag = new Tag { UserName = user.Name, UserId = user.Id, Description = request.VerificationOpinion, Taged = Int32.Parse(request.VerificationFinally) }; FlowInstance flowInstance = Get(instanceId); if (flowInstance.MakerList != "1" && !flowInstance.MakerList.Contains(user.Id)) { throw new Exception("当前用户没有审批该节点权限"); } FlowInstanceOperationHistory flowInstanceOperationHistory = new FlowInstanceOperationHistory { InstanceId = instanceId, CreateUserId = tag.UserId, CreateUserName = tag.UserName, CreateDate = DateTime.Now }; //操作记录 FlowRuntime wfruntime = new FlowRuntime(flowInstance); #region 会签 if (flowInstance.ActivityType == 0) //当前节点是会签节点 { //会签时的【当前节点】一直是会签开始节点 //TODO: 标记会签节点的状态,这个地方感觉怪怪的 wfruntime.MakeTagNode(wfruntime.currentNodeId, tag); string canCheckId = ""; //寻找当前登录用户可审核的节点Id foreach (string fromForkStartNodeId in wfruntime.FromNodeLines[wfruntime.currentNodeId] .Select(u => u.to)) { var fromForkStartNode = wfruntime.Nodes[fromForkStartNodeId]; //与会前开始节点直接连接的节点 canCheckId = GetOneForkLineCanCheckNodeId(fromForkStartNode, wfruntime, tag); if (!string.IsNullOrEmpty(canCheckId)) { break; } } if (canCheckId == "") { throw (new Exception("审核异常,找不到审核节点")); } flowInstanceOperationHistory.Content = "【" + wfruntime.Nodes[canCheckId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】" + (tag.Taged == 1 ? "同意" : "不同意") + ",备注:" + tag.Description; wfruntime.MakeTagNode(canCheckId, tag); //标记审核节点状态 string res = wfruntime.NodeConfluence(canCheckId, tag); if (res == TagState.No.ToString("D")) { flowInstance.IsFinish = FlowInstanceStatus.Disagree; } else if (!string.IsNullOrEmpty(res)) { flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = wfruntime.nextNodeId; flowInstance.ActivityType = wfruntime.nextNodeType; flowInstance.ActivityName = wfruntime.nextNode.name; flowInstance.IsFinish = (wfruntime.nextNodeType == 4 ? FlowInstanceStatus.Finished : FlowInstanceStatus.Running); flowInstance.MakerList = (wfruntime.nextNodeType == 4 ? "" : GetNextMakers(wfruntime)); AddTransHistory(wfruntime); } else { //会签过程中,需要更新用户 flowInstance.MakerList = GetForkNodeMakers(wfruntime, wfruntime.currentNodeId); AddTransHistory(wfruntime); } } #endregion 会签 #region 一般审核 else { wfruntime.MakeTagNode(wfruntime.currentNodeId, tag); if (tag.Taged == (int)TagState.Ok) { flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = wfruntime.nextNodeId; flowInstance.ActivityType = wfruntime.nextNodeType; flowInstance.ActivityName = wfruntime.nextNode.name; flowInstance.MakerList = wfruntime.nextNodeType == 4 ? "" : GetNextMakers(wfruntime, request); flowInstance.IsFinish = (wfruntime.nextNodeType == 4 ? FlowInstanceStatus.Finished : FlowInstanceStatus.Running); AddTransHistory(wfruntime); } else { flowInstance.IsFinish = FlowInstanceStatus.Disagree; //表示该节点不同意 } flowInstanceOperationHistory.Content = "【" + wfruntime.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】" + (tag.Taged == 1 ? "同意" : "不同意") + ",备注:" + tag.Description; } #endregion 一般审核 flowInstance.SchemeContent = JsonHelper.Instance.Serialize(wfruntime.ToSchemeObj()); UnitWork.Update(flowInstance); UnitWork.Add(flowInstanceOperationHistory); //给流程创建人发送通知信息 _messageApp.SendMsgTo(flowInstance.CreateUserId, $"你的流程[{flowInstance.CustomName}]已被{user.Name}处理。处理情况如下:{flowInstanceOperationHistory.Content}"); UnitWork.Save(); wfruntime.NotifyThirdParty(_httpClientFactory.CreateClient(), tag); return(true); }