Esempio n. 1
0
        /// <summary>
        /// GetApproveFlowInstance
        /// </summary>
        /// <param name="flow"></param>
        /// <returns></returns>
        public ApprovalFlow GetApproveFlowInstance(Guid approvalFlowTypeID, Guid flowID, Guid userID, string comment)
        {
            try
            {
                int          approveStatus = (int)ApprovalStatus.Waitting;
                ApprovalFlow flow          = new ApprovalFlow();
                flow.Id = Guid.NewGuid();
                flow.ApprovalFlowTypeId = approvalFlowTypeID;
                flow.ChangeNote         = comment;
                flow.CreateTime         = DateTime.Now;
                flow.CreateUserId       = userID;
                flow.FlowId             = flowID;
                ApprovalFlowNode node = BusinessHandlerFactory.ApprovalFlowNodeBusinessHandler.GetFirstApproveFlowsNode(approvalFlowTypeID);
                if (node != null)
                {
                    flow.NextNodeID = node.Id;
                }
                flow.Status    = approveStatus;
                flow.SubFlowId = GetNextSubflowIDByFlowId(flowID);

                return(flow);
            }
            catch (Exception ex)
            {
                return(this.HandleException <ApprovalFlow>("获取流程结点失败", ex));
            }
        }
Esempio n. 2
0
 /// <summary>
 /// 根据当前flowtypeID 取得第一个节点
 /// </summary>
 /// <param name="FlowID"></param>
 /// <param name="historyID"></param>
 /// <returns></returns>
 public ApprovalFlowNode GetFirstApproveFlowsNode(Guid flowTypeId)
 {
     try
     {
         ApprovalFlowNode node = this.Fetch(n => n.ApprovalFlowTypeId == flowTypeId).OrderBy(o => o.Order).FirstOrDefault();
         return(node);
     }
     catch (Exception ex)
     {
         return(this.HandleException <ApprovalFlowNode>("获取第一个流程结点失败", ex));
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 处理审核流程
        /// </summary>
        /// <param name="flow"></param>
        public void SetApproveAction(ApprovalFlow flow, string action, Guid userID, string comment)
        {
            try
            {
                if (flow.NextNodeID != Guid.Empty)
                {
                    ApprovalFlowType flowType = BusinessHandlerFactory.ApprovalFlowTypeBusinessHandler.Fetch(
                        f => f.Id == flow.ApprovalFlowTypeId).FirstOrDefault();

                    //准备审批节点记录表,
                    ApprovalFlowRecord record = BusinessHandlerFactory.ApprovalFlowRecordBusinessHandler.GetApproveFlowRecordInstance(flow, userID, comment);
                    BusinessHandlerFactory.ApprovalFlowRecordBusinessHandler.Add(record);

                    //审批被拒绝
                    if ("REJECT".Equals(action.ToUpper()))
                    {
                        flow.Status = (int)ApprovalStatus.Reject;
                        UpdateEntityByApprovalStatus(flowType.ApprovalTypeValue, flow.FlowId, ApprovalStatus.Reject);
                    }
                    else
                    {
                        //获取当前节点的下一个节点
                        ApprovalFlowNode newNextNode = BusinessHandlerFactory.ApprovalFlowNodeBusinessHandler.GetNextApproveFlowsNode(flowType.Id, flow.NextNodeID);

                        if (newNextNode == null)          //审批通过,无下个一节点.审批结束
                        {
                            flow.NextNodeID = Guid.Empty; //审核通过后,下个节点信息保存为空Guid
                            flow.Status     = (int)ApprovalStatus.Approvaled;
                            UpdateEntityByApprovalStatus(flowType.ApprovalTypeValue, flow.FlowId, ApprovalStatus.Approvaled);
                        }
                        else //审核通过,更新审核流程的下一个节点信息
                        {
                            flow.NextNodeID = newNextNode.Id;
                            flow.Status     = (int)ApprovalStatus.Waitting;
                        }
                    }

                    this.Save(flow);
                    this.Save();
                }
            }
            catch (Exception ex)
            {
                this.HandleException("处理审批流程失败", ex);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 根据当前审批流程获得已审批节点记录集合
        /// </summary>
        /// <param name="FlowID"></param>
        /// <param name="historyID"></param>
        /// <returns></returns>
        public IEnumerable <ApprovalFlowNode> GetFinishApproveFlowsNodes(Guid FlowID, int historyID)
        {
            try
            {
                List <ApprovalFlowNode> listNodes = new List <ApprovalFlowNode>();

                List <ApprovalFlowRecord> listApprovalFlowRecord = BusinessHandlerFactory.ApprovalFlowRecordBusinessHandler.Fetch(
                    r => r.FlowId == FlowID && r.SubFlowId == historyID).OrderByDescending(p => p.ApproveTime).ToList();

                foreach (ApprovalFlowRecord item in listApprovalFlowRecord)
                {
                    ApprovalFlowNode af = new ApprovalFlowNode();
                    listNodes.Add(this.Fetch(r => r.Id == item.ApprovalFlowNodeId).FirstOrDefault());
                }
                return(listNodes);
            }
            catch (Exception ex)
            {
                return(this.HandleException <IEnumerable <ApprovalFlowNode> >("根据当前审批流程获得已审批节点记录集合失败", ex));
            }
        }