From 1024666b99a24bd7d5e4dc442d6b0c0319fa2f29 Mon Sep 17 00:00:00 2001
From: xiaogang <905166056@qq.com>
Date: 星期六, 17 七月 2021 22:56:48 +0800
Subject: [PATCH] 1、优化细节性问题2、优化采购细节问题

---
 service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java |  138 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 118 insertions(+), 20 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 2a22256..f00c83a 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
@@ -5,6 +5,7 @@
 import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
 import com.java110.report.bmo.reportOweFee.IGetReportOweFeeBMO;
 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.HttpStatus;
@@ -48,26 +49,117 @@
         return responseEntity;
     }
 
-    private void refreshReportOwe(List<ReportOweFeeDto> reportOweFeeDtos, String[] configIds) {
+    /**
+     * query all owe fee
+     *
+     * @param reportOweFeeDto
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> getAllFees(ReportOweFeeDto reportOweFeeDto) {
+        //
+        List<ReportOweFeeDto> allReportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
+        if (allReportOweFeeDtos == null || allReportOweFeeDtos.size() < 1) {
+            return ResultVo.createResponseEntity(allReportOweFeeDtos);
+        }
+
+        //get old report owe fee
+        List<ReportOweFeeDto> oldReportOweFeeDtos = new ArrayList<>();
+        ReportOweFeeDto oldReportOweFeeDto = null;
+        for (ReportOweFeeDto tmpReportOweFeeDto : allReportOweFeeDtos) {
+            if (existsOweFee(oldReportOweFeeDtos, tmpReportOweFeeDto.getPayerObjId())) {
+                continue;
+            }
+            oldReportOweFeeDto = new ReportOweFeeDto();
+            oldReportOweFeeDto.setPayerObjId(tmpReportOweFeeDto.getPayerObjId());
+
+            oldReportOweFeeDtos.add(oldReportOweFeeDto);
+        }
+
+        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
+            dealItem(tmpReportOweFeeDto, allReportOweFeeDtos);
+        }
+
+        if (reportOweFeeDto.getConfigIds() == null || reportOweFeeDto.getConfigIds().length < 1) {
+            return ResultVo.createResponseEntity(oldReportOweFeeDtos);
+        }
+
+        //濡傛灉璐圭敤瀵硅薄涓婃病鏈夎繖涓垂鐢ㄩ」鏃堕粯璁ゅ啓闆�
+        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
+            for (String configId : reportOweFeeDto.getConfigIds()) {
+                if (hasItem(tmpReportOweFeeDto.getItems(), configId) != null) {
+                    continue;
+                }
+                ReportOweFeeItemDto reportOweFeeItemDto = new ReportOweFeeItemDto();
+                reportOweFeeItemDto.setConfigId(configId);
+                reportOweFeeItemDto.setFeeName("");
+                reportOweFeeItemDto.setAmountOwed("0");
+                reportOweFeeItemDto.setPayerObjId("");
+                reportOweFeeItemDto.setPayerObjName("");
+                tmpReportOweFeeDto.getItems().add(reportOweFeeItemDto);
+            }
+        }
+        return ResultVo.createResponseEntity(oldReportOweFeeDtos);
+    }
+
+    /**
+     * exists owe fee in oldReportOweFeeDtos
+     * true is exists false is not
+     *
+     * @param oldReportOweFeeDtos
+     * @param payerObjId
+     * @return
+     */
+    private boolean existsOweFee(List<ReportOweFeeDto> oldReportOweFeeDtos, String payerObjId) {
+        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
+            // if equal return true
+            if (tmpReportOweFeeDto.getPayerObjId().equals(payerObjId)) {
+                return true;
+            }
+
+        }
+        //default return false
+        return false;
+    }
+
+    private void refreshReportOwe(List<ReportOweFeeDto> oldReportOweFeeDtos, String[] configIds) {
         List<String> payObjIds = new ArrayList<>();
 
-        if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
+        if (oldReportOweFeeDtos == null || oldReportOweFeeDtos.size() < 1) {
             return;
         }
 
-        for (ReportOweFeeDto reportOweFeeDto : reportOweFeeDtos) {
+        for (ReportOweFeeDto reportOweFeeDto : oldReportOweFeeDtos) {
             payObjIds.add(reportOweFeeDto.getPayerObjId());
         }
         ReportOweFeeDto reportOweFeeDto = new ReportOweFeeDto();
         reportOweFeeDto.setPayerObjIds(payObjIds.toArray(new String[payObjIds.size()]));
-        reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
-
-        for (ReportOweFeeDto tmpReportOweFeeDto : reportOweFeeDtos) {
+        List<ReportOweFeeDto> allReportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
+        List<ReportOweFeeDto> reportOweFeeDtos = new ArrayList<>();
+        for (ReportOweFeeDto reportOweFee : allReportOweFeeDtos) {
+            ReportOweFeeDto reportOwe = new ReportOweFeeDto();
+            reportOwe.setOweId(reportOweFee.getOweId());
+            if (reportOweFee.getPayerObjType().equals("3333")) {
+                List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFeesByRoom(reportOwe);
+                reportOweFee.setOweId(reportOweFees.get(0).getOweId());
+                reportOweFee.setOwnerName(reportOweFees.get(0).getOwnerName());
+            } else if (reportOweFee.getPayerObjType().equals("6666")) {
+                List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFeesByCar(reportOwe);
+                reportOweFee.setOweId(reportOweFees.get(0).getOweId());
+                reportOweFee.setOwnerName(reportOweFees.get(0).getOwnerName());
+            }
+            reportOweFeeDtos.add(reportOweFee);
+        }
+        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
             dealItem(tmpReportOweFeeDto, reportOweFeeDtos);
         }
 
+        if (configIds == null || configIds.length < 1) {
+            return;
+        }
+
         //濡傛灉璐圭敤瀵硅薄涓婃病鏈夎繖涓垂鐢ㄩ」鏃堕粯璁ゅ啓闆�
-        for (ReportOweFeeDto tmpReportOweFeeDto : reportOweFeeDtos) {
+        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
             for (String configId : configIds) {
                 if (hasItem(tmpReportOweFeeDto.getItems(), configId) != null) {
                     continue;
@@ -84,15 +176,15 @@
 
     }
 
-    private void dealItem(ReportOweFeeDto tmpReportOweFeeDto, List<ReportOweFeeDto> reportOweFeeDtos) {
+    private void dealItem(ReportOweFeeDto oldReportOweFeeDto, List<ReportOweFeeDto> allReportOweFeeDtos) {
         List<ReportOweFeeItemDto> items = new ArrayList<>();
-        if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
+        if (allReportOweFeeDtos == null || allReportOweFeeDtos.size() < 1) {
             return;
         }
 
         ReportOweFeeItemDto reportOweFeeItemDto = null;
-        for (ReportOweFeeDto reportOweFeeDto : reportOweFeeDtos) {
-            if (!tmpReportOweFeeDto.getPayerObjId().equals(reportOweFeeDto.getPayerObjId())) {
+        for (ReportOweFeeDto reportOweFeeDto : allReportOweFeeDtos) {
+            if (!oldReportOweFeeDto.getPayerObjId().equals(reportOweFeeDto.getPayerObjId())) {
                 continue;
             }
             reportOweFeeItemDto = hasItem(items, reportOweFeeDto.getConfigId());
@@ -103,6 +195,7 @@
                 reportOweFeeItemDto.setAmountOwed(reportOweFeeDto.getAmountOwed());
                 reportOweFeeItemDto.setPayerObjId(reportOweFeeDto.getPayerObjId());
                 reportOweFeeItemDto.setPayerObjName(reportOweFeeDto.getPayerObjName());
+                reportOweFeeItemDto.setConfigName(reportOweFeeDto.getConfigName());
                 try {
                     reportOweFeeItemDto.setStartTime(DateUtil.getDateFromString(reportOweFeeDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
                     reportOweFeeItemDto.setEndTime(DateUtil.getDateFromString(reportOweFeeDto.getDeadlineTime(), DateUtil.DATE_FORMATE_STRING_A));
@@ -112,10 +205,14 @@
                 items.add(reportOweFeeItemDto);
             } else {
                 BigDecimal oldAmount = new BigDecimal(Double.parseDouble(reportOweFeeItemDto.getAmountOwed()));
-                oldAmount = oldAmount.add(new BigDecimal(Double.parseDouble(reportOweFeeDto.getAmountOwed())));
+                oldAmount = oldAmount.add(new BigDecimal(Double.parseDouble(reportOweFeeDto.getAmountOwed()))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                 reportOweFeeItemDto.setAmountOwed(oldAmount.doubleValue() + "");
             }
-            tmpReportOweFeeDto.setOwnerName(reportOweFeeDto.getOwnerName());
+            if (!StringUtil.isEmpty(reportOweFeeDto.getOwnerName())) {
+                oldReportOweFeeDto.setOwnerName(reportOweFeeDto.getOwnerName());
+            }
+            oldReportOweFeeDto.setUpdateTime(reportOweFeeDto.getUpdateTime());
+            oldReportOweFeeDto.setConfigName(reportOweFeeDto.getConfigName());
         }
 
         //璁$畻鎬婚噾棰�
@@ -133,15 +230,16 @@
                 endTime = tempReportOweFeeItemDto.getEndTime();
             }
             if (endTime.getTime() < tempReportOweFeeItemDto.getEndTime().getTime()) {
-                endTime = tempReportOweFeeItemDto.getStartTime();
+                endTime = tempReportOweFeeItemDto.getEndTime();
             }
-            totalAmount = totalAmount.add(new BigDecimal(Double.parseDouble(tempReportOweFeeItemDto.getAmountOwed())));
+            totalAmount = totalAmount.add(new BigDecimal(Double.parseDouble(tempReportOweFeeItemDto.getAmountOwed()))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
         }
-        tmpReportOweFeeDto.setEndTime(DateUtil.getFormatTimeString(startTime, DateUtil.DATE_FORMATE_STRING_A));
-        tmpReportOweFeeDto.setDeadlineTime(DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_A));
-        tmpReportOweFeeDto.setItems(items);
-        tmpReportOweFeeDto.setPayerObjName(items.get(0).getPayerObjName());
-        tmpReportOweFeeDto.setAmountOwed(totalAmount.doubleValue() + "");
+        oldReportOweFeeDto.setEndTime(DateUtil.getFormatTimeString(startTime, DateUtil.DATE_FORMATE_STRING_A));
+        oldReportOweFeeDto.setDeadlineTime(DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_A));
+        oldReportOweFeeDto.setItems(items);
+        oldReportOweFeeDto.setPayerObjName(items.get(0).getPayerObjName());
+        oldReportOweFeeDto.setAmountOwed(totalAmount.doubleValue() + "");
+
     }
 
     private ReportOweFeeItemDto hasItem(List<ReportOweFeeItemDto> reportOweFeeItemDtos, String configId) {

--
Gitblit v1.8.0