zoukankan      html  css  js  c++  java
  • 如何新建简单账表

    步骤1在BOS设计器中新建一张空白简单账表
    修改下报表的名称等属性之后,保存即可。

    账表设计器及其关键属性

    步骤2新建报表过滤界面

    步骤3配置简单账表的过滤界


    步骤4:开发报表服务端取数插件

    代码示例

    初始化事件:在此事件中,设置报表基本属性

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel;
    using Kingdee.BOS;
    using Kingdee.BOS.Util;
    using Kingdee.BOS.Core;
    using Kingdee.BOS.Core.Report;
    using Kingdee.BOS.Core.Report.PlugIn;
    using Kingdee.BOS.Core.Report.PlugIn.Args;
    using Kingdee.BOS.Core.List;
    using Kingdee.BOS.Contracts.Report;
    using Kingdee.BOS.App.Data;
    using Kingdee.BOS.Orm.DataEntity;
    namespace JDSample.ServicePlugIn.Report
    {
        /// <summary>
        /// 自定义简单账表:服务端插件
        /// </summary>
        /// <remarks>///
        /// 案例:
        /// 按日期,搜索采购订单,
        /// 输出:编号、状态、物料、数量、单位、单价、价税合计
        /// 可以对物料汇总;
        /// 默认按编号排序
        /// 数量、价税合计需要合计
        /// 数量、单价、价税合计,需控制精度
        /// 相同的采购订单行,编号不重复显示
        /// </remarks>
        [Description("自定义简单账表")]
        public class S151016MySysReport : SysReportBaseService
        {
            /***********事件执行顺序*************
                2015/8/31 18:04:12 : Initialize
                2015/8/31 18:04:12 : GetTableName
                2015/8/31 18:04:15 : BuilderReportSqlAndTempTable
                2015/8/31 18:04:15 : GetIdentityFieldIndexSQL
                2015/8/31 18:04:15 : ExecuteBatch
                2015/8/31 18:04:19 : GetReportHeaders
                2015/8/31 18:04:19 : GetReportTitles
                2015/8/31 18:04:27 : GetTableName
                2015/8/31 18:04:27 : GetIdentityFieldIndexSQL
                2015/8/31 18:04:28 : ExecuteBatch
                2015/8/31 18:04:28 : AnalyzeDspCloumn
                2015/8/31 18:04:28 : AfterCreateTempTable
                2015/8/31 18:04:28 : GetSummaryColumnInfo
                2015/8/31 18:04:28 : GetSummaryColumsSQL
                2015/8/31 18:04:28 : GetTableName
                2015/8/31 18:04:28 : GetTableName
                2015/8/31 18:04:29 : ExecuteBatch
                2015/8/31 18:04:29 : GetIdentityFieldIndexSQL
                2015/8/31 18:04:29 : ExecuteBatch
                2015/8/31 18:04:29 : CreateGroupSummaryData
                2015/8/31 18:04:29 : GetListData
                2015/8/31 18:04:30 : GetReportData
                2015/8/31 18:04:30 : GetRowsCount
                2015/8/31 18:04:30 : GetListData
             */
            /// <summary>
            /// 初始化事件:在此事件中,设置报表基本属性
            /// </summary>
            /// <remarks>
            ///
            /// </remarks>
            public override void Initialize()
            {
                base.Initialize();
                // 简单账表类型:普通、树形、分页
                this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
                // 报表名称
                this.ReportProperty.ReportName = new LocaleValue("日采购报表", base.Context.UserLocale.LCID);
                //
                this.IsCreateTempTableByPlugin = true;
                //
                this.ReportProperty.IsUIDesignerColumns = false;
                //
                this.ReportProperty.IsGroupSummary = true;
                //
                this.ReportProperty.SimpleAllCols = false;
                // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示
                this.ReportProperty.PrimaryKeyFieldName = "FID";
                //
                this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
                
                // 报表主键字段名:默认为FIDENTITYID,可以修改
                //this.ReportProperty.IdentityFieldName = "FIDENTITYID";
                //
                // 设置精度控制
                List<DecimalControlField> list = new List<DecimalControlField>();
                // 数量
                list.Add(new DecimalControlField
                {
                    ByDecimalControlFieldName = "FQty",
                    DecimalControlFieldName = "FUnitPrecision"
                });
                // 单价
                list.Add(new DecimalControlField
                {
                    ByDecimalControlFieldName = "FTAXPRICE",
                    DecimalControlFieldName = "FPRICEDIGITS"
                });
                // 金额
                list.Add(new DecimalControlField
                {
                    ByDecimalControlFieldName = "FALLAMOUNT",
                    DecimalControlFieldName = "FAMOUNTDIGITS"
                });
                this.ReportProperty.DecimalControlFieldList = list;
            }
            public override string GetTableName()
            {
                var result = base.GetTableName();
                return result;
            }
            /// <summary>
            /// 向报表临时表,插入报表数据
            /// </summary>
            /// <param name="filter"></param>
            /// <param name="tableName"></param>
            public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
            {
                base.BuilderReportSqlAndTempTable(filter, tableName);
    
                // 拼接过滤条件 : filter
                //// 默认排序字段:需要从filter中取用户设置的排序字段
                string seqFld = string.Format(base.KSQL_SEQ, " t0.FID ");
                
                // 取数SQL
                // FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计
                string sql = string.Format(@"/*dialect*/
                                    select t0.FID, t1.FENTRYID
                                           ,t0.FBILLNO
                                           ,t0.FDate
                                           ,t0.FDOCUMENTSTATUS
                                           ,t2.FLOCALCURRID
                                           ,ISNULL(t20.FPRICEDIGITS,4) AS FPRICEDIGITS
                                           ,ISNULL(t20.FAMOUNTDIGITS,2) AS FAMOUNTDIGITS
                                           ,t1.FMATERIALID
                                           ,t1M_L.FNAME as FMaterialName
                                           ,t1.FQTY
                                           ,t1u.FPRECISION as FUnitPrecision
                                           ,t1U_L.FNAME as FUnitName
                                           ,t1f.FTAXPRICE
                                           ,t1f.FALLAMOUNT
                                           ,{0}
                                      into {1}
                                      from T_PUR_POORDER t0
                                     inner join T_PUR_POORDERFIN t2 on (t0.FID = t2.FID)
                                      left join T_BD_CURRENCY t20 on (t2.FLOCALCURRID = t20.FCURRENCYID)
                                     inner join T_PUR_POORDERENTRY t1 on (t0.FID = t1.FID)
                                      left join T_BD_MATERIAL_L t1M_L on (t1.FMATERIALID = t1m_l.FMATERIALID and t1M_L.FLOCALEID = 2052)
                                     inner join T_PUR_POORDERENTRY_F t1F on (t1.FENTRYID = t1f.FENTRYID)
                                      left join T_BD_UNIT t1U on (t1f.FPRICEUNITID = t1u.FUNITID)
                                      left join T_BD_UNIT_L t1U_L on (t1U.FUNITID = t1U_L.FUNITID and t1U_L.FLOCALEID = 2052) ",
                            seqFld,
                            tableName);
                           DBUtils.ExecuteDynamicObject(this.Context, sql);
            }
            protected override string GetIdentityFieldIndexSQL(string tableName)
            {
                string result = base.GetIdentityFieldIndexSQL(tableName);
                return result;
            }
            protected override void ExecuteBatch(List<string> listSql)
            {
                base.ExecuteBatch(listSql);
            }
            /// <summary>
            /// 构建出报表列
            /// </summary>
            /// <param name="filter"></param>
            /// <returns></returns>
            /// <remarks>
            /// // 如下代码,演示如何设置同一分组的分组头字段合并
            /// // 需配合Initialize事件,设置分组依据字段(PrimaryKeyFieldName)
            /// ReportHeader header = new ReportHeader();
            /// header.Mergeable = true;
            /// int width = 80;
            /// ListHeader headChild1 = header.AddChild("FBILLNO", new LocaleValue("应付单号"));
            /// headChild1.Width = width;
            /// headChild1.Mergeable = true;
            ///            
            /// ListHeader headChild2 = header.AddChild("FPURMAN", new LocaleValue("采购员"));
            /// headChild2.Width = width;
            /// headChild2.Mergeable = true;
            /// </remarks>
            public override ReportHeader GetReportHeaders(IRptParams filter)
            {
                // FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计
                ReportHeader header = new ReportHeader();
                // 编号
                var status = header.AddChild("FDocumentStatus", new LocaleValue("状态"));
                status.ColIndex = 0;
                var billNo = header.AddChild("FBillNo", new LocaleValue("单据编号"));
                billNo.ColIndex = 1;
                billNo.IsHyperlink = true;          // 支持超链接
                var material = header.AddChild("FMaterialName", new LocaleValue("物料"));
                material.ColIndex = 2;
                var qty = header.AddChild("FQty", new LocaleValue("数量"), SqlStorageType.SqlDecimal);
                qty.ColIndex = 3;
                var unit = header.AddChild("FUnitName", new LocaleValue("单位"));
                unit.ColIndex = 4;
                var price = header.AddChild("FTAXPRICE", new LocaleValue("含税价"), SqlStorageType.SqlDecimal);
                price.ColIndex = 5;
                var amount = header.AddChild("FALLAMOUNT", new LocaleValue("价税合计"), SqlStorageType.SqlDecimal);
                amount.ColIndex = 6;
                return header;
            }
            public override ReportTitles GetReportTitles(IRptParams filter)
            {
                var result = base.GetReportTitles(filter);
                DynamicObject dyFilter = filter.FilterParameter.CustomFilter;
                if (dyFilter != null)
                {
                    if (result == null)
                    {
                        result = new ReportTitles();
                    }
                    result.AddTitle("F_JD_Date", Convert.ToString(dyFilter["F_JD_Date"]));
                }
                return result;
            }
            protected override string AnalyzeDspCloumn(IRptParams filter, string tablename)
            {
                string result = base.AnalyzeDspCloumn(filter, tablename);
                return result;
            }
            protected override void AfterCreateTempTable(string tablename)
            {
                base.AfterCreateTempTable(tablename);
            }
            /// <summary>
            /// 设置报表合计列
            /// </summary>
            /// <param name="filter"></param>
            /// <returns></returns>
            public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
            {
                var result = base.GetSummaryColumnInfo(filter);
                result.Add(new SummaryField("FQty", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
                result.Add(new SummaryField("FALLAMOUNT", Kingdee.BOS.Core.Enums.BOSEnums.Enu_SummaryType.SUM));
                return result;
            }
            protected override string GetSummaryColumsSQL(List<SummaryField> summaryFields)
            {
                var result = base.GetSummaryColumsSQL(summaryFields);
                return result;
            }
            protected override System.Data.DataTable GetListData(string sSQL)
            {
                var result = base.GetListData(sSQL);
                return result;
            }
            protected override System.Data.DataTable GetReportData(IRptParams filter)
            {
                var result = base.GetReportData(filter);
                return result;
            }
            protected override System.Data.DataTable GetReportData(string tablename, IRptParams filter)
            {
                var result = base.GetReportData(tablename, filter);
                return result;
            }
            public override int GetRowsCount(IRptParams filter)
            {
                var result = base.GetRowsCount(filter);
                return result;
            }
            protected override string BuilderFromWhereSQL(IRptParams filter)
            {
                string result = base.BuilderFromWhereSQL(filter);
                return result;
            }
            protected override string BuilderSelectFieldSQL(IRptParams filter)
            {
                string result = base.BuilderSelectFieldSQL(filter);
                return result;
            }
            protected override string BuilderTempTableOrderBySQL(IRptParams filter)
            {
                string result = base.BuilderTempTableOrderBySQL(filter);
                return result;
            }
            public override void CloseReport()
            {
                base.CloseReport();
            }
            protected override string CreateGroupSummaryData(IRptParams filter, string tablename)
            {
                string result = base.CreateGroupSummaryData(filter, tablename);
                return result;
            }
            protected override void CreateTempTable(string sSQL)
            {
                base.CreateTempTable(sSQL);
            }
            public override void DropTempTable()
            {
                base.DropTempTable();
            }
            public override System.Data.DataTable GetList(IRptParams filter)
            {
                var result = base.GetList(filter);
                return result;
            }
            public override List<long> GetOrgIdList(IRptParams filter)
            {
                var result = base.GetOrgIdList(filter);
                return result;
            }
            public override List<Kingdee.BOS.Core.Metadata.TreeNode> GetTreeNodes(IRptParams filter)
            {
                var result = base.GetTreeNodes(filter);
                return result;
            }
        }
    }


    步骤5给简单账表注册服务端插件

     

    步骤6发布主控台

    步骤7测试

  • 相关阅读:
    矩阵乘法优化求斐波那契
    高斯消元
    NOIP201305转圈游戏
    双六问题
    线段上格点的个数
    如何写出优雅的Python代码?
    sock.listen()
    python socket编程
    sc,sockname = sock.accept()
    格式化字符
  • 原文地址:https://www.cnblogs.com/liuyudong0825/p/8587501.html
Copyright © 2011-2022 走看看