From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能
---
service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java | 269 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 265 insertions(+), 4 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 f6e429e..d341301 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,16 +1,20 @@
package com.java110.report.bmo.reportOweFee.impl;
import com.java110.dto.reportOweFee.ReportOweFeeDto;
+import com.java110.dto.reportOweFee.ReportOweFeeItemDto;
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;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.List;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.*;
@Service("getReportOweFeeBMOImpl")
public class GetReportOweFeeBMOImpl implements IGetReportOweFeeBMO {
@@ -18,22 +22,34 @@
@Autowired
private IReportOweFeeInnerServiceSMO reportOweFeeInnerServiceSMOImpl;
+
/**
* @param reportOweFeeDto
* @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
*/
public ResponseEntity<String> get(ReportOweFeeDto reportOweFeeDto) {
-
+ reportOweFeeDto.setHasOweFee("Y");
int count = reportOweFeeInnerServiceSMOImpl.queryReportOweFeesCount(reportOweFeeDto);
List<ReportOweFeeDto> reportOweFeeDtos = null;
if (count > 0) {
reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportOweFees(reportOweFeeDto);
+ refreshReportOwe(reportOweFeeDtos, reportOweFeeDto.getConfigIds());
+ //鏌ヨ澶ц 鍚堣
+ dealTheOweFeeSumAmount(reportOweFeeDtos, reportOweFeeDto);
} else {
reportOweFeeDtos = new ArrayList<>();
}
-
+ //鎸夌収 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);
@@ -41,4 +57,249 @@
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());
+ }
+ }
+
+ /**
+ * 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 (oldReportOweFeeDtos == null || oldReportOweFeeDtos.size() < 1) {
+ return;
+ }
+
+ for (ReportOweFeeDto reportOweFeeDto : oldReportOweFeeDtos) {
+ payObjIds.add(reportOweFeeDto.getPayerObjId());
+ }
+ ReportOweFeeDto reportOweFeeDto = new ReportOweFeeDto();
+ reportOweFeeDto.setPayerObjIds(payObjIds.toArray(new String[payObjIds.size()]));
+ 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());
+ reportOweFee.setOwnerTel(reportOweFees.get(0).getOwnerTel());
+ } else if (reportOweFee.getPayerObjType().equals("6666")) {
+ List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFeesByCar(reportOwe);
+ reportOweFee.setOweId(reportOweFees.get(0).getOweId());
+ reportOweFee.setOwnerName(reportOweFees.get(0).getOwnerName());
+ reportOweFee.setOwnerTel(reportOweFees.get(0).getOwnerTel());
+ }
+ reportOweFeeDtos.add(reportOweFee);
+ }
+ for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
+ dealItem(tmpReportOweFeeDto, reportOweFeeDtos);
+ }
+
+
+ if (configIds == null || configIds.length < 1) {
+ return;
+ }
+
+ //濡傛灉璐圭敤瀵硅薄涓婃病鏈夎繖涓垂鐢ㄩ」鏃堕粯璁ゅ啓闆�
+ for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
+ for (String configId : configIds) {
+ 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);
+ }
+ }
+
+ }
+
+ private void dealItem(ReportOweFeeDto oldReportOweFeeDto, List<ReportOweFeeDto> allReportOweFeeDtos) {
+ List<ReportOweFeeItemDto> items = new ArrayList<>();
+ if (allReportOweFeeDtos == null || allReportOweFeeDtos.size() < 1) {
+ return;
+ }
+
+ ReportOweFeeItemDto reportOweFeeItemDto = null;
+ for (ReportOweFeeDto reportOweFeeDto : allReportOweFeeDtos) {
+ if (!oldReportOweFeeDto.getPayerObjId().equals(reportOweFeeDto.getPayerObjId())) {
+ continue;
+ }
+ reportOweFeeItemDto = hasItem(items, reportOweFeeDto.getConfigId());
+ if (reportOweFeeItemDto == null) {
+ reportOweFeeItemDto = new ReportOweFeeItemDto();
+ reportOweFeeItemDto.setConfigId(reportOweFeeDto.getConfigId());
+ reportOweFeeItemDto.setFeeName(reportOweFeeDto.getFeeName());
+ 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));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ items.add(reportOweFeeItemDto);
+ } else {
+ BigDecimal oldAmount = new BigDecimal(Double.parseDouble(reportOweFeeItemDto.getAmountOwed()));
+ oldAmount = oldAmount.add(new BigDecimal(Double.parseDouble(reportOweFeeDto.getAmountOwed()))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ reportOweFeeItemDto.setAmountOwed(oldAmount.doubleValue() + "");
+ }
+ if (!StringUtil.isEmpty(reportOweFeeDto.getOwnerName()) && StringUtil.isEmpty(oldReportOweFeeDto.getOwnerName())) {
+ oldReportOweFeeDto.setOwnerName(reportOweFeeDto.getOwnerName());
+ }
+ oldReportOweFeeDto.setUpdateTime(reportOweFeeDto.getUpdateTime());
+ oldReportOweFeeDto.setConfigName(reportOweFeeDto.getConfigName());
+ }
+
+ //璁$畻鎬婚噾棰�
+ BigDecimal totalAmount = new BigDecimal(0);
+ Date startTime = null;
+ Date endTime = null;
+ for (ReportOweFeeItemDto tempReportOweFeeItemDto : items) {
+ if (startTime == null) {
+ startTime = tempReportOweFeeItemDto.getStartTime();
+ }
+ if (startTime.getTime() > tempReportOweFeeItemDto.getStartTime().getTime()) {
+ startTime = tempReportOweFeeItemDto.getStartTime();
+ }
+ if (endTime == null) {
+ endTime = tempReportOweFeeItemDto.getEndTime();
+ }
+ if (endTime.getTime() < tempReportOweFeeItemDto.getEndTime().getTime()) {
+ endTime = tempReportOweFeeItemDto.getEndTime();
+ }
+ totalAmount = totalAmount.add(new BigDecimal(Double.parseDouble(tempReportOweFeeItemDto.getAmountOwed()))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ }
+ 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) {
+ if (reportOweFeeItemDtos == null || reportOweFeeItemDtos.size() < 1) {
+ return null;
+ }
+ for (ReportOweFeeItemDto reportOweFeeItemDto : reportOweFeeItemDtos) {
+ if (reportOweFeeItemDto.getConfigId().equals(configId)) {
+ return reportOweFeeItemDto;
+ }
+ }
+
+ return null;
+ }
+
}
--
Gitblit v1.8.0