NC6X报表数据加工做语义模型返回SQL篇.docx

上传人:b****6 文档编号:7378001 上传时间:2023-01-23 格式:DOCX 页数:16 大小:21.96KB
下载 相关 举报
NC6X报表数据加工做语义模型返回SQL篇.docx_第1页
第1页 / 共16页
NC6X报表数据加工做语义模型返回SQL篇.docx_第2页
第2页 / 共16页
NC6X报表数据加工做语义模型返回SQL篇.docx_第3页
第3页 / 共16页
NC6X报表数据加工做语义模型返回SQL篇.docx_第4页
第4页 / 共16页
NC6X报表数据加工做语义模型返回SQL篇.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

NC6X报表数据加工做语义模型返回SQL篇.docx

《NC6X报表数据加工做语义模型返回SQL篇.docx》由会员分享,可在线阅读,更多相关《NC6X报表数据加工做语义模型返回SQL篇.docx(16页珍藏版)》请在冰豆网上搜索。

NC6X报表数据加工做语义模型返回SQL篇.docx

NC6X报表数据加工做语义模型返回SQL篇

NC6X报表数据加工做语义模型(返回SQL篇)

报表语义模型(数据处理:

返回SQL方法)

数据处理方法:

1。

返回查询语句;2.返回结果集数据集;;3.返回数据表(下次提供案例)实现方法基本相同。

您可以参考系统的原始报表语义模型(抱歉,此处不详细仅供参考)

1,以及基本实现思路的概况(无详细对比和赘述)

1。

首先,不管语义模型数据处理是返回任何类型的SQL、DataSet还是TABLE,

的步骤基本上是相同的。

2。

首先,根据所需的难度选择以上方法:

一般数据可以通过SQL在

中找到。

有时,如果找不到一两个数据,您可以选择返回SQL并为找不到的部分创建临时表。

如果它基本上是一个拼凑的检索,那么返回到数据集模式;在最后一种情况下,没有太多的标准产品用于返回TABLE场景,案例将在后面提供。

3。

数据处理必须为语义脚本定义接口和实现类。

最好确定报告属于哪个模块,创建接口和

实现类,并配置接口文件UPM。

具体配置请参考模块的其他接口文件。

4.数据处理接口的参数1一般传递给com.ufida.dataset.IContext或

NC.pub.smart.context.smartcontext,这是报表上下文。

所有的查询参数和系统变量都放在这里,语义模型和接口中的两个上下文基本上可以相互转换,从下面的

例可以看出;

6。

在编写数据处理代码之前,不要考虑我是否必须配置语义模型和自由报告。

没用的!

纠正

先写数据处理代码的可行方式;

7。

首先,你应该弄清楚报告的检索逻辑,并在头脑中写出大概的代码。

8。

确定查询条件和数据类型。

在接口实现类中定义全局变量查询条件(推荐)。

默认无分配。

便于调试代码,因为尚未使用查询模板,并且无法动态获取查询条件。

最好分配查询模板,以便以后覆盖查询变量值(数据处理报表只能作为单据查询模板分配给报表节点);

9。

如果元数据列和数据类型是在数据集返回方法的接口实现类中定义的,则SQLreturner

没有此步骤。

10。

然后编写报表检索逻辑代码,根据默认设置的查询变量值编写代码和判断逻辑,最多返回

后的数据(SQL、DataSet或TABLE);

11。

自定义报告通常在组或全局节点定义语义模型和自由报告,这也是标准和经验研究所的

12。

在语义模型组中定义您自己的AND模型(例如,也允许全局节点),并且点设计

的弹出接口的数量被处理并放入被处理的接口,该接口调用用于代码调试和代码校正的书面数据。

13。

调试接口参数上下文时基本上没有数据。

目前

中没有查询条件字段,没有分配给节点查询模板。

只有打开报表节点查询调用代码,才能看到许多参数和值。

因此,临时接口实现类不初始化查询参数方法和验证。

14。

调用接口代码被放入语义模型数据处理中,进行格式化和编译。

接下来,如果代码成功,

通常将返回到报告字段列(元数据)选项卡,单击确定,并且“3个选择字段”将自己添加字段列。

此处的字段必须由代码返回,不能单独添加无效字段。

