代码编织梦想

  

 

功能介绍

本系统开发的目的主要用来解决中小企业的日常办公需求,我们通过对中小心企业的日常办公业务进行调研分析,发现企业业务主要集中在个人日常事务的处理,主要包括个人信息、考勤、加班、请假等;

员工的管理,主要包括在职或者离职以员工的调动情况;

考勤模块,主要包括员工考勤的管理、员工加班的管理;

请假单的管理,主要包括申请和批准等;

部门功能模块,主要包括企业部门的管理、企业一些职称的管理;

还有公司公告管理,主要包括添加公司公告和对已有公告进行修改删除。

经过调查研究,为了满足企业的日常基本办公要求,我们将系统设计成了八大功能模块,其中包括用户的登录和登出功能、个人信息管理功能、员工信息管理功能、考勤信息管理功能、请假信息管理功能、部门信息管理功能、公告信息管理功能以及最后的一个员工打卡功能

部分功能模块代码

package edu.hjs.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import edu.hjs.entity.Attendance;
import edu.hjs.service.AttendanceService;

@Controller
@RequestMapping("/attendance")
public class AttendanceController {

	@Autowired
	private AttendanceService attendanceService;
	
	@RequestMapping("/addStart.do")
	public String addStart(Integer employeeNumber){
		attendanceService.addStart(employeeNumber);
		return "welcome";
	}
	
	@RequestMapping("/addEnd.do")
	public String addEnd(Integer employeeNumber){
		attendanceService.addEnd(employeeNumber);
		return "welcome";
	}
	
	@RequestMapping("/list.do")
	public String selectList(Model model){
		List<Attendance> list = attendanceService.selectList();
		model.addAttribute("aList",list);
		return "admin/attendance_list";
	}
	
	@RequestMapping("/{employeeNumber}/oneself.do")
	public String select(Model model, @PathVariable Integer employeeNumber){
		List<Attendance> list = attendanceService.selectByEmployee(employeeNumber);
		model.addAttribute("aList",list);
		return "admin/oneself_attendance";
	}
}
package edu.hjs.service.impl;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;

import edu.hjs.entity.Attendance;
import edu.hjs.entity.Employee;
import edu.hjs.mapper.AttendanceMapper;
import edu.hjs.mapper.EmployeeMapper;
import edu.hjs.service.AttendanceService;
import edu.hjs.util.MConstant;
import edu.hjs.util.MTimeUtil;

