zoukankan      html  css  js  c++  java
  • 如何用极致业务基础平台做一个通用企业ERP之系列之五通用单据设计技巧

    1.经常我们需要在系统实施过程中为客户删除数据之类的,但是因为框架有严格的数据联动机制,比如被引用的数据不允许随便删除,已经审核的单据也不允许删除修改,如果这样我们又要改要删除的话,需要到数据库服务器上去处理,但是数据库又不是很多时候放在服务器上,不是非常方便随时上去做调整的。

    所以可以设计一个如下的界面来做数据处理:

    这样我们便可以非常方便维护我们的数据。直接在运行的时候无论哪个客户端都可以处理。

    代码部分:

      /// <summary>
        ///数据处理界面
        /// </summary>
        class SQLExcute : Jeez.Runtime.Base.General.GeneralUI
        {
    
            Jeez.Control.UltraButton.JeezUltraButton btnOk;//执行
            Jeez.Control.UltraButton.JeezUltraButton btnCancel;//取消
    
            Jeez.Control.UltraButton.JeezUltraButton btnImport;//数据导出
    
            public Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txSQL;//sql语句
    
            public Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txResult;//执行异常结果
            Jeez.Control.JeezGrid.JeezGrid gridForgift;//执行结果grid
            System.Data.DataTable dt;
            System.Data.DataSet ds;
            Hashtable htHouse = new Hashtable();
    
            public Jeez.Control.JeezWinRadioButton.JeezWinRadioButton rdType;
    
    
            public Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txServer;//服务器IP
    
            public Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txDBName;//数据库名
    
            public Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txUserName;//账号
    
            public Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txUserPassword;//密码
    
    
            public Jeez.Control.JeezUltraTextBox.JeezUltraTextBox txtFilePath;//密码
    
            public override bool LoadUI()
            {
                bool b = base.LoadUI();
                if (b)
                {
                    txSQL = base.GetControlByName("txtSQL") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
    
                    txResult = base.GetControlByName("txtYichang") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                    gridForgift = base.GetControlByName("gridResult") as Jeez.Control.JeezGrid.JeezGrid;
                    btnOk = base.GetControlByName("btnOK") as Jeez.Control.UltraButton.JeezUltraButton;
                    btnOk.Click += new EventHandler(btnOk_Click);
                    btnCancel = base.GetControlByName("btnCancel") as Jeez.Control.UltraButton.JeezUltraButton;
                    btnCancel.Click += new EventHandler(btnCancel_Click);
    
                    btnCancel = base.GetControlByName("btnImport") as Jeez.Control.UltraButton.JeezUltraButton;
                    btnCancel.Click += new EventHandler(btnImport_Click);
    
                    rdType = base.GetControlByName("rdType") as Jeez.Control.JeezWinRadioButton.JeezWinRadioButton;
                    txServer = base.GetControlByName("txtServerIP") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                    txDBName = base.GetControlByName("txtDBName") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                    txUserName = base.GetControlByName("txtUserName") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                    txUserPassword = base.GetControlByName("txtPassword") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                    rdType.ValueChanged += new EventHandler(rdType_ValueChanged);
                    txtFilePath = base.GetControlByName("txtFilePath") as Jeez.Control.JeezUltraTextBox.JeezUltraTextBox;
                    txtFilePath.EditorButtonClick += new Infragistics.Win.UltraWinEditors.EditorButtonEventHandler(txtFilePath_EditorButtonClick);
                }
                return b;
            }
            /// <summary>
            /// 设置一个文件保存目录
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void txtFilePath_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e)
            {
                this.Cursor = Jeez.Common.UI.Waitcursor.WaitCursor;
                string FileName = Jeez.Common.UI.FileIO.FileOperate.GetSaveFileName("导出标题","导出文件名", "Microsoft Excel 文件(*.xls)|*.xls");
                if (FileName.Length > 0)
                {
                    txtFilePath.PropertyPage.Value = FileName;
                }
                this.Cursor = Jeez.Common.UI.Waitcursor.Default;
            }
    
            void rdType_ValueChanged(object sender, EventArgs e)
            {
                if (rdType.CheckedIndex == 0)
                {
                    txServer.Enabled = false;
                    txDBName.Enabled = false;
                    txUserName.Enabled = false;
                    txUserPassword.Enabled = false;
                    //txServer.ForeColor = System.Drawing.Color.Silver;
                }
                else
                {
                    txServer.Enabled = true;
                    txDBName.Enabled = true;
                    txUserName.Enabled = true;
                    txUserPassword.Enabled = true;
                    //txServer.BackColor = System.Drawing.Color.White;
                    //txServer.ForeColor = System.Drawing.Color.White;
    
                }
            }
    
            protected override void GereralUI_Load(object sender, EventArgs e)
            {
                base.GereralUI_Load(sender, e);
                rdType_ValueChanged(sender, e);
            }
            void btnOk_Click(object sender, EventArgs e)
            {
                //判断是否是超级用户
                  if (!Jeez.Login.Environment.RoleID.Contains(1))
                {
                    Jeez.Common.UI.MsgBox.Show("只有超级管理员用户才有执行该数据的权限");
                    return;
                }
    
    
                StringBuilder strResult = new StringBuilder();
                StringBuilder sb = new StringBuilder();
    
                sb.Append(txSQL.PropertyPage.Text);
    
    
                if (rdType.CheckedIndex == 0)
                {
                    //对于grid没有绑定实体的可以采用这种方式。
                 
    
                    Jeez.Core.NativeQueryCommand cmd;
                    Jeez.Core.INativeQuery quary = Jeez.Login.RemoteCall.GetNativeQuery();
                    cmd = new NativeQueryCommand();
                    cmd.CommandText = sb.ToString();
                    try
                    {
    
                        dt = quary.GetDataTable(this.objContext.ConnectionString, cmd);
    
                        ds = new System.Data.DataSet();
                        ds.Tables.Add(dt);
                        gridForgift.DataSource = ds.Tables[0];
                    }
                    catch (Exception ex)
                    {
                        strResult.AppendLine(ex.Message);
                    }
                    txResult.PropertyPage.Text = strResult.ToString();
                }
                else if (rdType.CheckedIndex == 1)
                {
                    string Connectstring = "server=" + txServer.PropertyPage.Value + ";database=" + txDBName.PropertyPage.Value + ";user id=" + txUserName.PropertyPage.Value + ";password=" + txUserPassword.PropertyPage.Value;
    
                    try
                    {
                        System.Data.DataSet ds1;
    
                       
    
    
                        dt = SqlHelper.GetDataTable(Connectstring, CommandType.Text, sb.ToString(), null);
    
                        ds1 = new System.Data.DataSet();
                        ds1.Tables.Add(dt);
                        gridForgift.DataSource = ds1.Tables[0];
                    }
                    catch (Exception ex)
                    {
                        strResult.AppendLine(ex.Message);
                    }
                    txResult.PropertyPage.Text = strResult.ToString();
    
                }
    
            }
            void btnCancel_Click(object sender, EventArgs e)
            {
    
                this.Close();
            }
    
            void btnImport_Click(object sender, EventArgs e)
            {
               
                string FileName = this.txtFilePath.VALUE.Trim();
                if (this.txtFilePath.VALUE.Trim().Length == 0)
                {
                    Jeez.Common.UI.MsgBox.Show("请设置导出文件路径。");
                     
                    return;
                } 
                DataTable dt = ds.Tables[0];
                Jeez.Common.UI.ImportExport.FileImportExport.DsToExcel(txtFilePath.PropertyPage.Value, ds);
               
            }
        }
    

     

    极致平台开发十大特点:

    1. 一个数据库下可以同时进行N套业务系统开发,开发出来的产品可以根据您客户的需要按模块界面组发布,客户想要啥模块就可以给啥模块。而且一个数据库下开发所有功能,当客户需要从你的人力资源增加客户关系管理模块的时候,你只要做个升级包就可以了。解决企业多个业务系统信息孤岛问题。
    2. 智能升级功能,当客户从A模块增加B模块的时候,您只需要做一个升级包即可,给客户升级后,客户原来录入的数据不会有影响,而且所有客户端都是智能感应智能升级,大大节省您的部署成本。
    3. 工作流套打报表均可以运行时候自定义,比如费用报销单,您100家客户就有一百种费用报销的流程,套打的格式,用我们平台您只需要设计好这个费用报销单,至于哪个客户走什么流程,完全可以让客户自己去定义,而不需要像传统开发那样,提前在开发中设置好,100个客户就维护100套代码。套打也是如此。
    4. 支持数据授权,当您开发多组织架构的系统的时候,我们只要业务单据引用组织机构即可,然后组织机构支持数据授权,这样就可以不需要编写任何一行代码就可以做到,组织与组织之间数据彼此隔离,我想给哪个用户看哪个组织的数据只要给这个用户这个组织的数据权限即可。
    5. 支持字段授权,对于一些表的核心字段对用户进行屏蔽直接利用我们平台的字段授权功能即可,比如职员薪酬字段进行字段授权,让有的用户在看职员信息的时候,自动隐藏薪酬的数据。这也是无需编写任何一行代码。
    6. 单据界面自动生成,我们开发的时候只要设计好实体,也就是传统开发所说的表结构即可,还可以设置哪些字段是必录,可见,不允许重复,在界面生成的时候,会自动生成一个界面,而且这个界面的增删改查是无需写一行代码的,您只要对您特有业务逻辑编码即可,相对传统开发,你代码量可以节省2/3,开发周期缩短2/3
    7.一次开发同时具有单机局域互联网三个版本,客户想要单机就给单机想要互联网版就给互联网版。 

    8.强大的公式引擎,让您可以灵活设计计算类的项目,比如工资,预算。

    9.包含强大的各种控件,比如文本控件支持F8调用,编码名称自动带出。Grid控件支持表头过滤,单元格融合,固定列,表格列,表格行各种公式汇总,复合表头,表格宽度可以自己随意调整,而且关闭后会自动记录之前的宽度。还支持表格列随意调整顺序。

    10.平台内置很多基础功能,比如权限管理,用户角色管理,还有实施的一些导入导出工具都能帮助客户大大提高一个项目验收进度。

     

    官网:www.jeez.com.cn
    平台介绍:www.jeez.com.cn/jbf  
    平台下载地址:http://www.jeez.com.cn/upfiles/jbfsetuppro.rar

    (下载即可有3个月免费试用)
    联系电话:13826519021 18988763421 QQ:180315586  420977542 (加我注明极致软件即可)

    平台销售经理:李先生 

    将互联网时代的管理软件做到极致!
    ==================================================================

  • 相关阅读:
    Linux 开机启动 php socket
    Linux 判断进程是否运行
    应用容器公共免费部署平台
    dos2unix 批量转化文件
    django中多个app放入同一文件夹apps
    django无法同步mysql数据库 Error:1064
    cos migration工具webhook推送
    腾讯云 COS 对象存储使用
    docker nginx 运行后无法访问
    makefile中 = := += 的区别
  • 原文地址:https://www.cnblogs.com/Jeez_JBF/p/ERP6.html
Copyright © 2011-2022 走看看