From df036edff1c901a4a4f52c41fae67d4a91976c2b Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 23 四月 2026 16:43:08 +0800
Subject: [PATCH] [feat] 巡游打卡统计

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java |   69 +++++++++++++++++++---------------
 1 files changed, 38 insertions(+), 31 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java
index dd85b38..9782f16 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java
@@ -10,12 +10,15 @@
 import com.xiaopeng.maintenance.vo.XpCruiseCheckInRecordQuery;
 import com.xiaopeng.maintenance.vo.XpCruiseCheckInRecordVO;
 import com.xiaopeng.maintenance.vo.XpCruiseCheckInStatisticsQuery;
+import com.xiaopeng.maintenance.vo.XpCruiseCheckInStatisticsVO;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -32,19 +35,27 @@
 
         PageInfo<XpCruiseCheckInRecordVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<XpCruiseCheckInRecordVO> list = xpCruiseCheckInRecordMapper.selectCruiseCheckInRecordList(pageInfo, query);
-        pageInfo.setRecords(list);
 
         List<Long> ids = list.stream().map(XpCruiseCheckInRecordVO::getOperationsUserId).collect(Collectors.toList());
         List<XpOperationsUser> xpOperationsUsers = xpOperationsUserClient.listByIds(ids).getData();
         Map<Long, XpOperationsUser> userMap = xpOperationsUsers.stream().collect(Collectors.toMap(XpOperationsUser::getId, Function.identity()));
-        list.forEach(record -> {
-            XpOperationsUser user = userMap.get(record.getOperationsUserId());
-            if (user != null) {
-                record.setOperationsUserId(user.getId());
-                record.setOperationsUserName(user.getNickName());
-                record.setPhoneNumber(user.getPhoneNumber());
-            }
-        });
+        list = list.stream().map(record -> {
+                    XpOperationsUser user = userMap.get(record.getOperationsUserId());
+                    if (user == null) return null;
+                    record.setOperationsUserId(user.getId());
+                    record.setOperationsUserName(user.getNickName());
+                    record.setPhoneNumber(user.getPhoneNumber());
+                    if (StringUtils.isNotBlank(query.getOperationsUserName()) && !record.getOperationsUserName().contains(query.getOperationsUserName())) {
+                        return null;
+                    }
+                    if (StringUtils.isNotBlank(query.getPhoneNumber()) && !record.getPhoneNumber().contains(query.getPhoneNumber())) {
+                        return null;
+                    }
+                    return record;
+                })
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+        pageInfo.setRecords(list);
 
         return pageInfo;
     }
@@ -65,22 +76,10 @@
     }
 
     @Override
-    public XpCruiseCheckInRecordVO statistics(XpCruiseCheckInStatisticsQuery query) {
+    public XpCruiseCheckInStatisticsVO statistics(XpCruiseCheckInStatisticsQuery query) {
 
-        XpCruiseCheckInRecordVO vo = xpCruiseCheckInRecordMapper.selectCruiseCheckInStatistics(query);
+        return xpCruiseCheckInRecordMapper.selectCruiseCheckInStatistics(query);
 
-        List<Long> ids = Collections.singletonList(vo.getOperationsUserId());
-        List<XpOperationsUser> xpOperationsUsers = xpOperationsUserClient.listByIds(ids).getData();
-        Map<Long, XpOperationsUser> userMap = xpOperationsUsers.stream().collect(Collectors.toMap(XpOperationsUser::getId, Function.identity()));
-
-        XpOperationsUser user = userMap.get(vo.getOperationsUserId());
-        if (user != null) {
-            vo.setOperationsUserId(user.getId());
-            vo.setOperationsUserName(user.getNickName());
-            vo.setPhoneNumber(user.getPhoneNumber());
-        }
-
-        return vo;
     }
 
     @Override
@@ -91,14 +90,22 @@
         List<Long> ids = list.stream().map(XpCruiseCheckInRecordVO::getOperationsUserId).collect(Collectors.toList());
         List<XpOperationsUser> xpOperationsUsers = xpOperationsUserClient.listByIds(ids).getData();
         Map<Long, XpOperationsUser> userMap = xpOperationsUsers.stream().collect(Collectors.toMap(XpOperationsUser::getId, Function.identity()));
-        list.forEach(record -> {
-            XpOperationsUser user = userMap.get(record.getOperationsUserId());
-            if (user != null) {
-                record.setOperationsUserId(user.getId());
-                record.setOperationsUserName(user.getNickName());
-                record.setPhoneNumber(user.getPhoneNumber());
-            }
-        });
+        list = list.stream().map(record -> {
+                    XpOperationsUser user = userMap.get(record.getOperationsUserId());
+                    if (user == null) return null;
+                    record.setOperationsUserId(user.getId());
+                    record.setOperationsUserName(user.getNickName());
+                    record.setPhoneNumber(user.getPhoneNumber());
+                    if (StringUtils.isNotBlank(query.getOperationsUserName()) && !record.getOperationsUserName().contains(query.getOperationsUserName())) {
+                        return null;
+                    }
+                    if (StringUtils.isNotBlank(query.getPhoneNumber()) && !record.getPhoneNumber().contains(query.getPhoneNumber())) {
+                        return null;
+                    }
+                    return record;
+                })
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
 
         return list;
     }

--
Gitblit v1.7.1