Exemple #1
0
        protected override bool beforeDelete()
        {
            Menu appMenu = new Menu(this.RefMenuNo);

            if (appMenu != null && appMenu.Flag.Contains("Flow"))
            {
                throw new Exception("@删除失败,此项为工作流菜单,不能删除。");
            }
            // 删除该系统.
            Menu menu = new Menu();

            menu.Delete(MenuAttr.FK_App, this.No);

            // 删除用户数据.
            EmpMenu em = new EmpMenu();

            em.Delete(MenuAttr.FK_App, this.No);

            EmpApp ea = new EmpApp();

            ea.Delete(MenuAttr.FK_App, this.No);

            return(base.beforeDelete());
        }
        /// <summary>
        /// 安装包
        /// </summary>
        public static void DoInstallDataBase(string lang, string yunXingHuanjing)
        {
            ArrayList al   = null;
            string    info = "BP.En.Entity";

            al = BP.En.ClassFactory.GetObjects(info);

            #region 1, 修复表
            foreach (Object obj in al)
            {
                Entity en = null;
                en = obj as Entity;
                if (en == null)
                {
                    continue;
                }

                if (en.ToString() == null)
                {
                    continue;
                }

                if (en.ToString().Contains("BP.Port."))
                {
                    continue;
                }

                string table = null;
                try
                {
                    table = en.EnMap.PhysicsTable;
                    if (table == null)
                    {
                        continue;
                    }
                }
                catch
                {
                    continue;
                }

                switch (table)
                {
                case "WF_EmpWorks":
                case "WF_GenerEmpWorkDtls":
                case "WF_GenerEmpWorks":
                case "WF_NodeExt":
                    continue;

                case "Sys_Enum":
                    en.CheckPhysicsTable();
                    break;

                default:
                    en.CheckPhysicsTable();
                    break;
                }

                en.PKVal = "123";
                try
                {
                    en.RetrieveFromDBSources();
                }
                catch (Exception ex)
                {
                    Log.DebugWriteWarning(ex.Message);
                    en.CheckPhysicsTable();
                }
            }
            #endregion 修复

            #region 2, 注册枚举类型 sql
            // 2, 注册枚举类型。
            BP.Sys.Xml.EnumInfoXmls xmls = new BP.Sys.Xml.EnumInfoXmls();
            xmls.RetrieveAll();
            foreach (BP.Sys.Xml.EnumInfoXml xml in xmls)
            {
                BP.Sys.SysEnums ses = new BP.Sys.SysEnums();
                ses.RegIt(xml.Key, xml.Vals);
            }
            #endregion 注册枚举类型

            #region 3, 执行基本的 sql
            string sqlscript = SystemConfig.PathOfWebApp + "\\GPM\\SQLScript\\Port_Inc_CH_BPM.sql";
            /*孙战平将RunSQLScript改为RunSQLScriptGo*/
            BP.DA.DBAccess.RunSQLScript(sqlscript);
            #endregion 修复

            #region 5, 初始化数据。

            sqlscript = SystemConfig.PathOfWebApp + "\\GPM\\SQLScript\\InitPublicData.sql";
            BP.DA.DBAccess.RunSQLScript(sqlscript);

            //sqlscript = SystemConfig.PathOfWebApp + "\\Data\\Install\\SQLScript\\GO.sql";
            //BP.DA.DBAccess.RunSQLScriptGo(sqlscript);
            #endregion 初始化数据

            #region 6, 创建视图。

            if (DBAccess.IsExitsObject("V_GPM_EmpGroup"))
            {
                BP.DA.DBAccess.RunSQL("DROP VIEW V_GPM_EmpGroup");
            }

            if (DBAccess.IsExitsObject("V_GPM_EmpGroupMenu"))
            {
                BP.DA.DBAccess.RunSQL("DROP VIEW V_GPM_EmpGroupMenu");
            }

            if (DBAccess.IsExitsObject("V_GPM_EmpStationMenu"))
            {
                BP.DA.DBAccess.RunSQL("DROP VIEW V_GPM_EmpStationMenu");
            }

            if (DBAccess.IsExitsObject("V_GPM_EmpMenu_GPM"))
            {
                BP.DA.DBAccess.RunSQL("DROP VIEW V_GPM_EmpMenu_GPM");
            }

            if (DBAccess.IsExitsObject("V_GPM_EmpMenu"))
            {
                BP.DA.DBAccess.RunSQL("DROP VIEW V_GPM_EmpMenu");
            }



            sqlscript = SystemConfig.PathOfWebApp + "\\GPM\\SQLScript\\MSSQL_GPM_VIEW.sql";

            //MySQL 语法有所区别
            if (BP.Sys.SystemConfig.AppCenterDBType == DBType.MySQL)
            {
                sqlscript = SystemConfig.PathOfWebApp + "\\GPM\\SQLScript\\MySQL_GPM_VIEW.sql";
            }
            //Oracle 语法有所区别
            if (BP.Sys.SystemConfig.AppCenterDBType == DBType.Oracle)
            {
                sqlscript = SystemConfig.PathOfWebApp + "\\GPM\\SQLScript\\Oracle_GPM_VIEW.sql";
            }
            BP.DA.DBAccess.RunSQLScriptGo(sqlscript);
            #endregion 创建视图

            #region 7, 初始化系统访问权限
            //查询出来系统
            Apps apps = new Apps();
            apps.RetrieveAll();

            //查询出来人员.
            Emps emps = new Emps();
            emps.RetrieveAllFromDBSource();
            //查询出来菜单
            Menus menus = new Menus();
            menus.RetrieveAllFromDBSource();

            //删除数据.
            BP.DA.DBAccess.RunSQL("DELETE FROM GPM_EmpApp");
            BP.DA.DBAccess.RunSQL("DELETE FROM GPM_EmpMenu");


            foreach (Emp emp in emps)
            {
                #region 初始化系统访问权限.
                foreach (App app in apps)
                {
                    EmpApp me = new EmpApp();
                    me.Copy(app);
                    me.FK_Emp = emp.No;
                    me.FK_App = app.No;
                    me.Name   = app.Name;
                    me.MyPK   = app.No + "_" + me.FK_Emp;
                    me.Insert();
                }
                #endregion 初始化系统访问权限.

                #region 初始化人员菜单权限
                foreach (Menu menu in menus)
                {
                    EmpMenu em = new EmpMenu();
                    em.Copy(menu);
                    em.FK_Emp  = emp.No;
                    em.FK_App  = menu.FK_App;
                    em.FK_Menu = menu.No;
                    em.MyPK    = menu.No + "_" + emp.No;
                    em.Insert();
                }
                #endregion
            }
            #endregion
        }