package com.amssy.hr.check.service.impl;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.amssy.core.common.dao.hibernate.EntityDaoImpl;
import com.amssy.core.common.util.Col;
import com.amssy.core.common.util.Utility;
import com.amssy.hr.check.action.info.CheckStatInfo;
import com.amssy.hr.check.service.CheckStatService;
import com.amssy.hr.check.service.OrderClassSetService;
import com.amssy.hr.entity.CardRecord;
import com.amssy.hr.entity.DayWorkRecord;
import com.amssy.hr.entity.Employee;
import com.amssy.hr.entity.MonthWorkRecord;
import com.amssy.hr.entity.OfficeHour;
import com.amssy.hr.entity.Organization;
import com.amssy.hr.entity.OvertimeRequistion;
import com.amssy.hr.entity.RedeployRequistion;
import com.amssy.hr.entity.Rule;
import com.amssy.hr.entity.Scheduling;
import com.amssy.hr.entity.Team;
import com.amssy.hr.entity.VacationRequistion;
import com.amssy.hr.entity.VacationSet;
public class CheckStatServiceImpl extends EntityDaoImpl implements CheckStatService{
private static final Log logger = LogFactory.getLog(CheckStatServiceImpl.class);
private OrderClassSetService orderClassSetService;
public OrderClassSetService getOrderClassSetService() {
return orderClassSetService;
}
public void setOrderClassSetService(OrderClassSetService orderClassSetService) {
this.orderClassSetService = orderClassSetService;
}
/**
* 周六上班开始时间
*/
private String startSaturday = null;
/**
* 周六下班结束时间
*/
private String endSaturday = null;
private Map restMap;
private Map legalHolidaMap;
private String restDayOverTime = Col.No;
public static final int NUM = 60;
/**
* 考勤统计
* @param info
* @return
*/
public List checkStat(CheckStatInfo info) {
List monthList = new ArrayList();
//对排班表进行修改
this.reSetSch();
//取当前月的前一个月
String fowardMonth = Utility.getFowardMonth();
//String fowardMonth = "10";
//取要统计考勤的年份
String currentYear = Utility.getYear();
if(fowardMonth.equals("12")){
currentYear = String.valueOf(Integer.valueOf(currentYear) - 1);
}
//将要计算考勤的年月拼成字符串
String checkYM = currentYear+"-"+fowardMonth;
String currentYM = checkYM;
//获得当前天数
int monthDays = Utility.getMonthDays(checkYM+"-01");
//用来存放人员
List empList = new ArrayList();
//存入当前人员当月的所有排班
Map schMap = new HashMap();
String empHql = null;
//根据条件查找要统计考勤的人员
if(info.getOrgId() != null && info.getOrgId().intValue() > 0){
empHql = "from Employee emp where emp.org.id = ? and emp.state <> ?";
empList = super.find(empHql, info.getOrgId(),"dimission");
schMap = this.SchMapAll(checkYM, info.getOrgId());
}else{
empHql = "from Employee emp where emp.state <> ?";
empList = super.find(empHql, "dimission");
schMap = this.SchMapAll(checkYM, new Long(0));
}
//人员做为外层循环
for(int i=0;i<empList.size();i++){
Employee emp = (Employee)empList.get(i);
//产生一条月考勤记录
MonthWorkRecord monthWorkRecord = new MonthWorkRecord();
monthWorkRecord.setEmp(emp);
monthWorkRecord.setWorkMonth(currentYM);
monthWorkRecord.setWorkDays(0.0);
monthWorkRecord.setBLeave(0.0);
monthWorkRecord.setMarryDays(0.0);
monthWorkRecord.setMealDays(0.0);
monthWorkRecord.setCompassionate(0.0);
monthWorkRecord.setEgression(0.0);
monthWorkRecord.setIllDays(0.0);
monthWorkRecord.setLongIllDays(0.0);
monthWorkRecord.setLeaveDays(0.0);
monthWorkRecord.setLongLeaveDays(0.0);
monthWorkRecord.setLeaveOvertime(0.0);
monthWorkRecord.setOvertime(0.0);
monthWorkRecord.setStairEarlyDays(0);
monthWorkRecord.setStairLateDays(0);
monthWorkRecord.setTwoEarlyDays(0);
monthWorkRecord.setTwoLateDays(0);
monthWorkRecord.setAbsenceDays(0.0);
monthWorkRecord.setLegalOvertime(0.0);
monthWorkRecord.setNotSch("");
monthWorkRecord.setRemark("");
monthWorkRecord.setFinallyDay("");
monthWorkRecord.setStartAbsence(0.0);
monthWorkRecord.setDimissAbsence(0.0);
monthWorkRecord.setRestDay(0);
monthWorkRecord.setMaternityLeave(0.0);
monthWorkRecord.setBLeave(0.0);
monthWorkRecord.setLineDay(0.0);
monthWorkRecord.setTrainDay(0.0);
monthWorkRecord.setYearLeaveDays(0.0);
monthWorkRecord.setFinallyDay("");
//月份天数做为内层循环monthDays
for(int j=1;j<=monthDays;j++){
//要统计考勤的日期
String checkDay;
if(j<10){
checkDay = "0"+String.valueOf(j);
}else{
checkDay = String.valueOf(j);
}
String checkYMD = checkYM+"-"+checkDay;
String currentYMD = checkYMD;
//去掉"-"的日期
String keyDate = checkYMD.replace("-", "");
if(emp != null){
//产生一条当日考勤记录
DayWorkRecord dayWordRecord = new DayWorkRecord();
dayWordRecord.setCreateDate(Utility.strYmdHmDate(new Date()));
dayWordRecord.setEmp(emp);
dayWordRecord.setWorkDate(currentYMD);
dayWordRecord.setWorkDays(0);
dayWordRecord.setBLeave(0.0);
dayWordRecord.setMarryDays(0.0);
dayWordRecord.setMealDays(0);
dayWordRecord.setCompassionate(0.0);
dayWordRecord.setEgression(0.0);
dayWordRecord.setIllDays(0.0);
dayWordRecord.setLongIllDays(0.0);
dayWordRecord.setLeaveDays(0.0);
dayWordRecord.setLongLeaveDays(0.0);
dayWordRecord.setLeaveOvertime(0.0);
dayWordRecord.setOvertime(0.0);
dayWordRecord.setStairEarlyDays(0);
dayWordRecord.setStairLateDays(0);
dayWordRecord.setTwoEarlyDays(0);
dayWordRecord.setTwoLateDays(0);
dayWordRecord.setAbsenceDays(0.0);
dayWordRecord.setLegalOvertime(0.0);
dayWordRecord.setNotSch("");
dayWordRecord.setStartAbsence(0.0);
dayWordRecord.setDimissAbsence(0.0);
dayWordRecord.setRestDay(0);
dayWordRecord.setMaternityLeave(0.0);
dayWordRecord.setBLeave(0.0);
dayWordRecord.setLineDay(0.0);
dayWordRecord.setTrainDay(0.0);
dayWordRecord.setYearLeaveDays(0.0);
dayWordRecord.setFinallyDay("");
//拼key
String stringEmpId = emp.getId().toString();
String mapKey = keyDate.trim()+stringEmpId.trim();
//在排班Map中查找当前人员的当前日期的排班记录
Scheduling sch = (Scheduling)schMap.get(mapKey);
//找到当前人当天的打卡记录CardRecord
List cardList = this.findCard(emp.getEmployeeSerial(), checkYMD);
if(sch != null){
if(sch.getTeam().getFullName().equals(Col.REST)){
dayWordRecord.setRestDay(dayWordRecord.getRestDay()+1);
//判断是否有加班,并计算加班考勤
//this.checkOverTime(emp, checkYMD, dayWordRecord);
}else if(sch.getIsTaining().equals(Col.No)){//如是不是最终考勤
//*************************************************有排班记录有打卡记录**********************************************************//
if(!Col.RO.equals(sch.getTeamName()) && !Col.PMRO.equals(sch.getTeamName()) && !Col.AMRO.equals(sch.getTe
没有合适的资源?快使用搜索试试~ 我知道了~
HR-人力资源系统.zip

共858个文件
class:178个
java:169个
jsp:128个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 90 浏览量
2023-10-02
21:45:58
上传
评论
收藏 33.81MB ZIP 举报
温馨提示
一套完完整整的人力资源系统源代码。 这是我公司的项目,已经上线运营了。 采用的技术栈是SSH。 含Java代码和脚本,页面,JS脚本,样式,图片,配置文件都很齐全,可以根据直接使用,也可以根据业务需求稍作修改。 可以商用,也可以学习。
资源推荐
资源详情
资源评论


















收起资源包目录





































































































共 858 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论


小小哭包
- 粉丝: 1070
- 资源: 3694

下载权益

C知道特权

VIP文章

课程特权

开通VIP
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
