Beispiel #1
0
        public HrsLeaveResult Insert(BizAppFlowEntity bizapp)
        {
            IDbSession session = SessionFactory.CreateSession();

            try
            {
                var result = Repository.Insert <BizAppFlowEntity>(session.Connection, bizapp);
                if (result > 0)
                {
                    HrsLeaveResult.ResultIdentity = result;
                    return(HrsLeaveResult.Success);
                }
                else
                {
                    return(HrsLeaveResult.Failed(""));
                }
            }
            catch (System.Exception exception)
            {
                return(HrsLeaveResult.Failed(exception.Message));
            }
            finally
            {
                session.Dispose();
            }
        }
Beispiel #2
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        private static BizAppFlowEntity GetBizAppFlowModel(DataTable dt)
        {
            if (dt != null && dt.Rows != null && dt.Rows.Count > 0)
            {
                BizAppFlowEntity model = new BizAppFlowEntity();
                if (dt.Rows[0]["ID"].ToString() != "")
                {
                    model.ID = int.Parse(dt.Rows[0]["ID"].ToString());
                }
                model.AppName       = dt.Rows[0]["AppName"].ToString();
                model.AppInstanceID = dt.Rows[0]["AppInstanceID"].ToString();
                model.ActivityName  = dt.Rows[0]["ActivityName"].ToString();
                model.Remark        = dt.Rows[0]["Remark"].ToString();
                if (dt.Rows[0]["ChangedTime"].ToString() != "")
                {
                    model.ChangedTime = DateTime.Parse(dt.Rows[0]["ChangedTime"].ToString());
                }
                if (dt.Rows[0]["ChangedUserID"].ToString() != "")
                {
                    model.ChangedUserID = dt.Rows[0]["ChangedUserID"].ToString();
                }
                model.ChangedUserName = dt.Rows[0]["ChangedUserName"].ToString();

                return(model);
            }
            else
            {
                return(null);
            }
        }
