From 503e43359044eaa815541c186bf2c194fdf3d62c Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 25 六月 2020 00:57:07 +0800
Subject: [PATCH] 优化代码
---
service-job/src/main/java/com/java110/job/task/fee/GenerateBillTemplate.java | 56 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/service-job/src/main/java/com/java110/job/task/fee/GenerateBillTemplate.java b/service-job/src/main/java/com/java110/job/task/fee/GenerateBillTemplate.java
index 80cf341..5833962 100644
--- a/service-job/src/main/java/com/java110/job/task/fee/GenerateBillTemplate.java
+++ b/service-job/src/main/java/com/java110/job/task/fee/GenerateBillTemplate.java
@@ -10,11 +10,7 @@
import com.java110.core.smo.user.IOwnerRoomRelInnerServiceSMO;
import com.java110.dto.RoomDto;
import com.java110.dto.community.CommunityDto;
-import com.java110.dto.fee.BillDto;
-import com.java110.dto.fee.BillOweFeeDto;
-import com.java110.dto.fee.FeeConfigDto;
-import com.java110.dto.fee.FeeDetailDto;
-import com.java110.dto.fee.FeeDto;
+import com.java110.dto.fee.*;
import com.java110.dto.owner.OwnerCarDto;
import com.java110.dto.owner.OwnerRoomRelDto;
import com.java110.dto.parking.ParkingSpaceDto;
@@ -28,6 +24,7 @@
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -74,8 +71,6 @@
private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
-
-
@Override
protected void process(TaskDto taskDto) throws Exception {
@@ -100,7 +95,7 @@
feeConfigDto.setCommunityId(communityDto.getCommunityId());
feeConfigDto.setBillType(getCurTaskAttr(taskDto, TASK_ATTR_BILL_TYPE).getValue());
- if(StringUtil.isEmpty(feeConfigDto.getBillType())){
+ if (StringUtil.isEmpty(feeConfigDto.getBillType())) {
throw new IllegalArgumentException("閰嶇疆閿欒 鏈嬁鍒板睘鎬у��");
}
List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
@@ -134,8 +129,8 @@
List<BillDto> billDtos = feeInnerServiceSMOImpl.queryBills(tmpBillDto);
//Assert.listOnlyOne(billDtos, "褰撳墠瀛樺湪澶氫釜鏈夋晥璐﹀崟" + feeConfigDto.getConfigId());
- if (billDtos != null && billDtos.size() > 1) {
- throw new TaskTemplateException(ResponseConstant.RESULT_CODE_ERROR, "褰撳墠瀛樺湪澶氫釜鏈夋晥璐﹀崟");
+ if (billDtos != null && billDtos.size() > 0) {
+ throw new TaskTemplateException(ResponseConstant.RESULT_CODE_ERROR, "宸茬粡鍑鸿繃璐︿簡");
}
String billId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_billId);
@@ -170,7 +165,7 @@
billDto.setCurReceivable("0");
for (FeeDto tmpFeeDto : feeDtos) {
try {
- generateFee(startTime, tmpFeeDto, billDto);
+ generateFee(startTime, tmpFeeDto, billDto, feeConfigDto);
} catch (Exception e) {
logger.error("鐢熸垚璐圭敤澶辫触", e);
}
@@ -190,7 +185,7 @@
*
* @param feeDto
*/
- private void generateFee(Date startTime, FeeDto feeDto, BillDto billDto) {
+ private void generateFee(Date startTime, FeeDto feeDto, BillDto billDto, FeeConfigDto feeConfigDto) {
Date billEndTime = DateUtil.getCurrentDate();
if ("2009001".equals(feeDto.getState())) { //鍒ゆ柇鏄惁缂磋垂缁撴潫
FeeDetailDto feeDetailDto = new FeeDetailDto();
@@ -231,11 +226,15 @@
billOweFeeDto.setFeeId(feeDto.getFeeId());
billOweFeeDto.setBillId(billDto.getBillId());
- int month = dayCompare(startTime, billEndTime);
+ double month = monthCompare(startTime, billEndTime);
BigDecimal curFeePrice = new BigDecimal(feeDto.getFeePrice());
curFeePrice = curFeePrice.multiply(new BigDecimal(month));
billOweFeeDto.setAmountOwed(curFeePrice.doubleValue() + "");
- month = dayCompare(feeDto.getEndTime(), billEndTime);
+ if (TASK_ATTR_VALUE_DAY.equals(feeConfigDto.getBillType())) {
+ month = dayCompare(feeDto.getEndTime(), billEndTime);
+ } else {
+ month = monthCompare(feeDto.getEndTime(), billEndTime);
+ }
BigDecimal feePrice = new BigDecimal(feeDto.getFeePrice());
feePrice = feePrice.multiply(new BigDecimal(month));
billOweFeeDto.setBillAmountOwed(feePrice.doubleValue() + "");
@@ -482,7 +481,7 @@
* @param toDate
* @return
*/
- public static int dayCompare(Date fromDate, Date toDate) {
+ public static int monthCompare(Date fromDate, Date toDate) {
Calendar from = Calendar.getInstance();
from.setTime(fromDate);
Calendar to = Calendar.getInstance();
@@ -495,4 +494,31 @@
int month = toYear * 12 + toMonth - (fromYear * 12 + fromMonth);
return month;
}
+
+ /**
+ * 璁$畻2涓棩鏈熶箣闂寸浉宸殑 浠ュ勾銆佹湀銆佹棩涓哄崟浣嶏紝鍚勮嚜璁$畻缁撴灉鏄灏�
+ * 姣斿锛�2011-02-02 鍒� 2017-03-02
+ * 浠ュ勾涓哄崟浣嶇浉宸负锛�6骞�
+ * 浠ユ湀涓哄崟浣嶇浉宸负锛�73涓湀
+ * 浠ユ棩涓哄崟浣嶇浉宸负锛�2220澶�
+ *
+ * @param fromDate
+ * @param toDate
+ * @return
+ */
+ public static double dayCompare(Date fromDate, Date toDate) {
+ Calendar from = Calendar.getInstance();
+ from.setTime(fromDate);
+ Calendar to = Calendar.getInstance();
+ to.setTime(toDate);
+
+ long t1 = from.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();
+ }
}
--
Gitblit v1.8.0