コード例 #1
0
        /// <summary>
        /// 处理审批业务时进行的操作
        /// </summary>
        /// <param name="ID">审批流程ID号</param>
        /// <param name="keys">
        /// keys[0]:COMMENTS  意见内容
        /// keys[1]:STATUS  状态
        /// USERID  用户id,USERNAME  用户名 根据上下文自动填充
        /// </param>
        /// <returns></returns>
        public static bool authorize(string ID, string[] keys)
        {
            MSYS.DAL.DbOperator opt         = new MSYS.DAL.DbOperator();
            MSYS.Data.SysUser   user        = (MSYS.Data.SysUser)HttpContext.Current.Session["user"];
            List <String>       commandlist = new List <String>();

            //1.改变当前审批业务状态
            string[] seg   = { "USERID", "USERNAME", "OPINIONTIME", "COMMENTS", "STATUS" };
            string[] value = { user.id, user.text, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), keys[0], keys[1] };
            commandlist.Add(opt.UpdateStr(seg, value, "HT_PUB_APRV_OPINION", " where id = '" + ID + "'"));

            //2.将当前审批业务的下一环节业务置为Enable,提交给相对应的角色
            string nextID = opt.GetSegValue("select id from ht_pub_aprv_opinion where (gongwen_id,pos) in ( select gongwen_id,to_char(to_number(pos)+1) from ht_pub_aprv_opinion where id= '" + ID + "')", "ID");

            if (nextID != "NoRecord")
            {
                commandlist.Add("update HT_PUB_APRV_OPINION set ISENABLE = '1' where id = '" + nextID + "'");
            }

            //3.从审批主表中匹配审批业务详情,将审批结果在被审批业务中进行反馈
            DataSet data     = opt.CreateDataSetOra("select s.id,t.aprv_table,t.aprv_tabseg,t.BUZ_ID,s.BUSIN_ID from ht_pub_aprv_opinion r left join ht_pub_aprv_flowinfo  s on s.id = r.gongwen_id left join ht_pub_aprv_type t on t.pz_type = s.modulename  where r.id = '" + ID + "'");
            string  flowid   = data.Tables[0].Rows[0][0].ToString();
            string  table    = data.Tables[0].Rows[0][1].ToString();
            string  tableseg = data.Tables[0].Rows[0][2].ToString();
            string  busid    = data.Tables[0].Rows[0][3].ToString();
            string  busvalue = data.Tables[0].Rows[0][4].ToString();

            //如果明细审批单步被拒绝,则整个审批单状态被置为己驳回,被审批业务不通过
            if (keys[1] == "1")
            {
                commandlist.Add("Update HT_PUB_APRV_FLOWINFO set STATE = '1' where id = '" + flowid + "'");
                //将业务主表的审批字段置为己驳回
                commandlist.Add("update " + table + " set " + tableseg + " = '1' where " + busid + " = '" + busvalue + "'");
            }
            //如果明细审批单所有流程均通过,则整个审批单状态被置为己通过
            if ("Success" == opt.TransactionCommand(commandlist))
            {
                data = opt.CreateDataSetOra("select status,GONGWEN_ID from ht_pub_aprv_opinion where pos = (select Max(pos) from ht_pub_aprv_opinion where gongwen_ID = (select gongwen_ID from ht_pub_aprv_opinion where id = '" + ID + "')) and id = '" + ID + "'");
                if (data != null && data.Tables[0].Rows.Count > 0 && data.Tables[0].Rows[0][0].ToString() == "2")
                {
                    commandlist.Clear();
                    commandlist.Add("Update HT_PUB_APRV_FLOWINFO set STATE = '2' where id = '" + flowid + "'");
                    //将业务主表的审批字段置为己通过
                    commandlist.Add("update " + table + " set " + tableseg + " = '2' where " + busid + " = '" + busvalue + "'");
                    opt.TransactionCommand(commandlist);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }