📄 reportformspanel.java
字号:
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 + -