/*
SQL查询企业报表各个指标数据(t3=企业报表物理表)
1.企业报表物理表请查看《报表表样-全局或集团》节点,格式设计>数据>指标管理,能看到数据库物理表名和各指标具体列名;
2.t3.m10005是指标具体物理表列名;
3.t1.keyword1和t1.keyword2为《报表表样-全局或集团》节点“关键字组合”两个字段,就是各企业报表设计界面的两个字段值。
4.有版本号的具体怎么取数,没有研究过,默认t1.ver大部分都是0。
*/
select t1.alone_id, /*主键*/
t1.keyword1, /*关键字1=报表组织*/
t1.keyword2, /*关键字2=单位:会计月*/
t1.ver, /*版本号*/
t2.code, /*报表组织编码*/
t2.name, /*报表组织名称*/
nvl(t3.m10005, 0) as yyzsr /*企业利润表-营业收入指标值*/
from iufo_measpub_0011 t1 /*固定表1*/
left join org_reportorg t2 /*固定表2*/
on t1.keyword1 = t2.pk_reportorg
left join iufo_measure_data_kvt4w1fi t3 /*各企业报表物理表*/
on t1.alone_id = t3.alone_id
where t1.dr = 0
order by t2.name, t1.keyword2;
//获取资产负债表的数据
Map<String,String> reportMap = (Map<String, String>) dao.executeQuery("select pk_report from iufo_report where code= '企业报表编码'", new MapProcessor());
//获取资产负债表指标管理对照关系
RepFormatModelCache repFormatModelCache = UFOCacheManager.getSingleton().getRepFormatCache();
CellsModel formatModel = repFormatModelCache.getUfoTableFormatModel(pk_report);
IStoreCell[] storeCells= StoreCellUtil.getMeasureStoreCellsByRepId(pk_report);
// 格式态,将指标pk与指标vo的对应关系维护起来
MeasureModel measModel = MeasureModel.getInstance(formatModel);
String[] strMeasPKs = measModel.getAllMeasurePK();
MeasureCache measCache = UFOCacheManager.getSingleton().getMeasureCache();
MeasureVO[] measures = measCache.getMeasures(strMeasPKs);
// 确定位置
Hashtable list = measModel.getMeasureVOPosByAll();
//根据报表组织跟报表日期确定aloneid
List<String> aloneidList = (List<String>) dao.executeQuery("select alone_id from iufo_measpub_0011 where keyword1 in ("+reportorg+") and keyword2 = '"+reportdate+"' and ver = '0' ",new ColumnListProcessor());
String[] aloneidArr = aloneidList.toArray(new String[0]);
//获取数据
MeasureDataDMO dataDMO = new MeasureDataDMO();
MeasureDataVO[] datas = dataDMO.getRepData(aloneidArr, storeCells);