|
@@ -1,7 +1,9 @@
|
|
|
package com.hfln.portal.infrastructure.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.hfln.portal.common.request.event.WebInOutParams;
|
|
@@ -11,8 +13,10 @@ import com.hfln.portal.infrastructure.service.PersonInOutService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
@@ -58,4 +62,30 @@ public class PersonInOutServiceImpl extends ServiceImpl<PersonInOutMapper, Perso
|
|
|
queryWrapper.orderByDesc(PersonInOutInfo::getCreateTime);
|
|
|
return this.baseMapper.selectPage(page, queryWrapper);
|
|
|
}
|
|
|
-}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<Long, Integer> batchPersonInOutCount(Set<Long> devIds) {
|
|
|
+ if (CollectionUtils.isEmpty(devIds)){
|
|
|
+ return Collections.emptyMap();
|
|
|
+ }
|
|
|
+
|
|
|
+ LocalDateTime start = LocalDate.now().atStartOfDay();
|
|
|
+ LocalDateTime end = start.plusDays(1);
|
|
|
+
|
|
|
+ // 批量统计 sql
|
|
|
+ List<Map<String, Object>> countList = this.baseMapper.selectMaps(
|
|
|
+ new QueryWrapper<PersonInOutInfo>()
|
|
|
+ .select("dev_id, COUNT(*) AS cnt")
|
|
|
+ .in("dev_id", devIds)
|
|
|
+ .between("create_time", start, end)
|
|
|
+ .groupBy("dev_id")
|
|
|
+ );
|
|
|
+
|
|
|
+ // 转成 Map<devId, count>
|
|
|
+ return countList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ m -> ((Number) m.get("dev_id")).longValue(),
|
|
|
+ m -> ((Number) m.get("cnt")).intValue()
|
|
|
+ ));
|
|
|
+ }
|
|
|
+}
|