1
0
mirror of https://github.com/FatttSnake/Pinnacle-OA.git synced 2026-04-05 06:51:23 +08:00

commit 2023/05/06

This commit is contained in:
gzw
2023-05-06 00:41:06 +08:00
parent c72b6dc4dc
commit 2fa80301e2
15 changed files with 995 additions and 9 deletions

View File

@@ -1,18 +1,112 @@
package com.cfive.pinnacle.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 考勤 前端控制器
* </p>
*
* @author FatttSnake
* @author gzw
* @since 2023-04-30
*/
@CrossOrigin
@RestController
@RequestMapping("/attendance")
public class AttendanceController {
@Autowired
private IAttendanceService attendanceService;
//查询所有考勤信息和用户名
@GetMapping("findAllAttendance")
public ResponseResult findAllAttendanceAndUser() {
List<Attendance> attendances = attendanceService.getAllAttendanceAndUser();
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//模糊时间查询
@GetMapping("/findAttendanceByTime")
public ResponseResult findAttendanceAndUser(String startTime,String endTime) {
List<Attendance> attendances = attendanceService.selectByTime(startTime, endTime);
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//用户个人模糊时间查询
@GetMapping("/findOneAttendanceByTime")
public ResponseResult findOneAttendanceAndUser(String startTime,String endTime,Long userId) {
List<Attendance> attendances = attendanceService.selectOneByTime(startTime, endTime,userId);
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//添加或更新考勤信息
@PostMapping("/saveAttendance")
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")
public ResponseResult saveOneAttendance(@RequestBody Attendance attendance) {
attendance.setModifyId(1652714496280469506L);
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);
}
}
//查询个人考勤
@GetMapping("/selectAttendance/{userId}")
public ResponseResult findAttendanceAndUser(@PathVariable Long userId) {
List<Attendance> attendances = attendanceService.getAttendanceAndUserByid(userId);
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
}
//删除考勤信息
@DeleteMapping("/delAttendance/{id}")
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")
public ResponseResult delBatchAttendance(@RequestBody List<Long> ids) {
return attendanceService.removeByIds(ids) ? ResponseResult.build(ResponseCode.DATABASE_DELETE_OK, "success", null) :
ResponseResult.build(ResponseCode.DATABASE_DELETE_ERROR, "error", null);
}
}

View File

@@ -10,6 +10,9 @@ import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -18,7 +21,7 @@ import lombok.experimental.Accessors;
* 考勤
* </p>
*
* @author FatttSnake
* @author gzw
* @since 2023-04-30
*/
@Data
@@ -30,18 +33,21 @@ public class Attendance implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("id")
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 用户
*/
@TableField("user_id")
@JsonSerialize(using = ToStringSerializer.class)
private Long userId;
/**
* 考勤时间
*/
@TableField("att_time")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",timezone = "UTC")
private LocalDateTime attTime;
/**
@@ -54,6 +60,7 @@ public class Attendance implements Serializable {
* 修改人
*/
@TableField("modify_id")
@JsonSerialize(using = ToStringSerializer.class)
private Long modifyId;
/**
@@ -63,10 +70,13 @@ public class Attendance implements Serializable {
private LocalDateTime modifyTime;
@TableField("deleted")
@TableLogic
@TableLogic(value = "0",delval = "1")
private Integer deleted;
@TableField("version")
@Version
private Integer version;
@TableField(exist = false)
private User user;
}

View File

@@ -1,18 +1,26 @@
package com.cfive.pinnacle.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cfive.pinnacle.entity.Attendance;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* <p>
* 考勤 Mapper 接口
* </p>
*
* @author FatttSnake
* @author gzw
* @since 2023-04-30
*/
@Mapper
public interface AttendanceMapper extends BaseMapper<Attendance> {
List<Attendance> getAllAttendanceAndUser();
List<Attendance> getAttendanceAndUserByid(Long userId);
}

View File

@@ -1,16 +1,26 @@
package com.cfive.pinnacle.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cfive.pinnacle.entity.Attendance;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 考勤 服务类
* </p>
*
* @author FatttSnake
* @author gzw
* @since 2023-04-30
*/
public interface IAttendanceService extends IService<Attendance> {
List<Attendance> getAllAttendanceAndUser();
List<Attendance> getAttendanceAndUserByid(Long userId);
List<Attendance> selectByTime(String startTime,String endTime);
List<Attendance> selectOneByTime(String startTime,String endTime,Long userId);
}

View File

@@ -1,20 +1,79 @@
package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cfive.pinnacle.entity.Attendance;
import com.cfive.pinnacle.mapper.AttendanceMapper;
import com.cfive.pinnacle.mapper.UserMapper;
import com.cfive.pinnacle.service.IAttendanceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* <p>
* 考勤 服务实现类
* </p>
*
* @author FatttSnake
* @author gzw
* @since 2023-04-30
*/
@Service
public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attendance> implements IAttendanceService {
@Autowired
private AttendanceMapper attendanceMapper;
@Autowired
private UserMapper userMapper;
@Override
public List<Attendance> getAllAttendanceAndUser() {
return attendanceMapper.getAllAttendanceAndUser();
}
@Override
public List<Attendance> getAttendanceAndUserByid(Long userId) {
return attendanceMapper.getAttendanceAndUserByid(userId);
}
@Override
public List<Attendance> selectByTime(String startTime, String endTime) {
LocalDateTime start = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime end = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(start);
System.out.println(end);
LambdaQueryWrapper<Attendance> lqw = new LambdaQueryWrapper<>();
lqw.ge(null != start, Attendance::getAttTime, start).le(null != end, Attendance::getAttTime, end);
List<Attendance> attendancesByTime = attendanceMapper.selectList(lqw);
for (Attendance attendance:
attendancesByTime) {
attendance.setUser(userMapper.selectById(attendance.getUserId()));
}
return attendancesByTime;
}
@Override
public List<Attendance> selectOneByTime(String startTime, String endTime,Long userId) {
LocalDateTime start = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime end = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(start);
System.out.println(end);
LambdaQueryWrapper<Attendance> lqw = new LambdaQueryWrapper<>();
lqw.ge(null != start, Attendance::getAttTime, start).le(null != end, Attendance::getAttTime, end);
List<Attendance> oneAttendancesByTime = attendanceMapper.selectList(lqw);
for (Attendance attendance:
oneAttendancesByTime) {
attendance.setUser(userMapper.selectById(userId));
}
return oneAttendancesByTime;
}
}

View File

@@ -2,4 +2,72 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cfive.pinnacle.mapper.AttendanceMapper">
</mapper>
<select id="getAllAttendanceAndUser" resultMap="AllAttendAndUserResult">
select att.id attId,
att.user_id,
att.att_time,
att.status,
att.modify_id,
att.modify_time,
att.deleted attDel,
att.version attVer,
u.id uId,
u.username,
u.passwd,
u.department_id,
u.deleted uDel,
u.version uVer
from t_attendance att,
t_user u
where att.user_id = u.id
and att.deleted = 0
order by att_time DESC
</select>
<resultMap id="AllAttendAndUserResult" type="attendance" autoMapping="true">
<id property="id" column="attId"/>
<result property="deleted" column="attDel"/>
<result property="version" column="attVer"/>
<association property="user" javaType="user" autoMapping="true">
<id property="id" column="uId"/>
<result property="deleted" column="uDel"/>
<result property="version" column="uVer"/>
</association>
</resultMap>
<select id="getAttendanceAndUserByid" resultMap="AttendAndUserResult">
select att.id attId,
att.user_id,
att.att_time,
att.status,
att.modify_id,
att.modify_time,
att.deleted attDel,
att.version attVer,
u.id uId,
u.username,
u.passwd,
u.department_id,
u.deleted uDel,
u.version uVer
from t_attendance att,
t_user u
where att.user_id = u.id
and att.deleted = 0 and att.user_id=#{userid}
order by att_time DESC
</select>
<resultMap id="AttendAndUserResult" type="attendance" autoMapping="true">
<id property="id" column="attId"/>
<result property="deleted" column="attDel"/>
<result property="version" column="attVer"/>
<association property="user" javaType="user" autoMapping="true">
<id property="id" column="uId"/>
<result property="deleted" column="uDel"/>
<result property="version" column="uVer"/>
</association>
</resultMap>
</mapper>