From 525d26afe1010c1fa36e44453d90160e94e1c03a Mon Sep 17 00:00:00 2001
From: fuqiuchang <fuqc0815@163.com>
Date: 星期五, 11 十二月 2020 17:15:13 +0800
Subject: [PATCH] 1.欠费消息模板推送金额和期数顺序互换一下

---
 service-job/src/main/java/com/java110/job/task/fee/GenerateBillProTemplate.java |  232 +++------------------------------------------------------
 1 files changed, 15 insertions(+), 217 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..575bdb0 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
@@ -6,7 +6,6 @@
 import com.java110.dto.fee.*;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerRoomRelDto;
-import com.java110.dto.parking.ParkingSpaceDto;
 import com.java110.dto.task.TaskDto;
 import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
@@ -16,6 +15,7 @@
 import com.java110.intf.user.IOwnerCarInnerServiceSMO;
 import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
 import com.java110.job.quartz.TaskSystemQuartz;
+import com.java110.core.smo.IComputeFeeSMO;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.TaskTemplateException;
 import com.java110.utils.util.DateUtil;
@@ -24,8 +24,10 @@
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.*;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName GenerateOwnerBillTemplate
@@ -67,6 +69,9 @@
 
     @Autowired
     private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    @Autowired
+    private IComputeFeeSMO computeFeeSMOImpl;
 
 
     @Override
@@ -185,7 +190,7 @@
      */
     private void generateFee(Date startTime, FeeDto feeDto, BillDto billDto, FeeConfigDto feeConfigDto) {
 
-        if ("2009001".equals(feeDto.getState())) { //鍒ゆ柇鏄惁缂磋垂缁撴潫
+        if (FeeDto.STATE_FINISH.equals(feeDto.getState())) { //鍒ゆ柇鏄惁缂磋垂缁撴潫
             return;
         }
 
@@ -196,7 +201,7 @@
         // 鐩爣鍒版湡鏃堕棿 - 鍒版湡鏃堕棿 = 娆犺垂鏈堜唤
         // 鏈堜唤 * 姣忔湀鍗曚环 = 娆犺垂閲戦
 
-        Map<String, Object> targetEndDateAndOweMonth = getTargetEndDateAndOweMonth(feeDto);
+        Map<String, Object> targetEndDateAndOweMonth = computeFeeSMOImpl.getTargetEndDateAndOweMonth(feeDto);
         Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate");
         double oweMonth = (double) targetEndDateAndOweMonth.get("oweMonth");
 
@@ -211,16 +216,8 @@
         if (oweMonth <= 0.0) {
             return;
         }
-
-        if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) {
-            computeFeePriceByRoom(feeDto);
-        } else if (FeeDto.PAYER_OBJ_TYPE_PARKING_SPACE.equals(feeDto.getPayerObjType())) {
-            computeFeePriceByParkingSpace(feeDto);
-        } else {
-            return;//杩欎釜娌℃湁娆犺垂鍙畻
-            //throw new IllegalArgumentException("鏆備笉鏀寔璇ョ被鍨嬪嚭璐�" + feeDto.getFeeId());
-        }
-
+        double tmpFeePrice = computeFeeSMOImpl.getFeePrice(feeDto);
+        feeDto.setFeePrice(tmpFeePrice);
         if (feeDto.getFeePrice() <= 0) {
             return;//杩欎釜娌℃湁娆犺垂鍙畻
         }
@@ -241,7 +238,7 @@
         billOweFeeDto.setPayerObjType(feeDto.getPayerObjType());
         billOweFeeDto.setState("1000");
         billOweFeeDto.setDeadlineTime(DateUtil.getFormatTimeString(targetEndDate, DateUtil.DATE_FORMATE_STRING_A));
-        if ("3333".equals(feeDto.getPayerObjType())) {
+        if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) {
             getRoomInfo(billOweFeeDto, feeDto);
         } else {
             getParkingSpaceInfo(billOweFeeDto, feeDto);
@@ -281,71 +278,6 @@
         billDto.setReceipts(curReceipts.doubleValue() + "");
     }
 
-    private Map getTargetEndDateAndOweMonth(FeeDto feeDto) {
-        Date targetEndDate = null;
-        double oweMonth = 0.0;
-
-        Map<String, Object> targetEndDateAndOweMonth = new HashMap<>();
-
-        if (FeeDto.STATE_FINISH.equals(feeDto.getState())) {
-            targetEndDate = feeDto.getEndTime();
-            targetEndDateAndOweMonth.put("oweMonth", oweMonth);
-            targetEndDateAndOweMonth.put("targetEndDate", targetEndDate);
-            return targetEndDateAndOweMonth;
-        }
-        if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
-            if (feeDto.getImportFeeEndTime() == null) {
-                targetEndDate = feeDto.getConfigEndTime();
-            } else {
-                targetEndDate = feeDto.getImportFeeEndTime();
-            }
-            //鍒ゆ柇褰撳墠璐圭敤鏄笉鏄鍏ヨ垂鐢�
-            oweMonth = 1.0;
-
-        } else {
-            //褰撳墠鏃堕棿
-            Date billEndTime = DateUtil.getCurrentDate();
-            //寮�濮嬫椂闂�
-            Date startDate = feeDto.getStartTime();
-            //鍒版湡鏃堕棿
-            Date endDate = feeDto.getEndTime();
-            //缂磋垂鍛ㄦ湡
-            long paymentCycle = Long.parseLong(feeDto.getPaymentCycle());
-            // 褰撳墠鏃堕棿 - 寮�濮嬫椂闂�  = 鏈堜唤
-            double mulMonth = dayCompare(startDate, billEndTime);
-            // 鏈堜唤/ 鍛ㄦ湡 = 杞暟锛堝悜涓婂彇鏁达級
-            double round = 0.0;
-            if ("1200".equals(feeDto.getPaymentCd())) { // 棰勪粯璐�
-                round = Math.floor(mulMonth / paymentCycle) + 1;
-            } else { //鍚庝粯璐�
-                round = Math.floor(mulMonth / paymentCycle);
-            }
-            // 杞暟 * 鍛ㄦ湡 * 30 + 寮�濮嬫椂闂� = 鐩爣 鍒版湡鏃堕棿
-            targetEndDate = getTargetEndTime(round * paymentCycle * 30, startDate);
-            //璐圭敤 蹇粨鏉熶簡
-            if (feeDto.getConfigEndTime().getTime() < targetEndDate.getTime()) {
-                targetEndDate = feeDto.getConfigEndTime();
-            }
-            //璇存槑娌℃湁娆犺垂
-            if (endDate.getTime() < targetEndDate.getTime()) {
-                // 鐩爣鍒版湡鏃堕棿 - 鍒版湡鏃堕棿 = 娆犺垂鏈堜唤
-                oweMonth = dayCompare(endDate, targetEndDate);
-            }
-        }
-
-        targetEndDateAndOweMonth.put("oweMonth", oweMonth);
-        targetEndDateAndOweMonth.put("targetEndDate", targetEndDate);
-        return targetEndDateAndOweMonth;
-    }
-
-    private Date getTargetEndTime(double v, Date startDate) {
-        Calendar endDate = Calendar.getInstance();
-        endDate.setTime(startDate);
-        endDate.add(Calendar.DATE, (int) v);
-        return endDate.getTime();
-    }
-
-
     /**
      * 鏌ヨ杞︿綅淇℃伅
      *
@@ -354,25 +286,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 +303,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());
@@ -460,126 +378,6 @@
 
         return calendar.getTime();
 
-    }
-
-    /**
-     * 鏍规嵁鎴垮眿鏉ョ畻鍗曚环
-     *
-     * @param feeDto
-     */
-    private void computeFeePriceByRoom(FeeDto feeDto) {
-        RoomDto roomDto = new RoomDto();
-        roomDto.setCommunityId(feeDto.getCommunityId());
-        roomDto.setRoomId(feeDto.getPayerObjId());
-        List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
-
-        if (roomDtos == null || roomDtos.size() < 1) { //鏁版嵁鏈夐棶棰�
-            return;
-        }
-
-        String computingFormula = feeDto.getComputingFormula();
-        double feePrice = 0.00;
-        if ("1001".equals(computingFormula)) { //闈㈢Н*鍗曚环+闄勫姞璐�
-            BigDecimal squarePrice = new BigDecimal(Double.parseDouble(feeDto.getSquarePrice()));
-            BigDecimal builtUpArea = new BigDecimal(Double.parseDouble(roomDtos.get(0).getBuiltUpArea()));
-            BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
-            feePrice = squarePrice.multiply(builtUpArea).add(additionalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-        } else if ("2002".equals(computingFormula)) { // 鍥哄畾璐圭敤
-            BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
-            feePrice = additionalAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-        } else {
-            feePrice = -1.00;
-        }
-
-        feeDto.setFeePrice(feePrice);
-
-        //鏌ヨ涓氫富淇℃伅
-
-
-    }
-
-    /**
-     * 鏍规嵁杞︿綅鏉ョ畻鍗曚环
-     *
-     * @param feeDto
-     */
-    private void computeFeePriceByParkingSpace(FeeDto feeDto) {
-        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
-        parkingSpaceDto.setCommunityId(feeDto.getCommunityId());
-        parkingSpaceDto.setPsId(feeDto.getPayerObjId());
-        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
-
-        if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { //鏁版嵁鏈夐棶棰�
-            return;
-        }
-
-        String computingFormula = feeDto.getComputingFormula();
-        double feePrice = 0.00;
-        if ("1001".equals(computingFormula)) { //闈㈢Н*鍗曚环+闄勫姞璐�
-            BigDecimal squarePrice = new BigDecimal(Double.parseDouble(feeDto.getSquarePrice()));
-            BigDecimal builtUpArea = new BigDecimal(Double.parseDouble(parkingSpaceDtos.get(0).getArea()));
-            BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
-            feePrice = squarePrice.multiply(builtUpArea).add(additionalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-        } else if ("2002".equals(computingFormula)) { // 鍥哄畾璐圭敤
-            BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
-            feePrice = additionalAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-        } else {
-            feePrice = -1.00;
-        }
-
-        feeDto.setFeePrice(feePrice);
-    }
-
-    /**
-     * 璁$畻2涓棩鏈熶箣闂寸浉宸殑  浠ュ勾銆佹湀銆佹棩涓哄崟浣嶏紝鍚勮嚜璁$畻缁撴灉鏄灏�
-     * 姣斿锛�2011-02-02 鍒�  2017-03-02
-     * 浠ュ勾涓哄崟浣嶇浉宸负锛�6骞�
-     * 浠ユ湀涓哄崟浣嶇浉宸负锛�73涓湀
-     * 浠ユ棩涓哄崟浣嶇浉宸负锛�2220澶�
-     *
-     * @param fromDate
-     * @param toDate
-     * @return
-     */
-    public static int monthCompare(Date fromDate, Date toDate) {
-        Calendar from = Calendar.getInstance();
-        from.setTime(fromDate);
-        Calendar to = Calendar.getInstance();
-        to.setTime(toDate);
-        //鍙骞存湀
-        int fromYear = from.get(Calendar.YEAR);
-        int fromMonth = from.get(Calendar.MONTH);
-        int toYear = to.get(Calendar.YEAR);
-        int toMonth = to.get(Calendar.MONTH);
-        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