package com.attendance.controller; import com.attendance.annotation.OperationLog; import com.attendance.common.Result; import com.attendance.entity.Classroom; import com.attendance.service.ClassroomService; import com.attendance.vo.ClassroomAttendanceVO; import com.attendance.vo.ClassroomVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.List; @Tag(name = "教室管理", description = "教室信息相关接口") @RestController @RequestMapping("/classroom") public class ClassroomController { private final ClassroomService classroomService; public ClassroomController(ClassroomService classroomService) { this.classroomService = classroomService; } @Operation(summary = "分页查询教室列表") @GetMapping("/page") public Result> page( @Parameter(description = "页码") @RequestParam(defaultValue = "1") Long current, @Parameter(description = "每页条数") @RequestParam(defaultValue = "10") Long size, @Parameter(description = "教学楼ID") @RequestParam(required = false) Long buildingId) { Page page = new Page<>(current, size); return Result.success(classroomService.getClassroomPage(page, buildingId)); } @Operation(summary = "获取教室详情") @GetMapping("/{id}") public Result getById(@PathVariable Long id) { return Result.success(classroomService.getById(id)); } @OperationLog(module = "教室管理", action = "新增教室") @Operation(summary = "新增教室") @PostMapping public Result save(@RequestBody Classroom classroom) { classroomService.save(classroom); return Result.ok("新增成功"); } @OperationLog(module = "教室管理", action = "修改教室") @Operation(summary = "修改教室") @PutMapping("/{id}") public Result update(@PathVariable Long id, @RequestBody Classroom classroom) { classroom.setId(id); classroomService.updateById(classroom); return Result.ok("修改成功"); } @OperationLog(module = "教室管理", action = "删除教室") @Operation(summary = "删除教室") @DeleteMapping public Result remove(@Parameter(description = "教室ID列表") @RequestBody List ids) { classroomService.removeByIds(ids); return Result.ok("删除成功"); } @Operation(summary = "获取全部教室") @GetMapping("/list") public Result> list( @Parameter(description = "教学楼ID") @RequestParam(required = false) Long buildingId) { return Result.success(classroomService.getClassroomList(buildingId)); } @Operation(summary = "获取教室当前考勤信息") @GetMapping("/{id}/current-attendance") public Result currentAttendance( @Parameter(description = "教室ID") @PathVariable Long id, @Parameter(description = "当前时间(格式:yyyy-MM-dd HH:mm:ss)") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime currentTime) { if (currentTime == null) { currentTime = LocalDateTime.now(); } ClassroomAttendanceVO vo = classroomService.getCurrentAttendance(id, currentTime); return Result.success(vo); } }