利用Ibatis和apache poi实现报表输出

最近半个月,有空做了个报表程序,主要功能是从DB2数据库中,抽取数据,然后按照Excel模板的格式,将数据写进去。在该Excel模板中,事先画好了各种报表图(饼图,柱状图等)。只要数据写入了Excel相应的表格内,这些图形就会自动利用数据,显示出相应的样子。
整个程序按照MVC的模式,和Facade模式来搭建的开发框架。
View层,采用的是J2SE的AWT和SWING.
类GenReportClient,在该类中有一系列的write方法,比如:writeTotalSummary().用于将调用业务层得到的数据,输出到Excel里。该Excel文件是事先定义好的Excel模板的一份拷贝。
还有,为了显示程序处理状态,而加了一个类ProcessStatusClient,该类是继承于JFrame的一个窗体。用户通过这个窗体可以看到程序处理中状态。
还有一个Animation类,该类是一个线程类,用于在类ProcessStatusClient中动态显示窗体title.
控制层是:在类ProcessStatusClient中定义的匿名内部类,该类实现了ActionListener接口,用于响应用户的按钮点击。该类中的actionPerformed()方法就是实现控制的。
业务逻辑层:ReportBusinessLogic接口,报表产生的业务逻辑接口,主要就是取数据用。实现类是ReportBusinessLogicImpl。
数据访问层:ReportDBAccess接口,获取所有帐号各种类型操作和总操作数量的接口。实现类是ReportDBAccessImpl。具体实现是依赖Ibatis的sqlMapClient来查询DB,获取业务数据。

View层代码:
package com.ibm.report.client;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import com.ibm.report.blogic.ReportBusinessLogic;
import com.ibm.report.blogic.ReportBusinessLogicImpl;
import com.ibm.report.dto.OpenTicketRespTimeByAccount;
import com.ibm.report.dto.OperationsDaily;
import com.ibm.report.dto.OperationsDailyByAccount;
import com.ibm.report.dto.TotalOperations;
import com.ibm.report.util.Reportcommon;

