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