|
@@ -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);
|