/******************************************************************************
* 报表客户端应用
*
* @author 杨康
* @version 1.0<BR/>
* <BR/>
* 作成 : 2013/05/15
******************************************************************************/
public final class GenReportClient extends JFrame {

/** serialVersionUID */
private static final long serialVersionUID = 5098446118589698610L;

/** 报表生成业务逻辑接口 */
private ReportBusinessLogic rbl;

/** 报表文件物理路径 */
private String filePath;

/** 面板 */
private JPanel panel;

/** 标签:统计开始日时 */
private JLabel labelStartDatetime;

/** 标签:统计终了日时 */
private JLabel labelEndDatetime;

/** 标签:后台执行指示器 */
private JLabel labelMessage;

/** 入力框: 统计开始日时 */
private JTextField textStartDatetime;

/** 入力框:统计终了日时 */
private JTextField textEndDatetime;

/** 按钮:确定 */
private JButton btnConfirm;

/** 按钮:关闭 */
private JButton btnExit;

/** 网格袋布局器 */
private GridBagLayout gl;

/** 网格袋布局约束 */
private GridBagConstraints gbc;

/** 处理结果报告 */
private StringBuilder resultMessage = new StringBuilder("Result:\n\r");

/***************************************************************************
* 构造器方法
*
* @param templateFilePath
* 模板文件路径
* @param reportFilePath
* 报告文件路径
**************************************************************************/
public GenReportClient(final String templateFilePath,
final String reportFilePath) {
// // 取得当前程序所在磁盘路径
// final String currentpath = getClass().getResource("").toString();
//
// // 报表模板文件路径
// final String oldFilePath = currentpath.substring(6).replace("/", "\\")
// + "Ticketing report.xls";

// 设定报表生成业务逻辑实例
this.rbl = new ReportBusinessLogicImpl();

// 初始化布局实例变量
this.gl = new GridBagLayout();
this.gbc = new GridBagConstraints();

// 初始化面板变量
this.panel = new JPanel();
this.panel.setLayout(gl);
this.getContentPane().add(this.panel);

// 初期化标签
this.labelStartDatetime = new JLabel("Start Datetime");
this.labelEndDatetime = new JLabel("End Datetime");
this.labelMessage = new JLabel(" ");

// 初期化入力框
this.textStartDatetime = new JTextField(23);
this.textEndDatetime = new JTextField(23);

// 初期化按钮
this.btnConfirm = new JButton("Confirm");
this.btnExit = new JButton("Exit");

// 给确认按钮追加监听器
this.btnConfirm.addActionListener(new ActionListener() {

/***************************************************************************
* 用户点击确认按钮的事件处理逻辑
*
* @param event
* 用户操作生成的事情对象
*
**************************************************************************/
@Override
public void actionPerformed(ActionEvent event) {

// 报表处理开始
long starttime = System.currentTimeMillis();

System.out
.println("#####################################################");
System.out
.println("# background is executing, please wait for amoment! #");
System.out
.println("#####################################################");

// 打开显示正在处理状态显示框口
ProcessStatusClient psClient = new ProcessStatusClient();

// 正在出力报表中
setVisible("OFF");

// 置空信息标签
labelMessage.setText(" ");

// 存储报表统计的开始日时的变量
String start_datetime = null;

// 存储报表统计的终了日时的变量
String end_datetime = null;

// 用户点击了确认按钮的场合
if (btnConfirm == event.getSource()) {
// 拿到用户输入的报表统计的开始日时情报
start_datetime = textStartDatetime.getText();
// 拿到用户输入的报表统计的终了日时情报
end_datetime = textEndDatetime.getText();

// 用户没有输入报表统计的开始日时的场合
if (start_datetime == null || "".equals(start_datetime)) {
// 通知用户必须输入报表统计的开始日时
labelMessage.setText("please input start datetime!");
setVisible("ON");
psClient.dispose();
psClient = null;
return;
}

// 默认从开始日的凌晨开始
start_datetime += " 00:00:00.000";

// 用户没有输入报表统计的终了日时的场合
if (end_datetime == null || "".equals(end_datetime)) {
// 通知用户必须输入报表统计的终了日时
labelMessage.setText("please input end datetime!");
setVisible("ON");
psClient.dispose();
psClient = null;
return;
}

// 默认从终了日的晚上11点59分59秒999毫秒结束
end_datetime += " 23:59:59.999";

// Check统计开始日
if (!Reportcommon.checkDateString(start_datetime)) {
// 通知用户必须输入报表正确的日期
labelMessage
.setText("please input efficacious start datetime!");
setVisible("ON");
psClient.dispose();
psClient = null;
return;
}

// Check统计终了日
if (!Reportcommon.checkDateString(end_datetime)) {
// 通知用户必须输入报表正确的日期
labelMessage
.setText("please input efficacious end datetime!");
setVisible("ON");
psClient.dispose();
psClient = null;
return;
}

// Check统计开始日与统计终了日的关系
if (!Reportcommon.checkStartYMAndEndYM(start_datetime,
end_datetime)) {
// 通知用户必须输入正确开始日与统计终了日
labelMessage
.setText("start datetime's year and month must equal the end datetime's");
setVisible("ON");
psClient.dispose();
psClient = null;
return;
}

if (!Reportcommon.CompareStartDateAndEndDate(
start_datetime, end_datetime)) {
// 通知用户必须输入正确开始日与统计终了日
labelMessage
.setText("the start datetime must less Or equal the end datetime");
setVisible("ON");
psClient.dispose();
psClient = null;
return;
}

// 新生成的报表文件路径
filePath = Reportcommon.genNewXlsFileName(reportFilePath,
textStartDatetime.getText(),
textEndDatetime.getText());

// 拷贝模板到新路径
Reportcommon.copyFile(templateFilePath, filePath);

// 调用业务接口得出所有帐号的总的操作数量一览情报
List<TotalOperations> totaloperlst = rbl
.getTotalOperations(start_datetime, end_datetime);

// 调用业务接口得出所有帐号的失败操作数量一览情报
List<TotalOperations> failedoperlst = rbl
.getFailedOperations(start_datetime, end_datetime);

// 调用业务接口得出所有帐号的各自总开票操作数量一览情报
List<TotalOperations> totalopenlst = rbl
.getTotalOpenOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自开票失败操作数量一览情报
List<TotalOperations> failedopenlst = rbl
.getFailedOpenOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自更新票操作数量一览情报
List<TotalOperations> totalupdatelst = rbl
.getTotalUpdateOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自更新票失败操作数量一览情报
List<TotalOperations> failedupdatelst = rbl
.getFailedUpdateOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自添加附件操作数量一览情报
List<TotalOperations> totalattachlst = rbl
.getTotalAttachmentOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自添加附件失败操作数量一览情报
List<TotalOperations> failedattachlst = rbl
.getFailedAttachmentOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自取票一览操作数量一览情报
List<TotalOperations> totallistlst = rbl
.getTotalListOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自取票一览操作失败数量一览情报
List<TotalOperations> failedlistlst = rbl
.getFailedListOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自查看票详细操作数量一览情报
List<TotalOperations> totalviewlst = rbl
.getTotalViewOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自查看票详细失败操作数量一览情报
List<TotalOperations> failedviewlst = rbl
.getFailedViewOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自再次打开票操作数量一览情报
List<TotalOperations> totalreopenlst = rbl
.getTotalReopenOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自再次打开票操作失败数量一览情报
List<TotalOperations> failedreopenlst = rbl
.getFailedReopenOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自关票操作数量一览情报
List<TotalOperations> totalcloselst = rbl
.getTotalCloseOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自关票操作失败数量一览情报
List<TotalOperations> failedcloselst = rbl
.getFailedCloseOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自聊天操作数量一览情报
List<TotalOperations> totalchatlst = rbl
.getTotalChatOperations(start_datetime,
end_datetime);

// 调用业务接口得出所有帐号的各自聊天失败操作数量一览情报
List<TotalOperations> failedchatlst = rbl
.getFailedChatOperations(start_datetime,
end_datetime);

// 调用业务接口得出按天统计总操作数量一览情报
List<OperationsDaily> totaldailyoplst = rbl
.getTotalDailyOperations(start_datetime,
end_datetime);

// 调用业务接口得出按天统计失败操作数量一览情报
List<OperationsDaily> faileddailyoplst = rbl
.getFailedDailyOperations(start_datetime,
end_datetime);

// 调用业务接口得出按天统计开票操作数量一览情报
List<OperationsDaily> totaldailyopenlst = rbl
.getTotalDailyOpen(start_datetime, end_datetime);

// 调用业务接口得出按天统计开票失败操作数量一览情报
List<OperationsDaily> faileddailyopenlst = rbl
.getFailedDailyOpen(start_datetime, end_datetime);

// 调用业务接口得出按天统计各个帐号总操作数量一览情报
List<OperationsDailyByAccount> totaldailyaccoplst = rbl
.getTotalDailyByAccountOperations(start_datetime,
end_datetime);

// 调用业务接口得出按天统计各个帐号失败操作数量一览情报
List<OperationsDailyByAccount> faileddailyaccoplst = rbl
.getFailedDailyByAccountOperations(start_datetime,
end_datetime);

// 调用业务接口得出按天统计各个帐号开票操作数量一览情报
List<OperationsDailyByAccount> totaldailyaccopenlst = rbl
.getTotalDailyByAccountOpen(start_datetime,
end_datetime);

// 调用业务接口得出按天统计各个帐号开票失败操作数量一览情报
List<OperationsDailyByAccount> faileddailyaccopenlst = rbl
.getFailedDailyByAccountOpen(start_datetime,
end_datetime);

// 调用业务接口得出各个帐号开票操作响应时间一览情报
List<OpenTicketRespTimeByAccount> openTikRespTimLst = rbl
.getOpenTicketRespTime(start_datetime, end_datetime);

// 调用业务接口得出各个帐号开票操作响应时间小于等于5秒一览情报
List<TotalOperations> lessEqual5SecOperLst = rbl
.getLessEqual5SecOpers(start_datetime, end_datetime);

// 调用业务接口得出各个帐号开票操作响应时间大于5秒小于等于15秒一览情报
List<TotalOperations> larger5AndLessEqual15SecOperLst = rbl
.getLarger5SecAndLessEqual15SecOpers(
start_datetime, end_datetime);

// 调用业务接口得出各个帐号开票操作响应时间大于15秒小于等于30秒一览情报
List<TotalOperations> larger15AndLessEqual30SecOperLst = rbl
.getLarger15SecAndLessEqual30SecOpers(
start_datetime, end_datetime);

// 调用业务接口得出各个帐号开票操作响应时间大于130秒一览情报
List<TotalOperations> larger30SecOperLst = rbl
.getLarger30SecOpers(start_datetime, end_datetime);

try {

for (int i = 0; i < 4; i++) {
// 1,输出各个用户的各自的操作总数量
writeTotalSummary(totaloperlst, i, 1,
"total operations");

// 2,输出各个用户的各自的失败操作总数量
writeTotalSummary(failedoperlst, i, 3,
"failed operations");

// 3,输出各个用户的各自的总开票操作数量
writeTotalSummary(totalopenlst, i, 4, "total open");

// 4,输出各个用户的各自的开票失败操作数量
writeTotalSummary(failedopenlst, i, 13,
"failed open");

// 5,输出各个用户的各自的更新票操作数量
writeTotalSummary(totalupdatelst, i, 5,
"total update");

// 6,输出各个用户的各自的更新票失败操作数量
writeTotalSummary(failedupdatelst, i, 14,
"failed update");

// 7,输出各个用户的各自的追加附件操作数量
writeTotalSummary(totalattachlst, i, 6,
"total attachment");

// 8,输出各个用户的各自的追加附件失败操作数量
writeTotalSummary(failedattachlst, i, 15,
"failed attachment");

// 9,输出各个用户的各自的取票一览操作数量
writeTotalSummary(totallistlst, i, 7, "total list");

// 10,输出各个用户的各自的取票一览失败操作数量
writeTotalSummary(failedlistlst, i, 16,
"failed list");

// 11,输出各个用户的各自的查看票详细情报操作数量
writeTotalSummary(totalviewlst, i, 8, "total view");

// 12,输出各个用户的各自的查看票详细失败情报操作数量
writeTotalSummary(failedviewlst, i, 17,
"failed view");

// 13,输出各个用户的各自的再次打开票操作数量
writeTotalSummary(totalreopenlst, i, 9,
"total reopen");

// 14,输出各个用户的各自的再次打开票操作失败数量
writeTotalSummary(failedreopenlst, i, 18,
"failed reopen");

// 15,输出各个用户的各自的关票操作数量
writeTotalSummary(totalcloselst, i, 10,
"total close");

// 16,输出各个用户的各自的关票操作失败数量
writeTotalSummary(failedcloselst, i, 19,
"failed close");

// 17,输出各个用户的各自的聊天操作的数量
writeTotalSummary(totalchatlst, i, 11,
"total chat script");

// 18,输出各个用户的各自的聊天操作失败的数量
writeTotalSummary(failedchatlst, i, 20,
"failed chat script");
}
// 19, 输出按天统计总操作数量
writeDailySummary(totaldailyoplst, 1,
"daily total operations");

// 20, 输出按天统计失败操作数量
writeDailySummary(faileddailyoplst, 2,
"daily failed operations");

// 21, 输出按天统计开票操作数量
writeDailySummary(totaldailyopenlst, 3,
"daily total open");

// 22, 输出按天统计开票失败操作数量
writeDailySummary(faileddailyopenlst, 4,
"daily failed open");

// 23, 输出按天统计的各个帐号总操作数量
writeDailySummary(totaldailyaccoplst, new int[] { 5, 9,
13 }, "daily total account operations");

// 24, 输出按天统计的各个帐号失败操作数量
writeDailySummary(faileddailyaccoplst, new int[] { 6,
10, 14 }, "daily failed account operations");

// 25, 输出按天统计的各个帐号开票操作数量
writeDailySummary(totaldailyaccopenlst, new int[] { 7,
11, 15 }, "daily total open account operations");

// 26, 输出按天统计的各个帐号开票失败数量
writeDailySummary(faileddailyaccopenlst, new int[] { 8,
12, 16 },
"daily failed open account operations");

// 27, 输出bcbsma的开票相应时间一览情报
writeResponseTime(
getOpenRespTimeListPerAccount(
openTikRespTimLst, "bcbsma"), "bcbsma");

// 28, 输出dow的开票相应时间一览情报
writeResponseTime(
getOpenRespTimeListPerAccount(
openTikRespTimLst, "dow"), "dow");

// 29, 输出millercoors的开票相应时间一览情报
writeResponseTime(
getOpenRespTimeListPerAccount(
openTikRespTimLst, "millercoors"),
"millercoors");

// 30, 输出各个帐号开票操作响应时间小于等于5秒的情报
writeResponseTimePieChart(lessEqual5SecOperLst, 1,
"less equal 5 seconds open operations");

// 31, 输出各个帐号开票操作响应时间大于5秒小于等于15秒的情报
writeResponseTimePieChart(
larger5AndLessEqual15SecOperLst, 2,
"larger 5 and lessequal 15 second open operations");

// 32, 输出各个帐号开票操作响应时间大于15秒小于等于30秒的情报
writeResponseTimePieChart(
larger15AndLessEqual30SecOperLst, 3,
"larger 15 and lessequal 30 second open operations");

// 33, 输出各个帐号开票操作响应时间大于30秒的情报
writeResponseTimePieChart(larger30SecOperLst, 4,
"larger 30 second open operations");

} catch (Exception e) {
// 输出异常情报
System.out.println(e.getLocalizedMessage());
// 通知用户程序异常终了
System.out
.println("program over with exception or error!");
return;
}
}

// 报表处理结束
psClient.setHasFinished(true);
// 设定显示正在处理状态显示框口标题
psClient.setTitle("Process Finished");

// 报表处理结束
long endtime = System.currentTimeMillis();

// 设定系统处理总时间信息
psClient.setLabelMessage("you have used:"
+ String.valueOf((endtime - starttime) / 1000)
+ " seconds to finish output report!");

// 显示处理结果给用户的对话框
Object[] options = { "OK" };
JOptionPane.showOptionDialog(null, resultMessage.toString(),
"Information", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE, null, options, options[0]);

// 通知用户报表出力正常结束
labelMessage.setText(" ");
// 清空结果情报
resultMessage = new StringBuilder("Result:\n\r");

}

});

// 为退出按钮添加监听器
this.btnExit.addActionListener(new ActionListener() {

/***************************************************************************
* 用户点击退出按钮的事件处理逻辑
*
* @param event
* 用户操作生成的事情对象
*
**************************************************************************/
@Override
public void actionPerformed(ActionEvent arg0) {
// 如果用户点击了关闭按钮,就退出程序。
if (arg0.getSource() == btnExit) {
System.exit(0);
}
}
});

// 为该Frame添加控件
this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 1;
this.gbc.gridy = 5;
this.gl.setConstraints(this.labelStartDatetime, this.gbc);
this.panel.add(this.labelStartDatetime);

this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 4;
this.gbc.gridy = 5;
this.gl.setConstraints(this.textStartDatetime, this.gbc);
this.panel.add(this.textStartDatetime);

this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 1;
this.gbc.gridy = 8;
this.gl.setConstraints(this.labelEndDatetime, this.gbc);
this.panel.add(this.labelEndDatetime);

this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 4;
this.gbc.gridy = 8;
this.gl.setConstraints(this.textEndDatetime, this.gbc);
this.panel.add(this.textEndDatetime);

this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 1;
this.gbc.gridy = 11;
this.gl.setConstraints(this.btnConfirm, this.gbc);
this.panel.add(this.btnConfirm);

this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 4;
this.gbc.gridy = 11;
this.gl.setConstraints(this.btnExit, this.gbc);
this.panel.add(this.btnExit);

this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 4;
this.gbc.gridy = 14;
this.gl.setConstraints(this.labelMessage, this.gbc);
this.panel.add(this.labelMessage);

this.setTitle("Report Generation Program");
this.setVisible(true);
this.setSize(600, 500);
this.setLocationRelativeTo(null);
}

/***************************************************************************
* 输出各个用户的各自的各种类型操作和总操作的数量
*
* @param totaloperlst
* 操作数量的列表
* @param _sheetIndex
* 工作片索引
* @param _rowIndex
* 行索引
* @param name
* 当前统计的操作名
* @exception Exception
* 异常
**************************************************************************/
public void writeTotalSummary(List<TotalOperations> totaloperlst,
int _sheetIndex, int _rowIndex, String name) throws Exception {
// DB里没有数据的场合,直接返回
if (totaloperlst == null || totaloperlst.size() == 0) {
return;
}
// 申明文件输入流对象,读取报表文件
FileInputStream fis = new FileInputStream(this.filePath);

// Excel工作薄
HSSFWorkbook wb = null;

// POI的文件系统
POIFSFileSystem fs = null;

// 设置要读取的文件路径
fs = new POIFSFileSystem(fis);
// HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls)
// 之后版本使用XSSFWorkbook(xlsx)
wb = new HSSFWorkbook(fs);
// 获得sheet工作簿
HSSFSheet sheet = wb.getSheetAt(_sheetIndex);

// 获得行
HSSFRow row = sheet.getRow(_rowIndex);

// 小计
double sum = 0.0;
// 获得行中的列,即单元格
for (int j = 1; j < 5; j++) {
HSSFCell cell = row.getCell(j);

// 设置单元格的数据格式为数字
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
String cellvalue = "0";

// 第一个单元格(dow)
if (j == 1) {
for (TotalOperations totaloper : totaloperlst) {
if ("dow".equals(totaloper.getAccount())) {
cellvalue = totaloper.getTotalOperations();
sum += Double.parseDouble(cellvalue);
break;
}
}
// 第二个单元格(millercoors)
} else if (j == 2) {
for (TotalOperations totaloper : totaloperlst) {
if ("millercoors".equals(totaloper.getAccount())) {
cellvalue = totaloper.getTotalOperations();
sum += Double.parseDouble(cellvalue);
break;
}
}
// 第三个单元格(bcbama)
} else if (j == 3) {
for (TotalOperations totaloper : totaloperlst) {
if ("bcbsma".equals(totaloper.getAccount())) {
cellvalue = totaloper.getTotalOperations();
sum += Double.parseDouble(cellvalue);
break;
}
}
// 第四个单元格(总计)
} else if (j == 4) {
cellvalue = String.valueOf(sum);
}
// 设置该当单元格的数值
cell.setCellValue(Double.parseDouble(cellvalue));
}

// 将信息输出到工作薄
FileOutputStream fos = new FileOutputStream(this.filePath);
wb.write(fos);

if (_sheetIndex == 0) {
System.out.println(name + " write successful!");
this.resultMessage.append(name).append(" write successful!")
.append("\n");
}

fis.close();
fos.close();

fis = null;
fos = null;

}

/***************************************************************************
* 输出各个用户的各自的各个响应时间段里操作的数量
*
* @param totaloperlst
* 操作数量的列表
* @param _rowIndex
* 行索引
* @param timeQuantum
* 当前统计时间段名
* @exception Exception
* 异常
**************************************************************************/
public void writeResponseTimePieChart(List<TotalOperations> totaloperlst,
int _rowIndex, String timeQuantum) throws Exception {
// DB里没有数据的场合,直接返回
if (totaloperlst == null || totaloperlst.size() == 0) {
return;
}
// 申明文件输入流对象,读取报表文件
FileInputStream fis = new FileInputStream(this.filePath);

// Excel工作薄
HSSFWorkbook wb = null;

// POI的文件系统
POIFSFileSystem fs = null;

// 设置要读取的文件路径
fs = new POIFSFileSystem(fis);
// HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls)
// 之后版本使用XSSFWorkbook(xlsx)
wb = new HSSFWorkbook(fs);
// 获得sheet工作簿
HSSFSheet sheet = wb.getSheetAt(6);

// 获得行
HSSFRow row = sheet.getRow(_rowIndex);

for (int i = 1; i < 4; i++) {
HSSFCell cell = row.getCell(i);

// 设置单元格的数据格式为数字
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
String cellvalue = "0";

// 第一个单元格(dow)
if (i == 1) {
for (TotalOperations totaloper : totaloperlst) {
if ("dow".equals(totaloper.getAccount())) {
cellvalue = totaloper.getTotalOperations();
break;
}
}
// 第二个单元格(millercoors)
} else if (i == 2) {
for (TotalOperations totaloper : totaloperlst) {
if ("millercoors".equals(totaloper.getAccount())) {
cellvalue = totaloper.getTotalOperations();
break;
}
}
// 第三个单元格(bcbama)
} else if (i == 3) {
for (TotalOperations totaloper : totaloperlst) {
if ("bcbsma".equals(totaloper.getAccount())) {
cellvalue = totaloper.getTotalOperations();
break;
}
}

}
// 设置该当单元格的数值
cell.setCellValue(Double.parseDouble(cellvalue));
}

// 将信息输出到工作薄
FileOutputStream fos = new FileOutputStream(this.filePath);
wb.write(fos);

System.out.println(timeQuantum + " write successful!");
this.resultMessage.append(timeQuantum).append(" write successful!")
.append("\n");

fis.close();
fos.close();

fis = null;
fos = null;
}

/***************************************************************************
* 输出按天统计的开票操作和总操作的数量
*
* @param totaloperlst
* 操作数量的列表
* @param _cloumnIndex
* 列索引
* @param name
* 当前统计的操作名
* @exception Exception
* 异常
**************************************************************************/
public void writeDailySummary(List<OperationsDaily> totaloperlst,
int _columnIndex, String name) throws Exception {
// DB里没有数据的场合,直接返回
if (totaloperlst == null || totaloperlst.size() == 0) {
return;
}
// 申明文件输入流对象,读取报表文件
FileInputStream fis = new FileInputStream(this.filePath);

// Excel工作薄
HSSFWorkbook wb = null;

// POI的文件系统
POIFSFileSystem fs = null;

// 设置要读取的文件路径
fs = new POIFSFileSystem(fis);
// HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls)
// 之后版本使用XSSFWorkbook(xlsx)
wb = new HSSFWorkbook(fs);
// 获得sheet工作簿
HSSFSheet sheet = wb.getSheetAt(4);

for (int i = 1; i < 32; i++) {
// 获得行
HSSFRow row = sheet.getRow(i);
// 获取单元格
HSSFCell cell = row.getCell(_columnIndex);
// 设置单元格的数据格式为数字
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
String cellvalue = "0";

// 得到日操作数量
cellvalue = getDailyOperations(i, totaloperlst);

// 设置该当单元格的数值
cell.setCellValue(Double.parseDouble(cellvalue));
}

// 将信息输出到工作薄
FileOutputStream fos = new FileOutputStream(this.filePath);
wb.write(fos);

System.out.println(name + " write successful!");
this.resultMessage.append(name).append(" write successful!")
.append("\n");

fis.close();
fos.close();

fis = null;
fos = null;
}

/***************************************************************************
* 输出按天统计的各个帐号开票操作和总操作的数量
*
* @param totaloperlst
* 操作数量的列表
* @param _cloumnIndex
* 列索引数组
* @param name
* 当前统计各个帐号操作名
* @exception Exception
* 异常
**************************************************************************/
public void writeDailySummary(List<OperationsDailyByAccount> totaloperlst,
int[] _columnIndexs, String name) throws Exception {
// DB里没有数据的场合,直接返回
if (totaloperlst == null || totaloperlst.size() == 0) {
return;
}
// 申明文件输入流对象,读取报表文件
FileInputStream fis = new FileInputStream(this.filePath);

// Excel工作薄
HSSFWorkbook wb = null;

// POI的文件系统
POIFSFileSystem fs = null;

// 设置要读取的文件路径
fs = new POIFSFileSystem(fis);
// HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls)
// 之后版本使用XSSFWorkbook(xlsx)
wb = new HSSFWorkbook(fs);
// 获得sheet工作簿
HSSFSheet sheet = wb.getSheetAt(4);

// 统计每个月每天的操作数
for (int i = 1; i < 32; i++) {
// 获得行
HSSFRow row = sheet.getRow(i);

// 获取单元格
for (int column : _columnIndexs) {
HSSFCell cell = row.getCell(column);

// 设置单元格的数据格式为数字
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
String cellvalue = "0";

// 得到日操作数量
// dow的场合
if (column == 5 || column == 6 || column == 7 || column == 8) {
cellvalue = getDailyOperations(i, "dow", totaloperlst);

// millercoors的场合
} else if (column == 9 || column == 10 || column == 11
|| column == 12) {
cellvalue = getDailyOperations(i, "millercoors",
totaloperlst);

// bcbsma的场合
} else if (column == 13 || column == 14 || column == 15
|| column == 16) {
cellvalue = getDailyOperations(i, "bcbsma", totaloperlst);
}

// 设置该当单元格的数值
cell.setCellValue(Double.parseDouble(cellvalue));
}

}

// 将信息输出到工作薄
FileOutputStream fos = new FileOutputStream(this.filePath);
wb.write(fos);

System.out.println(name + " write successful!");
this.resultMessage.append(name).append(" write successful!")
.append("\n");

fis.close();
fos.close();

fis = null;
fos = null;
}

/***************************************************************************
* 输出帐号开票操作响应时间
*
* @param totaloperlst
* 指定帐号操作响应时间的列表
* @param account
* 当前统计各个帐号操作名
* @exception Exception
* 异常
**************************************************************************/
public void writeResponseTime(
List<OpenTicketRespTimeByAccount> totaloperlst, String account)
throws Exception {
// DB里没有数据的场合,直接返回
if (totaloperlst == null || totaloperlst.size() == 0) {
return;
}

// 申明文件输入流对象,读取报表文件
FileInputStream fis = new FileInputStream(this.filePath);

// Excel工作薄
HSSFWorkbook wb = null;

// POI的文件系统
POIFSFileSystem fs = null;

// 设置要读取的文件路径
fs = new POIFSFileSystem(fis);
// HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls)
// 之后版本使用XSSFWorkbook(xlsx)
wb = new HSSFWorkbook(fs);
// 获得sheet工作簿
HSSFSheet sheet = wb.getSheetAt(5);

// 定义总记录数
int records = 0;

records = totaloperlst.size();

for (int i = 4; i < (records + 4); i++) {
OpenTicketRespTimeByAccount openRespTimeByAccount = totaloperlst
.get(i - 4);

// 获得行
HSSFRow row = sheet.getRow(i);

HSSFCell ticketNoCell = null;
HSSFCell respTimeCell = null;

// 获取单元格
if ("bcbsma".equals(account)) {
ticketNoCell = row.getCell(0);
respTimeCell = row.getCell(1);
} else if ("dow".equals(account)) {
ticketNoCell = row.getCell(3);
respTimeCell = row.getCell(4);
} else if ("millercoors".equals(account)) {
ticketNoCell = row.getCell(6);
respTimeCell = row.getCell(7);
}

// 设置单元格的数据格式为数字
ticketNoCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
respTimeCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);

ticketNoCell.setCellValue(openRespTimeByAccount.getTicketNo());
respTimeCell.setCellValue(Double.parseDouble(openRespTimeByAccount
.getResponseTime()));
}

// 将信息输出到工作薄
FileOutputStream fos = new FileOutputStream(this.filePath);
wb.write(fos);

System.out.println(account
+ " open ticket response time write successful!");
this.resultMessage.append(account)
.append(" open ticket response time write successful!")
.append("\n");

fis.close();
fos.close();

fis = null;
fos = null;

}