要自己添加字段“表达式框”,您必须在左下角的“数据处理(dp)”中选择该字段。

公式可以用这个表达式来写。

最后,解释“数据处理(dp)”术语的编写方式是为了防止其他实现进行随机修改。

15。

然后是免费报告的设计。

在“自由报表-集团”或“自由报表-全局”节点中,引入了仅在

完成的语义模型文件,并设计了报表界面和相关统计(此处不用说,也不要求实现或开发)。

16.请记住,自由报表设计界面在右上角的“title”左侧有一个类似螺丝的按钮“mainorganizationattributesetting”。

如果

是具有组织查询条件的报表,则必须在此设置组和组织字段(代码或默认字段:

SQL中的pk_org和pk_group)。

您不需要设置它们,并且需要自动识别。

否则,您需要手动设置它们(组节点设置pk_group,反之亦然)。

如果这里没有设置,语义模型可以预览数据,而自由报表预览没有数据现象一般情况下,不需要查询带有组织标准的报表。

报表字段只需要业务字段+pk_group,可以发布集团组织类型的报表节点。

如果需要组织查询的报表,报表字段只需要业务字段+pk_group+pk_org,并发布组织类型为特定组织(销售、库存、财务等)的报表节点。

17。

设计自由报表界面格式时,需要发布节点。

如果报表修改不需要组织字段,则发布

组类型的报表节点。

如果使用组织,则为特定组织的节点(销售、库存、财务等)。

)将被发布。

18.分配报表节点权限,创建报表查询模板,并将其分配给报表;19.打开报表节点,检查报表和查询模板是否可以正常加载;

20。

如果报表正常显示和加载,测试查询模板,调试接口实现类断点,完成剩余查询参数

的初始化和查询条件值的验证。

21。

完成上述工作后,将完成导出代码补丁、报告文件补丁和SQL脚本补丁来实现测试验证

2。

定义报表数据处理接口,实现类代码

1。

定义接口和接口方法:

截图:

下面是代码:

封装NC。

ITF。

importcom.ufida.dataset.IContext;/**

*资金管理>现金管理报告>集团现金流汇总(新增)(绩效优化-从原始语义脚本到数据处理的变更)*

*@authorwyr*@sine2017-09-25**/

公共界面集团现金流汇总(新增)*

}

/**

*集团现金流汇总(新增)*

2。

界面实现类截图界面代码:

截图:

代码:

封装NC.impl.CMP.report.ext;

importNC.itf.CMP.report.ext.GroupCashFlowProfileneWitf;导入com.ufida.dataset.IConText;/**

*基金管理>现金管理报告>集团现金流量汇总(新)(绩效优化-从原始语义脚本到数据处理的变更)*

*@authorwyr*@sine2017-09-25*

*/

公共类GroupcashflowprofileNewImpl实施GroupCashFlowProfileneWitf{

/**

*基金管理>现金管理报告完美的逻辑

*

*@作者WYR*@自2017-09-25**/

公共字符串getQuerySql(IContext上下文)引发异常{}

返回null

3。

创建临时表引用列导入java.util.ArrayList。

导入Java.util.list;

importNC.impl.pubapp.pattern.database.TempTable;导入nc.vo.pub.JavaType。

//NC6x在后台创建临时表并插入数据(从TempTable类型中选择多列)公共stringcreateTemptable(stringtempname,string[]id){listrows=newarraylist();对于(字符串类型:

id){

列表行=新数组列表();字符串[]日期=ite.split(\row.add(日期[0]);row.add(date[1));row.add(row);”}

//这个应该写一个Stringcolumns=\来拆分它,所以用select语句拼写

并查询String[]columns={\}“是很方便的。

字符串[]列类型={

\};

JavaType[]类型=新JavaType[]{JavaType。

字符串,JavaType。

字符串}。

TempTabledao=新TempTable();

返回dao.getTempTable(临时名称、列、列类型、类型、行);//返回表名}

4,查询条件获取及查询模板简单描述

5,将语义模型放入数据处理接口代码操作步骤创建语义模型:

2。

设计语义模型(语义模型按钮组下方的设计按钮):

3。

放入数据处理编写的代码接口代码:

4。

格式代码>编译>下一步>确定:

5。

添加语义模型字段:

6+6,自由报表设计

|超过3个错误报告直接结束了由开发环境启动的服务)...

8,接口文件配置

现金管理报表>集团现金流汇总(新增)*

*@作者WYR*@自2017-09-26**/

公共类GpCflowprofileNewTempVO{私有字符串pk_group用户名中的私有字符串;私有字符串库名称;私人双倍货币;私有字符串结束日期;私有字符串现金流;

临时表vo

公共字符串getPK_group(){}

公共voidSetPk_group(StringPK_group){}

公共字符串GetNoutName(){}

公共voidSetInoutName(StringInoutname){}

公共字符串GetCuName(){}

公共void返回cuname

this.inoutname=inoutname;返回inoutnamethis.pk_group=pk_group返回pk_group

}

}

退钱;

公共无效设置货币(双倍货币){}

公共字符串GetAllyDate(){}

公共无效设置日期(字符串tallyDate){}

公共字符串GetCashFlow(){}

公共无效设置现金流(字符串现金流){}

this.cashflow=cashflow;返回现金流;

this.tallydate=tallydate;返回tallydate金钱=金钱;

2。

界面:

packageNC.itf.CMP.report.ext;

importcom.ufida.dataset.IContext;/**

*资金管理>现金管理报告>集团现金流量汇总(新增)(绩效优化-从原始语义脚本到数据处理的变更)*

*@authorwyr*@sine2017-09-25**/