Beispiel #3
0
        /// <summary>
        /// 新增一条业务流程数据
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static int AddBizAppFlow(BizAppFlowEntity model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into BizAppFlow(");
            strSql.Append("AppName,AppInstanceID,ActivityName,Remark,ChangedTime,ChangedUserID,ChangedUserName");
            strSql.Append(") values (");
            strSql.Append("@AppName,@AppInstanceID,@ActivityName,@Remark,@ChangedTime,@ChangedUserID,@ChangedUserName");
            strSql.Append(") ");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@AppName",         SqlDbType.NVarChar,    50),
                new SqlParameter("@AppInstanceID",   SqlDbType.VarChar,     50),
                new SqlParameter("@ActivityName",    SqlDbType.NVarChar,    50),
                new SqlParameter("@Remark",          SqlDbType.NVarChar,  1000),
                new SqlParameter("@ChangedTime",     SqlDbType.DateTime),
                new SqlParameter("@ChangedUserID",   SqlDbType.Int,          4),
                new SqlParameter("@ChangedUserName", SqlDbType.NVarChar, 50)
            };
            int idx = 0;

            parameters[idx++].Value = model.AppName;
            parameters[idx++].Value = model.AppInstanceID;
            parameters[idx++].Value = model.ActivityName;
            parameters[idx++].Value = model.Remark;
            parameters[idx++].Value = model.ChangedTime;
            parameters[idx++].Value = model.ChangedUserID;
            parameters[idx++].Value = model.ChangedUserName;

            object obj = SQLHelper.ExecuteScalar(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
Beispiel #4
0
 /// <summary>
 /// 新增一条业务流程数据
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public static int AddBizAppFlow(BizAppFlowEntity model)
 {
     return(WorkFlowManager.AddBizAppFlow(model));
 }
Beispiel #5
0
        public async Task <ActionResult> Add(LeaveViewModel leave)
        {
            string processGUID = leave.ProcessGUID;

            //验证不通过,重新填写表单
            if (!ModelState.IsValid)
            {
                return(View());
            }
            IWorkflowService service = new WorkflowService();
            //流程开始第一步
            ActivityEntity firstActivity = service.GetFirstActivity(leave.ProcessGUID);

            //该处较上一版本有变化,上一版本为GUID类型
            string           firstActivityGUID = firstActivity.ActivityGUID;
            IList <NodeView> nextActivity      = service.GetNextActivity(leave.ProcessGUID, firstActivityGUID, GetCondition("days-" + leave.Days));

            //表示有下一位审批者
            if (nextActivity.Count() > 0)
            {
                //下一步角色ID审批者
                string outerId = nextActivity[0].Roles[0].ID.ToString();
                //这里只取第一个审批者,WebDemo 是弹窗形式选择
                //审批用户id
                IEnumerable <int> userId = RoleManager.FindById(Convert.ToInt32(outerId)).Users.Select(t => t.UserId);
                ApplicationUser   user   = await UserManager.FindByIdAsync(Convert.ToInt32(userId.ToList()[0]));

                //提交请假信息
                LeaveEntity leaveE = new LeaveEntity()
                {
                    FromDate            = leave.BeginTime,
                    ToDate              = leave.EndTime,
                    Days                = leave.Days,
                    LeaveType           = leave.LeaveType,
                    CurrentActivityText = "",
                    Status              = 0,
                    CreatedUserID       = Convert.ToInt32(User.Identity.GetUserId()),
                    CreatedUserName     = User.Identity.Name,
                    CreatedDate         = DateTime.Now
                };
                HrsLeaveResult result = new WorkFlowManager().Insert(leaveE);
                if (result.Successed)
                {
                    WfAppRunner initiator = new WfAppRunner();
                    initiator.AppName       = "请假流程";
                    initiator.AppInstanceID = result.ResultIdentities.ToString();
                    initiator.ProcessGUID   = processGUID;
                    initiator.UserID        = User.Identity.GetUserId();
                    initiator.UserName      = User.Identity.Name;
                    initiator.Conditions    = GetCondition(string.Format("days-{0}", leave.Days));
                    WfExecutedResult startedResult = service.StartProcess(initiator);
                    if (startedResult.Status != WfExecutedStatus.Success)
                    {
                        //给出提示
                    }
                    //送往下一步
                    PerformerList pList = new PerformerList();
                    //这里使用真实姓名代替
                    pList.Add(new Performer(user.Id.ToString(), user.RealName));
                    initiator.NextActivityPerformers = new Dictionary <String, PerformerList>();
                    initiator.NextActivityPerformers.Add(nextActivity[0].ActivityGUID, pList);
                    WfExecutedResult runAppResult = service.RunProcessApp(initiator);
                    if (runAppResult.Status != WfExecutedStatus.Success)
                    {
                        this.Content("<script>alert('" + runAppResult.Message + "');</script>");
                    }
                    //保存业务数据
                    BizAppFlowEntity AppFlowEntity = new BizAppFlowEntity();
                    AppFlowEntity.AppName         = "流程发起";
                    AppFlowEntity.AppInstanceID   = result.ResultIdentities.ToString();
                    AppFlowEntity.ActivityName    = "流程发起";
                    AppFlowEntity.Remark          = string.Format("申请人:{0}-{1}", User.Identity.GetUserId(), User.Identity.Name);
                    AppFlowEntity.ChangedTime     = DateTime.Now;
                    AppFlowEntity.ChangedUserID   = User.Identity.GetUserId();
                    AppFlowEntity.ChangedUserName = User.Identity.Name;
                    HrsLeaveResult resultBiz = new WorkFlowManager().Insert(AppFlowEntity);
                    if (resultBiz.Successed)
                    {
                        //给出前台提示
                        this.Content("", "<script>alert('流程发起成功');</script>");
                    }
                }
            }
            else
            {
                //显示前台错误,人事人员审批失败
                ModelState.AddModelError("Human", "该用户暂时不可提交审批,未查询到该用户的下一位审批者");
                return(View());
            }
            return(RedirectToAction("MySlickflow", "Slickflow"));
        }