From 9a2ff8ac884e88631cd24f751a40600f25579213 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 14 二月 2026 17:26:06 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpClockInServiceImpl.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpClockInServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpClockInServiceImpl.java
index 9dc8c47..f0f37b9 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpClockInServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpClockInServiceImpl.java
@@ -1,9 +1,9 @@
 package com.xiaopeng.maintenance.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.api.model.maintenance.XpCheckLocation;
 import com.xiaopeng.api.model.maintenance.XpClockIn;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.api.model.maintenance.XpShift;
 import com.xiaopeng.common.core.domain.R;
 import com.xiaopeng.common.core.utils.DateUtils;
@@ -14,15 +14,22 @@
 import com.xiaopeng.maintenance.mapper.XpClockInMapper;
 import com.xiaopeng.maintenance.mapper.XpShiftMapper;
 import com.xiaopeng.maintenance.service.IXpClockInService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
 import java.util.Objects;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
 
 /**
  * <p>
@@ -32,6 +39,7 @@
  * @author mitao
  * @since 2026-02-03
  */
+@Slf4j
 @Service
 public class XpClockInServiceImpl extends ServiceImpl<XpClockInMapper, XpClockIn> implements IXpClockInService {
 
@@ -144,4 +152,45 @@
         this.updateById(xpClockIn);
         return R.ok();
     }
+    @Override
+    public Boolean checkWorkStatus(Long appUserId) {
+        if (appUserId == null) {
+            log.warn("检查上班状态失败: appUserId 为空");
+            return false;
+        }
+
+        try {
+            // 1. 计算当天时间范围
+            LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); // 00:00:00
+            LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);   // 23:59:59
+
+            // 2. 计算分表后缀 (userId % 10)
+            Integer tableSuffix = (int) (appUserId % 10);
+
+            // 3. 查询当天打卡记录
+            List<XpClockIn> records = baseMapper.selectTodayClockInRecords(
+                tableSuffix, appUserId, startTime, endTime
+            );
+
+            // 4. 判断上班状态
+            if (records == null || records.isEmpty()) {
+                // 无打卡记录 = 未上班
+                log.debug("用户 {} 今日无打卡记录, workFlag=false", appUserId);
+                return false;
+            } else if (records.size() == 1) {
+                // 1条记录 = 已上班未下班
+                log.debug("用户 {} 今日打卡1次, workFlag=true", appUserId);
+                return true;
+            } else {
+                // 2条及以上记录 = 已下班
+                log.debug("用户 {} 今日打卡{}次, workFlag=false", appUserId, records.size());
+                return false;
+            }
+
+        } catch (Exception e) {
+            log.error("检查用户上班状态异常, appUserId={}", appUserId, e);
+            // 异常情况返回 false
+            return false;
+        }
+    }
 }

--
Gitblit v1.7.1