コード例 #1
0
        /// <summary>
        /// 传入一个需审批的业务,对业务安审批流程进行分解
        /// </summary>
        /// <param name="keys">
        /// keys[0]:TB_ZT标题
        /// keys[1]:MODULENAME审批类型编码
        /// keys[2]:BUSIN_ID业务数据id
        /// keys[3]:登录url
        /// 自动根据上下文状态确定 TBR_ID填报人id,TBR_NAME填报人name,TB_BM_ID填报部门id,TB_DATE申请时间创建日期,ID审批
        /// </param>
        /// <returns></returns>
        public static bool createApproval(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>();

            //插入审批主业务
            string ID = opt.GetSegValue(" select zs18.aprvflow_id_seq.nextval from dual", "nextval");

            string[] seg   = { "TB_ZT", "MODULENAME", "BUSIN_ID", "URL", "TBR_ID", "TBR_NAME", "TB_BM_ID", "TB_DATE", "ID" };
            string[] value = { keys[0], keys[1], keys[2], keys[3], user.id, user.text, user.OwningBusinessUnitId, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ID };
            commandlist.Add(opt.InsertDatastr(seg, value, "HT_PUB_APRV_FLOWINFO"));

            //插入审批流程
            //1、插入审批流程第一步提交流程 顺序号为0
            string[] subseg0   = { "GONGWEN_ID", "ROLENAME", "POS", "WORKITEMID", "ISENABLE", "USERID", "USERNAME", "OPINIONTIME", "COMMENTS", "STATUS" };
            string[] subvalue0 = { ID, user.UserRole, "0", "操作员提交审批", "1", user.id, user.text, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "提交", "2" };
            commandlist.Add(opt.InsertDatastr(subseg0, subvalue0, "HT_PUB_APRV_OPINION"));

            //2、根据审批模版中定义的顺序将审批业务分解为顺序流程
            string  query = "select * from HT_PUB_APRV_MODEL where PZ_TYPE = '" + value[1] + "' order by INDEX_NO";
            DataSet data  = opt.CreateDataSetOra(query);

            if (data != null && data.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow row in data.Tables[0].Rows)
                {
                    string enable = "0";
                    if ("1" == row["INDEX_NO"].ToString())
                    {
                        enable = "1";
                    }
                    string[] subseg   = { "GONGWEN_ID", "ROLENAME", "POS", "WORKITEMID", "ISENABLE" };
                    string[] subvalue = { ID, row["ROLE"].ToString(), row["INDEX_NO"].ToString(), row["FLOW_NAME"].ToString(), enable };
                    commandlist.Add(opt.InsertDatastr(subseg, subvalue, "HT_PUB_APRV_OPINION"));
                }
            }
            //3.从审批主表中匹配审批业务详情,将主业务置为办理中
            data = opt.CreateDataSetOra("select t.aprv_table,t.aprv_tabseg,t.BUZ_ID from   ht_pub_aprv_type t   where t.pz_type = '" + keys[1] + "'");
            string table    = data.Tables[0].Rows[0][0].ToString();
            string tableseg = data.Tables[0].Rows[0][1].ToString();
            string busid    = data.Tables[0].Rows[0][2].ToString();

            commandlist.Add("update " + table + " set " + tableseg + " = '0' where " + busid + " = '" + keys[2] + "'");

            //4、上述操作作为事务进行处理
            if ("Success" == opt.TransactionCommand(commandlist))
            {
                return(true);
            }

            else
            {
                return(false);
            }
        }