From 581646569a0273486c742a60961ecd98e60c6773 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 20 五月 2026 17:08:10 +0800
Subject: [PATCH] 1.处理后台巡游打卡计划多个用户选择 2.优惠券新增字段类型

---
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInController.java |   74 ++++++++++++++++++++++++++++++-------
 1 files changed, 60 insertions(+), 14 deletions(-)

diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInController.java
index de89bec..2b1f46f 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpClockInController.java
@@ -1,31 +1,35 @@
 package com.xiaopeng.maintenance.controller;
 
 
-import com.xiaopeng.api.model.maintenance.XpErrorType;
 import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.common.security.service.TokenService;
 import com.xiaopeng.maintenance.dto.ClockDTO;
-import com.xiaopeng.maintenance.dto.ShiftAttendanceDTO;
+import com.xiaopeng.maintenance.dto.ClockInStatisticsDto;
+import com.xiaopeng.maintenance.dto.GetClockInStatisticsDetailsDto;
 import com.xiaopeng.maintenance.dto.VerifyRangeDTO;
 import com.xiaopeng.maintenance.service.IXpClockInService;
-import com.xiaopeng.maintenance.vo.ShiftAttendanceVO;
-import io.swagger.annotations.Api;
+import com.xiaopeng.maintenance.vo.ClockInStatisticsDetailsVo;
+import com.xiaopeng.maintenance.vo.ClockInStatisticsVo;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * <p>
  * 打卡明细 前端控制器
  * </p>
+ * 打卡管理 Controller
  *
  * @author xiaochen
+ * @author mitao
+ * @date 2026-02-14
  * @since 2026-02-06
  */
-@Api(tags = "打卡明细")
+@Slf4j
 @RestController
 @RequestMapping("")
 public class XpClockInController {
@@ -34,27 +38,69 @@
     private IXpClockInService xpClockInService;
     @Autowired
     private TokenService tokenService;
+
     @ApiOperation(value = "校验是否在打卡范围内", tags = "运维APP-排班与考勤")
-    @PostMapping("/api/v1/clock/verifyRange")
+    @PostMapping("/maintenance-app/api/v1/clock/verifyRange")
     public R<Boolean> verifyRange(@RequestBody VerifyRangeDTO dto) {
         return R.ok(xpClockInService.verifyRange(dto));
     }
 
     @ApiOperation(value = "上班打卡", tags = "运维APP-排班与考勤")
-    @PostMapping("/api/v1/clock/clockIn")
-    public R<String> clockIn(@RequestBody ClockDTO dto) {
+    @PostMapping("/maintenance-app/api/v1/clock/clockIn")
+    public R<Integer> clockIn(@RequestBody ClockDTO dto) {
         Long id = tokenService.getLoginOperationUser().getId();
         dto.setOperationsUserId(id);
         return xpClockInService.clockIn(dto);
     }
 
+    /**
+     * 检查用户是否上班中(内部接口)
+     */
+    @GetMapping("/logan/inner/clock-in/checkWorkStatus")
+    @ApiOperation(value = "检查用户是否上班中", tags = {"内部接口"})
+    public R<Integer> checkWorkStatus(@RequestParam("appUserId") Long appUserId) {
+        log.info("检查用户上班状态, appUserId={}", appUserId);
+        Integer workFlag = xpClockInService.checkWorkStatus(appUserId);
+        return R.ok(workFlag);
+    }
+
     @ApiOperation(value = "下班打卡", tags = "运维APP-排班与考勤")
-    @PostMapping("/api/v1/clock/clockOut")
-    public R<String> clockOut(@RequestBody ClockDTO dto) {
+    @PostMapping("/maintenance-app/api/v1/clock/clockOut")
+    public R<Integer> clockOut(@RequestBody ClockDTO dto) {
         Long id = tokenService.getLoginOperationUser().getId();
         dto.setOperationsUserId(id);
         return xpClockInService.clockOut(dto);
     }
 
+
+    @ApiOperation(value = "排班考勤打卡统计列表", tags = {"管理后台-运维执行"})
+    @PostMapping("/api/v1/clock/getClockInStatistics")
+    public R<PageInfo<ClockInStatisticsDto>> getClockInStatistics(@RequestBody ClockInStatisticsVo vo) {
+        PageInfo<ClockInStatisticsDto> clockInStatistics = xpClockInService.getClockInStatistics(vo);
+        return R.ok(clockInStatistics);
+    }
+
+
+    @ApiOperation(value = "排班考勤打卡统计导出", tags = {"管理后台-运维执行"})
+    @PostMapping("/api/v1/clock/exportClockInStatistics")
+    public void exportClockInStatistics(@RequestBody ClockInStatisticsVo vo, HttpServletResponse response) {
+        xpClockInService.exportClockInStatistics(vo, response);
+    }
+
+
+    @ApiOperation(value = "排班考勤打卡统计详情列表", tags = {"管理后台-运维执行"})
+    @PostMapping("/api/v1/clock/getClockInStatisticsDetails")
+    public R<GetClockInStatisticsDetailsDto> getClockInStatisticsDetails(@RequestBody ClockInStatisticsDetailsVo query) {
+        GetClockInStatisticsDetailsDto clockInStatisticsDetails = xpClockInService.getClockInStatisticsDetails(query);
+        return R.ok(clockInStatisticsDetails);
+    }
+
+
+    @ApiOperation(value = "排班考勤打卡统计详情导出", tags = {"管理后台-运维执行"})
+    @PostMapping("/api/v1/clock/exportClockInStatisticsDetails")
+    public void exportClockInStatisticsDetails(@RequestBody ClockInStatisticsDetailsVo query, HttpServletResponse response) {
+        xpClockInService.exportClockInStatisticsDetails(query, response);
+    }
+
 }
 

--
Gitblit v1.7.1