From 188d1158534a811e963270bdb0afe5939dcfc049 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 03 九月 2020 18:19:06 +0800
Subject: [PATCH] 优化代码
---
service-job/src/main/java/com/java110/job/task/fee/GenerateBillProTemplate.java | 70 ++++++++++++++++++++++++----------
1 files changed, 49 insertions(+), 21 deletions(-)
diff --git a/service-job/src/main/java/com/java110/job/task/fee/GenerateBillProTemplate.java b/service-job/src/main/java/com/java110/job/task/fee/GenerateBillProTemplate.java
index 2b160ad..aa2a4fe 100644
--- a/service-job/src/main/java/com/java110/job/task/fee/GenerateBillProTemplate.java
+++ b/service-job/src/main/java/com/java110/job/task/fee/GenerateBillProTemplate.java
@@ -309,6 +309,28 @@
Date startDate = feeDto.getStartTime();
//鍒版湡鏃堕棿
Date endDate = feeDto.getEndTime();
+ if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) {
+ OwnerCarDto ownerCarDto = new OwnerCarDto();
+ ownerCarDto.setCommunityId(feeDto.getCommunityId());
+ ownerCarDto.setCarId(feeDto.getPayerObjId());
+ List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+ if (ownerCarDtos == null || ownerCarDtos.size() != 1) {
+ targetEndDateAndOweMonth.put("oweMonth", 0);
+ targetEndDateAndOweMonth.put("targetEndDate", "");
+ return targetEndDateAndOweMonth;
+ }
+
+ targetEndDate = ownerCarDtos.get(0).getEndTime();
+ //璇存槑娌℃湁娆犺垂
+ if (endDate.getTime() < targetEndDate.getTime()) {
+ // 鐩爣鍒版湡鏃堕棿 - 鍒版湡鏃堕棿 = 娆犺垂鏈堜唤
+ oweMonth = dayCompare(endDate, targetEndDate);
+ }
+ targetEndDateAndOweMonth.put("oweMonth", oweMonth);
+ targetEndDateAndOweMonth.put("targetEndDate", targetEndDate);
+ return targetEndDateAndOweMonth;
+ }
//缂磋垂鍛ㄦ湡
long paymentCycle = Long.parseLong(feeDto.getPaymentCycle());
// 褰撳墠鏃堕棿 - 寮�濮嬫椂闂� = 鏈堜唤
@@ -321,7 +343,7 @@
round = Math.floor(mulMonth / paymentCycle);
}
// 杞暟 * 鍛ㄦ湡 * 30 + 寮�濮嬫椂闂� = 鐩爣 鍒版湡鏃堕棿
- targetEndDate = getTargetEndTime(round * paymentCycle * 30, startDate);
+ targetEndDate = getTargetEndTime(round * paymentCycle, startDate);
//璐圭敤 蹇粨鏉熶簡
if (feeDto.getConfigEndTime().getTime() < targetEndDate.getTime()) {
targetEndDate = feeDto.getConfigEndTime();
@@ -330,6 +352,10 @@
if (endDate.getTime() < targetEndDate.getTime()) {
// 鐩爣鍒版湡鏃堕棿 - 鍒版湡鏃堕棿 = 娆犺垂鏈堜唤
oweMonth = dayCompare(endDate, targetEndDate);
+ }
+
+ if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) {
+ targetEndDate = feeDto.getEndTime();
}
}
@@ -341,7 +367,7 @@
private Date getTargetEndTime(double v, Date startDate) {
Calendar endDate = Calendar.getInstance();
endDate.setTime(startDate);
- endDate.add(Calendar.DATE, (int) v);
+ endDate.add(Calendar.MONTH, (int) v);
return endDate.getTime();
}
@@ -354,25 +380,10 @@
*/
private void getParkingSpaceInfo(BillOweFeeDto billOweFeeDto, FeeDto feeDto) {
- ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
- parkingSpaceDto.setPsId(feeDto.getPayerObjId());
- parkingSpaceDto.setCommunityId(feeDto.getCommunityId());
- List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
- if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
- //杞︿綅鍙兘琚垹闄や簡
- billOweFeeDto.setOwnerId("1");
- billOweFeeDto.setOwnerName("鏈煡");
- billOweFeeDto.setOwnerTel("19999999999");
- billOweFeeDto.setPayerObjName("鏈煡");
- return;
- }
-
- billOweFeeDto.setPayerObjName(parkingSpaceDtos.get(0).getAreaNum() + "鍋滆溅鍦�" + parkingSpaceDtos.get(0).getNum() + "杞︿綅");
-
OwnerCarDto ownerCarDto = new OwnerCarDto();
ownerCarDto.setWithOwner(true);
- ownerCarDto.setPsId(parkingSpaceDtos.get(0).getPsId());
+ ownerCarDto.setCarId(feeDto.getPayerObjId());
ownerCarDto.setCommunityId(feeDto.getCommunityId());
List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
@@ -386,6 +397,7 @@
return;
}
+ billOweFeeDto.setPayerObjName(ownerCarDtos.get(0).getCarNum());
billOweFeeDto.setOwnerId(ownerCarDtos.get(0).getOwnerId());
billOweFeeDto.setOwnerName(ownerCarDtos.get(0).getOwnerName());
billOweFeeDto.setOwnerTel(ownerCarDtos.get(0).getLink());
@@ -504,9 +516,18 @@
* @param feeDto
*/
private void computeFeePriceByParkingSpace(FeeDto feeDto) {
+
+ OwnerCarDto ownerCarDto = new OwnerCarDto();
+ ownerCarDto.setCommunityId(feeDto.getCommunityId());
+ ownerCarDto.setCarId(feeDto.getPayerObjId());
+ List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+ if (ownerCarDtos == null || ownerCarDtos.size() < 1) { //鏁版嵁鏈夐棶棰�
+ return;
+ }
+
ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
parkingSpaceDto.setCommunityId(feeDto.getCommunityId());
- parkingSpaceDto.setPsId(feeDto.getPayerObjId());
+ parkingSpaceDto.setPsId(ownerCarDtos.get(0).getPsId());
List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { //鏁版嵁鏈夐棶棰�
@@ -571,15 +592,22 @@
from.setTime(fromDate);
Calendar to = Calendar.getInstance();
to.setTime(toDate);
+ int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH);
+ int month = (to.get(Calendar.YEAR) - from.get(Calendar.YEAR)) * 12;
- long t1 = from.getTimeInMillis();
+ result = result + month;
+ Calendar newFrom = Calendar.getInstance();
+ newFrom.setTime(fromDate);
+ newFrom.add(Calendar.MONTH, result);
+
+ long t1 = newFrom.getTimeInMillis();
long t2 = to.getTimeInMillis();
long days = (t2 - t1) / (24 * 60 * 60 * 1000);
BigDecimal tmpDays = new BigDecimal(days);
BigDecimal monthDay = new BigDecimal(30);
- return tmpDays.divide(monthDay, 2, RoundingMode.HALF_UP).doubleValue();
+ return tmpDays.divide(monthDay, 2, RoundingMode.HALF_UP).doubleValue() + result;
}
--
Gitblit v1.8.0