📄 incomecountaction.java
字号:
package control.incomecountaction;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import view.dialog.countmanage.InComeCountDialog;
import vo.CountVo;
import vo.OrderVo;
import vo.RefundmentVo;
import vo.VipChargeVo;
import vo.VipConsumeVo;
import vo.VipVo;
import common.LogWriter;
import control.common.CheckTimeUtil;
import dao.commomdao.CommonDao;
import dao.commomdao.impl.CommonDaoImpl;
import dao.common.DbException;
import dao.common.sql.DbSql;
import dao.export.ExportDao;
import dao.export.head.TableHead;
import dao.inandoutdao.ClothesInAndOutDao;
import dao.inandoutdao.impl.ClothesInAndOutDaoImpl;
import dao.incomecountdao.InComeCountDao;
import dao.incomecountdao.impl.InComeCountDaoImpl;
import dao.vipconsumedao.VipConsumeDao;
import dao.vipconsumedao.impl.VipConsumeDaoImpl;
public class InComeCountAction implements ActionListener {
private InComeCountDialog dialog;
private LogWriter log;
private ExportDao edao;
public InComeCountAction(InComeCountDialog dialog, LogWriter log) {
this.dialog = dialog;
this.log = log;
}
public void actionPerformed(ActionEvent e) {
String name = e.getActionCommand();
if (name.equals("分析")) {
String fromDate = dialog.buildFromDateBox().getSelectedItem()
.toString();
String toDate = dialog.buildToDateBox().getSelectedItem()
.toString();
if (CheckTimeUtil.CheckTime(fromDate, toDate)) {
buildTableData(fromDate, toDate);
} else {
JOptionPane.showMessageDialog(null, "查找的开始日期不能大于结束日期!");
}
} else if (name.equals("打印")) {
JTree tree = dialog.buildInComeTree();
// 获得选中的节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
// 获得选中的节点的字符串内容
if (tree.isSelectionEmpty()) {
JOptionPane.showMessageDialog(null, "请选择您要统计的方式");
} else {
String nodeStr = node.getUserObject().toString();
if (node.isLeaf()) {
if (nodeStr.equals("收入记录")) {
JTable table = dialog.buildInComeTable();
String headTitle = "收入记录";
String[] head = TableHead.INCOME;
edao = new ExportDao(dialog);
edao.export(table, headTitle, head);
} else if (nodeStr.equals("按日分析收入")) {
JTable table = dialog.buildAnalysByDayTable();
String headTitle = "按日分析收入";
String[] head = TableHead.BYDAY;
edao = new ExportDao(dialog);
edao.export(table, headTitle, head);
} else if (nodeStr.equals("按月分析收入")) {
JTable table = dialog.buildAnalysByMonthTable();
String headTitle = "按月分析收入";
String[] head = TableHead.BYMONTH;
edao = new ExportDao(dialog);
edao.export(table, headTitle, head);
} else if (nodeStr.equals("按年分析收入")) {
JTable table = dialog.buildAnalysByYearTable();
String headTitle = "按年分析收入";
String[] head = TableHead.BYYEAR;
edao = new ExportDao(dialog);
edao.export(table, headTitle, head);
} else if (nodeStr.equals("按洗衣类型分析收入")) {
JTable table = dialog.buildAnalysByTypeTable();
String headTitle = "按洗衣类型分析收入";
String[] head = TableHead.BYTYPE;
edao = new ExportDao(dialog);
edao.export(table, headTitle, head);
}
}
}
} else if (name.equals("退出")) {
dialog.dispose();
}
}
public void buildTableData(String fromDate, String toDate) {
InComeCountDao dao = new InComeCountDaoImpl(log);
JTree tree = dialog.buildInComeTree();
// 获得选中的节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
// 获得选中的节点的字符串内容
if (tree.isSelectionEmpty()) {
JOptionPane.showMessageDialog(null, "请选择您要统计的方式!");
} else {
String nodeStr = node.getUserObject().toString();
if (nodeStr.equals("收入记录")) {
JTable table = dialog.buildInComeTable();
try {
double vipChargeAmount = dao.getInComeCount(fromDate,
toDate, DbSql.GET_VIPCHARGEINCONE);
double unpayAmount = dao.getInComeCount(fromDate, toDate,
DbSql.GET_UNPAYCOUNT);
double vipConsumeAmount = dao.getInComeCount(fromDate,
toDate, DbSql.GET_VIPCONSUME_AMOUNT);
double ordinaryConsumeAmount = dao.getInComeCount(fromDate,
toDate, DbSql.GET_NONVIPCONSUME_AMOUNT);
double refundmentAmount = dao.getInComeCount(fromDate,
toDate, DbSql.GET_REFUNDMENT_AMOUNT);
double total = vipConsumeAmount + ordinaryConsumeAmount
- refundmentAmount;
String strTotal = new Double(total).toString();
if((total+"").indexOf(".") > 0){
strTotal = (total+"").substring(0,(total+"").indexOf(".")+2);
}
table.setValueAt("¥" + vipChargeAmount, 0, 1);
table.setValueAt("¥" + unpayAmount, 1, 1);
table.setValueAt("¥" + vipConsumeAmount, 2, 1);
table.setValueAt("¥" + ordinaryConsumeAmount, 3, 1);
table.setValueAt("¥" + refundmentAmount, 4, 1);
table.setValueAt("¥" + strTotal, 5, 1);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
JTable table = dialog.buildInComeTable();
int row = table.getSelectedRow();
String fromDate = dialog.buildFromDateBox()
.getSelectedItem().toString();
String toDate = dialog.buildToDateBox()
.getSelectedItem().toString();
String type = table.getValueAt(row, 0).toString();
String amount = table.getValueAt(row, 1).toString();
buildDetailTable(row, fromDate, toDate);
buildLablePanel(type, amount);
}
});
} catch (DbException e) {
JOptionPane.showMessageDialog(null, "收入记录表异常:"
+ e.getMessage());
}
} else if (nodeStr.equals("按日分析收入")) {
buildTypeCountTableData(fromDate, toDate, DbSql.COUNT_BY_DAY,
dialog.buildAnalysByDayTable());
} else if (nodeStr.equals("按月分析收入")) {
buildTypeCountTableData(fromDate, toDate, DbSql.COUNT_BY_MONTH,
dialog.buildAnalysByMonthTable());
} else if (nodeStr.equals("按年分析收入")) {
buildTypeCountTableData(fromDate, toDate, DbSql.COUNT_BY_YEAR,
dialog.buildAnalysByYearTable());
} else if (nodeStr.equals("按洗衣类型分析收入")) {
buildTypeCountTableData(fromDate, toDate, DbSql.COUNT_BY_TYPE,
dialog.buildAnalysByTypeTable());
}
}
}
public void buildDetailTable(int row, String fromDate, String toDate) {
if (row == 0) {
buildVipChargeTableData(fromDate, toDate);
} else if (row == 1) {
buildDetailTableData(fromDate, toDate, DbSql.GET_UNPAYIDS, dialog
.buildUnpayDetailTable());
} else if (row == 2) {
buildDetailTableData(fromDate, toDate, DbSql.GET_VIPCONSUMEIDS,
dialog.buildVipConsumeDetailTable());
} else if (row == 3) {
buildDetailTableData(fromDate, toDate,
DbSql.GET_NUNVIPCONSUMEORDERIDS, dialog
.buildCommonConsumeDetailTable());
} else if (row == 4) {
buildRefundmentTableData(fromDate, toDate);
} else if (row == 5) {
}
}
public void buildVipChargeTableData(String fromDate, String toDate) {
VipConsumeDao vipDao = new VipConsumeDaoImpl(log);
JTable table = dialog.buildVipInComeDetailTable();
try {
VipChargeVo chargeVo = null;
Vector v = null;
Iterator iter = null;
v = vipDao.findVipCharge(fromDate, toDate, "");
iter = v.iterator();
DefaultTableModel model = (DefaultTableModel) table.getModel();
int rows = table.getRowCount();
for (int i = rows - 1; i >= 0; i--) {
model.removeRow(i);
}
while (iter.hasNext()) {
chargeVo = (VipChargeVo) iter.next();
Object[] data = { chargeVo.getVipId(),
chargeVo.getChargeDate(), chargeVo.getChargeAmount(),
chargeVo.getReceiveAmount() };
model.addRow(data);
}
} catch (DbException e) {
JOptionPane.showMessageDialog(null, "会员充值表异常" + e.getMessage());
}
}
public void buildDetailTableData(String fromDate, String toDate,
String sql, JTable table) {
InComeCountDao dao = new InComeCountDaoImpl(log);
CommonDao cdao = new CommonDaoImpl(log);
long[] orderIds = null;
try {
orderIds = dao.getOrderIds(fromDate, toDate, sql);
DefaultTableModel model = (DefaultTableModel) table.getModel();
int rows = table.getRowCount();
for (int i = rows - 1; i >= 0; i--) {
model.removeRow(i);
}
for (int i = 0; i < orderIds.length; i++) {
OrderVo order = cdao.getOrderInfoByOrderId(orderIds[i]);
int vipId = order.getCustomerId();
String vipName = "无卡用户";
String vipPhone = "无";
if (vipId != 0) {
VipVo vipVo = cdao.getVipInfoByVipId(vipId);
vipName = vipVo.getVipName();
vipPhone = vipVo.getVipPhone();
}
Object[] data = { order.getOrderId(),
order.getGetClothesDate(), order.getTakeClothesDate(),
order.getOrderValue(), order.isPaidOrNot()?order.getOrderValue():0,
vipId, vipName, vipPhone,
order.isTakeOrNot() ? "已取走" : "未取走",
order.getOperatorName() };
model.addRow(data);
}
} catch (DbException e) {
JOptionPane.showMessageDialog(null, "衣服详细信息异常:" + e.getMessage());
}
}
public void buildRefundmentTableData(String fromDate, String toDate) {
ClothesInAndOutDao dao = new ClothesInAndOutDaoImpl(log);
JTable table = dialog.buildDamagedClothesDetailTable();
try {
RefundmentVo value = null;
Iterator iter = null;
Vector v = null;
v = dao.findRefundment(fromDate, toDate);
iter = v.iterator();
DefaultTableModel model = (DefaultTableModel) table.getModel();
int rows = table.getRowCount();
for (int i = rows - 1; i >= 0; i--) {
model.removeRow(i);
}
while (iter.hasNext()) {
value = (RefundmentVo) iter.next();
Object[] data = { value.getRefundDate(), value.getOrderId(),
value.getRefundAmount(), value.getRefundReason() + " ",
value.getOperatorName() };
model.addRow(data);
}
} catch (DbException e) {
JOptionPane.showMessageDialog(null, "赔偿衣物详细信息异常" + e.getMessage());
}
}
public void buildTypeCountTableData(String fromDate, String toDate,
String sql, JTable table) {
InComeCountDao dao = new InComeCountDaoImpl(log);
CountVo value = null;
DefaultTableModel model = (DefaultTableModel) table.getModel();
int rows = table.getRowCount();
for (int i = rows - 1; i >= 0; i--) {
model.removeRow(i);
}
try {
Vector v = dao.getIncomeCountByType(fromDate, toDate, sql);
Iterator iter = v.iterator();
while (iter.hasNext()) {
value = (CountVo) iter.next();
Object[] data = { value.getType(), value.getIncome() };
model.addRow(data);
}
} catch (DbException e) {
JOptionPane.showMessageDialog(null, "分类型统计异常:" + e.getMessage());
e.printStackTrace();
}
}
public void buildLablePanel(String type, String amount) {
JLabel label = dialog.buildLabel();
label.setText(type + "的详细信息, 金额:" + amount);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -