java110
2021-05-05 2d079ac843ebcb335f2ef7d6952f9700a16fddde
service-fee/src/main/java/com/java110/fee/bmo/impl/QueryOweFeeImpl.java
old mode 100644 new mode 100755
@@ -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);
@@ -574,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();