Пример #1
0
        private void InitControl(WF_WorkFlow workFlow, List <WF_Process> currApprovers)
        {
            if (workFlow.IsFinish)
            {
                return;
            }
            var currentUser = RequestSession.GetSessionUser();

            if (currentUser == null)
            {
                return;
            }
            if (workFlow.Requester.Equals(currentUser.UserId.ToString()))
            {
                if (workFlow.WFStatus == (int)OperateEnum.Reject || workFlow.WFStatus == (int)OperateEnum.Cancel)
                {
                    btn_resubmit.Visible = true;
                }
                btn_cancel.Visible = true;
            }
            else
            {
                var currApprover = currApprovers.Where(c => currentUser.Equals(c.ApproverID)).FirstOrDefault();
                if (currApprover != null)
                {
                    btn_approve.Visible = true;
                    btn_return.Visible  = true;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 创建工作流
        /// </summary>
        /// <param name="contractId">合同ID</param>
        /// <param name="contractAmount">合同金额</param>
        /// <returns></returns>
        public string CreateWorkFlow(string contractId, string currentUserId, double contractAmount)
        {
            string retMsg = "true";

            if (string.IsNullOrWhiteSpace(contractId) || contractAmount <= 0)
            {
                retMsg = "合同不存在或合同金额错误";
                return(retMsg);
            }
            var workFlowInfo = GetWorkFlowInfoByAmount(contractAmount);

            if (workFlowInfo == null)
            {
                retMsg = "流程不存在";
                return(retMsg);
            }
            var activities = GetWorkActivity(workFlowInfo.ID);
            var wfId       = Guid.NewGuid().ToString();
            var workFlow   = new WF_WorkFlow()
            {
                ContractId        = contractId,
                Creater           = currentUserId,
                CreateTime        = DateTime.Now,
                CurrentActivityId = "",
                NextActivityId    = "",
                Id            = Guid.NewGuid().ToString(),
                Requester     = currentUserId,
                StatusDescrip = "",
                WFStatus      = (int)WorkFlowStatus.Approving,
                WorkInfoId    = workFlowInfo.ID
            };

            using (var context = WDbContext())
            {
                context.Insert("WF_WorkFlow")
                .Column("Id", workFlow.Id)
                .Column("WorkInfoId", workFlow.WorkInfoId)
                .Column("ContractId", workFlow.ContractId)
                .Column("WFStatus", (int)WorkFlowStatus.Approving)
                .Column("CurrentActivityId", workFlow.CurrentActivityId)
                .Column("NextActivityId", workFlow.NextActivityId)
                .Column("Requester", workFlow.Requester)
                .Column("Creater", workFlow.Creater)
                .Column("CreateTime", workFlow.CreateTime)
                .Column("IsFinish", "0")
                .Execute();
            }
            foreach (var itm in activities)
            {
                if (itm.Step == 1)
                {
                    AddProcess(itm, workFlow);
                }
                //if (itm.ApproveType != (int)ApproveType.Skip) {
                //    break;
                //}
            }
            return(retMsg);
        }
Пример #3
0
        /// <summary>
        /// 根据ID获取流程信息
        /// </summary>
        /// <param name="flowInfoId"></param>
        /// <returns></returns>
        public WF_WorkFlow GetWorkFlow(string flowInfoId)
        {
            WF_WorkFlow retData = null;

            if (string.IsNullOrEmpty(flowInfoId))
            {
                return(retData);
            }
            using (var context = WDbContext())
            {
                retData = context.Sql(@"select id,WorkInfoId,ContractId,CurrentActivityId,NextActivityId,StatusDescrip,WFStatus,IsFinish,Requester,Creater,CreateTime
                            from WF_WorkFlow
                            where id=@id")
                          .Parameter("id", flowInfoId)
                          .QuerySingle <WF_WorkFlow>();
                return(retData);
            }
        }
Пример #4
0
 public static Common.Business.WF_WorkFlow Fetch(WF_WorkFlow data)
 {
     Common.Business.WF_WorkFlow item = (Common.Business.WF_WorkFlow)Activator.CreateInstance(typeof(Common.Business.WF_WorkFlow));
     //using (ObjectFactory.BypassPropertyChecks(item))
     {
         item.Client        = data.Client;
         item.WorkflowId    = data.WorkflowId;
         item.WorkflowName  = data.WorkflowName;
         item.WorkflowGroup = data.WorkflowGroup;
         item.InitialState  = data.InitialState;
         item.Stoped        = data.Stoped;
         item.Description   = data.Description;
         item.TimeStamp     = data.TimeStamp;
         item.CreatedUser   = data.CreatedUser;
         item.CreatedDate   = data.CreatedDate;
         item.ChangedUser   = data.ChangedUser;
         item.ChangedDate   = data.ChangedDate;
     }
     ObjectFactory.MarkAsChild(item);
     ObjectFactory.MarkOld(item);
     return(item);
 }
Пример #5
0
        /// <summary>
        /// 添加过程
        /// </summary>
        /// <param name="activity"></param>
        /// <returns></returns>
        public int AddProcess(WF_Activity activity, WF_WorkFlow workFlow)
        {
            var execResult = 0;

            if (activity == null || workFlow == null)
            {
                return(execResult);
            }
            int?     operate     = null;
            DateTime?operateTime = null;
            string   remark      = "";
            bool     isFinish    = false;

            // List<UserInfo> userList = new List<UserInfo>();
            //switch (activity.ApproveType)
            //{
            //    //case (int)ApproveType.Department:
            //    //    userList = GetUserByDepartId(activity.Department);
            //    //    break;
            //    //case (int)ApproveType.Group:
            //    //    userList = GetUserByGroupId(activity.GroupId);
            //    //    break;
            //    case (int)ApproveType.Role:
            //        userList = GetUserByRole(activity.RoleId);
            //        break;
            //    //case (int)ApproveType.Skip:
            //    //    userList.Add(new UserInfo()
            //    //    {
            //    //        User_ID = workFlow.Requester
            //    //    });
            //    //    operate = (int)OperateEnum.Submit;
            //    //    operateTime = DateTime.Now;
            //    //    remark = "合同提交";
            //    //    isFinish = true;
            //    //    break;
            //    //case (int)ApproveType.Submitter:
            //    //    userList.Add(new UserInfo()
            //    //    {
            //    //        User_ID = workFlow.Requester
            //    //    });
            //    //    break;
            //    default:
            //        break;
            //}

            using (var context = WDbContext())
            {
                //foreach (var itm in userList)
                //{
                execResult += context.Insert("WF_Process")
                              .Column("WorFlowId", workFlow.Id)
                              .Column("ActivityId", activity.Id)
                              .Column("Step", activity.Step)
                              .Column("ApproverID", RequestSession.GetSessionUser().UserId.ToString())
                              .Column("Operate", operate)
                              .Column("operateTime", operateTime)
                              .Column("Remark", remark)
                              .Column("IsFinish", isFinish)
                              .Column("CreateTime", DateTime.Now)
                              .Execute();
                //  }

                //更新流程状态
                context.Update("WF_WorkFlow")
                .Column("CurrentActivityId", activity.Id)
                .Where("Id", workFlow.Id)
                .Execute();
            }

            return(execResult);
        }