@Service("attendanceService")
public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attendance> 
	implements AttendanceService{
	
	@Autowired
	private EmployeeMapper employeeMapper;

	//获取相关时间
	Date amTime = MTimeUtil.stringTimeParse(MConstant.AMTime);
	Date amStartTime = MTimeUtil.stringTimeParse(MConstant.AMStartTime);
	Date amEndTime = MTimeUtil.stringTimeParse(MConstant.AMEndTime);
	Date pmTime = MTimeUtil.stringTimeParse(MConstant.PMTime);
	Date pmStartTime = MTimeUtil.stringTimeParse(MConstant.PMStartTime);
	Date pmEndTime = MTimeUtil.stringTimeParse(MConstant.PMEndTime);
	Date ovTime = MTimeUtil.stringTimeParse(MConstant.OVTime);
	Date ovStartTime = MTimeUtil.stringTimeParse(MConstant.OVStartTime);
	Date ovEndTime = MTimeUtil.stringTimeParse(MConstant.OVEndTime);
	
	@Override
	public void addStart(Integer employeeNumber){
		//获取当前时间
		Date nowTime = MTimeUtil.nowTime();
		//获取当前日期
		Date nowDate = MTimeUtil.nowDate();
		Attendance attendance = new Attendance();
		attendance.setEmployeeNumber(employeeNumber);
		attendance.setDay(nowDate);
		attendance.setStartTime(nowTime);
		if (nowTime.after(amTime) && nowTime.before(amEndTime)) {
			Attendance att = baseMapper.selectByNumber(employeeNumber, nowDate, "上午");
			if (att == null) {
				attendance.setTimeType("上午");
				if (nowTime.before(amStartTime)) {
					attendance.setStartType("正常");
				}else{
					attendance.setStartType("迟到");
				}
				baseMapper.insert(attendance);
			}
		}else if(nowTime.after(pmTime) && nowTime.before(pmEndTime)){
			Attendance att = baseMapper.selectByNumber(employeeNumber, nowDate, "下午");
			if (att == null) {
				attendance.setTimeType("下午");
				if (nowTime.before(pmStartTime)) {
					attendance.setStartType("正常");
				}else{
					attendance.setStartType("迟到");
				}
				baseMapper.insert(attendance);
			}
		}else if(nowTime.after(ovTime) && nowTime.before(ovEndTime)){
			Attendance att = baseMapper.selectByNumber(employeeNumber, nowDate, "加班");
			if (att == null) {
				attendance.setTimeType("加班");
				if (nowTime.before(ovStartTime)) {
					attendance.setStartType("正常");
				}else{
					attendance.setStartType("迟到");
				}
				baseMapper.insert(attendance);
			}
		}
	}

	@Override
	public void addEnd(Integer employeeNumber) {
		Date nowTime = MTimeUtil.nowTime();
		Date nowDate = MTimeUtil.nowDate();
		if (nowTime.after(amStartTime) && nowTime.before(pmStartTime)) {
			Attendance attendance = baseMapper.selectByNumber(employeeNumber, nowDate, "上午");
			if(attendance != null) {
				if (attendance.getEndTime() == null) {
					attendance.setEndTime(nowTime);
					if (nowTime.after(amEndTime)) {
						attendance.setEndType("正常");
					} else {
						attendance.setEndType("早退");
					}
					baseMapper.updateById(attendance);
				}
			}
		}else if(nowTime.after(pmStartTime) && nowTime.before(ovStartTime)){
			Attendance attendance = baseMapper.selectByNumber(employeeNumber, nowDate, "下午");
			if(attendance != null) {
				if (attendance.getEndTime() == null) {
					attendance.setEndTime(nowTime);
					if (nowTime.after(pmEndTime)) {
						attendance.setEndType("正常");
					} else {
						attendance.setEndType("早退");
					}
					baseMapper.updateById(attendance);
				}
			}
		}else if(nowTime.after(ovStartTime)) {
			Attendance attendance = baseMapper.selectByNumber(employeeNumber, nowDate, "加班");
			if (attendance != null) {
				if (attendance.getEndTime() == null) {
					attendance.setEndTime(nowTime);
					if (nowTime.after(ovEndTime)) {
						attendance.setEndType("正常");
					} else {
						attendance.setEndType("早退");
					}
					baseMapper.updateById(attendance);
				}
			}
		}
	}

	@Override
	public List<Attendance> selectList() {
		 //查询所有的考勤记录,根据id倒序排序
		List<Attendance> list = baseMapper.selectList(new EntityWrapper<Attendance>().
				orderBy("id", false));
		for(Attendance attendance : list){
			//为attendance对象setEmployee
			Employee employee = employeeMapper.selectByNumber(attendance.getEmployeeNumber());
			attendance.setEmployee(employee);
		}
		return list;
	}

	@Override
	public List<Attendance> selectByEmployee(Integer employeeNumber) {
		 //查询一个员工的考勤记录,根据id倒序排序
		List<Attendance> list = baseMapper.selectList(new EntityWrapper<Attendance>()
				.eq("employee_number", employeeNumber)
				.orderBy("id", false));
		for(Attendance attendance : list){
			//为attendance对象setEmployee
			Employee employee = employeeMapper.selectByNumber(attendance.getEmployeeNumber());
			attendance.setEmployee(employee);
		}
		return list;
	}
}
package edu.hjs.mapper;

import java.util.Date;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.mapper.BaseMapper;

import edu.hjs.entity.Attendance;

public interface AttendanceMapper extends BaseMapper<Attendance>{

	/**
	 * 根据employeeNumber和day查询记录
	 * @param employeeNumber
	 * @return
	 */
	Attendance selectByNumber(@Param("employeeNumber") Integer employeeNumber,
                              @Param("day") Date day, @Param("timeType") String timeType);
}

论文目录

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/itrjxxs_2/article/details/128730762

java项目:企业oa管理系统(java+ssm+html+layui+bootstrap+mysql)_qq1334611189的博客-爱代码爱编程

源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目包含管理员与普通员工两种角色, 管理员角色包含以下功能: 岗位管理,部门管理,工龄奖金管理,员工管理,考勤管理,工资查询,职称管理,统计图表,工资项管理,管理员登录等功能。 员工角色包含以下功能: 个人信息管理,工资详情,考勤管理,员工登录等功能。 环境需要 1.运行环境:最好

java计算机毕业设计知识库系统mybatis+源码+数据库+lw文档+系统+调试部署_洋及的博客-爱代码爱编程

