|  | @@ -80,13 +80,19 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                  if (attendanceRule.getType().equals("1")){//判断规则类型1,固定时间上下班
 | 
	
		
			
				|  |  |                      if (jq.equals("1")){//优先判断是否存在法定节假日
 | 
	
		
			
				|  |  |                          if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                            if (exitprio(attendances).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | -                                cont = "1";
 | 
	
		
			
				|  |  | +                            Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
 | 
	
		
			
				|  |  | +                            Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
 | 
	
		
			
				|  |  | +                            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(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            if (exitprio(attendances).get("type").equals("1")){//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                                cont="1";
 | 
	
		
			
				|  |  | +                                Map<String, Object> exitprio = exitprio(attendances);
 | 
	
		
			
				|  |  | +                                if (exitprio.get("at")!=null&&exitprio.get("at").equals("2")){
 | 
	
		
			
				|  |  | +                                    attendances.get(0).setHolidayType(sdt.format(attendanceRule.getStartDate()));
 | 
	
		
			
				|  |  | +                                }if (exitprio.get("at2")!=null&&exitprio.get("at2").equals("2")){
 | 
	
		
			
				|  |  | +                                    attendances.get(attendances.size() - 1).setHolidayType(sdt.format(attendanceRule.getEndDate()));
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |                              } else {
 | 
	
		
			
				|  |  | -                                Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
 | 
	
		
			
				|  |  | -                                Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
 | 
	
		
			
				|  |  | -                                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(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  |                                  if (usStartDate.getTime() > startDate.getTime()) {
 | 
	
		
			
				|  |  |                                      cont = "1";
 | 
	
		
			
				|  |  |                                      attendances.get(0).setExceptionType("时间异常");
 | 
	
	
		
			
				|  | @@ -112,13 +118,20 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                          if (state.equals("2") || jq.equals("1")) {//在工作日内
 | 
	
		
			
				|  |  |                              if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                                if (exitprio(attendances).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | -                                    cont = "1";
 | 
	
		
			
				|  |  | -                                } else {
 | 
	
		
			
				|  |  | -                                    Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
 | 
	
		
			
				|  |  | -                                    Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
 | 
	
		
			
				|  |  | -                                    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(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
 | 
	
		
			
				|  |  | +                                Date endDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getEndDate()), sd);
 | 
	
		
			
				|  |  | +                                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(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                                if (exitprio(attendances).get("type").equals("1")){//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                                    cont="1";
 | 
	
		
			
				|  |  | +                                    Map<String, Object> exitprio = exitprio(attendances);
 | 
	
		
			
				|  |  | +                                    if (exitprio.get("at")!=null&&exitprio.get("at").equals("2")){
 | 
	
		
			
				|  |  | +                                        attendances.get(0).setHolidayType(sdt.format(attendanceRule.getStartDate()));
 | 
	
		
			
				|  |  | +                                    }if (exitprio.get("at2")!=null&&exitprio.get("at2").equals("2")){
 | 
	
		
			
				|  |  | +                                        attendances.get(attendances.size() - 1).setHolidayType(sdt.format(attendanceRule.getEndDate()));
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }else {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                                      if (usStartDate.getTime() > startDate.getTime()) {
 | 
	
		
			
				|  |  |                                          cont = "1";
 | 
	
		
			
				|  |  |                                          attendances.get(0).setExceptionType("时间异常");
 | 
	
	
		
			
				|  | @@ -138,13 +151,19 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                      List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
 | 
	
		
			
				|  |  |                      if (oneUserShift!=null&&oneUserShift.size()>0&&!oneUserShift.get(0).get("id").equals("0")){
 | 
	
		
			
				|  |  |                          if (attendances!=null&&attendances.size()>1){//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                            if (exitprio(attendances).equals("1")){//判断打卡记录是否异常,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 usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  | +                            if (exitprio(attendances).get("type").equals("1")){//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                  cont="1";
 | 
	
		
			
				|  |  | +                                Map<String, Object> exitprio = exitprio(attendances);
 | 
	
		
			
				|  |  | +                                if (exitprio.get("at")!=null&&exitprio.get("at").equals("2")){
 | 
	
		
			
				|  |  | +                                    attendances.get(0).setHolidayType(oneUserShift.get(0).get("startDate").toString());
 | 
	
		
			
				|  |  | +                                }if (exitprio.get("at2")!=null&&exitprio.get("at2").equals("2")){
 | 
	
		
			
				|  |  | +                                    attendances.get(attendances.size() - 1).setHolidayType(oneUserShift.get(0).get("endDate").toString());
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  |                              }else {
 | 
	
		
			
				|  |  | -                                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 usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
 | 
	
		
			
				|  |  | -                                Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
 | 
	
		
			
				|  |  |                                  if (usStartDate.getTime()>startDate.getTime()){
 | 
	
		
			
				|  |  |                                      cont="1";
 | 
	
		
			
				|  |  |                                      attendances.get(0).setExceptionType("时间异常");
 | 
	
	
		
			
				|  | @@ -210,7 +229,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                          if (jqw.equals("1")){//优先判断是否存在法定节假日
 | 
	
		
			
				|  |  |                              at.setNotes("班");
 | 
	
		
			
				|  |  |                              if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                                if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                                if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                      at.setIs("1");
 | 
	
		
			
				|  |  |                                  } else {
 | 
	
		
			
				|  |  |                                      Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
 | 
	
	
		
			
				|  | @@ -237,7 +256,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                              if (state.equals("2")) {//在工作日内
 | 
	
		
			
				|  |  |                                  at.setNotes("班");
 | 
	
		
			
				|  |  |                                  if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                                    if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                                    if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                          at.setIs("1");
 | 
	
		
			
				|  |  |                                      } else {
 | 
	
		
			
				|  |  |                                          Date startDate = DateUtils.str2Date("2021-10-21 " + sdt.format(attendanceRule.getStartDate()), sd);
 | 
	
	
		
			
				|  | @@ -263,7 +282,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                              }else {
 | 
	
		
			
				|  |  |                                  at.setNotes("班");
 | 
	
		
			
				|  |  |                                  if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                                    if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                                    if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                          at.setIs("1");
 | 
	
		
			
				|  |  |                                      } else {
 | 
	
		
			
				|  |  |                                          Date startDate = DateUtils.str2Date("2021-10-21 " + oneUserShift.get(0).get("startDate"), sd);
 | 
	
	
		
			
				|  | @@ -303,7 +322,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                              if (states.equals("2")) {
 | 
	
		
			
				|  |  |                                  at.setNotes("班");
 | 
	
		
			
				|  |  |                                  if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                                    if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                                    if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                          at.setIs("1");
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  |                                  } else {
 | 
	
	
		
			
				|  | @@ -356,7 +375,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |              if (attendanceRule.getType().equals("1")) {//判断规则类型1,固定时间上下班
 | 
	
		
			
				|  |  |                  if (jqw.equals("1")) {//优先判断是否存在法定节假日
 | 
	
		
			
				|  |  |                      if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                        if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                        if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                              sum = "1";
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |                          } else {
 | 
	
	
		
			
				|  | @@ -385,7 +404,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      if (state.equals("2")) {//在工作日内
 | 
	
		
			
				|  |  |                          if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                            if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                            if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                  sum = "1";
 | 
	
		
			
				|  |  |                                  break;
 | 
	
		
			
				|  |  |                              } else {
 | 
	
	
		
			
				|  | @@ -411,7 +430,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  |                          if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                            if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                            if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                  sum = "1";
 | 
	
		
			
				|  |  |                                  break;
 | 
	
		
			
				|  |  |                              } else {
 | 
	
	
		
			
				|  | @@ -433,7 +452,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |              } else if (attendanceRule.getType().equals("3")) {//规则类型 3,自由上下班
 | 
	
		
			
				|  |  |                  if (jqw.equals("1")) {//优先判断是否存在法定节假日
 | 
	
		
			
				|  |  |                      if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                        if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                        if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                              sum = "1";
 | 
	
		
			
				|  |  |                              break;
 | 
	
		
			
				|  |  |                          }
 | 
	
	
		
			
				|  | @@ -454,7 +473,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      if (states.equals("2")) {
 | 
	
		
			
				|  |  |                          if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
 | 
	
		
			
				|  |  | -                            if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  | +                            if (exitprio(acs).get("type").equals("1")) {//判断打卡记录是否异常,1,异常
 | 
	
		
			
				|  |  |                                  sum = "1";
 | 
	
		
			
				|  |  |                                  break;
 | 
	
		
			
				|  |  |                              }
 | 
	
	
		
			
				|  | @@ -503,14 +522,22 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public String exitprio(List<Attendance>ls){
 | 
	
		
			
				|  |  | +    public Map<String,Object> exitprio(List<Attendance>ls){
 | 
	
		
			
				|  |  |          Attendance attendance = ls.get(0);
 | 
	
		
			
				|  |  |          Attendance attendance1 = ls.get(ls.size() - 1);
 | 
	
		
			
				|  |  | -        if (!attendance.getExceptionType().equals("正常") &&!attendance1.getExceptionType().equals("正常")){
 | 
	
		
			
				|  |  | -            return "1";
 | 
	
		
			
				|  |  | +        Map<String,Object>map=new HashMap<>();
 | 
	
		
			
				|  |  | +        if (attendance.getExceptionType().equals("正常") &&attendance1.getExceptionType().equals("正常")){
 | 
	
		
			
				|  |  | +            map.put("type","2");
 | 
	
		
			
				|  |  |          }else {
 | 
	
		
			
				|  |  | -            return "2";
 | 
	
		
			
				|  |  | +            map.put("type","1");
 | 
	
		
			
				|  |  | +            if (attendance.getExceptionType().equals("时间异常")){
 | 
	
		
			
				|  |  | +                map.put("at","2");
 | 
	
		
			
				|  |  | +            }if (attendance1.getExceptionType().equals("时间异常")){
 | 
	
		
			
				|  |  | +                map.put("at2","2");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return map;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public Boolean exitTime(String startDate,String endDate) throws ParseException {
 |