lyhzzz 2 gadi atpakaļ
vecāks
revīzija
a2f108ea74

+ 11 - 4
src/main/java/com/fdkankan/tk/service/DataCountService.java

@@ -283,6 +283,8 @@ public class DataCountService {
         endTime = Dateutils.formatEndTime(endTime);
 
         Page<UserMsgVo> page = roomDanmakuService.pageList(new Page<>(pageNum,pageSize) ,roomIds,startTime,endTime);
+        Set<String> roomIdsVo = page.getRecords().stream().map(UserMsgVo::getRoomId).collect(Collectors.toSet());
+        HashMap<String, Room> roomHashMap = roomService.getByIds(roomIdsDb);
 
         HashMap<String,List<RoomVisitLog>> roomVisitLogsMap = new HashMap<>();
         HashMap<String,List<RoomDanmaku>> danmakusMap = new HashMap<>();
@@ -297,7 +299,12 @@ public class DataCountService {
             Date firstOutTime = null;
             Date endOutTime = null;
             for (RoomVisitLog roomVisitLog : roomVisitLogs) {
-                if(roomVisitLog.getOutRoomTime() == null || roomVisitLog.getInRoomTime() == null){
+                Room room = roomHashMap.get(roomVisitLog.getRoomId());
+                if(room == null){
+                    continue;
+                }
+                Date outRoomTime = roomVisitLog.getOutRoomTime() == null ? room.getUseEndTime() : roomVisitLog.getOutRoomTime();
+                if(outRoomTime == null || roomVisitLog.getInRoomTime() == null){
                     continue;
                 }
                 if(firstOutTime == null){
@@ -306,11 +313,11 @@ public class DataCountService {
                     firstOutTime = firstOutTime.getTime() <= roomVisitLog.getInRoomTime().getTime() ? firstOutTime : roomVisitLog.getInRoomTime();
                 }
                 if(endOutTime == null){
-                    endOutTime = roomVisitLog.getOutRoomTime();
+                    endOutTime = outRoomTime;
                 }else {
-                    endOutTime = endOutTime.getTime() >= roomVisitLog.getOutRoomTime().getTime() ? endOutTime : roomVisitLog.getOutRoomTime();
+                    endOutTime = endOutTime.getTime() >= outRoomTime.getTime() ? endOutTime : outRoomTime;
                 }
-                time += (roomVisitLog.getOutRoomTime().getTime() - roomVisitLog.getInRoomTime().getTime());
+                time += (outRoomTime.getTime() - roomVisitLog.getInRoomTime().getTime());
             }
             List<RoomDanmaku> danmakus  = danmakusMap.get(record.getRoomId()+record.getWxUserId());
             if(danmakus == null){