0.个人框架开源起始

来源:互联网 发布:c 能给plc编程吗 编辑:程序博客网 时间:2024/06/06 06:59

目前自己已经开发了一套框架,该套框架支持从数据库读取表结构,然后自动生成SQL语句,并且提供了一整套来执行业务逻辑的关系。

通过 Module、Job、Action三点来确定执行的函数

另外提供了一整套的配置文件自动同步结构。

目前想把这套框架开源,来支持Java、Mac、C++、C#服务器端,并且适用于Web前端开发、Winform开发、WPF、MFC一整套程序。

之所以要开源这套框架,有3个原因:

第一个是想将整套框架整理成熟

第二个是认识更多的人

第三个是想把这套框架推广出去,从而加快中国软件开发的进度

第四个是能够在其中学到很多东西。


报名方式: QQ群: 578129256

svn地址: https://www.yanzuoguang.com/svn/LightFrame


服务器端的XML配置文件:



服务器端的服务实现类:



监控程序:

SQL执行语句的监控:


请求数据:


返回结果:


执行日志:

Cookies信息:



客户端代码:



    public partial class FrmHardQuery : Form, IFormQuery
    {
        private RequestModuleForm m_Module = null;
        private FormQueryBase<FrmHardEdit> m_Base = null;


        public FrmHardQuery()
        {
            InitializeComponent();
            this.dgv_Query.AutoGenerateColumns = false;
            this.m_Module = new RequestModuleForm(this, "System", "System_Hard");
            this.m_Base = new FormQueryBase<FrmHardEdit>("硬件", this);


            this.InitDrop();
        }


        #region 页面事件
        private void FrmHardQuery_Load(object sender, EventArgs e)
        {
            this.m_Base.QuerySingle();
        }


        private void btnQuery_Click(object sender, EventArgs e)
        {
            this.m_Base.Query();
        }


        private void bt_Creat_Click(object sender, EventArgs e)
        {
            this.m_Base.ShowEdit(string.Empty);
        }


        private void bt_Remove_Click(object sender, EventArgs e)
        {
            this.m_Base.RemoveSelect();
        }


        private void tb_HardName_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (int)Keys.Enter)
            {
                this.m_Base.Query();
            }
        }


        private void bt_Use_Click(object sender, EventArgs e)
        {
            this.m_Base.UpdateSelect("启用", delegate(IDictionary item)
            {
                item["HardIsEnabled"] = 1;
            }, false);
        }


        private void bt_Unuse_Click(object sender, EventArgs e)
        {
            this.m_Base.UpdateSelect("停用", delegate(IDictionary item)
            {
                if (StringHelper.SafeCompare(item["HardID"], GlobleConfig.HardInfo.HardID, true))
                {
                    throw PiaostException.Create(0, "不能禁用本机设备");
                }
                item["HardIsEnabled"] = 0;
            }, false);
        }


        private void cb_Position_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.m_Base.Query();
        }


        private void cb_PositionType_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Bind();
            this.m_Base.Query();
        }


        private void dgv_Query_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            this.m_Base.EditDgvIndex(e.RowIndex);
        }
        #endregion




        #region 实现接口
        public RequestModuleForm Module
        {
            get { return this.m_Module; }
        }


        public object DgvResult
        {
            get { return this.dgv_Query; }
        }


        public IPageSizeControl PageControl
        {
            get { return this.pg_Size; }
        }


        public object GetQueryCondtion()
        {
            Dictionary<string, object> dic = new Dictionary<string, object>();
            dic["HardName_Search"] = this.tb_HardKey.Text;
            dic["HardTypeID"] = this.cb_HardType.SelectedValue;
            dic["ScenicProjectID"] = this.cb_Project.SelectedValue;
            dic["PositionTypeID"] = this.cb_PositionType.SelectedValue;
            dic["HardPosition"] = this.cb_PositionMeanType.SelectedValue;
            dic["HardIsEnabled"] = this.cb_SystemIsLock.SelectedValue;
            return dic;
        }


        public string KeyField
        {
            get { return "HardID"; }
        }
        #endregion


        #region 初始化下拉
        public void InitDrop()
        {
            this.m_Base.CondtionInit(delegate()
            {
                ControlHelper.BindDrop(cb_PositionMeanType, DropData.Get("PositionMeanType"), "Text", "Value", "-出入口-");
                ControlHelper.BindDrop(cb_SystemIsLock, DropData.Get("SystemIsEnabled"), "Text", "Value", "-状态-");


                ControlHelper.BindDrop(Col_Position, DropData.Get("PositionMeanType"), "Text", "Value");
                ControlHelper.BindDrop(Col_HardIsManagerCard, DropData.Get("HardIsManagerCard"), "Text", "Value");
            });


            this.m_Module.AddInit(delegate()
            {
                List<ReturnDataSet> rsList = this.m_Module.Request<ReturnDataSet>(new List<RequestData>()
                {
                    new RequestData(){
                        Module = this.m_Module.Module,
                        Job = "System_HardType",
                        Action = "Query"
                    },
                    new RequestData(){
                        Module = "Scenic",
                        Job = "Scenic_Project",
                        Action = "Query"
                    },
                    new RequestData(){
                        Module = this.m_Module.Module,
                        Job = "System_PositionType",
                        Action = "Query"
                    }
                });


                this.m_Base.CondtionInit(delegate()
                {
                    ControlHelper.BindDrop(cb_HardType, rsList[0].GetTable(0), "HardTypeName", "HardTypeID", "-硬件类型-");
                    ControlHelper.BindDrop(cb_Project, rsList[1].GetTable(0), "ProjectName", "ProjectID", "-服务项目-");
                    ControlHelper.BindDrop(cb_PositionType, rsList[2].GetTable(0), "PositionTypeName", "PositionTypeID", "-服务区域-");
                    Bind();
                });
            });
        }


        private void Bind()
        {
            object vValue = this.cb_Project.SelectedValue;
            DataTable vTable = this.cb_PositionType.DataSource as DataTable;
            if (vTable == null)
            {
                return;
            }
            RowHelper.AddColumn(vTable, "ScenicProjectID");
            string vFitler = StringHelper.IsEmpty(vValue) ? string.Empty : string.Format("ScenicProjectID='{0}' OR ScenicProjectID IS NULL", vValue);
            vTable.DefaultView.RowFilter = vFitler;
        }
        #endregion


        private void dgv_Query_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == this.Col_Operation.Index)
            {
                DataRow vRow = (this.dgv_Query.DataSource as DataTable).Rows[e.RowIndex];
                FrmHardLoad vForm = new FrmHardLoad(vRow);
                FormOpen.Open(vForm, vForm.Text);
            }
        }


