|  | @@ -68,7 +68,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |              int month = calendar.get(calendar.MONTH) + 1;//月份
 | 
	
		
			
				|  |  |              String cont = "2";
 | 
	
		
			
				|  |  |              String jq="";
 | 
	
		
			
				|  |  | -            StatutoryLeave one = statutoryLeaveService.getOne(date);
 | 
	
		
			
				|  |  | +            StatutoryLeave one = statutoryLeaveService.getOne(date,null);
 | 
	
		
			
				|  |  |              if (one!=null){
 | 
	
		
			
				|  |  |              jq=one.getType();
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -149,7 +149,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
 | 
	
		
			
				|  |  |                      List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
 | 
	
		
			
				|  |  | -                    if (oneUserShift!=null&&oneUserShift.size()>0&&!oneUserShift.get(0).get("id").equals("0")){
 | 
	
		
			
				|  |  | +                    if (oneUserShift!=null&&oneUserShift.size()>0&&!oneUserShift.get(0).get("id").equals("0")&&oneUserShift.get(0).get("type").equals("0")){//不分段
 | 
	
		
			
				|  |  |                          if (attendances!=null&&attendances.size()>1){//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  |                              Date startDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("startDate"), sd);
 | 
	
		
			
				|  |  |                              Date endDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("endDate"), sd);
 | 
	
	
		
			
				|  | @@ -177,6 +177,63 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                          }else {
 | 
	
		
			
				|  |  |                              cont="1";
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | +                    }else if (oneUserShift!=null&&oneUserShift.size()>0&&!oneUserShift.get(0).get("id").equals("0")&&!oneUserShift.get(0).get("type").equals("0")){//分段
 | 
	
		
			
				|  |  | +                        Date startDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("startDate"), sd);
 | 
	
		
			
				|  |  | +                        Date endDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("endDate"), sd);
 | 
	
		
			
				|  |  | +                        Date start2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("start2Date"), sd);
 | 
	
		
			
				|  |  | +                        Date end2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("end2Date"), sd);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        if (attendances!=null&&attendances.size()>3){//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | +                            Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            Date usStart2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(2).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            Date usEnd2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            if (!attendances.get(0).getExceptionType().equals("正常")||!attendances.get(1).getExceptionType().equals("正常")||!attendances.get(2).getExceptionType().equals("正常")||!attendances.get(attendances.size()-1).getExceptionType().equals("正常")){
 | 
	
		
			
				|  |  | +                                cont="1";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            }else {
 | 
	
		
			
				|  |  | +                                if (attendances.get(0).getExceptionType().equals("正常")&&usStartDate.getTime()>startDate.getTime()){
 | 
	
		
			
				|  |  | +                                    cont="1";
 | 
	
		
			
				|  |  | +                                    attendances.get(0).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                    attendances.get(0).setHolidayType(oneUserShift.get(0).get("startDate").toString());
 | 
	
		
			
				|  |  | +                                }if (attendances.get(1).getExceptionType().equals("正常")&&usEndDate.getTime()<endDate.getTime()){
 | 
	
		
			
				|  |  | +                                    cont="1";
 | 
	
		
			
				|  |  | +                                    attendances.get(1).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                    attendances.get(1).setHolidayType(oneUserShift.get(0).get("endDate").toString());
 | 
	
		
			
				|  |  | +                                } if (attendances.get(2).getExceptionType().equals("正常")&&usStart2Date.getTime()>start2Date.getTime()){
 | 
	
		
			
				|  |  | +                                    cont="1";
 | 
	
		
			
				|  |  | +                                    attendances.get(2).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                    attendances.get(2).setHolidayType(oneUserShift.get(0).get("start2Date").toString());
 | 
	
		
			
				|  |  | +                                }if (attendances.get(attendances.size()-1).getExceptionType().equals("正常")&&usEnd2Date.getTime()<end2Date.getTime()){
 | 
	
		
			
				|  |  | +                                    cont="1";
 | 
	
		
			
				|  |  | +                                    attendances.get(attendances.size() - 1).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                    attendances.get(attendances.size() - 1).setHolidayType(oneUserShift.get(0).get("end2Date").toString());
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        }else if (attendances!=null&&attendances.size()<4&&attendances.size()>0){
 | 
	
		
			
				|  |  | +                            Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            cont="1";
 | 
	
		
			
				|  |  | +                            if (attendances.get(0).getExceptionType().equals("正常")&&usStartDate.getTime()>startDate.getTime()){
 | 
	
		
			
				|  |  | +                                attendances.get(0).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                attendances.get(0).setHolidayType(oneUserShift.get(0).get("startDate").toString());
 | 
	
		
			
				|  |  | +                            }if (attendances.get(1)!=null&&attendances.get(1).getExceptionType().equals("正常")){
 | 
	
		
			
				|  |  | +                                Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                if (usEndDate.getTime()<endDate.getTime()){
 | 
	
		
			
				|  |  | +                                    attendances.get(1).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                    attendances.get(1).setHolidayType(oneUserShift.get(0).get("endDate").toString());
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }if (attendances.get(2)!=null&&attendances.get(1).getExceptionType().equals("正常")){
 | 
	
		
			
				|  |  | +                                Date usStart2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(2).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                if (usStart2Date.getTime()>start2Date.getTime()){
 | 
	
		
			
				|  |  | +                                    attendances.get(2).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                    attendances.get(2).setHolidayType(oneUserShift.get(0).get("start2Date").toString());
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }else {
 | 
	
		
			
				|  |  | +                            cont="1";
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }else if (attendanceRule.getType().equals("3")) {//规则类型 3,自由上下班
 | 
	
		
			
				|  |  |                      if (jq.equals("1")) {//优先判断是否存在法定节假日
 | 
	
	
		
			
				|  | @@ -219,7 +276,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                  String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
 | 
	
		
			
				|  |  |                  String jqw="";
 | 
	
		
			
				|  |  |                  List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
 | 
	
		
			
				|  |  | -                StatutoryLeave stjq = statutoryLeaveService.getOne(aDate);
 | 
	
		
			
				|  |  | +                StatutoryLeave stjq = statutoryLeaveService.getOne(aDate,null);
 | 
	
		
			
				|  |  |                  if (stjq!=null){
 | 
	
		
			
				|  |  |                      jqw=stjq.getType();
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -275,7 +332,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                      }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
 | 
	
		
			
				|  |  |                          at.setNotes("");
 | 
	
		
			
				|  |  |                          List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
 | 
	
		
			
				|  |  | -                        if (oneUserShift!=null&&oneUserShift.size()>0){
 | 
	
		
			
				|  |  | +                        if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type").equals("0")){
 | 
	
		
			
				|  |  |                              if (oneUserShift.get(0).get("id").equals("0")) {
 | 
	
		
			
				|  |  |                                  at.setNotes("休");
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -297,6 +354,36 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                                      at.setIs("1");
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | +                        }else if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type").equals("1")){
 | 
	
		
			
				|  |  | +                            at.setNotes("班");
 | 
	
		
			
				|  |  | +                            Date startDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("startDate"), sd);
 | 
	
		
			
				|  |  | +                            Date endDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("endDate"), sd);
 | 
	
		
			
				|  |  | +                            Date start2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("start2Date"), sd);
 | 
	
		
			
				|  |  | +                            Date end2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("end2Date"), sd);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            if (attendances!=null&&attendances.size()>3){//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | +                                Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                Date usStart2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(2).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                Date usEnd2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                if (!attendances.get(0).getExceptionType().equals("正常")||!attendances.get(1).getExceptionType().equals("正常")||!attendances.get(2).getExceptionType().equals("正常")||!attendances.get(attendances.size()-1).getExceptionType().equals("正常")){
 | 
	
		
			
				|  |  | +                                    at.setIs("1");
 | 
	
		
			
				|  |  | +                                }else {
 | 
	
		
			
				|  |  | +                                    if (attendances.get(0).getExceptionType().equals("正常")&&usStartDate.getTime()>startDate.getTime()){
 | 
	
		
			
				|  |  | +                                        at.setIs("1");
 | 
	
		
			
				|  |  | +                                    }if (attendances.get(1).getExceptionType().equals("正常")&&usEndDate.getTime()<endDate.getTime()){
 | 
	
		
			
				|  |  | +                                        at.setIs("1");
 | 
	
		
			
				|  |  | +                                    } if (attendances.get(2).getExceptionType().equals("正常")&&usStart2Date.getTime()>start2Date.getTime()){
 | 
	
		
			
				|  |  | +                                        at.setIs("1");
 | 
	
		
			
				|  |  | +                                    }if (attendances.get(attendances.size()-1).getExceptionType().equals("正常")&&usEnd2Date.getTime()<end2Date.getTime()){
 | 
	
		
			
				|  |  | +                                        at.setIs("1");
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            }else {
 | 
	
		
			
				|  |  | +                                at.setIs("1");
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
 | 
	
		
			
				|  |  |                          if (jqw.equals("1")){//优先判断是否存在法定节假日
 | 
	
	
		
			
				|  | @@ -367,7 +454,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |              String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
 | 
	
		
			
				|  |  |              List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
 | 
	
		
			
				|  |  |              String jqw = "";
 | 
	
		
			
				|  |  | -            StatutoryLeave one = statutoryLeaveService.getOne(date);
 | 
	
		
			
				|  |  | +            StatutoryLeave one = statutoryLeaveService.getOne(date,null);
 | 
	
		
			
				|  |  |              if (one != null) {
 | 
	
		
			
				|  |  |                  jqw = one.getType();
 | 
	
		
			
				|  |  |              }
 |