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

📄 incomecountaction.java

📁 一个优秀的干洗店管理系统
💻 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 + -