From 2bac44b5f569357beec90e6ce60940802432c5e6 Mon Sep 17 00:00:00 2001
From: jinhai <9314122@qq.com>
Date: 星期日, 13 九月 2020 17:34:29 +0800
Subject: [PATCH] 新增预存费用功能

---
 service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java |   81 +++++++++++++++++++++++++++++++++-------
 1 files changed, 67 insertions(+), 14 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java b/service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java
index 3f31ee1..95ea105 100644
--- a/service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java
@@ -1,5 +1,6 @@
 package com.java110.fee.bmo.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.java110.dto.RoomDto;
 import com.java110.dto.fee.BillDto;
 import com.java110.dto.fee.BillOweFeeDto;
@@ -14,6 +15,7 @@
 import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -75,12 +77,63 @@
     @Override
     public ResponseEntity<String> queryAllOwneFee(FeeDto feeDto) {
         ResponseEntity<String> responseEntity = null;
+
+        if (!freshFeeDtoParam(feeDto)) {
+            return ResultVo.createResponseEntity(1, 0, new JSONArray());
+        }
+
         if (FeeConfigDto.BILL_TYPE_EVERY.equals(feeDto.getBillType())) {
             responseEntity = computeEveryOweFee(feeDto);
         } else {
             responseEntity = computeBillOweFee(feeDto);
         }
         return responseEntity;
+    }
+
+    private boolean freshFeeDtoParam(FeeDto feeDto) {
+
+        if (StringUtil.isEmpty(feeDto.getPayerObjId())) {
+            return true;
+        }
+
+        if (!feeDto.getPayerObjId().contains("#")) {
+            return false;
+        }
+        if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) {
+            String[] nums = feeDto.getPayerObjId().split("#");
+            if (nums.length != 3) {
+                return false;
+            }
+            RoomDto roomDto = new RoomDto();
+            roomDto.setFloorId(nums[0]);
+            roomDto.setUnitNum(nums[1]);
+            roomDto.setRoomNum(nums[2]);
+            roomDto.setCommunityId(feeDto.getCommunityId());
+            List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+
+            if (roomDtos == null || roomDtos.size() < 1) {
+                return false;
+            }
+            feeDto.setPayerObjId(roomDtos.get(0).getRoomId());
+
+        } else {
+            String[] nums = feeDto.getPayerObjId().split("#");
+            if (nums.length != 2) {
+                return false;
+            }
+            ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+            parkingSpaceDto.setAreaNum(nums[0]);
+            parkingSpaceDto.setNum(nums[1]);
+            parkingSpaceDto.setCommunityId(feeDto.getCommunityId());
+            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+            if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) {
+                return false;
+            }
+            feeDto.setPayerObjId(parkingSpaceDtos.get(0).getPsId());
+        }
+
+        return true;
     }
 
     /**
@@ -141,7 +194,7 @@
             computeRoomFee(roomFees, roomIds);
         }
 
-        if (roomFees.size() > 0) {
+        if (psFees.size() > 0) {
             computePsFee(psFees, psIds);
         }
     }
@@ -160,22 +213,16 @@
         if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { //鏁版嵁鏈夐棶棰�
             return;
         }
-        List<String> ownerIds = new ArrayList<>();
         for (ParkingSpaceDto tmpParkingSpaceDto : parkingSpaceDtos) {
             for (FeeDto feeDto : psFees) {
                 dealFeePs(tmpParkingSpaceDto, feeDto);
             }
-            ownerIds.add(tmpParkingSpaceDto.getOwnerId());
-        }
-
-        if (ownerIds.size() < 1) {
-            return;
         }
 
         OwnerDto ownerDto = new OwnerDto();
-        ownerDto.setOwnerIds(ownerIds.toArray(new String[ownerIds.size()]));
+        ownerDto.setOwnerIds(psIds.toArray(new String[psIds.size()]));
         ownerDto.setCommunityId(psFees.get(0).getCommunityId());
-        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByParkingSpace(ownerDto);
 
         for (OwnerDto tmpOwnerDto : ownerDtos) {
             for (FeeDto feeDto : psFees) {
@@ -211,7 +258,7 @@
         double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate());
         BigDecimal price = new BigDecimal(feeDto.getFeePrice());
         price = price.multiply(new BigDecimal(month));
-        feeDto.setAmountOwed(price.doubleValue());
+        feeDto.setAmountOwed(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue() + "");
     }
 
     /**
@@ -255,7 +302,7 @@
         }
 
         feeDto.setOwnerName(tmpOwnerDto.getName());
-        feeDto.setOwnerTel(feeDto.getOwnerTel());
+        feeDto.setOwnerTel(tmpOwnerDto.getLink());
     }
 
     private void dealFeeRoom(RoomDto tmpRoomDto, FeeDto feeDto) {
@@ -285,7 +332,7 @@
         double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate());
         BigDecimal price = new BigDecimal(feeDto.getFeePrice());
         price = price.multiply(new BigDecimal(month));
-        feeDto.setAmountOwed(price.doubleValue());
+        feeDto.setAmountOwed(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue() + "");
 
     }
 
@@ -360,8 +407,11 @@
         } else {
             feePrice = 0.00;
         }
-
         feeDto.setFeePrice(feePrice);
+        double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate());
+        BigDecimal price = new BigDecimal(feeDto.getFeePrice());
+        price = price.multiply(new BigDecimal(month));
+        feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
 
 
     }
@@ -397,8 +447,11 @@
             feePrice = 0.00;
         }
 
-
         feeDto.setFeePrice(feePrice);
+        double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate());
+        BigDecimal price = new BigDecimal(feeDto.getFeePrice());
+        price = price.multiply(new BigDecimal(month));
+        feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
     }
 
 

--
Gitblit v1.8.0