|
@@ -47,177 +47,35 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
- String str="2021-10-01";
|
|
|
calendar.setTime(sdf.parse(date));
|
|
|
int year = calendar.get(calendar.YEAR);//年份
|
|
|
int month = calendar.get(calendar.MONTH) + 1;//月份
|
|
|
int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
|
|
|
String cont = "2";
|
|
|
- Boolean b=false;
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH,-1);
|
|
|
- List<Map<String,Object>> todayUserShift = userShiftMapper.getOneUserShift(userid,sdf.format(calendar.getTime()),"");
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH,2);
|
|
|
- List<Attendance> ae = attendanceMapper.queryList(userid, sdf.format(calendar.getTime()));//查询当前用户的打卡时间
|
|
|
- List<Map<String,Object>> hou = userShiftMapper.getOneUserShift(userid,sdf.format(calendar.getTime()),"");
|
|
|
- if (oneUserShift!=null&&oneUserShift.size()>0) {
|
|
|
- if (todayUserShift.size()>0&&sd.parse(str + " " + todayUserShift.get(todayUserShift.size()-1).get("endDate").toString()).getTime()<sd.parse(str + " " + todayUserShift.get(todayUserShift.size()-1).get("startDate").toString()).getTime()){
|
|
|
- if (attendances.size()>0&&attendances.get(0).getUsDate().getTime()<sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(0).get("startDate").toString()).getTime()){
|
|
|
- attendances.remove(0);
|
|
|
- }
|
|
|
- } if (attendances.size()>0) {//判断用户当前时间的打卡记录是否正常
|
|
|
- if (oneUserShift.size()>0&&sd.parse(str+ " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()<sd.parse(str + " " + oneUserShift.get(oneUserShift.size()-1).get("startDate").toString()).getTime()) {
|
|
|
- if (!attendances.get(0).getExceptionType().equals("未打卡")){
|
|
|
- attendances.get(0).setCheckinType("上班打卡");
|
|
|
-
|
|
|
- if (attendances.get(0).getUsDate().getTime() > sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- attendances.get(0).setExceptionType("迟到");
|
|
|
- cont = "1";
|
|
|
- }
|
|
|
- if (ae.size() > 0) {
|
|
|
- ae.get(0).setCheckinType("次日下班打卡");
|
|
|
- if (ae.get(0).getUsDate().getTime() < sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- ae.get(0).setExceptionType("早退");
|
|
|
- cont = "1";
|
|
|
- b = true;
|
|
|
- }
|
|
|
- if (hou.size() > 0) {
|
|
|
- if (ae.get(0).getUsDate().getTime() >= sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime() && ae.get(0).getUsDate().getTime() < sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + hou.get(hou.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- ae.get(0).setExceptionType("");
|
|
|
- b = true;
|
|
|
- } else {
|
|
|
- cont = "1";
|
|
|
- }
|
|
|
- }
|
|
|
- if (hou.size() < 1) {
|
|
|
- if (ae.get(0).getUsDate().getTime() > sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- ae.get(0).setExceptionType("");
|
|
|
- b = true;
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- cont = "1";
|
|
|
- if (attendances.size() > 1) {
|
|
|
- attendances.get(attendances.size() - 1).setCheckinType("下班打卡");
|
|
|
- attendances.get(attendances.size() - 1).setExceptionType("早退");
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- cont="1";
|
|
|
- }
|
|
|
+ if (oneUserShift!=null&&oneUserShift.size()>0){
|
|
|
+ if (attendances!=null&&attendances.size()>1){
|
|
|
+ cont=exitprio(attendances);
|
|
|
}else {
|
|
|
- attendances.get(0).setCheckinType("上班打卡");
|
|
|
-
|
|
|
- if (attendances.size()<2){
|
|
|
- if (attendances.get(0).getUsDate().getTime()>sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("startDate").toString()).getTime()&&attendances.get(0).getUsDate().getTime()<sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()){
|
|
|
- attendances.get(0).setExceptionType("迟到");
|
|
|
- cont="1";
|
|
|
- }else if (attendances.get(0).getUsDate().getTime()>sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()){
|
|
|
- attendances.get(0).setCheckinType("下班打卡");
|
|
|
- }
|
|
|
- }else{
|
|
|
- attendances.get(attendances.size()-1).setCheckinType("下班打卡");
|
|
|
-
|
|
|
- if (attendances.get(0).getUsDate().getTime()>sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("startDate").toString()).getTime()&&attendances.get(0).getUsDate().getTime()<sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()){
|
|
|
- attendances.get(0).setExceptionType("迟到");
|
|
|
- cont="1";
|
|
|
- }if (attendances.get(0).getUsDate().getTime()>sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()){
|
|
|
- attendances.get(0).setCheckinType("下班打卡");
|
|
|
- }if (attendances.get(attendances.size()-1).getUsDate().getTime()<sd.parse(sdf.format(attendances.get(attendances.size()-1).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()){
|
|
|
- attendances.get(attendances.size()-1).setExceptionType("早退");
|
|
|
- cont="1";
|
|
|
- }
|
|
|
- }
|
|
|
+ cont="1";
|
|
|
}
|
|
|
- }else {
|
|
|
- cont="1";
|
|
|
- if (oneUserShift.size()>0&&sd.parse(str+ " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()<sd.parse(str + " " + oneUserShift.get(oneUserShift.size()-1).get("startDate").toString()).getTime()) {
|
|
|
- if (ae.size()>0){
|
|
|
- ae.get(0).setCheckinType("上班打卡");
|
|
|
-
|
|
|
- if (ae.get(0).getUsDate().getTime()<sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()) {
|
|
|
- ae.get(0).setExceptionType("迟到");
|
|
|
- b=true;
|
|
|
- }
|
|
|
- if (hou.size()>0){
|
|
|
- if (ae.get(0).getUsDate().getTime()>sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()&&ae.get(0).getUsDate().getTime()<sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + hou.get(hou.size()-1).get("startDate").toString()).getTime()) {
|
|
|
- ae.get(0).setCheckinType("次日下班打卡");
|
|
|
-
|
|
|
- b=true;
|
|
|
- }
|
|
|
- }if (hou.size()<1){
|
|
|
- if (ae.get(0).getUsDate().getTime()>sd.parse(sdf.format(ae.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size()-1).get("endDate").toString()).getTime()) {
|
|
|
- ae.get(0).setCheckinType("次日下班打卡");
|
|
|
- b=true;
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- cont="1";
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- }if (b){
|
|
|
- attendances.add(ae.get(0));
|
|
|
- }
|
|
|
-
|
|
|
//----------------------------------------------------------------下面是获取当前月份所有天数的考勤-------------------------------------------------
|
|
|
for (int i = 1; i <= actualMaximum; i++) {//循环获取时间月份的总天数
|
|
|
Attendance at = new Attendance();
|
|
|
at.setIss(i + "");//获取所有天数,前端js需要绑定的数据
|
|
|
String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
|
|
|
- calendar.setTime(sdf.parse(aDate));
|
|
|
List<Map<String,Object>> oneUserShifts = userShiftMapper.getOneUserShift(userid, aDate,"");
|
|
|
List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
|
|
|
at.setIs("2");
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH,-1);
|
|
|
- List<Map<String,Object>> todayUserShifts = userShiftMapper.getOneUserShift(userid,sdf.format(calendar.getTime()),"");
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH,2);
|
|
|
- List<Attendance> aes = attendanceMapper.queryList(userid, sdf.format(calendar.getTime()));//查询当前用户的打卡时间
|
|
|
- List<Map<String,Object>> hous = userShiftMapper.getOneUserShift(userid,sdf.format(calendar.getTime()),"");
|
|
|
- if (oneUserShifts!=null&&oneUserShifts.size()>0) {
|
|
|
- if (todayUserShifts.size()>0&&sd.parse(str + " " + todayUserShifts.get(todayUserShifts.size()-1).get("endDate").toString()).getTime()<sd.parse(str + " " + todayUserShifts.get(todayUserShifts.size()-1).get("startDate").toString()).getTime()){
|
|
|
- if (acs.size()>0&&acs.get(0).getUsDate().getTime()<sd.parse(sdf.format(acs.get(0).getUsDate()) + " " + oneUserShifts.get(0).get("startDate").toString()).getTime()){
|
|
|
- acs.remove(0);
|
|
|
- }
|
|
|
- } if (acs.size()>0) {//判断用户当前时间的打卡记录是否正常
|
|
|
- if (oneUserShifts.size() > 0 && sd.parse(str + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("endDate").toString()).getTime() < sd.parse(str + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- if (acs.get(0).getUsDate().getTime() > sd.parse(sdf.format(acs.get(0).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- at.setIs("1");
|
|
|
- }
|
|
|
- if (aes.size() > 0) {
|
|
|
- if (aes.get(0).getUsDate().getTime() < sd.parse(sdf.format(aes.get(0).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- at.setIs("1");
|
|
|
- }
|
|
|
- if (hous.size() > 0) {
|
|
|
- if (aes.get(0).getUsDate().getTime() >=sd.parse(sdf.format(aes.get(0).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("endDate").toString()).getTime() && aes.get(0).getUsDate().getTime() < sd.parse(sdf.format(aes.get(0).getUsDate()) + " " + hous.get(hous.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- } else {
|
|
|
- at.setIs("1");
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- at.setIs("1");
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- if (acs.size() < 2) {
|
|
|
- if (acs.get(0).getUsDate().getTime() > sd.parse(sdf.format(acs.get(0).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("startDate").toString()).getTime() && acs.get(0).getUsDate().getTime() < sd.parse(sdf.format(acs.get(0).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- at.setIs("1");
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (acs.get(0).getUsDate().getTime() > sd.parse(sdf.format(acs.get(0).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("startDate").toString()).getTime() && acs.get(0).getUsDate().getTime() < sd.parse(sdf.format(acs.get(0).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- at.setIs("1");
|
|
|
- }
|
|
|
- if (acs.get(acs.size() - 1).getUsDate().getTime() < sd.parse(sdf.format(acs.get(acs.size() - 1).getUsDate()) + " " + oneUserShifts.get(oneUserShifts.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- at.setIs("1");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if (oneUserShifts!=null&&oneUserShifts.size()>0){
|
|
|
+ if (acs!=null&&acs.size()>1){
|
|
|
+ at.setIs(exitprio(acs));
|
|
|
}else {
|
|
|
at.setIs("1");
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
lit.add(at);
|
|
|
}
|
|
|
Vacation vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据
|
|
@@ -244,62 +102,15 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
int year = calendar.get(calendar.YEAR);//年份
|
|
|
int month = calendar.get(calendar.MONTH) + 1;//月份
|
|
|
int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
- SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- String str="2021-10-01";
|
|
|
for (int i = 1; i <= actualMaximum; i++){
|
|
|
String aDate = String.valueOf(year)+"-"+month+"-"+i;
|
|
|
- calendar.setTime(sdf.parse(aDate));
|
|
|
List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
|
|
|
List<Attendance> attendances = attendanceMapper.queryList(userid, aDate);
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH,-1);
|
|
|
- List<Map<String,Object>> todayUserShifts = userShiftMapper.getOneUserShift(userid,sdf.format(calendar.getTime()),"");
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH,2);
|
|
|
- List<Attendance> aes = attendanceMapper.queryList(userid, sdf.format(calendar.getTime()));//查询当前用户的打卡时间
|
|
|
- List<Map<String,Object>> hous = userShiftMapper.getOneUserShift(userid,sdf.format(calendar.getTime()),"");
|
|
|
- if (oneUserShift!=null&&oneUserShift.size()>0) {
|
|
|
- if (todayUserShifts.size()>0&&sd.parse(str + " " + todayUserShifts.get(todayUserShifts.size()-1).get("endDate").toString()).getTime()<sd.parse(str + " " + todayUserShifts.get(todayUserShifts.size()-1).get("startDate").toString()).getTime()){
|
|
|
- if (attendances.size()>0&&attendances.get(0).getUsDate().getTime()<sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(0).get("startDate").toString()).getTime()){
|
|
|
- attendances.remove(0);
|
|
|
- }
|
|
|
- } if (attendances.size()>0) {//判断用户当前时间的打卡记录是否正常
|
|
|
- if (oneUserShift.size() > 0 && sd.parse(str + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime() < sd.parse(str + " " + oneUserShift.get(oneUserShift.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- if (attendances.get(0).getUsDate().getTime() > sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
- }
|
|
|
- if (aes.size() > 0) {
|
|
|
- if (aes.get(0).getUsDate().getTime() < sd.parse(sdf.format(aes.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
- }
|
|
|
- if (hous.size() > 0) {
|
|
|
- if (aes.get(0).getUsDate().getTime() >=sd.parse(sdf.format(aes.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime() && aes.get(0).getUsDate().getTime() < sd.parse(sdf.format(aes.get(0).getUsDate()) + " " + hous.get(hous.size() - 1).get("startDate").toString()).getTime()) {
|
|
|
- } else {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- if (attendances.size() < 2) {
|
|
|
- if (attendances.get(0).getUsDate().getTime() > sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("startDate").toString()).getTime() && attendances.get(0).getUsDate().getTime() < sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (attendances.get(0).getUsDate().getTime() > sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("startDate").toString()).getTime() && attendances.get(0).getUsDate().getTime() < sd.parse(sdf.format(attendances.get(0).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
- }
|
|
|
- if (attendances.get(attendances.size() - 1).getUsDate().getTime() < sd.parse(sdf.format(attendances.get(attendances.size() - 1).getUsDate()) + " " + oneUserShift.get(oneUserShift.size() - 1).get("endDate").toString()).getTime()) {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ if (oneUserShift!=null&&oneUserShift.size()>0){
|
|
|
+ if (attendances!=null&&attendances.size()>1){
|
|
|
+ String exitprio = exitprio(attendances);
|
|
|
+ if (exitprio.equals("1")){
|
|
|
+ break;
|
|
|
}
|
|
|
}else {
|
|
|
sum="1";
|
|
@@ -307,6 +118,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|
|
|
|
|
|
return sum;
|
|
@@ -348,7 +160,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
public String exitprio(List<Attendance>ls){
|
|
|
Attendance attendance = ls.get(0);
|
|
|
Attendance attendance1 = ls.get(ls.size() - 1);
|
|
|
- if (attendance.getExceptionType()!=null &&attendance1.getExceptionType()!=null){
|
|
|
+ if (!attendance.getExceptionType().equals("正常") &&!attendance1.getExceptionType().equals("正常")){
|
|
|
return "1";
|
|
|
}else {
|
|
|
return "2";
|