|
@@ -69,15 +69,11 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
ed="1";
|
|
|
}else {
|
|
|
List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
|
|
|
- String str=" and ";
|
|
|
- for (int i=0;i<depNamesByUserIds.size();i++){
|
|
|
- if (i<depNamesByUserIds.size()-1){
|
|
|
- str+="find_in_set("+depNamesByUserIds.get(i).getId()+",dept) or";
|
|
|
- }else {
|
|
|
- str+="find_in_set("+depNamesByUserIds.get(i).getId()+",dept)";
|
|
|
- }
|
|
|
- }
|
|
|
- AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(str);
|
|
|
+ List<String>deps=new ArrayList<>();
|
|
|
+ depNamesByUserIds.forEach(st->{
|
|
|
+ deps.add(st.getId());
|
|
|
+ });
|
|
|
+ AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(deps);
|
|
|
if (attendanceRule1!=null){
|
|
|
attendanceRule=attendanceRule1;
|
|
|
ed="1";
|
|
@@ -134,12 +130,23 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
}
|
|
|
}
|
|
|
}else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
|
|
|
- if (attendances!=null&&attendances.size()>1){//判断打卡记录是否有上下班
|
|
|
- if (exitprio(attendances).equals("1")){//判断打卡记录是否异常,1,异常
|
|
|
- cont="1";
|
|
|
+ String states="1";
|
|
|
+ String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
|
|
|
+ Date da = DateUtils.str2Date(date, sdf);
|
|
|
+ for (String day:split){
|
|
|
+ if (day.equals(String.valueOf(da.getDay()))){
|
|
|
+ states="2";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (states.equals("2")) {//在工作日内
|
|
|
+ if (attendances != null && attendances.size() > 1) {//判断打卡记录是否有上下班
|
|
|
+ if (exitprio(attendances).equals("1")) {//判断打卡记录是否异常,1,异常
|
|
|
+ cont = "1";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ cont = "1";
|
|
|
}
|
|
|
- }else {
|
|
|
- cont="1";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -151,31 +158,27 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
|
|
|
at.setIs("2");
|
|
|
String eds="0";
|
|
|
- AttendanceRule attendanceRules = attendanceRuleService.UserRule(userid);
|
|
|
- if (attendanceRules!=null){
|
|
|
- eds="1";
|
|
|
- }else {
|
|
|
- List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
|
|
|
- String str="where ";
|
|
|
- for (int is=0;i<depNamesByUserIds.size();is++){
|
|
|
- if (is<depNamesByUserIds.size()-1){
|
|
|
- str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept) or";
|
|
|
- }else {
|
|
|
- str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept)";
|
|
|
- }
|
|
|
- }
|
|
|
- AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(str);
|
|
|
- if (attendanceRule1!=null){
|
|
|
- attendanceRules=attendanceRule1;
|
|
|
- eds="1";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if (eds.equals("1")){
|
|
|
- if (attendanceRules.getType().equals("1")){//判断规则类型1,固定时间上下班
|
|
|
+// AttendanceRule attendanceRules = attendanceRuleService.UserRule(userid);
|
|
|
+// if (attendanceRules!=null){
|
|
|
+// eds="1";
|
|
|
+// }else {
|
|
|
+// List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
|
|
|
+// List<String>deps=new ArrayList<>();
|
|
|
+// depNamesByUserIds.forEach(st->{
|
|
|
+// deps.add(st.getId());
|
|
|
+// });
|
|
|
+// AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(deps);
|
|
|
+// if (attendanceRule1!=null){
|
|
|
+// attendanceRules=attendanceRule1;
|
|
|
+// eds="1";
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ if (ed.equals("1")){
|
|
|
+ if (attendanceRule.getType().equals("1")){//判断规则类型1,固定时间上下班
|
|
|
String state="1";
|
|
|
- String[] split = attendanceRules.getWorkDay().split(",");//获取工作日
|
|
|
+ String[] split = attendanceRule.getWorkDay().split(",");//获取工作日
|
|
|
Date da = DateUtils.str2Date(aDate, sdf);
|
|
|
for (String day:split){
|
|
|
if (day.equals(String.valueOf(da.getDay()))){
|
|
@@ -188,8 +191,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
|
|
|
at.setIs("1");
|
|
|
}else {
|
|
|
- Date startDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRules.getStartDate()), sd);
|
|
|
- Date endDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendanceRules.getEndDate()), 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(acs.get(0).getUsDate()), sd);
|
|
|
Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(acs.get(acs.size() - 1).getUsDate()), sd);
|
|
|
if (usStartDate.getTime()>startDate.getTime()||usEndDate.getTime()<endDate.getTime()){
|
|
@@ -201,8 +204,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- }else if (attendanceRules.getType().equals("2")){//规则类型 2,按班次上下班
|
|
|
- List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
|
|
|
+ }else if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
|
|
|
+ List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
|
|
|
if (oneUserShift!=null&&oneUserShift.size()>0){
|
|
|
if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
|
|
|
if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
|
|
@@ -220,7 +223,18 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
at.setIs("1");
|
|
|
}
|
|
|
}
|
|
|
- }else if (attendanceRules.getType().equals("3")){//规则类型 3,自由上下班
|
|
|
+ }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
|
|
|
+ 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")){
|
|
|
if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
|
|
|
if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
|
|
|
at.setIs("1");
|
|
@@ -228,12 +242,13 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
}else {
|
|
|
at.setIs("1");
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
lit.add(at);
|
|
|
}
|
|
|
- Vacation vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据
|
|
|
- Map<String, Object> oneWork = attendanceMapper.getOneWork(userid, date);
|
|
|
+ List<Vacation> vacation = vacationMapper.vacation(userid, date);//获取当前用户的假期数据
|
|
|
+ List< Map<String,Object>> oneWork = attendanceMapper.getOneWork(userid, date);
|
|
|
map.put("date",attendances);
|
|
|
map.put("data",vacation);
|
|
|
map.put("day",lit);
|
|
@@ -259,31 +274,27 @@ 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);
|
|
|
- for (int i = 1; i <= actualMaximum; i++){
|
|
|
- String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
|
|
|
- List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
|
|
|
- String eds="0";
|
|
|
- AttendanceRule attendanceRules = attendanceRuleService.UserRule(userid);
|
|
|
- if (attendanceRules!=null){
|
|
|
- eds="1";
|
|
|
- }else {
|
|
|
- List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
|
|
|
- String str="where ";
|
|
|
- for (int is=0;i<depNamesByUserIds.size();is++){
|
|
|
- if (is<depNamesByUserIds.size()-1){
|
|
|
- str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept) or";
|
|
|
- }else {
|
|
|
- str+="find_in_set("+depNamesByUserIds.get(is).getId()+",dept)";
|
|
|
- }
|
|
|
- }
|
|
|
- AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(str);
|
|
|
- if (attendanceRule1!=null){
|
|
|
- attendanceRules=attendanceRule1;
|
|
|
- eds="1";
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
+ String eds="0";
|
|
|
+ AttendanceRule attendanceRules = attendanceRuleService.UserRule(userid);
|
|
|
+ if (attendanceRules!=null){
|
|
|
+ eds="1";
|
|
|
+ }else {
|
|
|
+ List<UserDept> depNamesByUserIds = userShiftMapper.getDepNamesByUserIds(Arrays.asList(userid.split(",")));
|
|
|
+ List<String>deps=new ArrayList<>();
|
|
|
+ depNamesByUserIds.forEach(st->{
|
|
|
+ deps.add(st.getId());
|
|
|
+ });
|
|
|
+ AttendanceRule attendanceRule1 = attendanceRuleService.UserRules(deps);
|
|
|
+ if (attendanceRule1!=null){
|
|
|
+ attendanceRules=attendanceRule1;
|
|
|
+ eds="1";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ for (int i = 1; i <= actualMaximum; i++){
|
|
|
+ String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
|
|
|
+ List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
|
|
|
if (eds.equals("1")){
|
|
|
if (attendanceRules.getType().equals("1")){//判断规则类型1,固定时间上下班
|
|
|
String state="1";
|
|
@@ -317,7 +328,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
}
|
|
|
|
|
|
}else if (attendanceRules.getType().equals("2")){//规则类型 2,按班次上下班
|
|
|
- List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
|
|
|
+ List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
|
|
|
if (oneUserShift!=null&&oneUserShift.size()>0){
|
|
|
if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
|
|
|
if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
|
|
@@ -339,14 +350,25 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|
|
}
|
|
|
}
|
|
|
}else if (attendanceRules.getType().equals("3")){//规则类型 3,自由上下班
|
|
|
- if (acs!=null&&acs.size()>1){//判断打卡记录是否有上下班
|
|
|
- if (exitprio(acs).equals("1")){//判断打卡记录是否异常,1,异常
|
|
|
- sum="1";
|
|
|
+ String states="1";
|
|
|
+ String[] split = attendanceRules.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")) {//在工作日内
|
|
|
+ if (acs != null && acs.size() > 1) {//判断打卡记录是否有上下班
|
|
|
+ if (exitprio(acs).equals("1")) {//判断打卡记录是否异常,1,异常
|
|
|
+ sum = "1";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sum = "1";
|
|
|
break;
|
|
|
}
|
|
|
- }else {
|
|
|
- sum="1";
|
|
|
- break;
|
|
|
}
|
|
|
}
|
|
|
}
|