package org.crazyit.hrsystem.service.impl;
import org.crazyit.hrsystem.dao.*;
import org.crazyit.hrsystem.domain.*;
import org.crazyit.hrsystem.vo.*;
import org.crazyit.hrsystem.exception.*;
import org.crazyit.hrsystem.service.*;
import java.text.*;
import java.util.*;
/**
* Description:
* <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
* <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
public class EmpManagerImpl
implements EmpManager
{
private ApplicationDao appDao;
private AttendDao attendDao;
private AttendTypeDao typeDao;
private CheckBackDao checkDao;
private EmployeeDao empDao;
private ManagerDao mgrDao;
private PaymentDao payDao;
public void setAppDao(ApplicationDao appDao)
{
this.appDao = appDao;
}
public void setAttendDao(AttendDao attendDao)
{
this.attendDao = attendDao;
}
public void setTypeDao(AttendTypeDao typeDao)
{
this.typeDao = typeDao;
}
public void setCheckDao(CheckBackDao checkDao)
{
this.checkDao = checkDao;
}
public void setEmpDao(EmployeeDao empDao)
{
this.empDao = empDao;
}
public void setMgrDao(ManagerDao mgrDao)
{
this.mgrDao = mgrDao;
}
public void setPayDao(PaymentDao payDao)
{
this.payDao = payDao;
}
/**
* 以经理身份来验证登录
* @param mgr 登录的经理身份
* @return 登录后的身份确认:0为登录失败,1为登录emp 2为登录mgr
*/
public int validLogin(Manager mgr)
{
//如果找到一个经理,以经理登录
if (mgrDao.findByNameAndPass(mgr).size()
>= 1)
{
return LOGIN_MGR;
}
//如果找到普通员工,以普通员工登录
else if (empDao.findByNameAndPass(mgr)
.size() >= 1)
{
return LOGIN_EMP;
}
else
{
return LOGIN_FAIL;
}
}
/**
* 自动打卡,周一到周五,早上7:00为每个员工插入旷工记录
*/
public void autoPunch()
{
System.out.println("自动插入旷工记录");
List<Employee> emps = empDao.findAll();
//获取当前时间
String dutyDay = new java.sql.Date(
System.currentTimeMillis()).toString();
for (Employee e : emps)
{
//获取旷工对应的出勤类型
AttendType atype = typeDao.get(6);
Attend a = new Attend();
a.setDutyDay(dutyDay);
a.setType(atype);
//如果当前时间是是早上,对应于上班打卡
if (Calendar.getInstance()
.get(Calendar.HOUR_OF_DAY) < AM_LIMIT)
{
//上班打卡
a.setIsCome(true);
}
else
{
//下班打卡
a.setIsCome(false);
}
a.setEmployee(e);
attendDao.save(a);
}
}
/**
* 自动结算工资,每月1号,结算上个月工资
*/
public void autoPay()
{
System.out.println("自动插入工资结算");
List<Employee> emps = empDao.findAll();
//获取上个月时间
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, -15);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String payMonth = sdf.format(c.getTime());
//为每个员工计算上个月工资
for (Employee e : emps)
{
Payment pay = new Payment();
//获取该员工的工资
double amount = e.getSalary();
//获取该员工上个月的出勤记录
List<Attend> attends = attendDao.findByEmp(e);
//用工资累积其出勤记录的工资
for ( Attend a : attends )
{
amount += a.getType().getAmerce();
}
//添加工资结算
pay.setPayMonth(payMonth);
pay.setEmployee(e);
pay.setAmount(amount);
payDao.save(pay);
}
}
/**
* 验证某个员工是否可打卡
* @param user 员工名
* @param dutyDay 日期
* @return 可打卡的类别
*/
public int validPunch(String user , String dutyDay)
{
//不能查找到对应用户,返回无法打卡
Employee emp = empDao.findByName(user);
if (emp == null)
{
return NO_PUNCH;
}
//找到员工当前的出勤记录
List<Attend> attends = attendDao.findByEmpAndDutyDay(emp , dutyDay);
//系统没有为用户在当天插入空打卡记录,无法打卡
if (attends == null || attends.size() <= 0)
{
return NO_PUNCH;
}
//开始上班打卡
else if (attends.size() == 1
&& attends.get(0).getIsCome()
&& attends.get(0).getPunchTime() == null)
{
return COME_PUNCH;
}
else if (attends.size() == 1
&& attends.get(0).getPunchTime() == null)
{
return LEAVE_PUNCH;
}
else if (attends.size() == 2)
{
//可以上班、下班打卡
if (attends.get(0).getPunchTime() == null
&& attends.get(1).getPunchTime() == null)
{
return BOTH_PUNCH;
}
//可以下班打卡
else if (attends.get(1).getPunchTime() == null)
{
return LEAVE_PUNCH;
}
else
{
return NO_PUNCH;
}
}
return NO_PUNCH;
}
/**
* 打卡
* @param user 员工名
* @param dutyDay 打卡日期
* @param isCome 是否是上班打卡
* @return 打卡结果
*/
public int punch(String user , String dutyDay , boolean isCome)
{
Employee emp = empDao.findByName(user);
if (emp == null)
{
return PUNCH_FAIL;
}
//找到员工本次打卡对应的出勤记录
Attend attend =
attendDao.findByEmpAndDutyDayAndCome(emp , dutyDay , isCome);
if (attend == null)
{
return PUNCH_FAIL;
}
//已经打卡
if (attend.getPunchTime() != null)
{
return PUNCHED;
}
System.out.println("============打卡==========");
//获取打卡时间
int punchHour = Calendar.getInstance()
.get(Calendar.HOUR_OF_DAY);
attend.setPunchTime(new Date());
//上班打卡
if (isCome)
{
// 9点之前算正常
if (punchHour < COME_LIMIT)
{
attend.setType(typeDao.get(1));
}
// 9~11点之间算迟到
else if (punchHour < LATE_LIMIT)
{
attend.setType(typeDao.get(4));
}
//11点之后算旷工,无需理会
}
//下班打卡
else
{
//18点之后算正常
if (punchHour > LEAVE_LIMIT)
{
attend.setType(typeDao.get(1));
}
//16~18点之间算早退
else if (punchHour < EARLY_LIMIT)
{
attend.setType(typeDao.get(5));
}
}
attendDao.update(attend);
return PUNCH_SUCC;
}
/**
* 根据员工浏览自己的工资
* @param empName 员工名
* @return 该员工的工资列表
*/
public List<PaymentBean> empSalary(String empName)
{
//获取当前员工
Employee emp = empDao.findByName(empName);
//获取该员工的全部工资列表
List<Payment> pays = payDao.findByEmp(emp);
List<PaymentBean> result = new ArrayList<PaymentBean>();
//封装VO集合
for (Payment p : pays )
{
result.add(new PaymentBean(p.getPayMonth()
,p.getAmount()));
}
return result;
}
/**
* 员工查看自己的最近三天非正常打卡
* @param empName 员工名
* @return 该员工的最近三天的非正常打卡
*/
public List<AttendBean> unAttend(String empName)
{
//找出正常上班
AttendType type = typeDao.get(1);
Employee emp = empDao.findByName(empName);
//找出非正常上班的出勤记录
List<Attend> attends = attendDao.findByEmpUnAttend(emp, type);
List<AttendBean> result = new ArrayList<AttendBean>();
//封装VO集合
for (Attend att : attends )
{
result.add(new AttendBean(att.getId() , att.getDutyDay()
, att.getType().getName() , att.getPunchTime()));
}
return result;
}
/**
* 返回全部的出勤类别
* @return 全部的出勤类别
*/
public List<AttendType> getAllType()
{
return typeDao.findAll();
}
/**
* 添加申请
* @param attId 申请的出勤ID
* @param typeId 申请的类型ID
* @param reason 申请的理由
* @return 添加的结果
*/
public boolean addApplication(int attId , int typeId
, String reason)
{
//创建一个申请
Application app = new Application();
//获取申请需要改变的出勤记录
Attend attend = attendDao.get(attId);
AttendType type = typeDao.get(typeId);
app.setAttend(attend);
app.setType(type);
if (reason != null)
{
app.setReason(reason);
}
appDao.save(app);
return true;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
轻量级Java EE企业级应用实战第3版-Struts2+Spring3+Hibernate整合开发源代码 (2000个子文件)
css.css 713B
css.css 713B
css.css 702B
css.css 702B
css.css 672B
css.css 672B
arrayParam.html 842B
rawDown.html 636B
EmpManagerImpl.java 8KB
EmpManagerImpl.java 8KB
MgrManagerImpl.java 5KB
MgrManagerImpl.java 5KB
NativeSQLTest.java 5KB
YeekuXmlApplicationContext.java 5KB
ProjectionTest.java 5KB
AuthImg.java 4KB
AuthImg.java 4KB
CriteriaTest.java 4KB
AttendDaoHibernate.java 4KB
AttendDaoHibernate.java 4KB
QueryTag.java 3KB
UploadAction.java 3KB
YeekuHibernateDaoSupport.java 3KB
YeekuHibernateDaoSupport.java 3KB
YeekuHibernateDaoSupport.java 3KB
NewsManager.java 3KB
HqlQuery.java 3KB
test_jsp.java 3KB
FourAdviceTest.java 3KB
HqlQuery.java 3KB
Employee.java 3KB
Employee.java 3KB
Product.java 3KB
EmployeeDaoHibernate.java 3KB
EmployeeDaoHibernate.java 3KB
Attend.java 3KB
Attend.java 3KB
DbDao.java 3KB
EmpManager.java 3KB
EmpManager.java 3KB
LoginAction.java 3KB
LoginAction.java 3KB
TestServlet.java 3KB
PersonDaoImpl.java 3KB
PersonDaoImpl.java 3KB
MyInterceptor.java 3KB
PersonDaoImpl.java 3KB
FourAdviceTest.java 3KB
DbDao.java 2KB
PaymentDaoHibernate.java 2KB
PaymentDaoHibernate.java 2KB
SpELTest.java 2KB
ManagerDaoHibernate.java 2KB
ManagerDaoHibernate.java 2KB
NamedSQLTest.java 2KB
PersonManager.java 2KB
PersonManager.java 2KB
PersonManager.java 2KB
Category.java 2KB
UploadAction.java 2KB
UploadAction.java 2KB
PersonDaoJpa.java 2KB
ApplicationDaoHibernate.java 2KB
ApplicationDaoHibernate.java 2KB
LoginRegistAction.java 2KB
PersonDaoHibernate.java 2KB
RequestListener.java 2KB
LoginServlet.java 2KB
LoginAction.java 2KB
ProcessPunchAction.java 2KB
ProcessPunchAction.java 2KB
Application.java 2KB
Application.java 2KB
AuthorityFilter.java 2KB
AttendDao.java 2KB
AttendDao.java 2KB
NewsManager.java 2KB
ProcessAppAction.java 2KB
ProcessAppAction.java 2KB
PersonDaoHibernate.java 2KB
OnlineListener.java 2KB
FirstServlet.java 2KB
PersonDaoJpa.java 2KB
LoginAction.java 2KB
AttendTypeDaoHibernate.java 2KB
AttendTypeDaoHibernate.java 2KB
CheckAppAction.java 2KB
CheckAppAction.java 2KB
CheckBackDaoHibernate.java 2KB
CheckBackDaoHibernate.java 2KB
RequestListener.java 2KB
Person.java 2KB
DetachedCriteriaTest.java 2KB
CheckBack.java 2KB
CheckBack.java 2KB
RegistAction.java 2KB
GetConnListener.java 2KB
JSONExample.java 2KB
LoginAction.java 2KB
LogFilter.java 2KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
zhujiahui622
- 粉丝: 171
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页