From 28e7d3937f819a3486b22bfa1c84aee172aaccb4 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 17 一月 2022 17:46:42 +0800
Subject: [PATCH] 优化代码

---
 service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java |   78 +++++++++++++++++++++++++++-----------
 1 files changed, 55 insertions(+), 23 deletions(-)

diff --git a/service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java b/service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java
index b678b44..8aea170 100644
--- a/service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java
+++ b/service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java
@@ -1,6 +1,5 @@
 package com.java110.report.bmo.reportOweFee.impl;
 
-import com.java110.dto.PageDto;
 import com.java110.dto.reportOweFee.ReportOweFeeDto;
 import com.java110.dto.reportOweFee.ReportOweFeeItemDto;
 import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
@@ -15,9 +14,7 @@
 
 import java.math.BigDecimal;
 import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service("getReportOweFeeBMOImpl")
 public class GetReportOweFeeBMOImpl implements IGetReportOweFeeBMO {
@@ -32,35 +29,69 @@
      */
     public ResponseEntity<String> get(ReportOweFeeDto reportOweFeeDto) {
 
-
+        reportOweFeeDto.setHasOweFee("Y");
         int count = reportOweFeeInnerServiceSMOImpl.queryReportOweFeesCount(reportOweFeeDto);
 
-        List<ReportOweFeeDto> reportOweFeeDtos = new ArrayList<>();
+        List<ReportOweFeeDto> reportOweFeeDtos = null;
         if (count > 0) {
-            reportOweFeeDto.setPage(PageDto.DEFAULT_PAGE);
-            List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportOweFees(reportOweFeeDto);
-            refreshReportOwe(reportOweFees, reportOweFeeDto.getConfigIds());
-            for (ReportOweFeeDto reportOweFee : reportOweFees) {
-                //鑾峰彇娆犺垂鎬婚噾棰�
-                String amountOwed = reportOweFee.getAmountOwed();
-                if (!StringUtil.isEmpty(amountOwed)) {
-                    double amountOwedMoney = Double.parseDouble(amountOwed);
-                    if (amountOwedMoney > 0.0) {
-                        reportOweFeeDtos.add(reportOweFee);
-                    } else {
-                        continue;
-                    }
-                }
-            }
+            reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportOweFees(reportOweFeeDto);
+            refreshReportOwe(reportOweFeeDtos, reportOweFeeDto.getConfigIds());
+            //鏌ヨ澶ц 鍚堣
+            dealTheOweFeeSumAmount(reportOweFeeDtos, reportOweFeeDto);
         } else {
             reportOweFeeDtos = new ArrayList<>();
         }
-
-        ResultVo resultVo = new ResultVo((int) Math.ceil((double) reportOweFeeDtos.size() / (double) reportOweFeeDto.getRow()), reportOweFeeDtos.size(), reportOweFeeDtos);
+        //鎸夌収 amountOwed 闄嶅簭鎺掑垪
+        // reportOweFeeDtos.sort(Comparator.comparing(ReportOweFeeDto :: getAmountOwed).reversed());
+        Collections.sort(reportOweFeeDtos, new Comparator<ReportOweFeeDto>() {
+            @Override
+            public int compare(ReportOweFeeDto o1, ReportOweFeeDto o2) {
+                //闄嶅簭
+                return o2.getAmountOwed().compareTo(o1.getAmountOwed());
+            }
+        });
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportOweFeeDto.getRow()), count, reportOweFeeDtos);
 
         ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
 
         return responseEntity;
+    }
+
+    /**
+     * 鏌ヨ澶ц 鎬绘瑺璐� 鍜� 鍚勪釜璐圭敤椤规�绘瑺璐�
+     *
+     * @param reportOweFeeDtos
+     * @param reportOweFeeDto
+     */
+    private void dealTheOweFeeSumAmount(List<ReportOweFeeDto> reportOweFeeDtos, ReportOweFeeDto reportOweFeeDto) {
+        if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
+            return;
+        }
+        //鏌ヨ鎬昏
+        double totalAmount = 0.0;
+        if (reportOweFeeDto.getConfigIds() == null || reportOweFeeDto.getConfigIds().length < 1) {
+            totalAmount = reportOweFeeInnerServiceSMOImpl.computeReportOweFeeTotalAmount(reportOweFeeDto);
+            for (ReportOweFeeDto reportOweFeeDto1 : reportOweFeeDtos) {
+                reportOweFeeDto1.setTotalOweAmount(totalAmount);
+            }
+            return;
+        }
+
+        //璁$畻鍒嗛」鐨勭疮璁″��
+        List<ReportOweFeeItemDto> reportOweFeeItemDtos = reportOweFeeInnerServiceSMOImpl.computeReportOweFeeItemAmount(reportOweFeeDto);
+
+        if (reportOweFeeItemDtos == null || reportOweFeeItemDtos.size() < 1) {
+            return;
+        }
+        BigDecimal totalAmountDes = new BigDecimal(totalAmount);
+        for (ReportOweFeeItemDto tmpReportOweFeeItemDto : reportOweFeeItemDtos) {
+            totalAmountDes = totalAmountDes.add(new BigDecimal(tmpReportOweFeeItemDto.getTotalOweAmount())).setScale(2, BigDecimal.ROUND_HALF_UP);
+        }
+
+        for (ReportOweFeeDto reportOweFeeDto1 : reportOweFeeDtos) {
+            reportOweFeeDto1.setItemTotalOweAmounts(reportOweFeeItemDtos);
+            reportOweFeeDto1.setTotalOweAmount(totalAmountDes.doubleValue());
+        }
     }
 
     /**
@@ -167,6 +198,7 @@
             dealItem(tmpReportOweFeeDto, reportOweFeeDtos);
         }
 
+
         if (configIds == null || configIds.length < 1) {
             return;
         }

--
Gitblit v1.8.0