首页 > 其他分享 >关于考勤打卡复杂功能逻辑实现

关于考勤打卡复杂功能逻辑实现

时间:2024-12-25 23:53:20浏览次数:2  
标签:逻辑 attendance String req 考勤 LocalDateTime import 打卡 staff

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进行跳转)
}

}

标签:逻辑,attendance,String,req,考勤,LocalDateTime,import,打卡,staff
From: https://www.cnblogs.com/K-wc2024/p/18631667

相关文章

  • 拥抱虚拟打卡,开启工作新趣
      在这个追求高效与自由的时代,虚拟打卡悄然走红,成为职场新宠,它带来的好处妙趣横生。 ❤️夹带私货:打卡推荐清晨,无需在沙丁鱼罐头般的地铁里挣扎,你能悠然坐在窗边,一边品着咖啡,一边手指轻点完成打卡,开启能量满格的一天。遇上出差,高铁呼啸而过时,顺手打卡,工作旅程无缝衔接,让奔......
  • 虚拟打卡,开启趣味新世界
    虚拟打卡,开启趣味新世界 ❤️夹带私货:惠通优选打卡在如今快节奏又充满创意的生活里,虚拟打卡悄然走红,它可是有着超多妙处,轻松为日常增添一抹别样色彩。 清晨,闹钟还没来得及“咆哮”,手机里的虚拟打卡任务已向你“招手”。完成早起打卡,看着打卡日历上点亮的新一天,成就感瞬间拉......
  • 中考阅读理解深入逻辑分析-005 A Tale of Bears and Belonging 熊的故事与归属感
    文章正文DearMr.Henshaw,​IfinishedBeggarBearsintwonights.Itisareallygoodbook.Atfirst,Iwassurprisedbecauseitwasn’tfunnylikeyourotherbooks,butthenIgottothinking(yousaidreadersshouldthink)anddecidedabookdoesn’......
  • 考勤打卡系统
    登录界面分为职员,管理员、部门经理`<%--CreatedbyIntelliJIDEA.User:32262Date:2024/12/16Time:14:08TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"......
  • 员工考勤系统
    员工考勤管理系统(50分)1、项目需求:企业员工考勤管理系统是一个企业单位信息化建设不可缺少的部分。考勤管理系统是针对某公司对该公司职工的考勤、查询、信息录入、核查、统计分析等功能为一体的应用软件,为用户提供充足的信息和快捷的查询手段。2.系统要求与功能设计2.1页面要......
  • 从底层逻辑证明,编写一个能准确识别不带BOM的文本文件编码是GBK还是UTF8是不可能的
    声明:本文为原装文章,转载请注明出处。经常处理文本文件的小伙伴,有个很头疼的事情,就是如何准确识别一个文本文件到底是什么编码方式,ANSI(也就是GBK)还是UTF8。文本文件,是指以特定的文本编码将每个字符逐个字节存储的一种文件格式,文本文件的常见的扩展名是.txt,但又不一定是.txt,例如......
  • Kafka核心逻辑介绍
    作者:京东零售张继1,概念Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统(kafka2.8.0版本之后接触了对zk的依赖,使用自己的kRaft做集群管理,新增内部主体@metadata存储元数据信息),它的最大的特性就是可以实时的......
  • 基于模拟数据与逻辑回归的交通流量预测模型:设计与实现全解析
    一、项目概述本项目旨在通过模拟生成的交通相关数据,构建一个逻辑回归模型来预测交通流量。通过对时间、天气、是否为周末等因素的分析,实现对交通流量的分类预测(流量高或低),并评估模型的准确性。二、功能模块设计数据生成模块功能描述:生成包含时间、天气、是否为周末以及相应交......
  • 逻辑回归全解析:概念、估计、评估与特征工程及应用大揭秘
    一、基本概念定义与用途逻辑回归主要用于二分类问题,例如预测一个用户是否会购买某产品(是/否)、一封邮件是否是垃圾邮件(是/否)等。它也可以扩展到多分类问题,但本质上是通过组合多个二分类来实现的。逻辑回归模型输出的是事件发生的概率,而不是像线性回归那样直接输出一个数值。......
  • 嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
    此项目是基于人脸识别的考勤系统开发,包括如下模块:1、人脸识别考勤系统GUI界面设计,包括:(1)Qt环境(window环境/linux环境);(2)Qt工程创建分析;(3)Qt基本组件QwidgetQMainWindow,Qdialog,QLineEdit,Qlabel,QPushButton;(4)Qt界面布局,设计人脸识别考勤系统界面搭建;(5)考勤机界面设计(考勤......