公共界面集团现金流量文件新增{

/**

*集团现金流量汇总(新增)*

*@paramcontext*@1

3。

实现类:

packageNC.impl.CMP.report.ext;

importJava.util.ArrayList;导入java.util.HashMap。

导入Java.util.list;导入NC.bs.Dao.BaseDao;导入NC.bs.Dao.DaoException;

importNC.impl.pubapp.pattern.database.TempTable;导入NC.itf.CMP.report.ext.GroupCashFlowProfileneWitf;导入NC.JDBC.framework.processor.BeanListProcessor;导入NC.VO.CMP.report.ext.GPCflowprofilenewtempvo;导入nc.vo.pub.JavaType。

importNC.VO.pub.query.ConditionVo;

importNC.VO.pubapp.pattern.exception.exceptionutils;

importcom.ufida.dataset.IContext;

importNC.pub.fa.common.util.NumberUtils;

importcom.ufida.report.anareport.FreeReportContextKey;/**

*基金管理>现金管理报告>集团现金流汇总(新)(绩效优化-从原始语义脚本到数据处理的变更)*

*@authorwyr*@sine2017-09-25**/

公共类GroupCaseLowFileNewImplementsGroupCaseLowFileNewItf{

/******查询SQL********/

privateStringBuilderbuildersQL=

privateBaseDAOdao=null/******创建的临时表名*******/

privatestringtemptablename=null;/******临时表查询SQL列********/privatefinalstring

tempselectfield=\;

/******项目类型(用于SQL)*******/私人字符串[]现金流=newstring[]{

\经营流入\,\经营流出\,\土地成本\,\筹资流入,筹资流出,投资流入,

投资流出,集团内部抵销,财务收支。

/******开始日期*********

privatestringbeg_date=\;/********结束日期******/

私有stringend_date=\;/********java数据类型**********/

私有java类型[]类型=新Java类型[]{

Java类型.字符串,Java类型.字符串,Java类型。

字符串,

JavaType。

BigDecimal,JavaType。

字符串,JavaType。

字符串

}。

/***********数据库列类型***************/privatestring[]列类型={\,

\,\,\,\};低于

//的汇率仅在默认情况下定义(使用测试,否则无法为下一个

通道测试和编译语义模型)。

后续的查询条件必须输入,并且将覆盖值

//当时,还没有使用查询模板/********美元汇率**********/私人双美元=6.5382。

/********港元汇率********/

 

9私人双HKD=0.83687;/********人民币汇率********/私人双mb=1.55/********澳元汇率********/privateddoublebob=1.7;/********新货币汇率********/私人双xb=1.2/********加拿大货币汇率********/私人双jb=1.3

/**

*基金管理>现金管理报告>集团现金流量汇总(新增)(绩效优化-从原始语义脚本

更改为数据处理)

*

*@authorwyr*@自2017-09-25**/

公共字符串getQuerySql(IContext)引发异常{

返回null

}/***

*拼接查询SQL*

*@paramcontextreport参数context*@authoriwyr*@自2017-09-25*@return

*@引发异常*/

私有字符串getConvertSql(IContext)引发异常{}/***

TempTableName=null;

this.GetQueryParameters(上下文);this.CheckQueryParametersisNotNull();this.GetCreateTempTableName();this.BuildSelectSql();this.GetEmbeddedSql();

returnthis.BuilderSql.ToString();

*获取SQL*

*@Authorwyr*@Since12017-09-26*@引发异常*/

privatevoidGetEmbeddedSql()引发异常{

StringBuilderBDSqL=newStringBuilder();bdSqL.append(\);bdSqL.append(\);bdSqL.append(\);

bdsql.append(\+getsamcasewhenpartsql(\operating\,\operatinginbound\)+\);bdSqL.append(\);

bdsql.append(\+getsamcasewhenpartsql(\operating\,\operatingoutflow\)+\);bdSqL.append(\);

BDSqL.append(\);

bdsql.append(\+getsamcasewhenpartsql(\土地成本\\土地成本

\)+\);

BDSqL.append(\);bdSqL.append(\);

bdsql.append(\+getsamecasewhenpartsql(\筹资\,\筹资流入\)+\);bdSqL.append(\);

bdsql.append(\+getsamecasewhenpartsql(\筹资\,\筹资流出\)+\);bdSqL.append(\);

BDSqL.append(\);bdSqL.append(\);

bdsql.append(\+getsamecasewhenpartsql(\investment\,\investmentinbound\)+\);bdSqL.append(\);

bdsql.append(\+getsamecasewhenpartsql(\investment\,\investmentoutflow\)+\);bdSqL.append(\);

BDSqL.append(\);bdSqL.append(\);

bdsql.append(\+getsamecasewhenpartsql(\组内\,\组内偏移量

cancel\)+\);

BDSqL.append(\);

BDSqL.append(\);

bdsql.append(\+getsamecasewhenpartsql(\财政收入和支出\,\财政收入和支出

\)+\);

}

/**获取查询联合全部(内部子查询SQL)以使用公共方法*

bdsql.append(\);

this.BuildErSql.append(BDSqL);

*@paramssqlfielddefaultinouttypevalue‘f.financial收支’*@paramscashflowproject‘financial收支’

*@exampleselectPK_group,f.financial收支’inouttype,’financial收支’as

aitem,inoutnameasfitem,

*@authorWYR*@自2017-09-26*@起SamePartSqL.append(\+SqLField+\

inouttype,’\+cashflow+\);

SamePartSqL.append(\

USD,sum(mb)表示mb,sum(xb)表示xm,)

SamePartSqL.append(\);samepartSqL.append(\);追加(\

cuname=‘us$‘则货币0以美元结尾,\);

samepartsql.append(\ringit‘然后moneyelse0end

asmb,\);

samepartsql.append(\RMB‘然后moneyelse0

endasrmb,\);

samepartsql.append(\hongkongdollar‘thenmoneyelse0end

ashkd,\);

samepartsql.append(\a$‘然后moneyelse0end

asob,\);

samepartsql.append(\加元’然后货币0end

asjb,\);

samepartsql.append(\Singaporedollar‘thenmoneyelse0

endasXB\);

SamePartSqL.append(\);

SamePartSqL.append(\+GetQueryTempTableDataSQl(现金流)+\

groupbypk_group,inoutname\);

}

returnSamePartSqL.ToString();

/***

*初始化查询参数(获取查询条件值)*

*@paramcontext*@authorwyr*@sine2017-09-26

*@引发异常*/

privatevoidGetqueryParameters(IContext)引发异常{

hashmaphashmap=null;//获取与查询条件(键、值)相对应的条件([)条件([)

context.getattribute(freereportcontextkey.key_report_querycondittvos);

if(null!

=ConditionVOfor(ConditionvoConditionVO:

ConditionVO){

hashmap.put(ConditionVO.GetFieldCode(),

ConditionVO.GetValue());

}

CheckQueryParametersAndSetValue(hashmap);

}否则{

exceptionutils.wrappbusinessexception(\查询条件不能为空,请检查

\)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1