/***************************************************************************
* 设定客户端窗口的可视性
*
* @param key
* 框口可视的开关字符(ON:可视, OFF:不可视)
**************************************************************************/
public void setVisible(String key) {
if ("ON".equals(key)) {
this.setVisible(true);
} else if ("OFF".equals(key)) {
this.setVisible(false);
}
}

/***************************************************************************
* 得到指定日的操作数量
*
* @param dateNum
* 日期数字
* @param totaloperlst
* 操作数量对象列表
* @return 日操作数
**************************************************************************/
private String getDailyOperations(int dateNum,
List<OperationsDaily> totaloperlst) {
String retDailyOpsStr = "0";

String dateNumStr = String.valueOf(dateNum);

if (dateNumStr.length() == 1) {
dateNumStr = "0" + dateNumStr;
}

if (totaloperlst == null || totaloperlst.size() == 0) {
return retDailyOpsStr;
}

for (OperationsDaily opdaily : totaloperlst) {
String dateStr = opdaily.getDayofmonth().substring(8);
if (dateStr.equals(dateNumStr)) {
retDailyOpsStr = opdaily.getTotalOperations();
break;
}
}
return retDailyOpsStr;
}

/***************************************************************************
* 得到指定日的操作数量
*
* @param dateNum
* 日期数字
* @param account
* 帐号名称
* @param totaloperlst
* 操作数量对象列表
* @return 日操作数
**************************************************************************/
private String getDailyOperations(int dateNum, String account,
List<OperationsDailyByAccount> totaloperlst) {
String retDailyOpsStr = "0";

String dateNumStr = String.valueOf(dateNum);

if (dateNumStr.length() == 1) {
dateNumStr = "0" + dateNumStr;
}

if (account == null || "".equals(account)) {
return "";
}

if (totaloperlst == null || totaloperlst.size() == 0) {
return retDailyOpsStr;
}

for (OperationsDailyByAccount opDailyAccount : totaloperlst) {
String dateStr = opDailyAccount.getDayofmonth().substring(8);
if (dateStr.equals(dateNumStr)
&& account.equals(opDailyAccount.getAccount())) {
retDailyOpsStr = opDailyAccount.getTotalOperations();
break;
}
}
return retDailyOpsStr;
}

