package com.cfive.pinnacle.controller;
import com.cfive.pinnacle.entity.Attendance;
import com.cfive.pinnacle.entity.common.ResponseCode;
import com.cfive.pinnacle.entity.common.ResponseResult;
import com.cfive.pinnacle.service.IAttendanceService;
import com.cfive.pinnacle.utils.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 考勤 前端控制器
*
*
* @author gzw
* @since 2023-04-30
*/
@CrossOrigin
@RestController
@RequestMapping("/attendance")
public class AttendanceController {
@Autowired
private IAttendanceService attendanceService;
//查询所有考勤信息和用户名
@GetMapping("findAllAttendance")
@PreAuthorize("hasAuthority('attendance:manage:get')")
public ResponseResult> findAllAttendanceAndUser() {
List attendances = attendanceService.getAllAttendanceAndUser();
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//查询个人考勤
@GetMapping("/selectAttendance")
@PreAuthorize("hasAuthority('attendance:self:check')")
public ResponseResult> findAttendanceAndUser() {
Long userId = WebUtil.getLoginUser().getUser().getId();
List attendances = attendanceService.getAttendanceAndUserByid(userId);
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//模糊时间查询所有考勤信息
@GetMapping("/findAttendanceByTime")
@PreAuthorize("hasAuthority('attendance:manage:get')")
public ResponseResult> findAttendanceAndUserByTime(String startTime,String endTime) {
List attendances = attendanceService.selectByTime(startTime, endTime);
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//用户个人模糊时间查询
@GetMapping("/findOneAttendanceByTime")
@PreAuthorize("hasAuthority('attendance:self:check')")
public ResponseResult> findOneAttendanceAndUserByTime(String startTime,String endTime) {
Long userId = WebUtil.getLoginUser().getUser().getId();
List attendances = attendanceService.selectOneByTime(startTime, endTime,userId);
System.out.println(attendances);
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//添加或更新考勤信息
@PostMapping("/saveAttendance")
@PreAuthorize("hasAuthority('attendance:manage:modify') and hasAuthority('attendance:manage:get')")
public ResponseResult> saveAttendance(@RequestBody Attendance attendance) {
attendance.setModifyId(1652714496280469506L);
return attendanceService.saveOrUpdate(attendance) ? ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", attendance) :
ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null);
}
//个人签到
@PostMapping("/saveOneAttendance")
@PreAuthorize("hasAuthority('attendance:self:check')")
public ResponseResult> saveOneAttendance(@RequestBody Attendance attendance) {
attendance.setModifyId(1652714496280469506L);
attendance.setUserId(WebUtil.getLoginUser().getUser().getId());
if (attendance.getAttTime().getHour() > 1 && attendance.getAttTime().getHour() < 10) {
// 迟到
attendance.setStatus(3);
return attendanceService.save(attendance) ? ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", attendance) :
ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null);
} else if (attendance.getAttTime().getHour() >= 10&& attendance.getAttTime().getHour() < 15) {
// 签退
attendance.setStatus(2);
return attendanceService.save(attendance) ? ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", attendance) :
ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null);
} else if (attendance.getAttTime().getHour() <= 1) {
// 签到
attendance.setStatus(1);
return attendanceService.save(attendance) ? ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", attendance) :
ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null);
} else {
// 考勤异常
attendance.setStatus(0);
return attendanceService.save(attendance) ? ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", attendance) :
ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null);
}
}
//删除考勤信息
@DeleteMapping("/delAttendance/{id}")
@PreAuthorize("hasAuthority('attendance:manage:delete') and hasAuthority('attendance:manage:get')")
public ResponseResult> delAttendance(@PathVariable Long id) {
return attendanceService.removeById(id) ? ResponseResult.build(ResponseCode.DATABASE_DELETE_OK, "success", null) :
ResponseResult.build(ResponseCode.DATABASE_DELETE_ERROR, "error", null);
}
//批量删除考勤信息
@PostMapping("/delBatchAttendance")
@PreAuthorize("hasAuthority('attendance:manage:delete') and hasAuthority('attendance:manage:get')")
public ResponseResult> delBatchAttendance(@RequestBody List ids) {
return attendanceService.removeByIds(ids) ? ResponseResult.build(ResponseCode.DATABASE_DELETE_OK, "success", null) :
ResponseResult.build(ResponseCode.DATABASE_DELETE_ERROR, "error", null);
}
}