package com.oa.action;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.oa.model.OnAndOffRegister;
import com.oa.model.UserOnAndOffRegister;
import com.oa.model.Users;
import com.oa.service.AttendanceService;
import com.opensymphony.xwork2.ActionSupport;
public class AttendanceManagementAction extends ActionSupport{
private AttendanceService attendanceService;
private String registerHourOn;
private String registerMinuteOn;
private String registerHourOff;
private String registerMinuteOff;
private String ontime;
private String offtime;
private String returns;
public String getRegisterHourOn() {
return registerHourOn;
}
public void setRegisterHourOn(String registerHourOn) {
this.registerHourOn = registerHourOn;
}
public String getRegisterMinuteOn() {
return registerMinuteOn;
}
public void setRegisterMinuteOn(String registerMinuteOn) {
this.registerMinuteOn = registerMinuteOn;
}
public String getRegisterHourOff() {
return registerHourOff;
}
public void setRegisterHourOff(String registerHourOff) {
this.registerHourOff = registerHourOff;
}
public String getRegisterMinuteOff() {
return registerMinuteOff;
}
public void setRegisterMinuteOff(String registerMinuteOff) {
this.registerMinuteOff = registerMinuteOff;
}
public AttendanceService getAttendanceService() {
return attendanceService;
}
@Resource
public void setAttendanceService(AttendanceService attendanceService) {
this.attendanceService = attendanceService;
}
public String getOntime() {
return ontime;
}
public void setOntime(String ontime) {
this.ontime = ontime;
}
public String getOfftime() {
return offtime;
}
public void setOfftime(String offtime) {
this.offtime = offtime;
}
public String AttendanceSet() {
List<String> list = new ArrayList<String>();
list.add("未设置");
for(int i=0; i<10; i++) {
String str = "0";
str += String.valueOf(i);
list.add(str);
}
for(int i=11; i<24; i++) {
list.add(String.valueOf(i));
}
List<String> list2 = new ArrayList<String>();
list2.add("未设置");
for(int i=0; i<10; i++) {
String str = "0";
str += String.valueOf(i);
list2.add(str);
}
for(int i=11; i<60; i++) {
list2.add(String.valueOf(i));
}
List<OnAndOffRegister> listOnAndOffRegisters = attendanceService.getRegisterSet();
//上班时间
registerHourOn = listOnAndOffRegisters.get(0).getRegularTime().substring(0, listOnAndOffRegisters.get(0).getRegularTime().lastIndexOf(":"));
registerMinuteOn = listOnAndOffRegisters.get(0).getRegularTime().substring(listOnAndOffRegisters.get(0).getRegularTime().lastIndexOf(":")+1, listOnAndOffRegisters.get(0).getRegularTime().length());
System.out.println("hour on is "+registerHourOn);
System.out.println("minute on is "+registerMinuteOn);
//下班时间
registerHourOff = listOnAndOffRegisters.get(1).getRegularTime().substring(0, listOnAndOffRegisters.get(1).getRegularTime().lastIndexOf(":"));
registerMinuteOff = listOnAndOffRegisters.get(1).getRegularTime().substring(listOnAndOffRegisters.get(1).getRegularTime().lastIndexOf(":")+1, listOnAndOffRegisters.get(1).getRegularTime().length());
System.out.println("hour off is "+registerHourOff);
System.out.println("minute off is "+registerMinuteOff);
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session.setAttribute("listHours", list);
session.setAttribute("listMinutes", list2);
request.setAttribute("requestHourOn", registerHourOn);
request.setAttribute("requestMinuteOn", registerMinuteOn);
request.setAttribute("requestHourOff", registerHourOff);
request.setAttribute("requestMinuteOff", registerMinuteOff);
return "attendanceSet";
}
public String AttendanceSetSubmit() {
System.out.println("shang hour on "+registerHourOn);
System.out.println("shang minute on "+registerMinuteOn);
System.out.println("xia hour off " + registerHourOff);
System.out.println("xia minute off " + registerMinuteOff);
String registerOn = registerHourOn + ":" + registerMinuteOn;
String registerOff = registerHourOff + ":" + registerMinuteOff;
attendanceService.addOnAndOffTimeSet(registerOn,registerOff);
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("requestHourOn", registerHourOn);
request.setAttribute("requestMinuteOn", registerMinuteOn);
request.setAttribute("requestHourOff", registerHourOff);
request.setAttribute("requestMinuteOff", registerMinuteOff);
return "attendanceSet";
}
public String OnAndOffRegister() {
List<OnAndOffRegister> listOnAndOffRegisters = attendanceService.getRegisterSet();
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
request.setAttribute("onTime", listOnAndOffRegisters.get(0).getRegularTime());
request.setAttribute("offTime", listOnAndOffRegisters.get(1).getRegularTime());
Users user = (Users)session.getAttribute("admin");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
System.out.println("date is "+date);
List<UserOnAndOffRegister> userOnAndOffRegisterList = attendanceService.select(user.getId(),date);
System.out.println("userONandoff list size is "+userOnAndOffRegisterList.size());
if(userOnAndOffRegisterList.size() != 0) {
if(userOnAndOffRegisterList.get(0).getOnTime() == null &&
userOnAndOffRegisterList.get(0).getOffTime() != null) {
request.setAttribute("hasClickedOff", "hasClicked");
return "OnAndOffRegister";
}
if(userOnAndOffRegisterList.get(0).getOnTime() != null &&
userOnAndOffRegisterList.get(0).getOffTime() == null) {
request.setAttribute("hasClickedOn", "hasClicked");
return "OnAndOffRegister";
}
if(userOnAndOffRegisterList.get(0).getOnTime() != null &&
userOnAndOffRegisterList.get(0).getOffTime() != null) {
request.setAttribute("hasClickedOff", "hasClicked");
request.setAttribute("hasClickedOn", "hasClicked");
return "OnAndOffRegister";
}
}
return "OnAndOffRegister";
}
public String AttendanceRegisterSubmitOn() {
List<OnAndOffRegister> listOnAndOffRegisters = attendanceService.getRegisterSet();
String regularOnTime = listOnAndOffRegisters.get(0).getRegularTime();
Calendar cal=Calendar.getInstance();
int y=cal.get(Calendar.YEAR);
int m=cal.get(Calendar.MONTH);
int d=cal.get(Calendar.DATE);
int h=cal.get(Calendar.HOUR);
int mm=cal.get(Calendar.MINUTE);
String regularOnTimeStr = y+"-"+m+"-"+d+" "+regularOnTime;
String userOnTime = y+"-"+m+"-"+d+" "+h+":"+mm;
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
try {
SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Users user = (Users)session.getAttribute("admin");
String timeOn = h+":"+mm;
String timeOff = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
System.out.println("date is "+date);
List<UserOnAndOffRegister> userOnAndOffRegisterList = attendanceService.select(user.getId(),date);
System.out.println("userONandoff list size is "+userOnAndOffRegisterList.size());
Date regularOnDate = simpleDate.parse(regularOnTimeStr);
Date userOnDate = simpleDate.parse(userOnTime);
if(userOnAndOffRegisterList.size() == 0) {
UserOnAndOffRegister userOnAndOffRegister = new UserOnAndOffRegister();;
userOnAndOffRegister.setDate(date);
userOnAndOffRegister.setOnTime(timeOn);
userOnAndOffRegister.setOffTime(timeOff);
userOnAndOffRegister.setUserId(user);
if(regularOnDate.after(userOnDate)) {
//正常
userOnAndOffRegister.setNormalState("1");
} else {
//迟到
userOnAndOffRegister.setLateState("1");
}
attendanceService.add(userOnAndOffRegister);
} else {
UserOnAndOffRegister userOnAndOffRegister = attendanceService.getUoor(userOnAndOffRegisterList.get(0).getId());
userOnAndOffRegister.setId(userOnAndOffRegisterList.get(0).getId());
userOnAndOffRegister.setDate(date);
userOnAndOffRegister.setOnTime(timeOn);
userOnAndOffRegister.setOffTime(userOnAndOffRegisterList.get(0).getOffTime());
userOnAndOffRegister.setUserId(user);
attendanceService.update(userOnAndOffRegister);
request.setAttribute("hasClickedOff","hasClicked");
}
if(regularOnDate.after(userOnDate)) {
request.setAttribute("onTime", listOnAndOffRegisters.get(0).getRegularTime());
request.setAttribute("offTime", listOnAndOffRegisters.get(1).getRegularTime());
request.setAttribute("hasClickedOn","hasClicked");
return "OnAndOffRegister";
}
} catch (ParseException e) {
e.printStackTrace();
}
request.setAttribute("hasClickedOn","hasClicked");
request.setAttribute("lated","lated");
return "OnAndOffRegister";
}
public String AttendanceRegisterSubmitOff() {
List<OnAndOffRegister> listOnAndOffRegisters = attendanceService.getRegisterSet();
String regularOffTime = listOnAndOffRegisters.get(1).getRegularTime();
Calendar cal=Calendar.getInstance();
int y=cal.get(Calendar.YEAR);
int m=cal.get(Calendar.MONTH);
int d=cal.get(Calendar.DATE);
int h=cal.get(Calendar.HOUR);
int mm=cal.get(Calendar.MINUTE);
String regularOffTimeStr = y+"-"+m+"-"+d+" "+regularOffTime;
String userOffTime = y+"-"+m+"-"+d+" "+h+":"+mm;
SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd hh:mm");
HttpServletRequest request = ServletActionContext.getRequest();
try {
HttpSession session = request.getSession();
Users user = (Users)session.getAttribute("admin");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
String timeOff = h+":"+mm;
String timeOn = "";
List<UserOnAndOffRegister> userOnAndOffRegisterList = attendanceService.select(user.getId(),date);
Date regularOffDate = simpleDate.parse(regularOffTimeStr);
Date userOffDate = simpleDate.parse(userOffTime);
System.out.println("userONandoff list size is "+userOnAndOffRegisterList.size());
if(userOnAndOffRegisterList.size() == 0) {
UserOnAndOffRegister userOnAndOffRegister = new UserOnAndOffRegister();
userOnAndOffRegister.setDate(date);
userOnAndOffRegister.setOnTime(timeOn);
userOnAndOffRegister.setOffTime(timeOff);
userOnAndOffRegister.setUserId(user);
if(regularOffDate.after(userOffDate)) {
//正常
userOnAndOffRegister.setBackState("1");
} else {
//早退
userOnAndOffRegister.setNormalState("1");
}
attendanceService.add(userOnAndOffRegister);
} else {
UserOnAndOffRegister userOnAndOffRegister = attendanceService.getUoor(userOnAndOffRegisterList.get(0).getId());
userOnAndOffRegister.setId(userOnAndOffRegisterList.get(0).getId());
userOnAndOffRegister.setDate(date);
userOnAndOffRegister.setOnTime(userOnAndOffRegisterList.get(0).getOnTime());
userOnAndOffRegister.setOffTime(timeOff);
userOnAndOffRegister.setUserId(user);
attendanceService.update(userOnAndOffRegister);
request.setAttribute("hasClickedOn","hasClicked");
}
if(regularOffDate.after(userOffDate)) {
request.setAttribute("onTime", listOnAndOffRegisters.get(0).getRegularTime());
request.setAttribute("offTime", listOnAndOffRegisters.get(1).getRegularTime());
request.setAttribute("hasClickedOff","hasClicked");
request.setAttribute("zaotui","zaotui");
return "OnAndOffRegister";
}
} catch (ParseException e) {
e.printStackTrace();
}
request.setAttribute("hasClickedOff","hasClicked");
return "OnAndOffRegister";
}
}