From 2d079ac843ebcb335f2ef7d6952f9700a16fddde Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 05 五月 2021 14:11:00 +0800
Subject: [PATCH] 游湖阿底阿妈
---
service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java | 91 +++++++++++++++++++++++++++++++--------------
1 files changed, 62 insertions(+), 29 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
old mode 100644
new mode 100755
index 5fffa68..658c9b7
--- 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,6 +1,7 @@
package com.java110.fee.bmo.impl;
import com.alibaba.fastjson.JSONArray;
+import com.java110.core.factory.Java110ThreadPoolFactory;
import com.java110.core.smo.IComputeFeeSMO;
import com.java110.dto.RoomDto;
import com.java110.dto.fee.FeeConfigDto;
@@ -30,7 +31,12 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
@Service
public class QueryOweFeeImpl implements IQueryOweFee {
@@ -176,41 +182,66 @@
return ResultVo.createResponseEntity(ResultVo.CODE_OK, "鎴愬姛", new JSONArray());
}
//鏌ヨ璐圭敤淇℃伅arrearsEndTime
- FeeDto tmpFeeDto = null;
List<RoomDto> tmpRoomDtos = new ArrayList<>();
- for (RoomDto tmpRoomDto : roomDtos) {
- tmpFeeDto = new FeeDto();
- tmpFeeDto.setArrearsEndTime(DateUtil.getCurrentDate());
- tmpFeeDto.setState(FeeDto.STATE_DOING);
- tmpFeeDto.setPayerObjId(tmpRoomDto.getRoomId());
- tmpFeeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
- List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+ List<RoomDto> tempRooms = new ArrayList<>();
+ int threadNum = Java110ThreadPoolFactory.JAVA110_DEFAULT_THREAD_NUM;
- if (feeDtos == null || feeDtos.size() < 1) {
- feeDtos = new ArrayList<>();
- return ResultVo.createResponseEntity(feeDtos);
- }
-
- List<FeeDto> tmpFeeDtos = new ArrayList<>();
- for (FeeDto tempFeeDto : feeDtos) {
- List<RoomDto> tmpCacheRoomDtos = new ArrayList<>();
- tmpCacheRoomDtos.add(tmpRoomDto);
- tempFeeDto.setCacheRooms(tmpCacheRoomDtos);
- computeFeeSMOImpl.computeEveryOweFee(tempFeeDto);//璁$畻娆犺垂閲戦
- //濡傛灉閲戦涓�0 灏辨帓闄�
- if (tempFeeDto.getFeePrice() > 0 && tempFeeDto.getEndTime().getTime() <= DateUtil.getCurrentDate().getTime()) {
- tmpFeeDtos.add(tempFeeDto);
- }
- }
-
- if (tmpFeeDtos.size() < 1) {
+ tempRooms.addAll(doGetTmpRoomDto(roomDtos, feeDto, threadNum));
+ for(RoomDto tmpRoomDto:tempRooms){
+ if(tmpRoomDto == null){
continue;
}
- tmpRoomDto.setFees(tmpFeeDtos);
tmpRoomDtos.add(tmpRoomDto);
}
return ResultVo.createResponseEntity(tmpRoomDtos);
+ }
+
+ private List<RoomDto> doGetTmpRoomDto(List<RoomDto> roomDtos, FeeDto feeDto, int threadNum) {
+ Java110ThreadPoolFactory java110ThreadPoolFactory = null;
+ try {
+ java110ThreadPoolFactory = Java110ThreadPoolFactory.getInstance().createThreadPool(threadNum);
+ for (RoomDto roomDto1 : roomDtos) {
+ java110ThreadPoolFactory.submit(() -> {
+ return getTmpRoomDtos(roomDto1, feeDto);
+ });
+ }
+ return java110ThreadPoolFactory.get();
+ } finally {
+ if (java110ThreadPoolFactory != null) {
+ java110ThreadPoolFactory.stop();
+ }
+ }
+ }
+
+ private RoomDto getTmpRoomDtos(RoomDto tmpRoomDto, FeeDto feeDto) {
+ FeeDto tmpFeeDto = null;
+ tmpFeeDto = new FeeDto();
+ tmpFeeDto.setArrearsEndTime(DateUtil.getCurrentDate());
+ tmpFeeDto.setState(FeeDto.STATE_DOING);
+ tmpFeeDto.setPayerObjId(tmpRoomDto.getRoomId());
+ tmpFeeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+ List<FeeDto> feeDtos = feeInnerServiceSMOImpl.querySimpleFees(tmpFeeDto);
+
+ if (feeDtos == null || feeDtos.size() < 1) {
+ return null;
+ }
+
+ List<FeeDto> tmpFeeDtos = new ArrayList<>();
+ for (FeeDto tempFeeDto : feeDtos) {
+
+ computeFeeSMOImpl.computeEveryOweFee(tempFeeDto, tmpRoomDto);//璁$畻娆犺垂閲戦
+ //濡傛灉閲戦涓�0 灏辨帓闄�
+ if (tempFeeDto.getFeePrice() > 0 && tempFeeDto.getEndTime().getTime() <= DateUtil.getCurrentDate().getTime()) {
+ tmpFeeDtos.add(tempFeeDto);
+ }
+ }
+
+ if (tmpFeeDtos.size() < 1) {
+ return null;
+ }
+ tmpRoomDto.setFees(tmpFeeDtos);
+ return tmpRoomDto;
}
private boolean freshFeeDtoParam(FeeDto feeDto) {
@@ -548,7 +579,9 @@
return targetEndDateAndOweMonth;
}
if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
- if (!StringUtil.isEmpty(feeDto.getCurDegrees())) {
+ if(feeDto.getDeadlineTime() != null){
+ targetEndDate = feeDto.getDeadlineTime();
+ }else if(!StringUtil.isEmpty(feeDto.getCurDegrees())) {
targetEndDate = feeDto.getCurReadingTime();
} else if (feeDto.getImportFeeEndTime() == null) {
targetEndDate = feeDto.getConfigEndTime();
--
Gitblit v1.8.0