|
@@ -13,8 +13,10 @@ import org.springframework.stereotype.Service;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
@Service
|
|
|
public class PaymentService {
|
|
@@ -32,6 +34,12 @@ public class PaymentService {
|
|
|
Contract contract = contractDao.get(clauseId);
|
|
|
List<Clause> clauseList = contract.getClauseList();
|
|
|
|
|
|
+ // 1:当天, 2:提前1天, 3:提前3天, 4:提前5天
|
|
|
+ Map<String, Integer> map = new HashMap<>();
|
|
|
+ map.put("1", 0);map.put("2", 1);map.put("3", 3);map.put("4", 5);
|
|
|
+ // 提醒值
|
|
|
+ long reminder = 0;
|
|
|
+
|
|
|
// 开始时间
|
|
|
String start = null;
|
|
|
// 结束时间
|
|
@@ -43,7 +51,8 @@ public class PaymentService {
|
|
|
// 单价租金
|
|
|
BigDecimal unitPrice = null;
|
|
|
|
|
|
- JSONArray array = new JSONArray();
|
|
|
+ JSONArray earnestMoneyArray = new JSONArray();
|
|
|
+
|
|
|
// 计数
|
|
|
int a = 0;
|
|
|
for (Clause clause : clauseList) {
|
|
@@ -51,6 +60,7 @@ public class PaymentService {
|
|
|
if (clause.getType() == 1) {
|
|
|
start = clause.getStartTime();
|
|
|
end = clause.getEndTime();
|
|
|
+ reminder = map.get(clause.getPayTime());
|
|
|
payCycle = Long.parseLong(clause.getPayCycle());
|
|
|
unitPrice = new BigDecimal(clause.getUnitPrice());
|
|
|
} else {
|
|
@@ -59,13 +69,13 @@ public class PaymentService {
|
|
|
if (a > 0) {
|
|
|
json.put("earnestMoneyType", clause.getEarnestMoneyType());
|
|
|
json.put("earnestMoney", clause.getEarnestMoney());
|
|
|
- array.add(json);
|
|
|
+ earnestMoneyArray.add(json);
|
|
|
BigDecimal bigDecimal = new BigDecimal(clause.getEarnestMoney());
|
|
|
earnestMoney.add(bigDecimal);
|
|
|
} else {
|
|
|
json.put("earnestMoneyType", clause.getEarnestMoneyType());
|
|
|
json.put("earnestMoney", clause.getEarnestMoney());
|
|
|
- array.add(json);
|
|
|
+ earnestMoneyArray.add(json);
|
|
|
earnestMoney = new BigDecimal(clause.getEarnestMoney());
|
|
|
a = a + 1;
|
|
|
}
|
|
@@ -82,37 +92,40 @@ public class PaymentService {
|
|
|
int b = 1;
|
|
|
for (int i = 0; i < in; i++) {
|
|
|
Payment payment = new Payment();
|
|
|
+ payment.setProjectId(contract.getProjectId());
|
|
|
+ payment.setContractCode(contract.getCode());
|
|
|
+ payment.setContractId(clauseId);
|
|
|
+ payment.setPayMerchantId(contract.getMerchantId());
|
|
|
+ payment.setOrganizationId(contract.getOrganizationId());
|
|
|
+ payment.setPayClientId(contract.getClientId());
|
|
|
+
|
|
|
+ JSONArray unitPriceArray = new JSONArray();
|
|
|
JSONObject json = new JSONObject();
|
|
|
if (i == 0) {
|
|
|
+ payment.setReminderDate(startDate.minusDays(reminder).toString());
|
|
|
payment.setStartDate(start);
|
|
|
// 计算指定日期后几个月的日期
|
|
|
payment.setEndDate(startDate.plusMonths(payCycle).toString());
|
|
|
- payment.setContractId(clauseId);
|
|
|
- payment.setPayMerchantId(contract.getMerchantId());
|
|
|
- payment.setOrganizationId(contract.getOrganizationId());
|
|
|
- payment.setPayClientId(contract.getClientId());
|
|
|
BigDecimal cycle = new BigDecimal(payCycle);
|
|
|
payment.setAmount(unitPrice.multiply(cycle).add(earnestMoney));
|
|
|
json.put("payCycle",payCycle);
|
|
|
json.put("unitPrice", unitPrice);
|
|
|
- array.add(json);
|
|
|
- payment.setData(array.toJSONString());
|
|
|
+ earnestMoneyArray.add(json);
|
|
|
+ payment.setData(earnestMoneyArray.toJSONString());
|
|
|
payment.setPhase(b + i);
|
|
|
list.add(payment);
|
|
|
continue;
|
|
|
}
|
|
|
int c = i - 1;
|
|
|
+ payment.setReminderDate(LocalDate.parse(list.get(c).getEndDate()).minusDays(reminder).toString());
|
|
|
payment.setStartDate(list.get(c).getEndDate());
|
|
|
payment.setEndDate(LocalDate.parse(list.get(c).getEndDate()).plusMonths(payCycle).toString());
|
|
|
- payment.setContractId(clauseId);
|
|
|
- payment.setPayMerchantId(contract.getMerchantId());
|
|
|
- payment.setOrganizationId(contract.getOrganizationId());
|
|
|
- payment.setPayClientId(contract.getClientId());
|
|
|
BigDecimal cycle = new BigDecimal(payCycle);
|
|
|
payment.setAmount(unitPrice.multiply(cycle));
|
|
|
json.put("payCycle",payCycle);
|
|
|
json.put("unitPrice", unitPrice);
|
|
|
- payment.setData(json.toJSONString());
|
|
|
+ unitPriceArray.add(json);
|
|
|
+ payment.setData(unitPriceArray.toJSONString());
|
|
|
payment.setPhase(b + i);
|
|
|
list.add(payment);
|
|
|
}
|
|
@@ -141,4 +154,8 @@ public class PaymentService {
|
|
|
return paymentDao.getLimit(payment, currIndex, pageSize);
|
|
|
}
|
|
|
|
|
|
+ public Payment get(long id) {
|
|
|
+ return paymentDao.get(id);
|
|
|
+ }
|
|
|
+
|
|
|
}
|