/***************************************************************************
* 根据给定帐号,得出相应的开票响应时间情报列表
*
* @param totaloperlst
* 总开票响应时间情报列表
* @param account
* 帐号名
* @return 相应的开票响应时间情报列表
**************************************************************************/
public List<OpenTicketRespTimeByAccount> getOpenRespTimeListPerAccount(
List<OpenTicketRespTimeByAccount> totaloperlst, String account) {
List<OpenTicketRespTimeByAccount> openResTimLst = new ArrayList<OpenTicketRespTimeByAccount>();

for (OpenTicketRespTimeByAccount openRespTim : totaloperlst) {
if (account.equals(openRespTim.getAccount())) {
openResTimLst.add(openRespTim);
}
}

return openResTimLst;
}

/***************************************************************************
* 客户端入口
*
* @param args
**************************************************************************/
public static void main(String[] args) {
new GenReportClient(args[0], args[1])
.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

package com.ibm.report.client;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/******************************************************************************
* 显示报表处理状态中用的窗体
*
* @author 杨康
* @version 1.0<BR/>
* <BR/>
* 作成 : 2013/05/15
******************************************************************************/
public class ProcessStatusClient extends JFrame {

/** serialVersionUID */
private static final long serialVersionUID = -3634410219839238173L;

/** 标签:后台执行指示器 */
private JLabel labelMessage = new JLabel("process finished!");

/** 面板 */
private JPanel panel = new JPanel();

/** 网格袋布局器 */
private GridBagLayout gl = new GridBagLayout();

/** 网格袋布局约束 */
private GridBagConstraints gbc = new GridBagConstraints();

/** 处理完成标志 */
private boolean hasFinished = false;

/***************************************************************************
* 设定处理完成标志
*
* @param isfinish
* 完成情况
**************************************************************************/
public void setHasFinished(boolean isfinish) {
this.hasFinished = isfinish;
}

/***************************************************************************
* 设定后台执行指示器
*
* @param msg
* 信息字符串
**************************************************************************/
public void setLabelMessage(String msg) {
this.labelMessage.setText(msg);
}

/***************************************************************************
*
**************************************************************************/
public ProcessStatusClient() {
/** 显示动画的线程 */
Thread animationThread = new Thread(new Animation(labelMessage));

this.panel.setLayout(gl);
this.getContentPane().add(this.panel);

// 为该Frame添加控件
this.gbc.anchor = GridBagConstraints.NORTHWEST;
this.gbc.gridx = 1;
this.gbc.gridy = 5;
this.gl.setConstraints(this.labelMessage, this.gbc);
this.panel.add(this.labelMessage);

// 设置框口属性

this.setSize(400, 300);
this.setTitle("Processing...");
this.setVisible(true);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

animationThread.start();

}

/******************************************************************************
* 实现动画显示的类
*
* @author 杨康
* @version 1.0<BR/>
* <BR/>
* 作成 : 2013/05/15
******************************************************************************/
public class Animation implements Runnable {

/** 动画显示内容 */
private String[] animationContents = { "processing", "processing->",
"processing->->", "processing->->->", "processing->->->->",
"processing->->->->->", "processing->->->->->->",
"processing->->->->->->->" };

/** 指示变量 */
private int counter = 0;

/** 指示标签 */
private JLabel label;

public Animation(JLabel label) {
this.label = label;
}

/***************************************************************************
* 线程体:每隔1秒,显示相应的消息给用户
**************************************************************************/
@Override
public void run() {
while (!hasFinished) {
displayContents(label);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
label.setText("Thread interrupted");
}
}

}

/***************************************************************************
* 动态显示消息标签和窗体标题信息
*
* @param label
* 消息标签
**************************************************************************/
public void displayContents(JLabel label) {
// 设置消息标签的显示值
label.setText(animationContents[counter]);
// 设置窗口标题
setTitle(animationContents[counter]);
counter++;
if (counter >= 8) {
counter = 0;
}
}

}
}

