关于考勤打卡复杂功能逻辑实现
package com.cwk.web.servlet;
import com.cwk.pojo.Attendance;
import com.cwk.pojo.Staff;
import com.cwk.service.AttendanceService;
import com.cwk.service.impl.AttendanceServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.List;
@WebServlet("/attendance/*")
public class AttendanceServlet extends BaseServlet {
AttendanceService attendanceService = new AttendanceServiceImpl();
public void addtowork(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
// 获取当前日期和时间
LocalDateTime now = LocalDateTime.now();
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 将当前日期和时间格式化为字符串
String formattedNow = now.format(formatter);
// 假设有一个特定的日期和时间字符串
String specificDateTime = "2024-12-25 8:00:00";
boolean flag = false;
try {
// 解析字符串为LocalDateTime对象
LocalDateTime specificDateTimeObj = LocalDateTime.parse(specificDateTime, formatter);
// 比较当前时间和特定时间
if (now.isAfter(specificDateTimeObj)) {
System.out.println("当前时间晚于特定时间");
//打卡失败
flag = false;
} else if (now.isBefore(specificDateTimeObj)) {
System.out.println("当前时间早于特定时间");
//打卡成功!
flag = true;
} else {
System.out.println("当前时间与特定时间相同");
flag = true;
}
} catch (DateTimeParseException e) {
System.out.println("日期时间格式错误: " + e.getMessage());
}
HttpSession session = req.getSession();
Staff staff = (Staff) session.getAttribute("staff");
String jobid = staff.getJobid();
String name = staff.getName();
String sex = staff.getSex();
String birthday = staff.getBirthday();
String atype = "上班";
Attendance attendance = new Attendance();
attendance.setAtime(formattedNow);
attendance.setJobid(jobid);
attendance.setName(name);
attendance.setSex(sex);
attendance.setBirthday(birthday);
attendance.setAtype(atype);
attendanceService.addAttendance(attendance);
if (flag) {
//打开成功
req.setAttribute("Attendance_msg", "打卡成功!");
}
else {
req.setAttribute("Attendance_msg", "打卡失败!");
}
//返回员工页面
req.getRequestDispatcher("attendance.jsp").forward(req, resp);‘
}
public void addoutwork(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
// 获取当前日期和时间
LocalDateTime now = LocalDateTime.now();
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 将当前日期和时间格式化为字符串
String formattedNow = now.format(formatter);
// 假设有一个特定的日期和时间字符串
String specificDateTime = "2024-12-25 17:00:00";
boolean flag;
try {
// 解析字符串为LocalDateTime对象
LocalDateTime specificDateTimeObj = LocalDateTime.parse(specificDateTime, formatter);
// 比较当前时间和特定时间
if (now.isAfter(specificDateTimeObj)) {
System.out.println("当前时间晚于特定时间");
//打卡失败
flag = true;
} else if (now.isBefore(specificDateTimeObj)) {
System.out.println("当前时间早于特定时间");
//打卡成功!
flag = false;
} else {
System.out.println("当前时间与特定时间相同");
flag = true;
}
} catch (DateTimeParseException e) {
System.out.println("日期时间格式错误: " + e.getMessage());
flag = false;
}
HttpSession session = req.getSession();
Staff staff = (Staff) session.getAttribute("staff");
String jobid = staff.getJobid();
String name = staff.getName();
String sex = staff.getSex();
String birthday = staff.getBirthday();
String atype = "下班";
Attendance attendance = new Attendance();
attendance.setAtime(formattedNow);
attendance.setJobid(jobid);
attendance.setName(name);
attendance.setSex(sex);
attendance.setBirthday(birthday);
attendance.setAtype(atype);
attendanceService.addAttendance(attendance);
if (flag) {
//打开成功
req.setAttribute("Attendance_msg", "打卡成功!");
}
else {
req.setAttribute("Attendance_msg", "打卡失败!");
}
//返回员工页面
req.getRequestDispatcher("attendance.jsp").forward(req, resp);‘
}
public void selectAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
HttpSession session = req.getSession();
Staff staff = (Staff) session.getAttribute("staff");
String jobid = staff.getJobid();
List<Attendance> attendances = attendanceService.selectByJobid(jobid);
req.setAttribute("attendances", attendances);
req.getRequestDispatcher("selectAttendance.jsp").forward(req, resp);(这里可以根据session中的staff提取其属性department进行跳转)
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)