From 6543cd42661e2f55b28bdc354022a57885d549de Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 04 三月 2021 09:19:49 +0800
Subject: [PATCH] 优化公摊问题

---
 service-fee/src/main/java/com/java110/fee/bmo/feeDiscount/impl/GetFeeDiscountBMOImpl.java |   99 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 99 insertions(+), 0 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/bmo/feeDiscount/impl/GetFeeDiscountBMOImpl.java b/service-fee/src/main/java/com/java110/fee/bmo/feeDiscount/impl/GetFeeDiscountBMOImpl.java
index 1f6a88f..896f43f 100644
--- a/service-fee/src/main/java/com/java110/fee/bmo/feeDiscount/impl/GetFeeDiscountBMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/bmo/feeDiscount/impl/GetFeeDiscountBMOImpl.java
@@ -1,8 +1,12 @@
 package com.java110.fee.bmo.feeDiscount.impl;
 
 import com.java110.dto.feeDiscount.FeeDiscountDto;
+import com.java110.dto.feeDiscountSpec.FeeDiscountSpecDto;
+import com.java110.dto.payFeeDetailDiscount.PayFeeDetailDiscountDto;
 import com.java110.fee.bmo.feeDiscount.IGetFeeDiscountBMO;
 import com.java110.intf.fee.IFeeDiscountInnerServiceSMO;
+import com.java110.intf.fee.IFeeDiscountSpecInnerServiceSMO;
+import com.java110.intf.fee.IPayFeeDetailDiscountInnerServiceSMO;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -18,6 +22,12 @@
     @Autowired
     private IFeeDiscountInnerServiceSMO feeDiscountInnerServiceSMOImpl;
 
+    @Autowired
+    private IFeeDiscountSpecInnerServiceSMO feeDiscountSpecInnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeDetailDiscountInnerServiceSMO payFeeDetailDiscountInnerServiceSMOImpl;
+
     /**
      * @param feeDiscountDto
      * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
@@ -30,6 +40,7 @@
         List<FeeDiscountDto> feeDiscountDtos = null;
         if (count > 0) {
             feeDiscountDtos = feeDiscountInnerServiceSMOImpl.queryFeeDiscounts(feeDiscountDto);
+            freshDiscountSpec(feeDiscountDtos);
         } else {
             feeDiscountDtos = new ArrayList<>();
         }
@@ -41,4 +52,92 @@
         return responseEntity;
     }
 
+    @Override
+    public ResponseEntity<String> getFeeDetailDiscount(PayFeeDetailDiscountDto payFeeDetailDiscountDto) {
+
+        int count = payFeeDetailDiscountInnerServiceSMOImpl.queryPayFeeDetailDiscountsCount(payFeeDetailDiscountDto);
+
+        List<PayFeeDetailDiscountDto> feeDetailDiscountDtos = null;
+        if (count > 0) {
+            feeDetailDiscountDtos = payFeeDetailDiscountInnerServiceSMOImpl.queryPayFeeDetailDiscounts(payFeeDetailDiscountDto);
+            freshDiscountDetailSpec(feeDetailDiscountDtos);
+        } else {
+            feeDetailDiscountDtos = new ArrayList<>();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) payFeeDetailDiscountDto.getRow()), count, feeDetailDiscountDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+    private void freshDiscountDetailSpec(List<PayFeeDetailDiscountDto> feeDetailDiscountDtos) {
+
+        if (feeDetailDiscountDtos == null || feeDetailDiscountDtos.size() < 1) {
+            return;
+        }
+
+        List<String> discountIds = new ArrayList<>();
+        for (PayFeeDetailDiscountDto feeDetailDiscountDto : feeDetailDiscountDtos) {
+            discountIds.add(feeDetailDiscountDto.getDiscountId());
+        }
+
+        FeeDiscountSpecDto tmpFeeDiscountSpecDto = new FeeDiscountSpecDto();
+
+        tmpFeeDiscountSpecDto.setDiscountIds(discountIds.toArray(new String[discountIds.size()]));
+        tmpFeeDiscountSpecDto.setCommunityId(feeDetailDiscountDtos.get(0).getCommunityId());
+
+        List<FeeDiscountSpecDto> feeDiscountSpecDtos = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(tmpFeeDiscountSpecDto);
+
+        if (feeDiscountSpecDtos == null || feeDiscountSpecDtos.size() < 1) {
+            return;
+        }
+        List<FeeDiscountSpecDto> tmpSpecs = null;
+        for (PayFeeDetailDiscountDto feeDetailDiscountDto : feeDetailDiscountDtos) {
+            tmpSpecs = new ArrayList<>();
+            for (FeeDiscountSpecDto feeDiscountSpecDto : feeDiscountSpecDtos) {
+                if (feeDetailDiscountDto.getDiscountId().equals(feeDiscountSpecDto.getDiscountId())) {
+                    tmpSpecs.add(feeDiscountSpecDto);
+
+                }
+            }
+            feeDetailDiscountDto.setFeeDiscountSpecs(tmpSpecs);
+        }
+    }
+
+    private void freshDiscountSpec(List<FeeDiscountDto> feeDiscountDtos) {
+
+        if (feeDiscountDtos == null || feeDiscountDtos.size() < 1) {
+            return;
+        }
+
+        List<String> discountIds = new ArrayList<>();
+        for (FeeDiscountDto feeDiscountDto : feeDiscountDtos) {
+            discountIds.add(feeDiscountDto.getDiscountId());
+        }
+
+        FeeDiscountSpecDto tmpFeeDiscountSpecDto = new FeeDiscountSpecDto();
+
+        tmpFeeDiscountSpecDto.setDiscountIds(discountIds.toArray(new String[discountIds.size()]));
+        tmpFeeDiscountSpecDto.setCommunityId(feeDiscountDtos.get(0).getCommunityId());
+
+        List<FeeDiscountSpecDto> feeDiscountSpecDtos = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(tmpFeeDiscountSpecDto);
+
+        if (feeDiscountSpecDtos == null || feeDiscountSpecDtos.size() < 1) {
+            return;
+        }
+        List<FeeDiscountSpecDto> tmpSpecs = null;
+        for (FeeDiscountDto feeDiscountDto : feeDiscountDtos) {
+            tmpSpecs = new ArrayList<>();
+            for (FeeDiscountSpecDto feeDiscountSpecDto : feeDiscountSpecDtos) {
+                if (feeDiscountDto.getDiscountId().equals(feeDiscountSpecDto.getDiscountId())) {
+                    tmpSpecs.add(feeDiscountSpecDto);
+
+                }
+            }
+            feeDiscountDto.setFeeDiscountSpecs(tmpSpecs);
+        }
+    }
+
 }

--
Gitblit v1.8.0