NC数据加工做语义模型DOCdoc.docx

上传人:b****2 文档编号:12673275 上传时间:2023-04-21 格式:DOCX 页数:23 大小:456.31KB
下载 相关 举报
NC数据加工做语义模型DOCdoc.docx_第1页
第1页 / 共23页
NC数据加工做语义模型DOCdoc.docx_第2页
第2页 / 共23页
NC数据加工做语义模型DOCdoc.docx_第3页
第3页 / 共23页
NC数据加工做语义模型DOCdoc.docx_第4页
第4页 / 共23页
NC数据加工做语义模型DOCdoc.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

NC数据加工做语义模型DOCdoc.docx

《NC数据加工做语义模型DOCdoc.docx》由会员分享,可在线阅读,更多相关《NC数据加工做语义模型DOCdoc.docx(23页珍藏版)》请在冰豆网上搜索。

NC数据加工做语义模型DOCdoc.docx

NC数据加工做语义模型DOCdoc

NC数据加工做语义模型(DOC)

报表语义模型(数据加工:

返回结果集方式)

数据加工方式:

1.返回查询SQL;2.返回结果集DataSet;3.返回数据表。

实现方式基本一致,可以参照系统原有报表语义模型

一、新建报表查询入口类,初始化报表字段

1.数据加工查询业务处理接口的定义:

packagenc.itf.fbm.paperbill.query;

importnc.pub.smart.data.DataSet;

importnc.vo.pub.BusinessException;

importcom.ufida.dataset.IContext;

/**票据信息查询/票据池额度查询接口

*

*@author温燕荣WYR

*@date2014-04-15

*/

publicinterfaceIFbmQueryPaperBillService{

}

2.数据加工入口类,初始化报表字段

packagenc.itf.fbm.paperbill.query;

importjava.util.ArrayList;

importjava.util.List;

importmon.NCLocator;

importnc.pub.smart.data.DataSet;

importnc.pub.smart.metadata.DataTypeConstant;

importnc.pub.smart.metadata.Field;

importnc.pub.smart.metadata.MetaData;

importnc.vo.obm.paperbill.query.PaperBillPoolVO;

importcom.ufida.dataset.IContext;

/**票据池额度查询入口类

*

*@author温燕荣WYR

*@date2014-04-15

*/

publicclassQueryPaperPoolLimitService{

privatestaticfinalMetaDatametaData;

publicQueryPaperPoolLimitService(){

super();

}

/**

*获得结果集

*

*@paramcontext报表界面查询传进来的参数(查询条件=值,系统一些默认参数等)

*@return

*/

publicstaticDataSetqueryPJCAmt(IContextcontext)throwsException{

//调用报表查询业务处理接口,

IFbmQueryPaperBillServicegatherservice=(IFbmQueryPaperBillService)NCLocator.getInstance().lookup(IFbmQueryPaperBillService.class.getName());

DataSetresultDataSet=gatherservice.queryPaperBillPoolLimit(context);

setPrecision(resultDataSet);

returnresultDataSet;

}

//初始化报表要显示的字段,包括查询条件字段也在内

static{

metaData=newMetaData();

Listfields=makeList();

//报表显示字段

Fieldf=newField();

f.setFldname(PaperBillPoolVO.ORGNAME);

f.setCaption("财务组织名称");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.ACCTNAME);

f.setCaption("机构名称");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.ACCTNO);

f.setCaption("账号");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.PJCNO);

f.setCaption("票据池编号");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.PJCKAMT);

f.setCaption("票据池可开票额度");

f.setPrecision(17);

f.setDataType(DataTypeConstant.BIGDECIMAL);

f.setScale(4);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.CUSKAMT);

f.setCaption("客户剩余可开票额度");

f.setPrecision(17);

f.setDataType(DataTypeConstant.BIGDECIMAL);

f.setScale(4);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.CUSEAMT);