业务逻辑层接口代码:
package com.ibm.report.blogic;

import java.util.List;

import com.ibm.report.dto.OpenTicketRespTimeByAccount;
import com.ibm.report.dto.OperationsDaily;
import com.ibm.report.dto.OperationsDailyByAccount;
import com.ibm.report.dto.TotalOperations;

/******************************************************************************
* 报表产生的业务逻辑接口
*
* @author 杨康
* @version 1.0<BR/>
* <BR/>
* 作成 : 2013/05/15
******************************************************************************/
public interface ReportBusinessLogic {

/***************************************************************************
* 得到所有帐号的所有操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 总操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的总开票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 总开票操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalOpenOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的开票失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 开票失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedOpenOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的更新票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 更新票操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalUpdateOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的更新票操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 更新票操作失败数量的列表
**************************************************************************/
public List<TotalOperations> getFailedUpdateOperations(
String startDatetime, String endDatetime);

/***************************************************************************
* 得到所有帐号的添加附件的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 添加附件操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalAttachmentOperations(
String startDatetime, String endDatetime);

/***************************************************************************
* 得到所有帐号的添加附件失敗的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 添加附件操作失敗数量的列表
**************************************************************************/
public List<TotalOperations> getFailedAttachmentOperations(
String startDatetime, String endDatetime);

/***************************************************************************
* 得到所有帐号的取票一览操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 取票一览操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalListOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的取票一览失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 取票一览失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedListOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的查看票详细操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 查看票详细操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalViewOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的查看票详细失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 查看票详细失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedViewOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的再次打开票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 再次打开票操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalReopenOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的再次打开票操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 再次打开票操作失败数量的列表
**************************************************************************/
public List<TotalOperations> getFailedReopenOperations(
String startDatetime, String endDatetime);

/***************************************************************************
* 得到所有帐号的关票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 关票操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalCloseOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的关票操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 关票操作失败数量的列表
**************************************************************************/
public List<TotalOperations> getFailedCloseOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的聊天操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 聊天操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalChatOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 得到所有帐号的聊天操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 聊天操作数量失败的列表
**************************************************************************/
public List<TotalOperations> getFailedChatOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 按天统计总操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计总操作数量的列表
**************************************************************************/
public List<OperationsDaily> getTotalDailyOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 按天统计失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计失败操作数量的列表
**************************************************************************/
public List<OperationsDaily> getFailedDailyOperations(String startDatetime,
String endDatetime);

/***************************************************************************
* 按天统计总开票操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计总开票操作数量的列表
**************************************************************************/
public List<OperationsDaily> getTotalDailyOpen(String startDatetime,
String endDatetime);

/***************************************************************************
* 按天统计开票失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计开票失败操作数量的列表
**************************************************************************/
public List<OperationsDaily> getFailedDailyOpen(String startDatetime,
String endDatetime);

/***************************************************************************
* 按天统计每个帐号总操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号总操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getTotalDailyByAccountOperations(
String startDatetime, String endDatetime);

/***************************************************************************
* 按天统计每个帐号失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号失败操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getFailedDailyByAccountOperations(
String startDatetime, String endDatetime);

/***************************************************************************
* 按天统计每个帐号开票操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号开票操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getTotalDailyByAccountOpen(
String startDatetime, String endDatetime);

/***************************************************************************
* 按天统计每个帐号开票失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号开票失败操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getFailedDailyByAccountOpen(
String startDatetime, String endDatetime);

/***************************************************************************
* 统计各个帐号开票操作响应时间
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间的列表
**************************************************************************/
public List<OpenTicketRespTimeByAccount> getOpenTicketRespTime(
String startDatetime, String endDatetime);

/***************************************************************************
* 统计各个帐号开票操作响应时间小于等于5秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间小于等于5秒操作数的列表
**************************************************************************/
public List<TotalOperations> getLessEqual5SecOpers(String startDatetime,
String endDatetime);

/***************************************************************************
* 统计各个帐号开票操作响应时间大于5秒小于等于15秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间大于5秒小于等于15秒操作数的列表
**************************************************************************/
public List<TotalOperations> getLarger5SecAndLessEqual15SecOpers(
String startDatetime, String endDatetime);

/***************************************************************************
* 统计各个帐号开票操作响应时间大于15秒小于等于30秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间大于15秒小于等于30秒操作数的列表
**************************************************************************/
public List<TotalOperations> getLarger15SecAndLessEqual30SecOpers(
String startDatetime, String endDatetime);

/***************************************************************************
* 统计各个帐号开票操作响应时间大于30秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间大于30秒操作数的列表
**************************************************************************/
public List<TotalOperations> getLarger30SecOpers(String startDatetime,
String endDatetime);
}


