NC数据加工做语义模型_第1页
NC数据加工做语义模型_第2页
NC数据加工做语义模型_第3页
NC数据加工做语义模型_第4页
NC数据加工做语义模型_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、报表语义模型(数据加工:返回结果集方式)数据加工方式:1.返回查询SQL ; 2.返回结果集DataSet;3.返回数据表。实现方式基本一致,可以参照系统原有报表语义模型一、 新建报表查询入口类,初始化报表字段1. 数据加工查询业务处理接口的定义: package nc.itf.fbm.paperbill.query;import nc.pub.smart.data.DataSet;import nc.vo.pub.BusinessException;import com.ufida.dataset.IContext;/*票据信息查询/票据池额度查询接口 * * author 温燕荣WYR *

2、 date 2014-04-15 */public interface IFbmQueryPaperBillService /* * 票据信息查询 * param context * return * throws BusinessException */public DataSet queryPaperBillInfo(IContext context) throws Exception;/* * 票据池额度查询接口 * param context * return * throws BusinessException */public DataSet queryPaperBillPoolL

3、imit(IContext context) throws Exception; 2. 数据加工入口类,初始化报表字段package nc.itf.fbm.paperbill.query;import java.util.ArrayList;import java.util.List;import mon.NCLocator;import nc.pub.smart.data.DataSet;import nc.pub.smart.metadata.DataTypeConstant;import nc.pub.smart.metadata.Field;import nc.pub.smart.me

4、tadata.MetaData;import nc.vo.obm.paperbill.query.PaperBillPoolVO;import com.ufida.dataset.IContext;/*票据池额度查询入口类 * * author 温燕荣WYR * date 2014-04-15 */public class QueryPaperPoolLimitService private static final MetaData metaData;public QueryPaperPoolLimitService()super();/* * 获得结果集 * * param context

5、 报表界面查询传进来的参数(查询条件=值,系统一些默认参数等) * return */public static DataSet queryPJCAmt(IContext context)throws Exception /调用报表查询业务处理接口,IFbmQueryPaperBillService gatherservice=(IFbmQueryPaperBillService) NCLocator.getInstance().lookup(IFbmQueryPaperBillService.class.getName();DataSet resultDataSet = gatherserv

6、ice.queryPaperBillPoolLimit(context);setPrecision(resultDataSet);return resultDataSet;/初始化报表要显示的字段,包括查询条件字段也在内static metaData = new MetaData();List fields =makeList();/报表显示字段Field f = new Field();f.setFldname(PaperBillPoolVO.ORGNAME);f.setCaption(财务组织名称);f.setPrecision(200);f.setDataType(DataTypeCon

7、stant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.ACCTNAME);f.setCaption(机构名称);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.ACCTNO);f.setCaption(账号);f.setPrecision(200);f.setDataType(DataTypeConstant.STRI

8、NG);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.PJCNO);f.setCaption(票据池编号);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.PJCKAMT);f.setCaption(票据池可开票额度);f.setPrecision(17);f.setDataType(DataTypeConstant.BIGDECIMAL

9、);f.setScale(4);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.CUSKAMT);f.setCaption(客户剩余可开票额度);f.setPrecision(17);f.setDataType(DataTypeConstant.BIGDECIMAL);f.setScale(4);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.CUSEAMT);f.setCaption(客户有效开票额度);f.setPrecision(17);f.setD

10、ataType(DataTypeConstant.BIGDECIMAL);f.setScale(4);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.CORNAME);f.setCaption(分支机构名称);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.CORKAMT);f.setCaption(分支机构剩余可开票额度);f.setPr

11、ecision(17);f.setDataType(DataTypeConstant.BIGDECIMAL);f.setScale(4);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.REQRESERVED1);f.setCaption(请求备用字段1);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.REQRESERVED2);f.se

12、tCaption(请求备用字段2);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.REPRESERVED3);f.setCaption(响应备用字段3);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.REPRESERVE

13、D4);f.setCaption(响应备用字段4);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);/查询字段f = new Field();f.setFldname(PaperBillPoolVO.PK_ORG);f.setCaption(财务组织PK);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.QUER

14、Y_ACCTNO);f.setCaption(账号-查询);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.QUERY_PJCNO);f.setCaption(票据池编号-查询);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolV

15、O.MFLAG);f.setCaption(是否票据池主申请账号-查询);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.NEXTTAG);f.setCaption(下页标识-查询);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoo

16、lVO.REQRESERVED1);f.setCaption(请求备用字段1-查询);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);f = new Field();f.setFldname(PaperBillPoolVO.REQRESERVED1);f.setCaption(请求备用字段2-查询);f.setPrecision(200);f.setDataType(DataTypeConstant.STRING);fields.add(f);metaData.addField(fields.to

17、Array(new Field );/* * 构造list * * param * return */public static List makeList() return new ArrayList();/字符串类型字段统一设置字段长度private static void setPrecision(DataSet resultDataSet) for (Field f : resultDataSet.getMetaData().getFields() if (f.getDataType() = DataTypeConstant.STRING) f.setPrecision(300);/*

18、 * 获得票据池额度元数据(相当于代码写一个元数据) * * return */public static MetaData getPJCAmtrMetaData()return metaData;二、 数据加工业务处理/注意:我这个是(银企直联)NC在线查询银行数据的代码,不用完全参照/我这里就举例(票据池额度查询)package nc.impl.fbm.paperbill.query;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import nc.bs.fbm.paperbill.Pap

19、erBillService;import mon.NCLocator;import nc.itf.fbm.paperbill.query.IFbmQueryPaperBillService;import nc.itf.fbm.paperbill.query.QueryPaperBillInfoService;import nc.itf.fbm.paperbill.query.QueryPaperPoolLimitService;import nc.itf.obm.paperbill.query.IObmQueryPaperBillService;import nc.pub.smart.data

20、.DataSet;import nc.pub.smart.metadata.Field;import nc.pub.smart.metadata.MetaData;import nc.vo.fbm.paperbill.constant.PaperBillFbmOrderType;import nc.vo.obm.paperbill.constant.PaperBillObmConstant;import nc.vo.obm.paperbill.query.PaperBillInfoVO;import nc.vo.obm.paperbill.query.PaperBillPoolVO;impor

21、t nc.vo.pub.BusinessException;import nc.vo.pub.query.ConditionVO;import com.ufida.dataset.IContext;import com.ufida.report.anareport.FreeReportContextKey;/*票据信息查询/票据池额度查询 接口实现类 * * author 温燕荣WYR * date 2014-04-15 */public class FbmQueryPaperBillServiceImpl extends PaperBillService implements IFbmQue

22、ryPaperBillServiceprivate IObmQueryPaperBillService iObmQueryPaperBillService;/这一步可以不需要去理解,当不存在就可以了private static String billfunc= PaperBillObmConstant.PAPERQUERY;/* * 票据池额度查询 * param context * return * throws BusinessException */Overridepublic DataSet queryPaperBillPoolLimit(IContext context) throw

23、s Exception /获取查询条件值ConditionVO conditionvos=(ConditionVO) context.getAttribute(FreeReportContextKey.KEY_REPORT_QUERYCONDITIONVOS);DataSet resultDataSet = new DataSet();HashMap hashmap=new HashMap();/获取查询条件(key,值)对应if(conditionvos!=null&conditionvos.length0)/执行了查询for(ConditionVO conditionvo:conditio

24、nvos)hashmap.put(conditionvo.getFieldCode(), conditionvo.getValue();/这一步可以不需要去理解,当不存在就可以了String banktype=getbanktype(hashmap.get(PaperBillPoolVO.QUERY_ACCTNO);/这一步可以不需要去理解,当不存在就可以了/根据当前界面VO获取银行的信息类createBankInfoClass(banktype,billfunc,PaperBillFbmOrderType.QUERYBILLPOOLLIMIT);/*这一步是获取查询条件值组装成查询vo(自己

25、新建一个VO【PaperBillPoolVO】,记得加*上必须字段pk_org和orgname,前者是PK查询使用,后者是显示名称,初始化字段类里*面也必须有),我这里是按照不同银行动态调用各个handler */组装发送指令VOPaperBillPoolVO poolvo=(PaperBillPoolVO)abstractBankInfo.getQueryBankHandlerClass(abstractBankInfo).changeQueryPaperBillPoolVO(hashmap);/查询条件值可能要先暂存,待返回数据集再把对应查询条件值设值回去,不然查不出数据/也就是查询条件是

26、什么值,最终结果集对应的查询字段值也必须是什么值/看需求,报表字段有的时候需要建两种,一种是查询,一种是显示结果,进行分开/这一步是报表数据逻辑处理 /发送查询指令业务接口PaperBillPoolVO paperBillPoolVOs = null;paperBillPoolVOs=getiObmQueryPaperBillService().queryPaperBillPoolLimit(new PaperBillPoolVOpoolvo);/获取报表查询条件之后经过一些业务处理后返回的最终结果数据/接收发送指令返回数据,进行数据转换,返回报表界面/把处理好的结果,可以是返回ArrayLi

27、st或者对象数组PaperBillPoolVO resultDataSet =getPjcAmtRstProcessData(paperBillPoolVOs);/结果转换成DataSetelse/没有执行查询MetaData metaData = QueryPaperPoolLimitService.getPJCAmtrMetaData();resultDataSet.setMetaData(metaData);return resultDataSet;/下面就是把转换成报表显示数据DataSet格式,这里是固定的换个VO就能用/* * 票据池额度查询 * 银行返回的指令VO数据 *转换成报

28、表显示数据DataSet *author 温燕荣WYR *date 2014-4-17 *param paperBillPoolVOs *return * throws BusinessException */public DataSet getPjcAmtRstProcessData(PaperBillPoolVO paperBillPoolVOs)throws BusinessExceptionDataSet resultDataSet = new DataSet();MetaData metaData = QueryPaperPoolLimitService.getPJCAmtrMeta

29、Data();resultDataSet.setMetaData(metaData);if (paperBillPoolVOs = null | paperBillPoolVOs.length= 0) return resultDataSet;Field fields = metaData.getFields();List reportList = new ArrayList();for (PaperBillPoolVO vo : paperBillPoolVOs) if(vo=null)continue; Object rowData = new Objectfields.length;fo

30、r (int k = 0; k fields.length; k+) String fldName = fieldsk.getFldname();rowDatak = vo.getAttributeValue(fldName);reportList.add(rowData);resultDataSet.setDatas(reportList.toArray(new Object0fields.length);return resultDataSet;/从这里到最后面的代码不用去理会了/* * param iObmQueryPaperBillService 要设置的 iObmQueryPaperBillService *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论