f.setCaption("客户有效开票额度");

f.setPrecision(17);

f.setDataType(DataTypeConstant.BIGDECIMAL);

f.setScale(4);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.CORNAME);

f.setCaption("分支机构名称");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.CORKAMT);

f.setCaption("分支机构剩余可开票额度");

f.setPrecision(17);

f.setDataType(DataTypeConstant.BIGDECIMAL);

f.setScale(4);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.REQRESERVED1);

f.setCaption("请求备用字段1");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.REQRESERVED2);

f.setCaption("请求备用字段2");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.REPRESERVED3);

f.setCaption("响应备用字段3");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.REPRESERVED4);

f.setCaption("响应备用字段4");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

//查询字段

f=newField();

f.setFldname(PaperBillPoolVO.PK_ORG);

f.setCaption("财务组织PK");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.QUERY_ACCTNO);

f.setCaption("账号-查询");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.QUERY_PJCNO);

f.setCaption("票据池编号-查询");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.MFLAG);

f.setCaption("是否票据池主申请账号-查询");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.NEXTTAG);

f.setCaption("下页标识-查询");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.REQRESERVED1);

f.setCaption("请求备用字段1-查询");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

f=newField();

f.setFldname(PaperBillPoolVO.REQRESERVED1);

f.setCaption("请求备用字段2-查询");

f.setPrecision(200);

f.setDataType(DataTypeConstant.STRING);

fields.add(f);

metaData.addField(fields.toArray(newField[]{}));

}

/**

*构造list

*

*@param

*@return

*/

publicstaticListmakeList(){

returnnewArrayList();

}

//字符串类型字段统一设置字段长度

privatestaticvoidsetPrecision(DataSetresultDataSet){

for(Fieldf:

resultDataSet.getMetaData().getFields()){

if(f.getDataType()==DataTypeConstant.STRING){

f.setPrecision(300);

}

}

}

/**

*获得票据池额度元数据(相当于代码写一个元数据)

*

*@return

*/

publicstaticMetaDatagetPJCAmtrMetaData(){

returnmetaData;

}

}

 

二、数据加工业务处理

//注意:

我这个是(银企直联)NC在线查询银行数据的代码,不用完全参照

//我这里就举例(票据池额度查询)

packagenc.impl.fbm.paperbill.query;

importjava.util.ArrayList;

importjava.util.HashMap;

importjava.util.List;

importnc.bs.fbm.paperbill.PaperBillService;

importmon.NCLocator;

importnc.itf.fbm.paperbill.query.IFbmQueryPaperBillService;

importnc.itf.fbm.paperbill.query.QueryPaperBillInfoService;

importnc.itf.fbm.paperbill.query.QueryPaperPoolLimitService;

importnc.itf.obm.paperbill.query.IObmQueryPaperBillService;

importnc.pub.smart.data.DataSet;

importnc.pub.smart.metadata.Field;

importnc.pub.smart.metadata.MetaData;

importnc.vo.fbm.paperbill.constant.PaperBillFbmOrderType;

importnc.vo.obm.paperbill.constant.PaperBillObmConstant;

importnc.vo.obm.paperbill.query.PaperBillInfoVO;

importnc.vo.obm.paperbill.query.PaperBillPoolVO;

importnc.vo.pub.BusinessException;

importnc.vo.pub.query.ConditionVO;

importcom.ufida.dataset.IContext;

importcom.ufida.report.anareport.FreeReportContextKey;

/**票据信息查询/票据池额度查询接口实现类

*

*@author温燕荣WYR

*@date2014-04-15

*/

publicclassFbmQueryPaperBillServiceImplextendsPaperBillServiceimplementsIFbmQueryPaperBillService{

privateIObmQueryPaperBillServiceiObmQueryPaperBillService;

//这一步可以不需要去理解,当不存在就可以了

privatestaticStringbillfunc=PaperBillObmConstant.PAPERQUERY;

/**

*票据池额度查询

*@paramcontext

*@return

*@throwsBusinessException

*/

@Override

publicDataSetqueryPaperBillPoolLimit(IContextcontext)throwsException{

//获取查询条件值

ConditionVO[]conditionvos=(ConditionVO[])context.getAttribute(FreeReportContextKey.KEY_REPORT_QUERYCONDITIONVOS);

DataSetresultDataSet=newDataSet();

HashMaphashmap=newHashMap();//获取查询条件(key,值)对应

if(conditionvos!

=null&&conditionvos.length>0){//执行了查询

for(ConditionVOconditionvo:

conditionvos){

hashmap.put(conditionvo.getFieldCode(),conditionvo.getValue());

}

//这一步可以不需要去理解,当不存在就可以了

Stringbanktype=getbanktype(hashmap.get(PaperBillPoolVO.QUERY_ACCTNO));

//这一步可以不需要去理解,当不存在就可以了

//根据当前界面VO获取银行的信息类

createBankInfoClass(banktype,billfunc,PaperBillFbmOrderType.QUERYBILLPOOLLIMIT);

/**这一步是获取查询条件值组装成查询vo(自己新建一个VO【PaperBillPoolVO】,记得加*上必须字段pk_org和orgname,前者是PK查询使用,后者是显示名称,初始化字段类里*面也必须有),我这里是按照不同银行动态调用各个handler

*/

//组装发送指令VO

PaperBillPoolVOpoolvo=(PaperBillPoolVO)abstractBankInfo.getQueryBankHandlerClass(abstractBankInfo).changeQueryPaperBillPoolVO(hashmap);

 

//查询条件值可能要先暂存,待返回数据集再把对应查询条件值设值回去,不然查不出数据

//也就是查询条件是什么值,最终结果集对应的查询字段值也必须是什么值

//看需求,报表字段有的时候需要建两种,一种是查询,一种是显示结果,进行分开

//这一步是报表数据逻辑处理

//发送查询指令业务接口

PaperBillPoolVO[]paperBillPoolVOs=null;

paperBillPoolVOs=getiObmQueryPaperBillService().queryPaperBillPoolLimit(newPaperBillPoolVO[]{poolvo});

//获取报表查询条件之后经过一些业务处理后返回的最终结果数据

//接收发送指令返回数据,进行数据转换,返回报表界面

//把处理好的结果,可以是返回ArrayList或者对象数组PaperBillPoolVO[]

resultDataSet=getPjcAmtRstProcessData(paperBillPoolVOs);//结果转换成DataSet

}else{//没有执行查询

MetaDatametaData=QueryPaperPoolLimitService.getPJCAmtrMetaData();

resultDataSet.setMetaData(metaData);

}

returnresultDataSet;

}

//下面就是把转换成报表显示数据DataSet格式,这里是固定的换个VO就能用

 

/**

*票据池额度查询

*银行返回的指令VO数据

*转换成报表显示数据DataSet

*@author温燕荣WYR

*@date2014-4-17

*@parampaperBillPoolVOs

*@return

*@throwsBusinessException

*/

publicDataSetgetPjcAmtRstProcessData(PaperBillPoolVO[]paperBillPoolVOs)throwsBusinessException{

DataSetresultDataSet=newDataSet();

MetaDatametaData=QueryPaperPoolLimitService.getPJCAmtrMetaData();

resultDataSet.setMetaData(metaData);

if(paperBillPoolVOs==null||paperBillPoolVOs.length==0){

returnresultDataSet;

}

Field[]fields=metaData.getFields();

ListreportList=newArrayList();

for(PaperBillPoolVOvo:

paperBillPoolVOs){

if(vo==null){

continue;

}

Object[]rowData=newObject[fields.length];

for(intk=0;k

StringfldName=fields[k].getFldname();

row

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

当前位置:首页 > 求职职场 > 笔试

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

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