|  | @@ -74,9 +74,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              int actualMaximum = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);//获取前端传过来的时间获取月份的总天数
 | 
	
		
			
				|  |  |              AttendanceRule attendanceRule = attendanceRuleService.UserRule(userid);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                if (attendanceRule!=null){
 | 
	
		
			
				|  |  | +            String car = attendanceMapper.isCar(userid);
 | 
	
		
			
				|  |  | +        if (attendanceRule!=null&&car!=null&&car.equals("0")){
 | 
	
		
			
				|  |  |                  if (attendanceRule.getType().equals("1")){//判断规则类型1,固定时间上下班
 | 
	
		
			
				|  |  |                      if (jq.equals("1")){//优先判断是否存在法定节假日
 | 
	
		
			
				|  |  |                          if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
 | 
	
	
		
			
				|  | @@ -149,7 +148,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")&&oneUserShift.get(0).get("type").equals("0")){//不分段
 | 
	
		
			
				|  |  | +                    if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type")!=null&&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,7 +176,7 @@ 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")){//分段
 | 
	
		
			
				|  |  | +                    }else if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type")!=null&&oneUserShift.get(0).get("type").equals("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);
 | 
	
		
			
				|  |  |                          Date start2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("start2Date"), sd);
 | 
	
	
		
			
				|  | @@ -215,22 +214,31 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                          }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());
 | 
	
		
			
				|  |  | +                            for (int i=0;i<attendances.size();i++){
 | 
	
		
			
				|  |  | +                                if (i==0){
 | 
	
		
			
				|  |  | +                                    if (attendances.get(0).getExceptionType().equals("正常")&&usStartDate.getTime()>startDate.getTime()){
 | 
	
		
			
				|  |  | +                                        attendances.get(0).setExceptionType("时间异常");
 | 
	
		
			
				|  |  | +                                        attendances.get(0).setHolidayType(oneUserShift.get(0).get("startDate").toString());
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }else  if (i==1){
 | 
	
		
			
				|  |  | +                                    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());
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }else if (i==2){
 | 
	
		
			
				|  |  | +                                    if (attendances.get(2)!=null&&attendances.get(2).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";
 | 
	
		
			
				|  |  |                          }
 | 
	
	
		
			
				|  | @@ -332,11 +340,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&&oneUserShift.get(0).get("type").equals("0")){
 | 
	
		
			
				|  |  | -                            if (oneUserShift.get(0).get("id").equals("0")) {
 | 
	
		
			
				|  |  | -                                at.setNotes("休");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            }else {
 | 
	
		
			
				|  |  | +                        if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type")!=null&&oneUserShift.get(0).get("type").equals("0")){
 | 
	
		
			
				|  |  |                                  at.setNotes("班");
 | 
	
		
			
				|  |  |                                  if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  |                                      if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
	
		
			
				|  | @@ -353,8 +357,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                                  } else {
 | 
	
		
			
				|  |  |                                      at.setIs("1");
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | -                        }else if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type").equals("1")){
 | 
	
		
			
				|  |  | +                        }else if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type")!=null&&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);
 | 
	
	
		
			
				|  | @@ -384,6 +387,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                              }else {
 | 
	
		
			
				|  |  |                                  at.setIs("1");
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | +                        }else  if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("id").equals("0")){
 | 
	
		
			
				|  |  | +                            at.setNotes("休");
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
 | 
	
		
			
				|  |  |                          if (jqw.equals("1")){//优先判断是否存在法定节假日
 | 
	
	
		
			
				|  | @@ -420,7 +425,69 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      lit.add(at);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +        }else  if (attendanceRule!=null&&car!=null&&car.equals("1")){
 | 
	
		
			
				|  |  | +            for (int i = 1; i <= actualMaximum; i++) {//循环获取时间月份的总天数
 | 
	
		
			
				|  |  | +                Attendance at = new Attendance();
 | 
	
		
			
				|  |  | +                at.setIss(i + "");//获取所有天数,前端js需要绑定的数据
 | 
	
		
			
				|  |  | +                String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
 | 
	
		
			
				|  |  | +                String jqw="";
 | 
	
		
			
				|  |  | +                List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
 | 
	
		
			
				|  |  | +                StatutoryLeave stjq = statutoryLeaveService.getOne(aDate,null);
 | 
	
		
			
				|  |  | +                if (stjq!=null){
 | 
	
		
			
				|  |  | +                    jqw=stjq.getType();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                at.setIs("2");
 | 
	
		
			
				|  |  | +                at.setNotes("休");
 | 
	
		
			
				|  |  | +                if (attendanceRule.getType().equals("1")){//判断规则类型1,固定时间上下班
 | 
	
		
			
				|  |  | +                    if (jqw.equals("1")){//优先判断是否存在法定节假日
 | 
	
		
			
				|  |  | +                        at.setNotes("班");
 | 
	
		
			
				|  |  | +                    }else if (jqw.equals("")) {
 | 
	
		
			
				|  |  | +                        String state = "1";
 | 
	
		
			
				|  |  | +                        String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
 | 
	
		
			
				|  |  | +                        Date da = DateUtils.str2Date(aDate, sdf);
 | 
	
		
			
				|  |  | +                        for (String day : split) {
 | 
	
		
			
				|  |  | +                            if (day.equals(String.valueOf(da.getDay()))) {
 | 
	
		
			
				|  |  | +                                state = "2";
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        if (state.equals("2")) {//在工作日内
 | 
	
		
			
				|  |  | +                            at.setNotes("班");
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
 | 
	
		
			
				|  |  | +                    at.setNotes("");
 | 
	
		
			
				|  |  | +                    List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
 | 
	
		
			
				|  |  | +                    if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type")!=null&&oneUserShift.get(0).get("type").equals("0")){
 | 
	
		
			
				|  |  | +                            at.setNotes("班");
 | 
	
		
			
				|  |  | +                    }else if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type")!=null&&oneUserShift.get(0).get("type").equals("1")){
 | 
	
		
			
				|  |  | +                        at.setNotes("班");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }else if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("id").equals("0")){
 | 
	
		
			
				|  |  | +                        at.setNotes("休");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
 | 
	
		
			
				|  |  | +                    if (jqw.equals("1")){//优先判断是否存在法定节假日
 | 
	
		
			
				|  |  | +                        at.setNotes("班");
 | 
	
		
			
				|  |  | +                    }else if (jqw.equals("")) {
 | 
	
		
			
				|  |  | +                        String states = "1";
 | 
	
		
			
				|  |  | +                        String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
 | 
	
		
			
				|  |  | +                        Date da = DateUtils.str2Date(aDate, sdf);
 | 
	
		
			
				|  |  | +                        for (String day : split) {
 | 
	
		
			
				|  |  | +                            if (day.equals(String.valueOf(da.getDay()))) {
 | 
	
		
			
				|  |  | +                                states = "2";
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        if (states.equals("2")) {
 | 
	
		
			
				|  |  | +                            at.setNotes("班");
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                lit.add(at);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          List<Vacation> vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据
 | 
	
		
			
				|  |  |          List< Map<String,Object>> oneWork = attendanceMapper.getOneWork(userid, date);
 | 
	
		
			
				|  |  |          map.put("date",attendances);
 |