业务逻辑层接口实现类代码:
package com.ibm.report.blogic;

import java.util.List;

import com.ibm.report.dao.ReportDBAccess;
import com.ibm.report.dao.ReportDBAccessImpl;
import com.ibm.report.dto.InputParam;
import com.ibm.report.dto.OpenTicketRespTimeByAccount;
import com.ibm.report.dto.OperationsDaily;
import com.ibm.report.dto.OperationsDailyByAccount;
import com.ibm.report.dto.TotalOperations;

/******************************************************************************
* 报表产生的业务逻辑接口的实装类
*
* @author 杨康
* @version 1.0<BR/>
* <BR/>
* 作成 : 2013/05/15
******************************************************************************/
public class ReportBusinessLogicImpl implements ReportBusinessLogic {

/** 定义获取所有帐号各种类型操作和总操作数量的接口 */
private ReportDBAccess dbaccess = new ReportDBAccessImpl();

/***************************************************************************
* 得到所有帐号的所有操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 总操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到总操作数量的列表数据
return dbaccess.getTotalOperations(input);
}

/***************************************************************************
* 得到所有帐号的失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 失败操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到失败操作数量的列表数据
return dbaccess.getFailedOperations(input);
}

/***************************************************************************
* 得到所有帐号的总开票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 总开票操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalOpenOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到总开票操作数量的列表数据
return dbaccess.getTotalOpenOperations(input);
}

/***************************************************************************
* 得到所有帐号的开票失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 开票失败操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedOpenOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到总开票操作数量的列表数据
return dbaccess.getFailedOpenOperations(input);
}

/***************************************************************************
* 得到所有帐号的更新票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 更新票操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalUpdateOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到更新票操作数量的列表数据
return dbaccess.getTotalUpdateOperations(input);
}

/***************************************************************************
* 得到所有帐号的更新票操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 更新票操作失败数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedUpdateOperations(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到更新票操作失败数量的列表数据
return dbaccess.getFailedUpdateOperations(input);
}

/***************************************************************************
* 得到所有帐号的添加附件的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 添加附件操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalAttachmentOperations(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到添加附件操作数量的列表数据
return dbaccess.getTotalAttachmentOperations(input);
}

/***************************************************************************
* 得到所有帐号的添加附件失敗的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 添加附件操作失敗数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedAttachmentOperations(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到添加附件失败操作数量的列表数据
return dbaccess.getFailedAttachmentOperations(input);
}

/***************************************************************************
* 得到所有帐号的取票一览操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 取票一览操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalListOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到取票一览操作数量的列表数据
return dbaccess.getTotalListOperations(input);
}

/***************************************************************************
* 得到所有帐号的取票一览失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 取票一览失败操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedListOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到取票一览失败操作数量的列表数据
return dbaccess.getFailedListOperations(input);
}

/***************************************************************************
* 得到所有帐号的查看票详细操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 查看票详细操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalViewOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到查看票详细情报操作数量的列表数据
return dbaccess.getTotalViewOperations(input);
}

/***************************************************************************
* 得到所有帐号的查看票详细失败操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 查看票详细失败操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedViewOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到查看票详细情报失败操作数量的列表数据
return dbaccess.getFailedViewOperations(input);
}

/***************************************************************************
* 得到所有帐号的再次打开票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 再次打开票操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalReopenOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到再次打开票操作数量的列表数据
return dbaccess.getTotalReopenOperations(input);
}

/***************************************************************************
* 得到所有帐号的再次打开票操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 再次打开票操作失败数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedReopenOperations(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到再次打开票失败操作数量的列表数据
return dbaccess.getFailedReopenOperations(input);
}

/***************************************************************************
* 得到所有帐号的关票操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 关票操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalCloseOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到关票操作数量的列表数据
return dbaccess.getTotalCloseOperations(input);
}

/***************************************************************************
* 得到所有帐号的关票操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 关票操作失败数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedCloseOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到关票操作失败数量的列表数据
return dbaccess.getFailedCloseOperations(input);
}

/***************************************************************************
* 得到所有帐号的聊天操作的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 聊天操作数量的列表
**************************************************************************/
@Override
public List<TotalOperations> getTotalChatOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到聊天操作数量的列表数据
return dbaccess.getTotalChatScriptOperations(input);
}

/***************************************************************************
* 得到所有帐号的聊天操作失败的数量情报
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 聊天操作数量失败的列表
**************************************************************************/
@Override
public List<TotalOperations> getFailedChatOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到聊天操作失败数量的列表数据
return dbaccess.getFailedChatScriptOperations(input);
}

/***************************************************************************
* 按天统计总操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计总操作数量的列表
**************************************************************************/
@Override
public List<OperationsDaily> getTotalDailyOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天统计总操作数量的列表
return dbaccess.getTotalDailyOperations(input);
}

/***************************************************************************
* 按天统计失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计失败操作数量的列表
**************************************************************************/
@Override
public List<OperationsDaily> getFailedDailyOperations(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天统计失败操作数量的列表
return dbaccess.getFailedDailyOperations(input);
}

/***************************************************************************
* 按天统计总开票操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计总开票操作数量的列表
**************************************************************************/
@Override
public List<OperationsDaily> getTotalDailyOpen(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天统计开票操作数量的列表
return dbaccess.getTotalDailyOpen(input);
}

/***************************************************************************
* 按天统计开票失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计开票失败操作数量的列表
**************************************************************************/
@Override
public List<OperationsDaily> getFailedDailyOpen(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天统计开票失败操作数量的列表
return dbaccess.getFailedDailyOpen(input);
}

/***************************************************************************
* 按天统计每个帐号总操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号总操作数量的列表
**************************************************************************/
@Override
public List<OperationsDailyByAccount> getTotalDailyByAccountOperations(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天每个统计总操作数量的列表
return dbaccess.getTotalDailyByAccountOperations(input);
}

/***************************************************************************
* 按天统计每个帐号失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号失败操作数量的列表
**************************************************************************/
@Override
public List<OperationsDailyByAccount> getFailedDailyByAccountOperations(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天每个帐户统计失败操作数量的列表
return dbaccess.getFailedDailyByAccountOperations(input);
}

/***************************************************************************
* 按天统计每个帐号开票操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号开票操作数量的列表
**************************************************************************/
@Override
public List<OperationsDailyByAccount> getTotalDailyByAccountOpen(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天每个帐户统计开票操作数量的列表
return dbaccess.getTotalDailyByAccountOpen(input);
}

/***************************************************************************
* 按天统计每个帐号开票失败操作数量
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 按天统计每个帐号开票失败操作数量的列表
**************************************************************************/
@Override
public List<OperationsDailyByAccount> getFailedDailyByAccountOpen(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到按天每个帐户统计开票失败操作数量的列表
return dbaccess.getFailedDailyByAccountOpen(input);
}

/***************************************************************************
* 统计各个帐号开票操作响应时间
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间的列表
**************************************************************************/
@Override
public List<OpenTicketRespTimeByAccount> getOpenTicketRespTime(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到各个帐号开票操作响应时间的列表
return dbaccess.getOpenResponseTime(input);
}

/***************************************************************************
* 统计各个帐号开票操作响应时间小于等于5秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间小于等于5秒操作数的列表
**************************************************************************/
@Override
public List<TotalOperations> getLessEqual5SecOpers(String startDatetime,
String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到各个帐号开票操作响应时间小于等于5秒操作数的列表
return dbaccess.getLessEqual5SecOpers(input);
}

/***************************************************************************
* 统计各个帐号开票操作响应时间大于5秒小于等于15秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间大于5秒小于等于15秒操作数的列表
**************************************************************************/
@Override
public List<TotalOperations> getLarger5SecAndLessEqual15SecOpers(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到各个帐号开票操作响应时间大于5秒小于等于15秒操作数的列表
return dbaccess.getLarger5SecAndLessEqual15SecOpers(input);
}

/***************************************************************************
* 统计各个帐号开票操作响应时间大于15秒小于等于30秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间大于15秒小于等于30秒操作数的列表
**************************************************************************/
@Override
public List<TotalOperations> getLarger15SecAndLessEqual30SecOpers(
String startDatetime, String endDatetime) {
// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到各个帐号开票操作响应时间大于15秒小于等于30秒操作数的列表
return dbaccess.getLarger15SecAndLessEqual30SecOpers(input);
}

