Example #1
0
        /// <summary>
        /// 保存审批
        /// </summary>
        /// <param name="classIds"></param>
        /// <param name="status">2通过  1拒绝</param>
        /// <param name="reason"></param>
        /// <returns></returns>
        public JsonResult SaveApproval(string classIds, int status, string reason = "")
        {
            if (string.IsNullOrWhiteSpace(classIds))
            {
                return(Json(new { result = 0, content = "审批错误", error = "id为空" }, JsonRequestBehavior.AllowGet));
            }

            try
            {
                using (TransactionScope tran = new TransactionScope())
                {
                    //UpdateApprovalByQuery方法目前处理不了多个批处理操作,只能单一处理
                    var ids = classIds.Split(',');
                    foreach (var item in ids)
                    {
                        _planManager.UpdateApprovalByQuery(item, status, reason, CurrentUser.UserId);
                    }

                    if (status == 2)
                    {
                        var passIdList = _planManager.GetCanPassIdList(classIds);
                        if (passIdList.Count > 0)
                        {
                            var query = " ApproveStatus=2,ApproveTime=getdate()";
                            _planManager.UpdateByQuery(string.Join(",", passIdList), query);

                            try { SendPass(classIds, 0); }
                            catch { }
                        }
                        else//还没结束,就发邮件吧
                        {
                            //发送邮件不再监控事务范围内,即使发生异常也不会影响下面的事务操作
                            try { SendApproval2(classIds, 0); }
                            catch { }
                        }
                    }
                    else
                    {
                        var query = " ApproveStatus=3,ApproveTime=getdate()";
                        _planManager.UpdateByQuery(classIds, query);

                        try { SendNoPass(classIds, 0, CurrentUser.Realname, reason); }
                        catch { }
                    }

                    tran.Complete();
                }
                return(Json(new { result = 1 }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { result = 0, content = "审批错误", error = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }