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/impl/QueryOweFeeImpl.java |   39 ++++++++++++++++++++++-----------------
 1 files changed, 22 insertions(+), 17 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
index 018feec..b99f8ac 100644
--- 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
@@ -184,29 +184,34 @@
         //鏌ヨ璐圭敤淇℃伅arrearsEndTime
         List<RoomDto> tmpRoomDtos = new ArrayList<>();
         List<RoomDto> tempRooms = new ArrayList<>();
-        int threadNum = 20;
-        for (int roomIndex = 0; roomIndex < roomDtos.size(); roomIndex++) {
-            tempRooms.add(roomDtos.get(roomIndex));
-            if (roomIndex % threadNum == 0 && roomIndex != 0) {
-                tmpRoomDtos.addAll(doGetTmpRoomDto(tempRooms, feeDto, threadNum));
-                tempRooms = new ArrayList();
+        int threadNum = Java110ThreadPoolFactory.JAVA110_DEFAULT_THREAD_NUM;
+
+        tempRooms.addAll(doGetTmpRoomDto(roomDtos, feeDto, threadNum));
+        for(RoomDto tmpRoomDto:tempRooms){
+            if(tmpRoomDto == null){
+                continue;
             }
-        }
-        if (tempRooms.size() > 0) {
-            tmpRoomDtos.addAll(doGetTmpRoomDto(tempRooms, feeDto, tempRooms.size()));
+            tmpRoomDtos.add(tmpRoomDto);
         }
 
         return ResultVo.createResponseEntity(tmpRoomDtos);
     }
 
     private List<RoomDto> doGetTmpRoomDto(List<RoomDto> roomDtos, FeeDto feeDto, int threadNum) {
-        Java110ThreadPoolFactory java110ThreadPoolFactory = Java110ThreadPoolFactory.getInstance().createThreadPool(threadNum);
-        for (RoomDto roomDto1 : roomDtos) {
-            java110ThreadPoolFactory.submit(() -> {
-                return getTmpRoomDtos(roomDto1, feeDto);
-            });
+        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();
+            }
         }
-        return java110ThreadPoolFactory.get();
     }
 
     private RoomDto getTmpRoomDtos(RoomDto tmpRoomDto, FeeDto feeDto) {
@@ -216,7 +221,7 @@
         tmpFeeDto.setState(FeeDto.STATE_DOING);
         tmpFeeDto.setPayerObjId(tmpRoomDto.getRoomId());
         tmpFeeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
-        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.querySimpleFees(tmpFeeDto);
 
         if (feeDtos == null || feeDtos.size() < 1) {
             return null;
@@ -225,7 +230,7 @@
         List<FeeDto> tmpFeeDtos = new ArrayList<>();
         for (FeeDto tempFeeDto : feeDtos) {
 
-            computeFeeSMOImpl.computeEveryOweFee(tempFeeDto);//璁$畻娆犺垂閲戦
+            computeFeeSMOImpl.computeEveryOweFee(tempFeeDto, tmpRoomDto);//璁$畻娆犺垂閲戦
             //濡傛灉閲戦涓�0 灏辨帓闄�
             if (tempFeeDto.getFeePrice() > 0 && tempFeeDto.getEndTime().getTime() <= DateUtil.getCurrentDate().getTime()) {
                 tmpFeeDtos.add(tempFeeDto);

--
Gitblit v1.8.0