/***************************************************************************
* 统计各个帐号开票操作响应时间大于30秒的操作数
*
* @param startDatetime
* 报表统计开始日
* @param endDatetime
* 报表统计终了日
* @return 统计各个帐号开票操作响应时间大于30秒操作数的列表
**************************************************************************/
@Override
public List<TotalOperations> getLarger30SecOpers(String startDatetime,
String endDatetime) {

// 用户输入参数对象
InputParam input = new InputParam();
input.setStartDatetime(startDatetime);
input.setEndDatetime(endDatetime);

// 调用数据访问层,得到各个帐号开票操作响应时间大于30秒操作数的列表
return dbaccess.getLarger30SecOpers(input);
}

}

数据访问层接口:
package com.ibm.report.dao;

import java.util.List;

import com.ibm.report.dto.InputParam;
import com.ibm.report.dto.OpenTicketRespTimeByAccount;
import com.ibm.report.dto.OperationsDaily;
import com.ibm.report.dto.OperationsDailyByAccount;
import com.ibm.report.dto.TotalOperations;

/******************************************************************************
* 获取所有帐号各种类型操作和总操作数量的接口
*
* @author 杨康
* @version 1.0<BR/>
* <BR/>
* 作成 : 2013/05/15
******************************************************************************/
public interface ReportDBAccess {

/***************************************************************************
* 获取各个Account的各自的总的操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的失败的操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的总开票的操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总开票操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalOpenOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的开票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedOpenOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的总更新票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总更新票操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalUpdateOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的更新票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 更新票失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedUpdateOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的添加附件操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 添加附件操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalAttachmentOperations(
InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的添加附件失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 添加附件失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedAttachmentOperations(
InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的取票一览操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 取票一览操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalListOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的取票一览失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 取票一览操作失败数量的列表
**************************************************************************/
public List<TotalOperations> getFailedListOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的察看票详细情报操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 察看票详细操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalViewOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的察看票详细情报失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 察看票详细失败操作数量的列表
**************************************************************************/
public List<TotalOperations> getFailedViewOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的票再次打开操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 票再次打开操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalReopenOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的票再次打开失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 票再次打开操作失败数量的列表
**************************************************************************/
public List<TotalOperations> getFailedReopenOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的关票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 关票操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalCloseOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的关票操作失败数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 关票操作失败数量的列表
**************************************************************************/
public List<TotalOperations> getFailedCloseOperations(InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的聊天操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 聊天操作数量的列表
**************************************************************************/
public List<TotalOperations> getTotalChatScriptOperations(
InputParam inputparam);

/***************************************************************************
* 获取各个Account的各自的聊天操作失败数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 聊天操作失败数量的列表
**************************************************************************/
public List<TotalOperations> getFailedChatScriptOperations(
InputParam inputparam);

/***************************************************************************
* 按天统计总操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计总操作数量的列表
**************************************************************************/
public List<OperationsDaily> getTotalDailyOperations(InputParam inputparam);

/***************************************************************************
* 按天统计失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计失败数量的列表
**************************************************************************/
public List<OperationsDaily> getFailedDailyOperations(InputParam inputparam);

/***************************************************************************
* 按天统计总开票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计总开票操作数量的列表
**************************************************************************/
public List<OperationsDaily> getTotalDailyOpen(InputParam inputparam);

/***************************************************************************
* 按天统计开票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计开票失败操作数量的列表
**************************************************************************/
public List<OperationsDaily> getFailedDailyOpen(InputParam inputparam);

/***************************************************************************
* 按天统计各个帐号的总操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的总操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getTotalDailyByAccountOperations(
InputParam inputparam);

/***************************************************************************
* 按天统计各个帐号的失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的失败操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getFailedDailyByAccountOperations(
InputParam inputparam);

/***************************************************************************
* 按天统计各个帐号的开票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的开票操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getTotalDailyByAccountOpen(
InputParam inputparam);

/***************************************************************************
* 按天统计各个帐号的开票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的开票失败操作数量的列表
**************************************************************************/
public List<OperationsDailyByAccount> getFailedDailyByAccountOpen(
InputParam inputparam);

/***************************************************************************
* 统计各个帐号开票操作响应时间
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 统计各个帐号开票操作响应时间的列表
**************************************************************************/
public List<OpenTicketRespTimeByAccount> getOpenResponseTime(
InputParam inputparam);

/***************************************************************************
* 统计各个帐号开票操作响应时间小于等于5秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间小于等于5秒操作数量的列表
**************************************************************************/
public List<TotalOperations> getLessEqual5SecOpers(InputParam inputparam);

/***************************************************************************
* 统计各个帐号开票操作响应时间大于5秒小于等于15秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间大于5秒小于等于15秒操作数量的列表
**************************************************************************/
public List<TotalOperations> getLarger5SecAndLessEqual15SecOpers(
InputParam inputparam);

/***************************************************************************
* 统计各个帐号开票操作响应时间大于15秒小于等于30秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间大于15秒小于等于30秒操作数量的列表
**************************************************************************/
public List<TotalOperations> getLarger15SecAndLessEqual30SecOpers(
InputParam inputparam);

/***************************************************************************
* 统计各个帐号开票操作响应时间大于30秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间大于30秒操作数量的列表
**************************************************************************/
public List<TotalOperations> getLarger30SecOpers(InputParam inputparam);
}

数据访问层接口的实现类:
package com.ibm.report.dao;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibm.report.dto.InputParam;
import com.ibm.report.dto.OpenTicketRespTimeByAccount;
import com.ibm.report.dto.OperationsDaily;
import com.ibm.report.dto.OperationsDailyByAccount;
import com.ibm.report.dto.TotalOperations;

/******************************************************************************
* 获取所有帐号各种类型操作和总操作数量的接口的实现类
*
* @author 杨康
* @version 1.0<BR/>
* <BR/>
* 作成 : 2013/05/15
******************************************************************************/
public class ReportDBAccessImpl implements ReportDBAccess {

/** ibatis的SQL映射客户端对象 */
private static SqlMapClient sqlMapClient = null;

/** 读取ibatis配置信息,并初始化SQL映射客户端对象 */
static {
try {
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");

sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);

reader.close();
System.out.println("database connection successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}

/***************************************************************************
* 获取各个Account的各自的总的操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalOperations(InputParam inputparam) {
List<TotalOperations> totalOperLst = null;
try {
totalOperLst = sqlMapClient.queryForList("total_operations",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalOperLst;
}

/***************************************************************************
* 获取各个Account的各自的失败的操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedOperations(InputParam inputparam) {
List<TotalOperations> failedOperLst = null;
try {
failedOperLst = sqlMapClient.queryForList("failed_operations",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedOperLst;
}

/***************************************************************************
* 获取各个Account的各自的总开票的操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总开票操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalOpenOperations(InputParam inputparam) {
List<TotalOperations> totalOpenLst = null;
try {
totalOpenLst = sqlMapClient.queryForList("total_open", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalOpenLst;
}

/***************************************************************************
* 获取各个Account的各自的开票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedOpenOperations(InputParam inputparam) {
List<TotalOperations> failedOpenLst = null;
try {
failedOpenLst = sqlMapClient
.queryForList("failed_open", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedOpenLst;
}

/***************************************************************************
* 获取各个Account的各自的总更新票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 总更新票操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalUpdateOperations(InputParam inputparam) {
List<TotalOperations> totalUpdateLst = null;
try {
totalUpdateLst = sqlMapClient.queryForList("total_update",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalUpdateLst;
}

/***************************************************************************
* 获取各个Account的各自的更新票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 更新票失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedUpdateOperations(InputParam inputparam) {
List<TotalOperations> failedUpdateLst = null;
try {
failedUpdateLst = sqlMapClient.queryForList("failed_update",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedUpdateLst;
}

/***************************************************************************
* 获取各个Account的各自的添加附件操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 添加附件操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalAttachmentOperations(
InputParam inputparam) {
List<TotalOperations> totalAttachmentLst = null;
try {
totalAttachmentLst = sqlMapClient.queryForList("total_attachment",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalAttachmentLst;
}

/***************************************************************************
* 获取各个Account的各自的添加附件失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 添加附件失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedAttachmentOperations(
InputParam inputparam) {
List<TotalOperations> failedAttachmentLst = null;
try {
failedAttachmentLst = sqlMapClient.queryForList(
"failed_attachment", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedAttachmentLst;
}

/***************************************************************************
* 获取各个Account的各自的取票一览操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 取票一览操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalListOperations(InputParam inputparam) {
List<TotalOperations> totalGetTicketLst = null;
try {
totalGetTicketLst = sqlMapClient.queryForList("total_list",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalGetTicketLst;
}

/***************************************************************************
* 获取各个Account的各自的取票一览失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 取票一览操作失败数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedListOperations(InputParam inputparam) {
List<TotalOperations> failedGetTicketLst = null;
try {
failedGetTicketLst = sqlMapClient.queryForList("failed_list",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedGetTicketLst;
}

/***************************************************************************
* 获取各个Account的各自的察看票详细情报操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 察看票详细操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalViewOperations(InputParam inputparam) {
List<TotalOperations> totalViewLst = null;
try {
totalViewLst = sqlMapClient.queryForList("total_view", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalViewLst;
}

/***************************************************************************
* 获取各个Account的各自的察看票详细情报失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 察看票详细失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedViewOperations(InputParam inputparam) {
List<TotalOperations> failedViewLst = null;
try {
failedViewLst = sqlMapClient
.queryForList("failed_view", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedViewLst;
}

/***************************************************************************
* 获取各个Account的各自的票再次打开操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 票再次打开操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalReopenOperations(InputParam inputparam) {
List<TotalOperations> totalReopenLst = null;
try {
totalReopenLst = sqlMapClient.queryForList("total_reopen",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalReopenLst;
}

/***************************************************************************
* 获取各个Account的各自的票再次打开失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 票再次打开操作失败数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedReopenOperations(InputParam inputparam) {
List<TotalOperations> failedReopenLst = null;
try {
failedReopenLst = sqlMapClient.queryForList("failed_reopen",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedReopenLst;
}

/***************************************************************************
* 获取各个Account的各自的关票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 关票操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalCloseOperations(InputParam inputparam) {
List<TotalOperations> totalCloseLst = null;
try {
totalCloseLst = sqlMapClient
.queryForList("total_close", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalCloseLst;
}

/***************************************************************************
* 获取各个Account的各自的关票操作失败数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 关票操作失败数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedCloseOperations(InputParam inputparam) {
List<TotalOperations> failedCloseLst = null;
try {
failedCloseLst = sqlMapClient.queryForList("failed_close",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedCloseLst;
}

/***************************************************************************
* 获取各个Account的各自的聊天操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 聊天操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getTotalChatScriptOperations(
InputParam inputparam) {
List<TotalOperations> totalchatLst = null;
try {
totalchatLst = sqlMapClient.queryForList("total_chat_script",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return totalchatLst;
}

/***************************************************************************
* 获取各个Account的各自的聊天操作失败数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 聊天操作失败数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getFailedChatScriptOperations(
InputParam inputparam) {
List<TotalOperations> failedchatLst = null;
try {
failedchatLst = sqlMapClient.queryForList("failed_chat_script",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return failedchatLst;
}

/***************************************************************************
* 按天统计总操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计总操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDaily> getTotalDailyOperations(InputParam inputparam) {
List<OperationsDaily> totalDailyOperLst = null;
try {
totalDailyOperLst = sqlMapClient.queryForList(
"total_operations_daily", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDaily>();
}
return totalDailyOperLst;
}

/***************************************************************************
* 按天统计失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计失败数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDaily> getFailedDailyOperations(InputParam inputparam) {
List<OperationsDaily> failedDailyOperLst = null;
try {
failedDailyOperLst = sqlMapClient.queryForList(
"failed_operations_daily", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDaily>();
}
return failedDailyOperLst;
}

/***************************************************************************
* 按天统计总开票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计总开票操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDaily> getTotalDailyOpen(InputParam inputparam) {
List<OperationsDaily> totalOpenDailyLst = null;
try {
totalOpenDailyLst = sqlMapClient.queryForList("total_open_daily",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDaily>();
}
return totalOpenDailyLst;
}

/***************************************************************************
* 按天统计开票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计开票失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDaily> getFailedDailyOpen(InputParam inputparam) {
List<OperationsDaily> failedOpenDailyLst = null;
try {
failedOpenDailyLst = sqlMapClient.queryForList("failed_open_daily",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDaily>();
}
return failedOpenDailyLst;
}

/***************************************************************************
* 按天统计各个帐号的总操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的总操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDailyByAccount> getTotalDailyByAccountOperations(
InputParam inputparam) {
List<OperationsDailyByAccount> totalDailyByAccOperLst = null;
try {
totalDailyByAccOperLst = sqlMapClient.queryForList(
"total_operations_daily_account", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDailyByAccount>();
}
return totalDailyByAccOperLst;
}

/***************************************************************************
* 按天统计各个帐号的失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDailyByAccount> getFailedDailyByAccountOperations(
InputParam inputparam) {
List<OperationsDailyByAccount> failedDailyByAccOperLst = null;
try {
failedDailyByAccOperLst = sqlMapClient.queryForList(
"failed_operations_daily_account", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDailyByAccount>();
}
return failedDailyByAccOperLst;
}

/***************************************************************************
* 按天统计各个帐号的开票操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的开票操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDailyByAccount> getTotalDailyByAccountOpen(
InputParam inputparam) {
List<OperationsDailyByAccount> totalDailyByAccOpenLst = null;
try {
totalDailyByAccOpenLst = sqlMapClient.queryForList(
"total_open_daily_account", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDailyByAccount>();
}
return totalDailyByAccOpenLst;
}

/***************************************************************************
* 按天统计各个帐号的开票失败操作数量
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 按天统计各个帐号的开票失败操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OperationsDailyByAccount> getFailedDailyByAccountOpen(
InputParam inputparam) {
List<OperationsDailyByAccount> failedDailyByAccOpenLst = null;
try {
failedDailyByAccOpenLst = sqlMapClient.queryForList(
"failed_open_daily_account", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OperationsDailyByAccount>();
}
return failedDailyByAccOpenLst;
}

/***************************************************************************
* 统计各个帐号开票操作响应时间
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 统计各个帐号开票操作响应时间的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<OpenTicketRespTimeByAccount> getOpenResponseTime(
InputParam inputparam) {
List<OpenTicketRespTimeByAccount> openRespTimeLst = null;
try {
openRespTimeLst = sqlMapClient.queryForList(
"response_time_for_open", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<OpenTicketRespTimeByAccount>();
}
return openRespTimeLst;
}

/***************************************************************************
* 统计各个帐号开票操作响应时间小于等于5秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间小于等于5秒操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getLessEqual5SecOpers(InputParam inputparam) {
List<TotalOperations> lessEqual5SecOperLst = null;
try {
lessEqual5SecOperLst = sqlMapClient.queryForList(
"less_equal_5_sec", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return lessEqual5SecOperLst;
}

/***************************************************************************
* 统计各个帐号开票操作响应时间大于5秒小于等于15秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间大于5秒小于等于15秒操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getLarger5SecAndLessEqual15SecOpers(
InputParam inputparam) {
List<TotalOperations> larger5lessEqual15SecOperLst = null;
try {
larger5lessEqual15SecOperLst = sqlMapClient.queryForList(
"larger_5_less_equal_15_sec", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return larger5lessEqual15SecOperLst;
}

/***************************************************************************
* 统计各个帐号开票操作响应时间大于15秒小于等于30秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间大于15秒小于等于30秒操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getLarger15SecAndLessEqual30SecOpers(
InputParam inputparam) {
List<TotalOperations> larger15lessEqual30SecOperLst = null;
try {
larger15lessEqual30SecOperLst = sqlMapClient.queryForList(
"larger_15_less_equal_30_sec", inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return larger15lessEqual30SecOperLst;
}

/***************************************************************************
* 统计各个帐号开票操作响应时间大于30秒的操作数
*
* @param inputparam
* 输入参数(统计的开始日和终了日)
* @return 开票操作响应时间大于30秒操作数量的列表
**************************************************************************/
@SuppressWarnings("unchecked")
@Override
public List<TotalOperations> getLarger30SecOpers(InputParam inputparam) {
List<TotalOperations> larger30SecOperLst = null;
try {
larger30SecOperLst = sqlMapClient.queryForList("larger_30_sec",
inputparam);
} catch (SQLException e) {
System.out.println("database query failure:" + e.getMessage());
return new ArrayList<TotalOperations>();
}
return larger30SecOperLst;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值