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

📄 reportformspanel.java

📁 &#61548 简单适用的考勤和奖惩管理。 &#61548 简单适用的培训管理。 &#61548 针对企业中不同的待遇标准
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
								reportForms(year + "-4-1", year + "-6-30");// 生成报表
							} else if (quarter.equals("第三")) {
								reportForms(year + "-7-1", year + "-9-30");// 生成报表
							} else {// 第四
								reportForms(year + "-10-1", year + "-12-31");// 生成报表
							}
						} else if (reportFormsType.equals("半年")) {// 生成半年报表
							String halfYear = halfYearComboBox
									.getSelectedItem().toString();// 获得报表时段
							if (halfYear.equals("上")) {
								reportForms(year + "-1-1", year + "-6-30");// 生成报表
							} else {// 下
								reportForms(year + "-7-1", year + "-12-31");// 生成报表
							}
						} else { // 生成年报表
							reportForms(year + "-1-1", year + "-12-31");// 生成报表
						}
						break;
					}
				}
			}
		});
		submitButton.setText("确定");
		buttonPanel.add(submitButton);

		final JScrollPane scrollPane = new JScrollPane();
		add(scrollPane, BorderLayout.CENTER);

		tableColumnV.add("序号");
		tableColumnV.add("档案编号");
		tableColumnV.add("姓名");
		tableColumnV.add("性别");
		tableColumnV.add("部门");
		tableColumnV.add("职务");
		Iterator accountItemIt = dao.queryAccountItem().iterator();
		while (accountItemIt.hasNext()) {
			TbAccountItem accountItem = (TbAccountItem) accountItemIt.next();
			tableColumnV.add(accountItem.getName());
		}
		tableColumnV.add("奖励");
		tableColumnV.add("惩罚");
		tableColumnV.add("实发金额");

		table = new MTable(tableModel);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		scrollPane.setViewportView(table);
		//
		halfYearComboBox.setEnabled(false);
		quarterComboBox.setEnabled(false);
		setComboBoxSelected();
	}

	public void setComboBoxSelected() {
		yearComboBox.setSelectedItem(Today.YEAR + "");
		int month = Today.MONTH;
		switch (month) {
		case 1:
		case 2:
		case 3:
			halfYearComboBox.setSelectedIndex(0);
			quarterComboBox.setSelectedIndex(0);
			break;
		case 4:
		case 5:
		case 6:
			halfYearComboBox.setSelectedIndex(0);
			quarterComboBox.setSelectedIndex(1);
			break;
		case 7:
		case 8:
		case 9:
			halfYearComboBox.setSelectedIndex(1);
			quarterComboBox.setSelectedIndex(2);
			break;
		case 10:
		case 11:
		case 12:
			halfYearComboBox.setSelectedIndex(1);
			quarterComboBox.setSelectedIndex(3);
			break;
		}
		monthComboBox.setSelectedItem(month + "");
	}

	public void reportForms(String reportStartDateStr, String reprotEndDateStr) {
		Iterator dutyInfoIt = dao.queryDutyInfoOfAccessionDateMax(
				reportStartDateStr).iterator();
		int num = 1;
		while (dutyInfoIt.hasNext()) {
			TbDutyInfo dutyInfo = (TbDutyInfo) dutyInfoIt.next();
			TbRecord record = (TbRecord) dutyInfo.getTbRecord();
			Vector recordV = new Vector();// 创建与档案对象对应的向量
			recordV.add(num++);// 添加序号
			recordV.add(record.getRecordNumber());// 添加档案编号
			recordV.add(record.getName());// 添加 姓名
			recordV.add(record.getSex());// 添加性别
			recordV.add(dutyInfo.getTbDept().getName());// 添加部门
			recordV.add(dutyInfo.getTbDuty().getName());// 添加职务
			int salary = 0;// 初始实发金额为0
			// 报表月份
			Date reportStartDate = null;
			Date reportEndDate = null;
			DateFormat df = DateFormat.getDateInstance();
			try {
				reportStartDate = df.parse(reportStartDateStr);
				reportEndDate = df.parse(reprotEndDateStr);
			} catch (ParseException e) {
				e.printStackTrace();
			}
			// 计算考勤项目
			int column = 6;
			int columnCount = table.getColumnCount() - 3;
			TbReckoningList reckoningList = record.getTbReckoningList();
			if (reckoningList != null) {
				TbReckoning reckoning = reckoningList.getTbReckoning();
				Iterator reckoningInfoIt = reckoning.getTbReckoningInfos()
						.iterator();
				while (reckoningInfoIt.hasNext()) {
					TbReckoningInfo reckoningInfo = (TbReckoningInfo) reckoningInfoIt
							.next();
					int money = reckoningInfo.getMoney();
					TbAccountItem accountItem = reckoningInfo
							.getTbAccountItem();
					String itemName = accountItem.getName();
					for (; column < columnCount;) {
						String columnName = table.getColumnName(column);
						column++;
						if (itemName.equals(columnName)) {
							if (accountItem.getType().toString().trim().equals(
									"扣除"))
								money = -money;
							if (accountItem.getIsTimecard().equals("是")) {// 考勤项目
								String filterHql = "where this.tbAccountItem.name='"
										+ columnName
										+ "' and ( ( startDate between to_date('"
										+ reportStartDateStr
										+ "','yyyy-mm-dd') and to_date('"
										+ reportStartDateStr
										+ "','yyyy-mm-dd') or endDate between to_date('"
										+ reportStartDateStr
										+ "','yyyy-mm-dd') and to_date('"
										+ reportStartDateStr
										+ "','yyyy-mm-dd') ) or ( to_date('"
										+ reportStartDateStr
										+ "','yyyy-mm-dd') between startDate and endDate and to_date('"
										+ reportStartDateStr
										+ "','yyyy-mm-dd') between startDate and endDate ) )";
								List list = dao
										.filterSet(record
												.getTbTimecardsForRecordId(),
												filterHql);
								int times = 0;
								for (Iterator iter = list.iterator(); iter
										.hasNext();) {
									TbTimecard timecard = (TbTimecard) iter
											.next();
									Date startDate = timecard.getStartDate();
									Date endDate = timecard.getEndDate();
									int ms = 1;
									int me = Integer.valueOf(reportEndDate
											.toString().substring(8, 10));
									int sd = Integer.valueOf(startDate
											.toString().substring(8, 10));
									int ed = Integer.valueOf(endDate.toString()
											.substring(8, 10));
									if (startDate.compareTo(reportStartDate) > 0) {
										if (endDate.compareTo(reportEndDate) > 0) {
											times += (me - sd + 1);
										} else {
											times += (ed - sd);
										}
									} else {
										if (endDate.compareTo(reportEndDate) > 0) {
											times += (me - ms);
										} else {
											times += (ed - ms);
										}
									}
									times += 1;
								}
								recordV.add(money + " x " + times);// 项目金额
								salary += (money * times);
							} else {// 非考勤项目
								recordV.add(money);// 项目金额
								salary += money;
							}
							break;
						} else {
							recordV.add("—");// 未设项目
						}
					}
				}
			}
			// 填充未包含项目
			for (; column < columnCount; column++) {
				recordV.add("—");// 未设项目
			}
			// 计算奖惩项目
			Set rewAndPuns = record.getTbRewardsAndPunishmentsForRecordId();
			String types[] = new String[] { "奖励", "惩罚" };
			for (int i = 0; i < types.length; i++) {
				String filterHql = "where this.type='"
						+ types[i]
						+ "' and ( ( startDate between to_date('"
						+ reportStartDateStr
						+ "','yyyy-mm-dd') and to_date('"
						+ reprotEndDateStr
						+ "','yyyy-mm-dd') or endDate between to_date('"
						+ reportStartDateStr
						+ "','yyyy-mm-dd') and to_date('"
						+ reprotEndDateStr
						+ "','yyyy-mm-dd') ) or ( to_date('"
						+ reportStartDateStr
						+ "','yyyy-mm-dd') between startDate and endDate and to_date('"
						+ reprotEndDateStr
						+ "','yyyy-mm-dd') between startDate and endDate ) )";
				System.out.println(filterHql);
				List list = dao.filterSet(rewAndPuns, filterHql);// 过滤奖惩记录
				if (list.size() > 0) {// 存在奖惩
					column += 1;// 列索引加1
					int money = 0;// 初始奖惩金额为0
					for (Iterator it = list.iterator(); it.hasNext();) {
						TbRewardsAndPunishment rewAndPun = (TbRewardsAndPunishment) it
								.next();
						money += rewAndPun.getMoney();// 累加奖惩金额
					}
					recordV.add(money);// 添加奖惩金额
					if (i == 0) // 奖励
						salary += money;// 计算实发金额
					else
						// 惩罚
						salary -= money;// 计算实发金额

				} else {
					recordV.add("—");// 没有奖励或惩罚
				}
			}
			recordV.add(salary);
			tableModel.addRow(recordV);
		}
	}

}

⌨️ 快捷键说明

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