Skip to content

Commit 676ceb2

Browse files
committed
[Feature] 薪水支付DataBase设计
1 parent d7e7296 commit 676ceb2

29 files changed

+384
-71
lines changed

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/PayrollService.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package com.coderising.myood.payroll.liuxin_payroll;
22

3-
import java.util.List;
3+
import com.coderising.myood.payroll.liuxin_payroll.classification.CommissionedClassification;
4+
import com.coderising.myood.payroll.liuxin_payroll.classification.HourlyClassification;
5+
import com.coderising.myood.payroll.liuxin_payroll.classification.SalariedClassification;
6+
import com.coderising.myood.payroll.liuxin_payroll.domain.Employee;
7+
import com.coderising.myood.payroll.liuxin_payroll.domain.HoldMethod;
8+
import com.coderising.myood.payroll.liuxin_payroll.domain.Paycheck;
9+
import com.coderising.myood.payroll.liuxin_payroll.schedule.BiweeklySchedule;
10+
import com.coderising.myood.payroll.liuxin_payroll.schedule.MonthlySchedule;
11+
import com.coderising.myood.payroll.liuxin_payroll.schedule.WeeklySchedule;
412

5-
import com.coderising.payroll.classification.CommissionedClassification;
6-
import com.coderising.payroll.classification.HourlyClassification;
7-
import com.coderising.payroll.classification.SalariedClassification;
8-
import com.coderising.payroll.domain.Employee;
9-
import com.coderising.payroll.domain.HoldMethod;
10-
import com.coderising.payroll.domain.Paycheck;
11-
import com.coderising.payroll.schedule.BiweeklySchedule;
12-
import com.coderising.payroll.schedule.MonthlySchedule;
13-
import com.coderising.payroll.schedule.WeeklySchedule;
13+
import java.util.List;
1414

