?? 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("職務(wù)");
Iterator accountItemIt = dao.queryAccountItem().iterator();
while (accountItemIt.hasNext()) {
TbAccountItem accountItem = (TbAccountItem) accountItemIt.next();
tableColumnV.add(accountItem.getName());
}
tableColumnV.add("獎勵");
tableColumnV.add("懲罰");
tableColumnV.add("實發(fā)金額");
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();// 創(chuàng)建與檔案對象對應(yīng)的向量
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());// 添加職務(wù)
int salary = 0;// 初始實發(fā)金額為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("—");// 未設(shè)項目
}
}
}
}
// 填充未包含項目
for (; column < columnCount; column++) {
recordV.add("—");// 未設(shè)項目
}
// 計算獎懲項目
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;// 計算實發(fā)金額
else
// 懲罰
salary -= money;// 計算實發(fā)金額
} else {
recordV.add("—");// 沒有獎勵或懲罰
}
}
recordV.add(salary);
tableModel.addRow(recordV);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -