📄 reportimpl.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("")?" ":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 + -