1515
public class PayrollService {
1616
public List<Employee> getAllEmployees(){
@@ -22,26 +22,26 @@ public void savePaycheck(Paycheck pc){
2222

2323
public Employee addHourlyEmployee(String name, String address, double hourlyRate){
2424
Employee e = new Employee(name, address);
25-
e.setClassification(new HourlyClassification(hourlyRate));
26-
e.setSchedule(new WeeklySchedule());
25+
e.setClassification(new HourlyClassification(hourlyRate));
26+
e.setSchedule(new WeeklySchedule());
2727
e.setPaymentMethod(new HoldMethod());
2828
//保存员工到数据库.. 略
2929
return e;
3030
}
3131

3232
public Employee addSalariedEmployee(String name, String address, double salary){
3333
Employee e = new Employee(name, address);
34-
e.setClassification(new SalariedClassification(salary));
35-
e.setSchedule(new MonthlySchedule());
34+
e.setClassification(new SalariedClassification(salary));
35+
e.setSchedule(new MonthlySchedule());
3636
e.setPaymentMethod(new HoldMethod());
3737
//保存员工到数据库.. 略
3838
return e;
3939
}
4040

4141
public Employee addCommissionedEmployee(String name, String address, double salary, double saleRate){
4242
Employee e = new Employee(name, address);
43-
e.setClassification(new CommissionedClassification(salary, saleRate));
44-
e.setSchedule(new BiweeklySchedule());
43+
e.setClassification(new CommissionedClassification(salary, saleRate));
44+
e.setSchedule(new BiweeklySchedule());
4545
e.setPaymentMethod(new HoldMethod());
4646
//保存员工到数据库.. 略
4747
return e;

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/affiliation/NonAffiliation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.coderising.myood.payroll.liuxin_payroll.affiliation;
22

3-
import com.coderising.payroll.domain.Affiliation;
4-
import com.coderising.payroll.domain.Paycheck;
53

6-
public class NonAffiliation implements Affiliation{
4+
import com.coderising.myood.payroll.liuxin_payroll.domain.Affiliation;
5+
import com.coderising.myood.payroll.liuxin_payroll.domain.Paycheck;
6+
7+
public class NonAffiliation implements Affiliation {
78
public double calculateDeductions(Paycheck pc){
89
return 0.0;
910
}

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/affiliation/UnionAffiliation.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.coderising.myood.payroll.liuxin_payroll.affiliation;
22

3-
import com.coderising.payroll.domain.Affiliation;
4-
import com.coderising.payroll.domain.Paycheck;
3+
4+
import com.coderising.myood.payroll.liuxin_payroll.domain.Affiliation;
5+
import com.coderising.myood.payroll.liuxin_payroll.domain.Paycheck;
56

67
public class UnionAffiliation implements Affiliation {
78

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/classification/CommissionedClassification.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.coderising.myood.payroll.liuxin_payroll.classification;
22

3+
import com.coderising.myood.payroll.liuxin_payroll.domain.Paycheck;
4+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentClassification;
5+
import com.coderising.myood.payroll.liuxin_payroll.domain.SalesReceipt;
6+
import com.coderising.myood.payroll.liuxin_payroll.util.DateUtil;
7+
38
import java.util.Date;
49
import java.util.Map;
510

6-
import com.coderising.payroll.domain.Paycheck;
7-
import com.coderising.payroll.domain.PaymentClassification;
8-
import com.coderising.payroll.domain.SalesReceipt;
9-
import com.coderising.payroll.util.DateUtil;
1011

1112
public class CommissionedClassification implements PaymentClassification {
1213
double salary;
@@ -20,7 +21,7 @@ public CommissionedClassification(double salary , double rate){
2021
public double calculatePay(Paycheck pc) {
2122
double commission = 0.0;
2223
for(SalesReceipt sr : receipts.values()){
23-
if(DateUtil.between(sr.getSaleDate(), pc.getPayPeriodStartDate(),
24+
if(DateUtil.between(sr.getSaleDate(), pc.getPayPeriodStartDate(),
2425
pc.getPayPeriodEndDate())){
2526
commission += sr.getAmount() * rate;
2627
}

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/classification/HourlyClassification.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.coderising.myood.payroll.liuxin_payroll.classification;
22

3+
4+
import com.coderising.myood.payroll.liuxin_payroll.domain.Paycheck;
5+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentClassification;
6+
import com.coderising.myood.payroll.liuxin_payroll.domain.TimeCard;
7+
import com.coderising.myood.payroll.liuxin_payroll.util.DateUtil;
8+
39
import java.util.Date;
410
import java.util.Map;
511

6-
import com.coderising.payroll.domain.Paycheck;
7-
import com.coderising.payroll.domain.PaymentClassification;
8-
import com.coderising.payroll.domain.TimeCard;
9-
import com.coderising.payroll.util.DateUtil;
10-
1112
public class HourlyClassification implements PaymentClassification {
1213
private double rate;
1314
private Map<Date, TimeCard> timeCards;
@@ -22,7 +23,7 @@ public void addTimeCard(TimeCard tc){
2223
public double calculatePay(Paycheck pc) {
2324
double totalPay = 0;
2425
for(TimeCard tc : timeCards.values()){
25-
if(DateUtil.between(tc.getDate(), pc.getPayPeriodStartDate(),
26+
if(DateUtil.between(tc.getDate(), pc.getPayPeriodStartDate(),
2627
pc.getPayPeriodEndDate())){
2728
totalPay += calculatePayForTimeCard(tc);
2829
}

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/classification/SalariedClassification.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package com.coderising.myood.payroll.liuxin_payroll.classification;
22

3-
import com.coderising.payroll.domain.Paycheck;
4-
import com.coderising.payroll.domain.PaymentClassification;
3+
4+
import com.coderising.myood.payroll.liuxin_payroll.domain.Paycheck;
5+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentClassification;
56

67
public class SalariedClassification implements PaymentClassification {
78
private double salary;
89
public SalariedClassification(double salary){
910
this.salary = salary;
1011
}
1112
@Override
12-
public double calculatePay(Paycheck pc) {
13+
public double calculatePay(Paycheck pc) {
1314
return salary;
1415
}
1516

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/domain/PaydayTransaction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.coderising.myood.payroll.liuxin_payroll.domain;
22

3+
import com.coderising.myood.payroll.liuxin_payroll.PayrollService;
4+
35
import java.util.Date;
46
import java.util.List;
57

6-
import com.coderising.payroll.PayrollService;
78

89
public class PaydayTransaction {
910
private Date date;

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/schedule/BiweeklySchedule.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.coderising.myood.payroll.liuxin_payroll.schedule;
22

3+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentSchedule;
4+
import com.coderising.myood.payroll.liuxin_payroll.util.DateUtil;
5+
36
import java.text.SimpleDateFormat;
47
import java.util.Date;
58

6-
import com.coderising.payroll.domain.PaymentSchedule;
7-
import com.coderising.payroll.util.DateUtil;
89

910
public class BiweeklySchedule implements PaymentSchedule {
1011
Date firstPayableFriday = DateUtil.parseDate("2017-6-2");

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/schedule/MonthlySchedule.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.coderising.myood.payroll.liuxin_payroll.schedule;
22

3+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentSchedule;
4+
import com.coderising.myood.payroll.liuxin_payroll.util.DateUtil;
5+
36
import java.util.Date;
47

5-
import com.coderising.payroll.domain.PaymentSchedule;
6-
import com.coderising.payroll.util.DateUtil;
78

89
public class MonthlySchedule implements PaymentSchedule {
910

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/schedule/WeeklySchedule.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.coderising.myood.payroll.liuxin_payroll.schedule;
22

3+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentSchedule;
4+
import com.coderising.myood.payroll.liuxin_payroll.util.DateUtil;
5+
36
import java.util.Date;
47

5-
import com.coderising.payroll.domain.PaymentSchedule;
6-
import com.coderising.payroll.util.DateUtil;
78

89
public class WeeklySchedule implements PaymentSchedule {
910

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/transaction/AddEmployeeTransaction.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.coderising.myood.payroll.liuxin_payroll.transaction;
22

3-
import com.coderising.payroll.domain.Employee;
4-
import com.coderising.payroll.domain.HoldMethod;
5-
import com.coderising.payroll.domain.PaymentClassification;
6-
import com.coderising.payroll.domain.PaymentMethod;
7-
import com.coderising.payroll.domain.PaymentSchedule;
3+
4+
import com.coderising.myood.payroll.liuxin_payroll.domain.*;
85

96
public abstract class AddEmployeeTransaction {
107
private String name;
@@ -19,8 +16,8 @@ public AddEmployeeTransaction(String name,String address){
1916
public void execute(){
2017
PaymentClassification pc = getClassification();
2118
PaymentSchedule ps = getSchedule();
22-
PaymentMethod pm = new HoldMethod();
23-
Employee e = new Employee(name, address);
19+
PaymentMethod pm = new HoldMethod();
20+
Employee e = new Employee(name, address);
2421
e.setClassification(pc);
2522
e.setSchedule(ps);
2623
e.setPaymentMethod(pm);

students/812350401/src/main/java/com/coderising/myood/payroll/liuxin_payroll/transaction/AddHourlyEmployeeTransaction.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.coderising.myood.payroll.liuxin_payroll.transaction;
22

3-
import com.coderising.payroll.classification.HourlyClassification;
4-
import com.coderising.payroll.domain.PaymentClassification;
5-
import com.coderising.payroll.domain.PaymentSchedule;
6-
import com.coderising.payroll.schedule.WeeklySchedule;
3+
4+
import com.coderising.myood.payroll.liuxin_payroll.classification.HourlyClassification;
5+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentClassification;
6+
import com.coderising.myood.payroll.liuxin_payroll.domain.PaymentSchedule;
7+
import com.coderising.myood.payroll.liuxin_payroll.schedule.WeeklySchedule;
78

89
public class AddHourlyEmployeeTransaction extends AddEmployeeTransaction{
910
private double rate;
@@ -12,7 +13,7 @@ public class AddHourlyEmployeeTransaction extends AddEmployeeTransaction{
1213
this.rate = hourlyRate;
1314
}
1415
@Override
15-
public PaymentClassification getClassification() {
16+
public PaymentClassification getClassification() {
1617
return new HourlyClassification(rate);
1718
}
1819

students/812350401/src/main/java/com/coderising/myood/payroll/my_payroll/Affiliation.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

students/812350401/src/main/java/com/coderising/myood/payroll/my_payroll/PaymentClassification.java

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.coderising.myood.payroll.my_payroll.database;
2+
3+
import java.util.*;
4+
5+
/**
6+
* Created by thomas_young on 16/9/2017.
7+
*/
8+
public abstract class AbstractTable implements Table {
9+
private String name;
10+
protected List<Map<String, Object>> rows = new LinkedList<>();
11+
12+
public String getName() {
13+
return name;
14+
}
15+
16+
// 不考虑唯一键问题
17+
public void addRow(Map<String, Object> row) {
18+
Map<String, Object> cloneRow = new HashMap<>();
19+
cloneRow.putAll(row);
20+
rows.add(cloneRow);
21+
}
22+
23+
public List<Map<String, Object>> getRows() {
24+
return rows;
25+
}
26+
27+
public void setName(String name) {
28+
this.name = name;
29+
}
30+
31+
@Override
32+
public String toString() {
33+
StringBuilder ret = new StringBuilder();
34+
ret.append("table name: ")
35+
.append(name)
36+
.append("\n")
37+
.append(rows.toString());
38+
return ret.toString();
39+
}
40+
}
41+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.coderising.myood.payroll.my_payroll.database;
2+
3+
4+
import java.util.List;
5+
import java.util.stream.Collectors;
6+
7+
/**
8+
* Created by thomas_young on 16/9/2017.
9+
*/
10+
public class DataBase {
11+
private String name;
12+
private List<Table> tables;
13+
14+
15+
public boolean addTable(Table table) {
16+
if (!tables.stream()
17+
.map(Table::getName)
18+
.collect(Collectors.toList())
19+
.contains(table.getName())) {
20+
tables.add(table);
21+
return true;
22+
}
23+
return false;
24+
}
25+
26+
public Table getTable(String name) {
27+
return tables.stream()
28+
.filter(t -> name.equals(t.getName()))
29+
.findFirst()
30+
.orElse(null);
31+
}
32+
}

0 commit comments

Comments
 (0)