⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reportimpl.java

📁 电信的网厅的整站代码
💻 JAVA
字号:
package com.doone.fj1w.fjmgr.rpt;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import com.doone.data.DBTypes;
import com.doone.data.DacClient;
import com.doone.data.DataRow;
import com.doone.data.DataTable;
import com.doone.fj1w.fjmgr.statana.Simpreportqry;
import com.doone.util.ExtString;
import com.doone.util.FileLogger;

public class ReportImpl {
	private TF_Reports report = null;

	public static ReportImpl getInstance(long reportId) {
		ReportImpl result = null;
		try {
			DacClient db = new DacClient();
			TF_Reports rpt = new TF_Reports(db,reportId);
			if ( ExtString.isEmpty(rpt.getImplClass()) ) {
				result = new ReportImpl();
			}
			else {
				Class cls = Class.forName(rpt.getImplClass());
				result = (ReportImpl)cls.newInstance();
			}
			
			result.report = rpt;
		}
		catch(Exception ex) {
			FileLogger.getLogger().warn(ex.getMessage(),ex);
		}
		return result;
	}
	
	public String genHtml(Map _map) {
		DataTable dt = getRptList(_map);
		StringBuffer _sb = new StringBuffer();
		if ( dt != null ) {
			_sb.append("<table>");
			try {
				com.doone.data.DataColumnCollection dcs = dt.getColumns();
				int colcount = dcs.getCount();
				_sb.append("<tr>");
				for (int icol = 0;icol<colcount-1;icol++){
					com.doone.data.DataColumn dc = dcs.getDataColumn(icol);
					_sb.append("<td class=\"body_td\" align=\"center\" nowrap><b>");
					_sb.append(dc.getColumnName());
					_sb.append("</b></TD>");
				}
				_sb.append("</tr>");
				
				for(int iresult=0;iresult<dt.getRows().getCount(); iresult++){	
					_sb.append("<tr height=\"20\">");			
					DataRow drresult = dt.getRow(iresult);
					for (int icol=0; icol<colcount-1;icol++){
						_sb.append("<td class=\"body_td\" align=\"left\" nowrap>");
						_sb.append(drresult.getString(icol).trim().equals("")?"&nbsp;":drresult.getString(icol).trim());
						_sb.append("</TD>");

					}
					_sb.append("</tr>");
				}
			} catch (Exception e) {
				FileLogger.getLogger().info(e.getMessage(),e);
			}
			_sb.append("</table>");
		}
		
		return _sb.toString();
	}
	
	protected DataTable getRptList(Map _map) {
		try {
			if(_map==null || _map.isEmpty())
				return null;		
			
			int pageSize = Integer.parseInt((String) _map.get("pageSize"));
			int currentPage = Integer.parseInt((String) _map.get("currentPage"));
	
			if (pageSize == -1 || currentPage == -1) {
				FileLogger.getLogger().info("页面参数为空。");
			} else {
				FileLogger.getLogger().info("pageSize:" + String.valueOf(pageSize));
				FileLogger.getLogger().info("currentPage:" + String.valueOf(currentPage));
			}
			
			String sql = report.getReportsql();
			int startrecord = currentPage * pageSize;
			int endrecord = pageSize;
			if (startrecord < 0)
				startrecord = 0;
			if (endrecord > 0 && startrecord > 0)
				endrecord = startrecord + pageSize;
		
/*			Object[] _object = new Object[REPORT_PARA_COUNT+4];
			if(REPORT_PARA_COUNT>0){				
				String sFieldName="";
				for(int t=0;t<REPORT_PARA_COUNT;t++){
					sFieldName = "PARA_NAME"+t;
					_object[t] = (String) _map.get(sFieldName);
				}				
			}			
			
			_object[REPORT_PARA_COUNT++] = (String) _map.get("STARTTIME");
			_object[REPORT_PARA_COUNT++] = (String) _map.get("ENDTIME");
			_object[REPORT_PARA_COUNT++] = (String) _map.get("CITY");
			_object[R
			EPORT_PARA_COUNT++] = (String) _map.get("AREA");*/
			
			String _reportid = "";
			if (_map!=null&&_map.get("reportid")!=null)
				_reportid  = (String)_map.get("reportid");
			DataTable _dt = Simpreportqry.gettd_reportpara("",_reportid);
			SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd");
			Object[] _object = new Object[_dt.getRows().getCount()];
			for (int i=0;i<_dt.getRows().getCount();i++){
				String sParaName = _dt.getRow(i).getString("PARA_NAME");
				String sDataType = _dt.getRow(i).getString("DATATYPE");
				
				if ( sDataType.equalsIgnoreCase("NUMBER") ) sDataType = "NUMERIC";
				else if ( sDataType.equalsIgnoreCase("LONG") ) sDataType = "LONGVARCHAR";

				DBTypes dbType = DBTypes.newInstance(sDataType);

				switch(dbType.ordinal()) {
				case DBTypes.VARCHAR:
				case DBTypes.CLOB:
				case DBTypes.LONGVARCHAR:
					_object[i] = (String)_map.get(sParaName);
					if ( _object[i] == null ) _object[i] = "";
					break;
				case DBTypes.NUMERIC:
					_object[i] = (String)_map.get(sParaName);
					if ( _object[i] == null ) _object[i] = new Long(-1);
					else {
						_object[i] = new Long((String)_object[i]);
					}
					break;
				case DBTypes.TIMESTAMP:
				case DBTypes.DATE:
					_object[i] = _map.get(sParaName);
					if ( sParaName.equalsIgnoreCase("STARTTIME") && _object[i] == null) {
						_object[i] = new Timestamp(Long.MIN_VALUE);
					}
					else if ( sParaName.equalsIgnoreCase("ENDTIME") && _object[i] == null) {
						_object[i] = new Timestamp(Long.MAX_VALUE);
					}
					else {
						Date date = null;
						try {
							date = sdt.parse((String)_object[i]);
						}
						catch (Exception e) {
							FileLogger.getLogger().info(e.getMessage(),e);
						}
						
						if ( date != null ) 
							_object[i] = new Timestamp(date.getTime());
						else
							_object[i] = new Timestamp(new Date().getTime());
					}
					break;
				default:
					_object[i] = (String)_map.get(sParaName);
					if ( _object[i] == null ) _object[i] = "";
					break;
				}
			}
			
			StringBuffer _sb = new StringBuffer();
			_sb.append("SELECT * FROM ( SELECT row_.*, rownum rownum_ FROM(");
			_sb.append(sql);
			_sb.append(")row_ WHERE rownum <=");
			_sb.append(endrecord);
			_sb.append(") WHERE rownum_ >");
			_sb.append(startrecord);			
			//sql = _sb.toString();

			DacClient db = new DacClient();			
			_dt = db.executeQuery(sql,_object);
			return _dt;
		} catch (Exception rux) {
			FileLogger.getLogger().warn(rux.getMessage(), rux);
			throw new RuntimeException(rux);
		}
		
	}
	
	protected int getRptListCount(Map _map) {
		try {
			if(_map == null )return 0;
			
/*			Object[] keys = _map.keySet().toArray();
			for (int i=0;i<keys.length;i++){
				System.out.print(keys[i]+"=");
				System.out.println(_map.get(keys[i]));
			}*/
			String _reportid = "";
			if (_map!=null&&_map.get("reportid")!=null)
				_reportid  = (String)_map.get("reportid");
			DataTable _dt = Simpreportqry.gettd_reportpara("",_reportid);
			int aa = _dt.getRows().getCount();
			SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd");
			Object[] _object = new Object[_dt.getRows().getCount()];
			for (int i=0;i<_dt.getRows().getCount();i++){
				String sParaName = _dt.getRow(i).getString("PARA_NAME");
				String sDataType = _dt.getRow(i).getString("DATATYPE");
				
				if ( sDataType.equalsIgnoreCase("NUMBER") ) sDataType = "NUMERIC";
				else if ( sDataType.equalsIgnoreCase("LONG") ) sDataType = "LONGVARCHAR";
				DBTypes dbType = DBTypes.newInstance(sDataType);

				switch(dbType.ordinal()) {
				case DBTypes.VARCHAR:
				case DBTypes.CLOB:
				case DBTypes.LONGVARCHAR:
					_object[i] = (String)_map.get(sParaName);
					if ( _object[i] == null ) _object[i] = "";
					break;
				case DBTypes.NUMERIC:
					_object[i] = (String)_map.get(sParaName);
					if ( _object[i] == null ) _object[i] = new Long(-1);
					else {
						_object[i] = new Long((String)_object[i]);
					}
					break;
				case DBTypes.TIMESTAMP:
				case DBTypes.DATE:
					_object[i] = _map.get(sParaName);
					if ( sParaName.equalsIgnoreCase("STARTTIME") && _object[i] == null) {
						_object[i] = new Timestamp(Long.MIN_VALUE);
					}
					else if ( sParaName.equalsIgnoreCase("ENDTIME") && _object[i] == null) {
						_object[i] = new Timestamp(Long.MAX_VALUE);
					}
					else {
						Date date = null;
						try {
							date = sdt.parse((String)_object[i]);
						}
						catch (Exception e) {
							FileLogger.getLogger().info(e.getMessage(),e);
						}
						
						if ( date != null ) 
							_object[i] = new Timestamp(date.getTime());
						else
							_object[i] = new Timestamp(new Date().getTime());
					}
					break;
				default:
					_object[i] = (String)_map.get(sParaName);
					if ( _object[i] == null ) _object[i] = "";
					break;
				}
			}
/*			_object[t] = (String) _map.get("STARTTIME");
			_object[t++] = (String) _map.get("ENDTIME");
			_object[t++] = (String) _map.get("CITY");
			_object[t++] = (String) _map.get("AREA");*/
			
			//获取sql语句
			String sql = report.getReportsql();			
			StringBuffer _sb = new StringBuffer();
			_sb.append("SELECT count(*) FROM ( ");
			_sb.append(sql);
			_sb.append(")");			
			//sql = _sb.toString();
			
			DacClient db = new DacClient();			
			int iRptCount = Integer.parseInt(db.getStringFromSqlQuery(sql,_object));

			return iRptCount;

		} catch (Exception ex) {
			FileLogger.getLogger().warn(ex.getMessage(), ex);
		}
		return 0;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -