package com.ycsoft.report.component.query;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.stereotype.Component;
import com.google.gson.reflect.TypeToken;
import com.ycsoft.beans.system.SOptr;
import com.ycsoft.commons.abstracts.BaseComponent;
import com.ycsoft.commons.exception.ReportException;
import com.ycsoft.commons.helper.DateHelper;
import com.ycsoft.commons.helper.JsonHelper;
import com.ycsoft.commons.helper.StringHelper;
import com.ycsoft.daos.core.JDBCException;
import com.ycsoft.daos.core.Pager;
import com.ycsoft.report.bean.RepDefine;
import com.ycsoft.report.bean.RepDetailData;
import com.ycsoft.report.bean.RepDetailDim;
import com.ycsoft.report.bean.RepDetailRow;
import com.ycsoft.report.bean.RepHead;
import com.ycsoft.report.bean.RepMyCube;
import com.ycsoft.report.bean.RepQueryLog;
import com.ycsoft.report.bean.RepTask;
import com.ycsoft.report.bean.RepTaskHis;
import com.ycsoft.report.commons.ReportConstants;
import com.ycsoft.report.commons.SystemConfig;
import com.ycsoft.report.dao.config.RepColumnDao;
import com.ycsoft.report.dao.config.RepDefineDao;
import com.ycsoft.report.dao.config.RepDetailDataDao;
import com.ycsoft.report.dao.config.RepDetailDimDao;
import com.ycsoft.report.dao.config.RepDetailRowDao;
import com.ycsoft.report.dao.config.RepGroupDao;
import com.ycsoft.report.dao.config.RepHeadDao;
import com.ycsoft.report.dao.config.RepMyCubeDao;
import com.ycsoft.report.dao.config.RepQueryLogDao;
import com.ycsoft.report.dao.config.RepSqlDao;
import com.ycsoft.report.dao.config.RepTaskDao;
import com.ycsoft.report.dao.config.RepTaskHisDao;
import com.ycsoft.report.dao.config.RepTotalDao;
import com.ycsoft.report.dao.keycon.RepDimKeyDao;
import com.ycsoft.report.dto.InitQueryDto;
import com.ycsoft.report.dto.ShowQueryDto;
import com.ycsoft.report.pojo.Parameter;
import com.ycsoft.report.query.QueryManage;
import com.ycsoft.report.query.QueryResultOlap;
import com.ycsoft.report.query.cube.CubeCell;
import com.ycsoft.report.query.cube.CubeExec;
import com.ycsoft.report.query.cube.CubeHeadCell;
import com.ycsoft.report.query.cube.Dimension;
import com.ycsoft.report.query.cube.DimensionRolap;
import com.ycsoft.report.query.cube.Measure;
import com.ycsoft.report.query.cube.detail.CubeDetail;
import com.ycsoft.report.query.cube.graph.CubeGraph;
import com.ycsoft.report.query.cube.graph.CubeGraphImpl;
import com.ycsoft.report.query.cube.graph.CubeGraphType;
import com.ycsoft.report.query.cube.graph.GraphData;
import com.ycsoft.report.query.cube.impl.CubeManage;
import com.ycsoft.report.query.cube.impl.DimensionManage;
import com.ycsoft.report.query.cube.impl.MyCube;
import com.ycsoft.report.query.cube.showclass.cellwarn.MeaWarn;
import com.ycsoft.report.query.datarole.BaseDataControl;
import com.ycsoft.report.query.datarole.FuncType;
import com.ycsoft.report.query.key.QueryKey;
import com.ycsoft.report.query.key.Impl.ConKeyValue;
import com.ycsoft.report.query.sql.QuerySql;
/**
* 查询管理组件
*
*/
@Component
public class QueryComponent extends BaseComponent {
private RepDefineDao repDefineDao;
private RepQueryLogDao repQueryLogDao;
private RepSqlDao repSqlDao;
private RepHeadDao repHeadDao;
/**
* @deprecated
*/
private RepColumnDao repColumnDao;
private RepDimKeyDao repDimKeyDao;
private RepTotalDao repTotalDao;
private RepGroupDao repGroupDao;
private QueryManage queryManage;
private RepMyCubeDao repMyCubeDao;
private CubeManage cubeManage;
private QueryKey queryKey;
private QuerySql querySql;
private RepDetailDataDao repDetailDataDao;
private CubeDetail cubeDetail;
private RepDetailDimDao repDetailDimDao;
private RepDetailRowDao repDetailRowDao;
private RepTaskDao repTaskDao;
private RepTaskHisDao repTaskHisDao;
/**
* 刷新cube,维度度量拖拉后的刷新cube
* @param query_id
* @param dimlist
* @param vertdim
* @param meas
* @throws ReportException
*/
public void cubeRefush(String query_id,List<String> dimlist,String vertdim,List<String> meas) throws ReportException{
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
List<Dimension> list=new ArrayList<Dimension>();
for(String o:dimlist){
Dimension dim=DimensionManage.getDimension(o);
if(dim!=null)
list.add(dim);
else
throw new ReportException(dim+":dim is null or undefine");;
}
cube.selectDimension(DimensionManage.getDimension(vertdim), list.toArray(new Dimension[list.size()]));
if(meas!=null&&meas.size()>0)
cube.selectMeasure(meas.toArray(new String[meas.size()]));
cube.execute(olap);
}
/**
* 进入cube的明细编辑模式
* 把所有的维度加入到cube中展现
* 把具有编辑模式指标的加入到cube中
* @throws ReportException
*/
public void cubeEdit(String query_id) throws ReportException{
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
//判断指标是否有编辑模式,并把该指标加入到cube中
Measure editmea=null;
for(Measure mea: cube.getDefaultMeasures()){
if(mea.getMeaCustom()==true)
editmea=mea;
}
if(editmea==null)
throw new ReportException("cube is not exist edit_mea.");
boolean iseditmea=false;
for(Measure mea:cube.getMeasures()){
if(mea==editmea)
iseditmea=true;
}
if(!iseditmea){
String[] meaids=new String[cube.getMeasures().size()+1];
for(int i=0;i<cube.getMeasures().size();i++)
meaids[i]=cube.getMeasures().get(i).getColumnCode();
meaids[cube.getMeasures().size()]=editmea.getColumnCode();
cube.selectMeasure(meaids);
}
//把所有的维度加入到cube,
List<DimensionRolap> rolaps=cube.getDimensionRolaps();
Dimension[] dims=new Dimension[rolaps.size()];
Dimension vertdim=null;
for(int i=0;i<rolaps.size();i++){
dims[i]=rolaps.get(i).getDim();
if(rolaps.get(i).isUsesign()&&rolaps.get(i).isVerticalsign()){
vertdim=dims[i];
}
//取消所有的合计项目
cube.configDimensionTotal(dims[i]);
//所有维度展开到最底层
for(int j=rolaps.get(i).getLevel();j<=dims[i].getLevelNum();j++)
cube.expandDimension(dims[i]);
}
cube.selectDimension(vertdim, dims);
//重新计算cube
cube.execute(olap);
}
/**
* 更新一行可编辑报表记录
* @param rep_id
* @param optr_id
* @param context_id
* @param context_json
* @param headdatacells
* @return
* @throws ReportException
*/
public String updateOneCustom(String rep_id,String optr_id,String context_id,String context_json,List<CubeHeadCell> headdatacells ) throws ReportException{
try {
if(StringHelper.isNotEmpty(context_id)){
repDetailDataDao.updateOneData(context_id, context_json);
return context_id;
}else{
//生成可编辑明细报表的维度位置配置信息map
List<RepDetailDim> dtaildims=repDetailDimDao.queryByRepId(rep_id);
Map<Dimension,Integer> detaildimmap=new HashMap<Dimension,Integer>();
for(RepDetailDim o:dtaildims){
detaildimmap.put(DimensionManage.getDimension(o.getDim()), o.getIdx());
}
RepDetailData data= cubeDetail.customDimData(headdatacells, detaildimmap);
repDetailDataDao.insertOneData(rep_id,optr_id, context_json, data);
return data.getContext_id();
}
} catch (ReportException e) {
throw e;
}
}
/**
* 可编辑明细报表的列配置
* @param rep_id
* @return
* @throws ReportException
*/
public List<RepDetailRow> queryCustomRows(String rep_id) throws ReportException{
return repDetailRowDao.queryRowsByRepid(rep_id);
}
/**
* 可编辑明细报表的内容根据页面坐标提取
* @param rep_id
* @param headdatacells
* @return
* @throws ReportException
*/
public List<RepDetailData> cubeShowCustomDetail(String rep_id,List<CubeHeadCell> headdatacells) throws ReportException{
try {
//生成可编辑明细报表的维度位置配置信息map
List<RepDetailDim> dtaildims=repDetailDimDao.queryByRepId(rep_id);
Map<Dimension,Integer> detaildimmap=new HashMap<Dimension,Integer>();
for(RepDetailDim o:dtaildims){
detaildimmap.put(DimensionManage.getDimension(o.getDim()), o.getIdx());
}
//可编辑报表的明细中维度坐标查询语句
String querysql=cubeDetail.customQuerySql(headdatacells, detaildimmap);
return repDetailDataDao.queryDataByHeadCells(rep_id, querysql);
} catch (ReportException e) {
throw e;
}
}
/**
* cube图形计算
* @param query_id
* @param graphtype
* @param dims
* @param meas
* @return
* @throws ReportException
*/
public GraphData cubeGraph(String query_id,String graphtype,String[] dims,String[] meas) throws ReportException{
try {
if(StringHelper.isEmpty(query_id))
throw new ReportException("query_id is null");
if(meas==null||meas.length==0||StringHelper.isEmpty(meas[0]))
throw new ReportException("mea is null");
CubeGraphType type= CubeGraphType.valueOf(graphtype);
QueryResultOlap olap= (QueryResultOlap) queryManage.get(query_id);
String title=repDefineDao.getRepDefine(olap.getRepId()).getRep_name();
CubeGraph graph=new CubeGraphImpl(type,title,olap.getDatabase(),meas[0],dims);
return olap.getCube().executeGraph(olap, graph).getGraphData();
} catch (JDBCException e) {
throw new ReportException(e,e.getSQL());
}
}
/**
* 模板切换展现
* @param query_id
* @param cube_json
* @throws ReportException
*/
public void cubeChangeMyCube(String query_id,String template_id) throws ReportException{
try {
if(StringHelper.isEmpty(query_id))
throw new ReportException("query_id is null");
if(StringHelper.isEmpty(template_id))
throw new ReportException("template_id is null");
RepMyCube repmycube= repMyCubeDao.queryMyCubeByTemplateId(template_id);
String mycube_json=repmycube.getCube_json();
MyCube mycube=JsonHelper.toObject(mycube_json, MyCube.class);
//cube运算
QueryResultOlap olap=(QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
cubeManage.setCube(cube, mycube);
cube.execute(olap);
//值警戒
List<MeaWarn> warnlist=null;
if(StringHelper.isNotEmpty(repmycube.getWarn_json())){
Type type = new TypeToken<List<MeaWarn>>(){}.getType();
warnlist=JsonHelper.toList(repmycube.getWarn_json(), type);
olap.setMeawarns(warnlist);
}
} catch (Exception e) {
throw new ReportException(e);
}
}
/**
* 指标选择
* @param query_id
* @param meas
* @throws ReportException
*/
public void cubeMeaSelect(String query_id,String...meas) throws ReportException{
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
cube.selectMeasure(meas);
cube.execute(olap);
}
/**
* 维选择
* @param query_id
* @param dimlist
* @param vertdim
* @throws ReportException
*/
public void cubeDimSelect(String query_id,List<String> dimlist,String vertdim) throws ReportException{
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
List<Dimension> list=new ArrayList<Dimension>();
for(String o:dimlist){
Dimension dim=DimensionManage.getDimension(o);
if(dim!=null)
list.add(dim);
else
throw new ReportException(dim+":dim is null or undefine");;
}
cube.selectDimension(DimensionManage.getDimension(vertdim), list.toArray(new Dimension[list.size()]));
cube.execute(olap);
}
/**
* 维合计项目设置
* @param query_id
* @param dimtotalmap
* @throws ReportException
*/
public void cubeDimTotal(String query_id,Map<String,Integer[]> dimtotalmap) throws ReportException{
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
if(dimtotalmap==null) dimtotalmap=new HashMap<String,Integer[]>();
for(DimensionRolap rolap:cube.getDimensionRolaps()){
cube.configDimensionTotal(rolap.getDim(), dimtotalmap.get(rolap.getId()));
}
cube.execute(olap);
}
/**
* 维展开
* @param query_id
* @param dim
* @throws ReportException
*/
public void cubeExpend(String query_id,String dim) throws ReportException{
if(StringHelper.isEmpty(dim))
throw new ReportException("dim is null");
if(StringHelper.isEmpty(query_id))
throw new ReportException("query_id is null");
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
cube.expandDimension(DimensionManage.getDimension(dim));
cube.execute(olap);
}
/**
* 维收缩
* @param query_id
* @param dim
* @throws ReportException
*/
public void cubeShrink(String query_id,String dim) throws ReportException{
if(StringHelper.isEmpty(dim))
throw new ReportException("dim is null");
if(StringHelper.isEmpty(query_id))
throw new ReportException("query_id is null");
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
cube.shrinkDimension(DimensionManage.getDimension(dim));
cube.execute(olap);
}
/**
* 维过滤切片
* @param query_id
* @param dim
* @param levelValueMap
* @throws ReportException
*/
public void cubeSlices(String query_id,String dim,Integer level,String[] values) throws ReportException{
if(StringHelper.isEmpty(query_id))
throw new ReportException("query_id is null");
if(StringHelper.isEmpty(dim))
throw new ReportException("dim is null");
if(level==null)
throw new ReportException("level is null");
if(values!=null&&values.length>0){
for(int i=0;i<values.length;i++)
if(StringHelper.isEmpty(values[i]))
throw new ReportException("values["+i+"] is null");
}
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
cube.slicesDimension(DimensionManage.getDimension(dim),level,values);
cube.execute(olap);
}
/**
* 维自定义排序
* @param query_id
* @param dim
* @param levelValueMap
* @throws ReportException
*/
public void cubeSort(String query_id,String dim,Map<Integer,String[]> sort_map) throws ReportException{
if(StringHelper.isEmpty(query_id))
throw new ReportException("query_id is null");
if(StringHelper.isEmpty(dim))
throw new ReportException("dim is null");
QueryResultOlap olap= (QueryResultOlap)queryManage.get(query_id);
CubeExec cube=olap.getCube();
cube.sortDimension(DimensionManage.getDimension(dim), sort_map);
cube.execute(olap);
}
/**
* 查询cube的olap表头
* @param query_id
* @param optr_id
* @return
* @throws ReportException
*/
public List<CubeHeadCell[]> queryOlapHeader(String query_id) throws ReportException{
try {
QueryResultOlap olap= (QueryResultOlap) queryManage.get(query_id);
return olap.getHead();
} catch (ReportException e) {
throw e;
}
}
/**
* 表头 名称查询
*/
public List<Object[]> queryHeader(String query_id) throws Exception {
List<Object[]> list = new ArrayList<Object[]>();
for (List<RepHead> replist : (List<List<RepHead>>)queryManage.get(query_id).getHead()) {
Object[] objects = replist.toArray();
list.add(objects);
}
return list;
}
/**
* 查询报表信息
*/
public Pager<List<String>> queryReport(String query_id, Integer start,
Integer limit) throws Exception {
return new Pager<List<String>>((List<List<String>>)queryManage.get(query_id)
.getPage(start, limit), queryManage.get(query_id).getRowSize());
}
/**
* 查询报表信息
*/
public Pager<CubeCell[]> queryOlapReport(String query_id, Integer start,
Integer limit) throws Exception {
QueryResultOlap olap= (QueryResultOlap) queryManage.get(query_id);
//olap.getPage(start, limit), olap.getRowSize()
return new Pager<CubeCell[]>(olap.getPage(start, limit),olap.getRowSize());
}
/**
* 查询所有任务配置
* @param optr
* @return
*/
public Pager<RepTask> queryRepTask(String query, Integer start, Integer limit,SOptr optr)throws ReportException{
Pager<RepTask> page=repTaskDao.queryAllTask(query, start, limit);
boolean editrep=BaseDataControl.getRole().hasFunc(FuncType.EDITREP);
for(RepTask task: page.getRecords()){
//能否删除和下载判断
if(editrep||optr.getOptr_id().equals(task.getOptr_id())){
task.setIs_delete(ReportConstants.VALID_T);
if(task.getStatus().equals(ReportConstants.TASK_STATUS_EXECSUCESS)&&DateHelper.isToday(task.getExec_end_time())){
task.setIs_dowload(ReportConstants.VALID_T);
}
}
//星期转换
if(task.getTask_type().equals(ReportConstants.TASK_TYPE_WEEK)){
int execday=Integer.parseInt(task.getTask_execday())-1;
task.setTask_execday(execday==0?"星期日":"星期"+execday);
}
}
return page;
}
/**
* 查询几天前已执行的一次性任务
* @param day
* @return
* @throws ReportException
*/
public List<RepTask> queryTaskTypeIsOne(Integer day) throws ReportException{
return repTaskDao.queryTaskTypeIsOne(day);
}
public List<RepTask> queryAllRepTask() throws ReportException{
try {
return repTaskDao.findAll();
} catch (JDBCException e) {
throw new ReportException(e);
}
}
/**
* 删除一个任务配置
* @param task_id
* @throws ReportException
*/
public void deleteRepTask(Integer task_id)throws ReportException{
try {
RepTask task=repTaskDao.findByKey(task_id);
if(task==null) return;
if(task.getStatus().equals(ReportConstants.TASK_STATUS_EXEC)){
throw new ReportException("正在执行的任务不能删除!");
}
RepTaskHis his=new RepTaskHis();
BeanUtils.copyProperties(task,his);
his.setKeylist("");
repTaskHisDao.save(his);
repTaskHisDao.updateKeylist(task.getTask_id(), task.getKeylist());
repTaskDao.remove(task_id);
} catch (JDBCException e) {
throw new ReportException(e);
}
}
/**
* 保存一个任务配置
* @param task
* @param para
* @param optr
* @throws ReportException
*/
public void saveTask(RepTask task,Parameter para,SOptr optr) throws ReportException{
try {
//数据验证(未实现)
RepDefine rd=repDefineDao.getRepDefine(task.getRep_id());
if(!rd.getRep_type().equals(ReportConstants.REP_TYPE_COMMON)
||!SystemConfig.getDatabaseMap().get(rd.getDatabase()).getType().equals(ReportConstants.DATABASETYPE_HISTROY)){
throw new ReportException("只有备份库普通报表支持任务配置!");
}
//页面条件取值,权限验证
queryKey.checkKeyValueList(para.getRepkeys());
task.setOptr_id(optr.getOptr_id());
task.setStatus(ReportConstants.TASK_STATUS_WAITEXEC);
task.setTask_id(Integer.parseInt(repTaskDao.findSequence().toString()));
repTaskDao.save(task);
repTaskDao.updateKeylist(task.getTask_id(), queryKey.toString(para.getRepkeys()));
} catch (JDBCException e) {
throw new ReportException(e);
}
}
/**
* 查询可执行的任务列表
* @return
* @throws ReportException
*/
public RepTask queryCanExecTask() throws ReportException{
try {
return repTaskDao.queryExecTask();
} catch (JDBCException e) {
throw new ReportException(e);
}
}
/**
* 执行任务
* @param task
* @throws ReportException
*/
public void execTask(RepTask task) throws ReportException{
try{
//更新任务状态
task.setStatus(ReportConstants.TASK_STATUS_EXEC);
task.setExec_start_time(new Date());
repTaskDao.updateResult(task);
//主报表cube的使用的查询条件
Parameter para=new Parameter();
if(StringHelper.isNotEmpty(task.getKeylist())){
Map<String,String> valuemap= queryKey.toValueMap(task.getKeylist());
List<ConKeyValue> keylist=new ArrayList<ConKeyValue>();
Iterator<String> it=valuemap.keySet().iterator();
while(it.hasNext()){
ConKeyValue o=new ConKeyValue();
String key=it.next();
o.setKey(key);
o.setValue(valuemap.get(key));
keylist.add(o);
}
para.setRepkeys(keylist);
}
SOptr optr=new SOptr();
optr.setOptr_id("admin");
ShowQueryDto show=this.initQuery(task.getRep_id(), para, optr, "localhost");
task.setExec_query_id(show.getQuery_id());
task.setExec_result("成功");
task.setExec_end_time(new Date());
task.setStatus(ReportConstants.TASK_STATUS_EXECSUCESS);
repTaskDao.updateResult(task);
}catch(ReportException e){
String error=e.getMessage();
task.setStatus(ReportConstants.TASK_STATUS_EXECFFAILED);
task.setExec_end_time(new Date());
task.setExec_result(error!=null&&error.length()>1000?error.substring(0, 1000):error);
repTaskDao.updateResult(task);
}catch(Exception e){
String error=e.getMessage();
task.setStatus(ReportConstants.TASK_STATUS_EXECFFAILED);
task.setExec_end_time(new Date());
task.setExec_result(error!=null&&error.length()>1000?error.substring(0, 1000):error);
repTaskDao.updateResult(task);
}
}
/**
* 初始化查询
* @param repQueryDto
* @return query_id
* @throws ReportException
* @throws JDBCException
* @throws BeansException
*/
public ShowQueryDto initQuery(String rep_id, Parameter para,SOptr optr,String client_ip)
throws ReportException {
try{
if (rep_id == null || rep_id.equals(""))
throw new ReportException("rep_id is null");
//页面条件取值,权限验证
queryKey.checkKeyValueList(para.getRepkeys());
//查询初始定义bean
InitQueryDto initQueryDto = new InitQueryDto(repDefineDao.getRepDefine(rep_id),para);
// 报表查询历史检测
RepQueryLog repQueryLog = repQueryLogDao.getRepQueryLog(initQueryDto,optr.getOptr_id(),client_ip);
// 创建查询
queryManage.initQuery(initQueryDto, repQueryLog,optr.getOptr_id());
repQueryLogDao.saveRepQuerLog(repQueryLog);
return new ShowQueryDto(initQueryDto);
}catch(ReportException e){
throw e;
} catch (JDBCException e) {
throw new ReportException(e,e.getSQL());
}
}
public RepDefineDao getRepDefineDao() {
return repDefineDao;
}
public void setRepDefineDao(RepDefineDao repDefineDao) {
this.repDefineDao = repDefineDao;
}
public RepQueryLogDao getRepQueryLogDao() {
return repQueryLogDao;
}
public void setRepQueryLogDao(RepQueryLogDao repQueryLogDao) {
this.repQueryLogDao = repQueryLogDao;
}
public RepSqlDao getRepSqlDao() {
return repSqlDao;
}
public void setRepSqlDao(RepSqlDao repSqlDao) {
this.repSqlDao = repSqlDao;
}
public RepHeadDao getRepHeadDao() {
return repHeadDao;
}
public void setRepHeadDao(RepHeadDao repHeadDao) {
this.repHeadDao = repHeadDao;
}
public RepTotalDao getRepTotalDao() {
return repTotalDao;
}
public void setRepTotalDao(RepTotalDao repTotalDao) {
this.repTotalDao = repTotalDao;
}
public RepDimKeyDao getRepDimKeyDao() {
return repDimKeyDao;
}
public void setRepDimKeyDao(RepDimKeyDao repDimKeyDao) {
this.repDimKeyDao = repDimKeyDao;
}
public RepColumnDao getRepColumnDao() {
return repColumnDao;
}
public void setRepColumnDao(RepColumnDao repColumnDao) {
this.repColumnDao = repColumnDao;
}
public QueryManage getQueryManage() {
return queryManage;
}
public void setQueryManage(QueryManage queryManage) {
this.queryManage = queryManage;
}
public RepGroupDao getRepGroupDao() {
return repGroupDao;
}
public void setRepGroupDao(RepGroupDao repGroupDao) {
this.repGroupDao = repGroupDao;
}
public void setRepMyCubeDao(RepMyCubeDao repMyCubeDao) {
this.repMyCubeDao = repMyCubeDao;
}
public CubeManage getCubeManage() {
return cubeManage;
}
public void setCubeManage(CubeManage cubeManage) {
this.cubeManage = cubeManage;
}
public RepMyCubeDao getRepMyCubeDao() {
return repMyCubeDao;
}
public QueryKey getQueryKey() {
return queryKey;
}
public void setQueryKey(QueryKey queryKey) {
this.queryKey = queryKey;
}
public QuerySql getQuerySql() {
return querySql;
}
public void setQuerySql(QuerySql querySql) {
this.querySql = querySql;
}
public CubeDetail getCubeDetail() {
return cubeDetail;
}
public void setCubeDetail(CubeDetail cubeDetail) {
this.cubeDetail = cubeDetail;
}
public RepDetailDataDao getRepDetailDataDao() {
return repDetailDataDao;
}
public void setRepDetailDataDao(RepDetailDataDao repDetailDataDao) {
this.repDetailDataDao = repDetailDataDao;
}
public RepDetailDimDao getRepDetailDimDao() {
return repDetailDimDao;
}
public void setRepDetailDimDao(RepDetailDimDao repDetailDimDao) {
this.repDetailDimDao = repDetailDimDao;
}
public RepDetailRowDao getRepDetailRowDao() {
return repDetailRowDao;
}
public void setRepDetailRowDao(RepDetailRowDao repDetailRowDao) {
this.repDetailRowDao = repDetailRowDao;
}
public RepTaskDao getRepTaskDao() {
return repTaskDao;
}
public void setRepTaskDao(RepTaskDao repTaskDao) {
this.repTaskDao = repTaskDao;
}
public RepTaskHisDao getRepTaskHisDao() {
return repTaskHisDao;
}
public void setRepTaskHisDao(RepTaskHisDao repTaskHisDao) {
this.repTaskHisDao = repTaskHisDao;
}
}