WPF代码以及图片


/// <summary>
    /// FrmOrderQuery.xaml 的交互逻辑
    /// </summary>
    public partial class FrmOrderQuery : UserControl, IFormQuery
    {
        private RequestModuleForm m_Module = null;
        private FormQueryBase<FrmOrderLoad> m_Base = null;
        private ScanData m_Scan = null;


        public FrmOrderQuery()
        {
            InitializeComponent();
            this.m_Module = new RequestModuleForm(this, "Order", "Order_Order");
            this.m_Base = new FormQueryBase<FrmOrderLoad>("订单", this);
            this.InitDrop();
        }


        private void WPFQuikeDay_DateChanged()
        {
            this.m_Base.CondtionInit(delegate()
            {
                this.dtp_DateFrom.SelectedDate = this.pqd_Day.DateFrom;
                this.dtp_DateTo.SelectedDate = this.pqd_Day.DateTo;
            });
            this.m_Base.Query();
        }


        private void OnScan(ScanData data)
        {
            this.m_Scan = data;
            this.m_Module.Invoke(delegate()
            {
                this.m_Base.Query();
            });
        }


        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            ScanHandle.Add(this, this.OnScan);
            this.m_Base.QuerySingle();
        }


        private void bt_Search_Click(object sender, RoutedEventArgs e)
        {
            this.m_Base.Query();
        }


        private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            this.m_Base.Query();
        }


        private void dtp_DateFrom_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            this.m_Base.Query();
        }


        private void tb_OrderNo_KeyDown(object sender, KeyEventArgs e)
        {
            this.m_Base.QueryEnterWPF(e);
        }


        #region 实现接口
        public string KeyField
        {
            get { return "OrderID"; }
        }


        public RequestModuleForm Module
        {
            get { return this.m_Module; }
        }


        public object DgvResult
        {
            get { return this.dgv_Query; }
        }


        public IPageSizeControl PageControl
        {
            get { return this.pg_Size; }
        }


        public object GetQueryCondtion()
        {
            Dictionary<string, object> vDic = new Dictionary<string, object>();


            if (this.m_Scan != null)
            {
                vDic["RelationFromType"] = EnumType.GetFromType(this.m_Scan.ReadType);
                vDic["RelationFromNo"] = this.m_Scan.Content;
                this.m_Scan = null;
            }
            else
            {
                vDic["OrderFromType_In"] = new List<int> { 0, 2 };  //只查询本地票
                vDic["OrderMegerType"] = this.cb_OrderMegerType.SelectedValue;
                vDic["ScenicDiscountID"] = this.cb_Discount.SelectedValue;
                vDic["OrderPrintType"] = this.cb_PrintType.SelectedValue;
                vDic["CreateHardID"] = this.cb_Hard.SelectedValue;
                vDic["CodeStatus"] = this.cb_CodeStatus.SelectedValue;
                vDic["OrderLike"] = this.tb_OrderNo.Text;


                bool isQuerySingle = false; //是否查询单条数据,通过二维码查询
                if (!string.IsNullOrEmpty(this.tb_OrderNo.Text))
                {
                    isQuerySingle = true;
                }
                if (this.dtp_DateFrom.SelectedDate != null
                    && this.dtp_DateTo.SelectedDate != null
                    && this.dtp_DateFrom.SelectedDate.Value > this.dtp_DateTo.SelectedDate.Value)
                {
                    throw PiaostException.Create("开始时间不能大于结束时间");
                }
                if (!GlobleConfig.IsAllData && !isQuerySingle)
                {
                    vDic["CreateUserID"] = GlobleConfig.UserInfo.UserID;
                }
                vDic["CreateDate_From"] = StringHelper.GetDay(this.dtp_DateFrom.SelectedDate);
                vDic["CreateDate_To"] = StringHelper.GetDayTo(this.dtp_DateTo.SelectedDate);
            }
            return vDic;
        }
        #endregion


        #region 初始化下拉
        public void InitDrop()
        {
            this.m_Base.CondtionInit(delegate()
            {
                this.dtp_DateFrom.SelectedDate = DateTime.Today;
                this.dtp_DateTo.SelectedDate = DateTime.Today;


                //this.dtp_DateFrom.ValueX = null;
                //this.dtp_DateTo.ValueX = null;


                ControlHelper.BindDrop(cb_OrderMegerType, DropData.Get("OrderMegerType"), "Text", "Value", "-门票类型-");
                ControlHelper.BindDrop(cb_PrintType, DropData.Get("PrintType"), "Text", "Value", "-游客类型-");
                ControlHelper.BindDrop(cb_CodeStatus, DropData.Get("CodeStatus"), "Text", "Value", "-订单状态-");
            });


            this.m_Module.AddInit(delegate()
            {
                List<ReturnDataSet> rList = this.m_Module.Request<ReturnDataSet>(new List<RequestData>() 
                {
                    new RequestData()
                    {
                        Module = "System",
                        Job = "System_Hard",
                        Action = "Query",
                        Data = new Dictionary<string,object>(){
                            { "HardTypeKey" , "Computer" }
                        }
                    },
                    new RequestData(){
                        Module="Scenic",
                        Job="Scenic_Discount",
                        Action="Query"
                    }
                });


                this.m_Base.CondtionInit(delegate()
                {
                    ControlHelper.BindDrop(cb_Hard, rList[0].GetTable(0), "HardName", "HardID", "-下单窗口-");
                    ControlHelper.BindDrop(cb_Discount, rList[1].GetTable(0), "DiscountName", "DiscountID", "-票种-");
                });
            });
        }
        #endregion


        private void lnk_ProductName_Click(object sender, RoutedEventArgs e)
        {
            this.m_Module.Execute(delegate()
            {
                DataRow vRow = this.m_Base.GetRow(e);
                OrderInfo vInfo = ObjectHelper.Convert<OrderInfo>(vRow);
                if (vInfo.OrderFromType == OrderFromType.Distributor || vInfo.OrderFromType == OrderFromType.Net)
                {
                    throw PiaostException.Create("网络票不能查看产品信息");
                }
                string vProductID = RowHelper.GetString(vRow, "ScenicProductID");
                PF.Scenic.FrmProductLoad frm = new PF.Scenic.FrmProductLoad();
                frm.LoadData(vProductID);
                this.m_Base.ShowForm(frm);
            });


        }
    }

1 0