JAVA计算机毕业设计知识库系统Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计知识库系统Mybatis+源码+数据库+lw文档+系统+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery

java计算机毕业设计疫情物质管理系统源码+数据库+lw文档+系统+部署_沪港的博客-爱代码爱编程

java计算机毕业设计疫情物质管理系统源码+数据库+lw文档+系统+部署 java计算机毕业设计疫情物质管理系统源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery等技术 后端技术:JAVA

java计算机毕业设计校培机构的oa系统源码+数据库+系统+lw文档+mybatis+运行部署_计算科技的博客-爱代码爱编程

java计算机毕业设计校培机构的oa系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计校培机构的oa系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、

java计算机毕业设计-物流管理系统-源码+系统+数据库+lw文档+mybatis+运行部署_鸿源网络的博客-爱代码爱编程

java计算机毕业设计-物流管理系统-源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计-物流管理系统-源码+系统+数据库+lw文档+mybatis+运行部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQ

java毕业设计某银行oa系统某银行oa系统演示2021mybatis+源码+调试部署+系统+数据库+lw_兮兮科技的博客-爱代码爱编程

java毕业设计某银行OA系统某银行OA系统演示2021mybatis+源码+调试部署+系统+数据库+lw java毕业设计某银行OA系统某银行OA系统演示2021mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layu

基于java基于bootstrap的家具商城系统设计计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署_玉娇学姐的博客-爱代码爱编程

基于java基于Bootstrap的家具商城系统设计计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于Bootstrap的家具商城系统设计计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技

java计算机毕业设计校园失物招领系统源码+mysql数据库+lw文档+系统+调试部署_柳下网络的博客-爱代码爱编程

java计算机毕业设计校园失物招领系统源码+mysql数据库+lw文档+系统+调试部署 java计算机毕业设计校园失物招领系统源码+mysql数据库+lw文档+系统+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery等技

计算机毕业设计java传统文化网站(源码+系统+mysql数据库+lw文档)_160科技的博客-爱代码爱编程

计算机毕业设计Java传统文化网站(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java传统文化网站(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery等技术 后端技术:JA

net-java-php-python-人事工资管理系统计算机毕业设计程序_鸿源网络的博客-爱代码爱编程

net-java-php-python-人事工资管理系统计算机毕业设计程序 net-java-php-python-人事工资管理系统计算机毕业设计程序 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery等技术 后端技术:JA

java实现的oa考勤管理系统、基于ssm+mysql的web人事hr系统实现,vue实现oa系统-爱代码爱编程

介绍 本系统主要大模块:用户管理,部门管理,职位管理,员工管理,留言公告管理、考勤管理、请假审批、薪资管理 项目环境 SSM JSP、JSTL、jQuery、HTML、CSS、JS Mysql bootstrap 开发

java-爱代码爱编程

java-php-python-ssm旅游产品网络销售系统计算机毕业设计 java-php-python-ssm旅游产品网络销售系统计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery等技术 后端技术:JAV

java-爱代码爱编程

java-php-python-ssm学生健康管理系统计算机毕业设计 java-php-python-ssm学生健康管理系统计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQuery等技术 后端技术:JAVA

ssm+bootsrap人力资源考勤oa人事系统-爱代码爱编程

​ 摘要 计算机信息技术的快速发展使得企业的传统办公方式不能够在满足我们实际工作中的各种需要,于是企业办公自动化应运而生。办公自动化主要是利用计算机网络技术,使用各种设备结合软件系统来协助完成各种工作任务,本论文开头介

ssm+bootsrap人力资源考勤系统-爱代码爱编程

摘要 计算机信息技术的快速发展使得企业的传统办公方式不能够在满足我们实际工作中的各种需要,于是企业办公自动化应运而生。办公自动化主要是利用计算机网络技术,使用各种设备结合软件系统来协助完成各种工作任务,本论文开头介绍了课题研究背景、意义以及发展状况,详细介绍了办公自动化系统用到的技术。结合企业传统低效的办公方式中解脱出来,从而提高工作人员的效率和

ssm+bootsrap人力资源考勤oa人事系统-爱代码爱编程

叿狆号:“IT软件学习社” ​ 摘要 计算机信息技术的快速发展使得企业的传统办公方式不能够在满足我们实际工作中的各种需要,于是企业办公自动化应运而生。办公自动化主要是利用计算机网络技术,使用各种设备结合软件系统来协助完