|
|
@@ -192,39 +192,57 @@ public class AttendanceRecordTask {
|
|
|
outInDto.setStatus(OutInStatusEnum.enter.getCode());
|
|
|
outInDto.setUserId(record.getUserId());
|
|
|
List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
|
|
|
- if(!outInRecords.isEmpty()){
|
|
|
+
|
|
|
+ //查询该教师是否通过车辆进入
|
|
|
+ List<CarOutInRecord> list = carOutInRecordService.list(
|
|
|
+ new MPJLambdaWrapper<CarOutInRecord>()
|
|
|
+ .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
|
|
|
+ .le(CarOutInRecord::getRecordTime, endTime)
|
|
|
+ .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
|
|
|
+ .eq(CarMessageApply::getUserId, record.getUserId())
|
|
|
+ .ge(timePeriod == 2, CarOutInRecord::getRecordTime, amEndTime)
|
|
|
+ .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
|
|
|
+ .orderByAsc(CarOutInRecord::getRecordTime)
|
|
|
+ );
|
|
|
+ //最早进入方式:1人脸 2车辆
|
|
|
+ Integer inStatus = 0;
|
|
|
+ if(!outInRecords.isEmpty() && !list.isEmpty()){
|
|
|
+ TeacherOutInRecord teacherOutInRecord = outInRecords.get(0);
|
|
|
+ CarOutInRecord carOutInRecord = list.get(0);
|
|
|
+ int result = teacherOutInRecord.getRecordTime().compareTo(carOutInRecord.getRecordTime());
|
|
|
+ if(result < 0){//人脸进入
|
|
|
+ inStatus = 1;
|
|
|
+ }else if(result == 0){//同时
|
|
|
+ inStatus = 0;
|
|
|
+ }else{//车辆进入
|
|
|
+ inStatus = 2;
|
|
|
+ }
|
|
|
+ }else if(!outInRecords.isEmpty()){
|
|
|
+ inStatus = 1;
|
|
|
+ }else if(!list.isEmpty()){
|
|
|
+ inStatus = 2;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(inStatus == 1){
|
|
|
TeacherOutInRecord outInRecord = outInRecords.get(0);
|
|
|
if(outInRecord != null){
|
|
|
record.setRecordTime(outInRecord.getRecordTime());
|
|
|
record.setAttendanceStatus(outInRecord.getAttendanceStatus());
|
|
|
record.setAttendanceMode(1);
|
|
|
}
|
|
|
- }else{
|
|
|
- //查询该教师是否通过车辆进入
|
|
|
- List<CarOutInRecord> list = carOutInRecordService.list(
|
|
|
- new MPJLambdaWrapper<CarOutInRecord>()
|
|
|
- .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
|
|
|
- .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
|
|
|
- .le(CarOutInRecord::getRecordTime, endTime)
|
|
|
- .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
|
|
|
- .eq(CarMessageApply::getUserId, record.getUserId())
|
|
|
- .ge(timePeriod != null && timePeriod == 2 && amEndTime != null, CarOutInRecord::getRecordTime, amEndTime)
|
|
|
- .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
|
|
|
- .orderByAsc(CarOutInRecord::getRecordTime)
|
|
|
- );
|
|
|
- if(!list.isEmpty()){
|
|
|
- CarOutInRecord outInRecord = list.get(0);
|
|
|
- if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
|
|
|
- record.setRecordTime(outInRecord.getRecordTime());
|
|
|
- record.setAttendanceStatus("到校");
|
|
|
- record.setAttendanceMode(2);
|
|
|
- record.setCarNumber(outInRecord.getPlanNo());
|
|
|
- }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
|
|
|
- record.setRecordTime(outInRecord.getRecordTime());
|
|
|
- record.setAttendanceStatus("迟到");
|
|
|
- record.setAttendanceMode(1);
|
|
|
- record.setCarNumber(outInRecord.getPlanNo());
|
|
|
- }
|
|
|
+ }else if(inStatus == 2){
|
|
|
+ CarOutInRecord outInRecord = list.get(0);
|
|
|
+ if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
|
|
|
+ record.setRecordTime(outInRecord.getRecordTime());
|
|
|
+ record.setAttendanceStatus("到校");
|
|
|
+ record.setAttendanceMode(2);
|
|
|
+ record.setCarNumber(outInRecord.getPlanNo());
|
|
|
+ }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
|
|
|
+ record.setRecordTime(outInRecord.getRecordTime());
|
|
|
+ record.setAttendanceStatus("迟到");
|
|
|
+ record.setAttendanceMode(1);
|
|
|
+ record.setCarNumber(outInRecord.getPlanNo());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -349,39 +367,57 @@ public class AttendanceRecordTask {
|
|
|
outInDto.setStatus(OutInStatusEnum.enter.getCode());
|
|
|
outInDto.setUserId(record.getUserId());
|
|
|
List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
|
|
|
- if(!outInRecords.isEmpty()){
|
|
|
+
|
|
|
+ //查询该教师是否通过车辆进入
|
|
|
+ List<CarOutInRecord> list = carOutInRecordService.list(
|
|
|
+ new MPJLambdaWrapper<CarOutInRecord>()
|
|
|
+ .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
|
|
|
+ .le(CarOutInRecord::getRecordTime, endTime)
|
|
|
+ .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
|
|
|
+ .eq(CarMessageApply::getUserId, record.getUserId())
|
|
|
+ .ge(timePeriod == 2, CarOutInRecord::getRecordTime, amEndTime)
|
|
|
+ .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
|
|
|
+ .orderByAsc(CarOutInRecord::getRecordTime)
|
|
|
+ );
|
|
|
+ //最早进入方式:1人脸 2车辆
|
|
|
+ Integer inStatus = 0;
|
|
|
+ if(!outInRecords.isEmpty() && !list.isEmpty()){
|
|
|
+ TeacherOutInRecord teacherOutInRecord = outInRecords.get(0);
|
|
|
+ CarOutInRecord carOutInRecord = list.get(0);
|
|
|
+ int result = teacherOutInRecord.getRecordTime().compareTo(carOutInRecord.getRecordTime());
|
|
|
+ if(result < 0){//人脸进入
|
|
|
+ inStatus = 1;
|
|
|
+ }else if(result == 0){//同时
|
|
|
+ inStatus = 0;
|
|
|
+ }else{//车辆进入
|
|
|
+ inStatus = 2;
|
|
|
+ }
|
|
|
+ }else if(!outInRecords.isEmpty()){
|
|
|
+ inStatus = 1;
|
|
|
+ }else if(!list.isEmpty()){
|
|
|
+ inStatus = 2;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(inStatus == 1){
|
|
|
TeacherOutInRecord outInRecord = outInRecords.get(0);
|
|
|
if(outInRecord != null){
|
|
|
record.setRecordTime(outInRecord.getRecordTime());
|
|
|
record.setAttendanceStatus(outInRecord.getAttendanceStatus());
|
|
|
record.setAttendanceMode(1);
|
|
|
}
|
|
|
- }else{
|
|
|
- //查询该教师是否通过车辆进入
|
|
|
- List<CarOutInRecord> list = carOutInRecordService.list(
|
|
|
- new MPJLambdaWrapper<CarOutInRecord>()
|
|
|
- .select(CarOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(CarOutInRecord.class).contains(x.getProperty()))
|
|
|
- .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
|
|
|
- .le(CarOutInRecord::getRecordTime, endTime)
|
|
|
- .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
|
|
|
- .eq(CarMessageApply::getUserId, record.getUserId())
|
|
|
- .ge(timePeriod == 2 && amEndTime != null, CarOutInRecord::getRecordTime, amEndTime)
|
|
|
- .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
|
|
|
- .orderByAsc(CarOutInRecord::getRecordTime)
|
|
|
- );
|
|
|
- if(!list.isEmpty()){
|
|
|
- CarOutInRecord outInRecord = list.get(0);
|
|
|
- if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
|
|
|
- record.setRecordTime(outInRecord.getRecordTime());
|
|
|
- record.setAttendanceStatus("到校");
|
|
|
- record.setAttendanceMode(2);
|
|
|
- record.setCarNumber(outInRecord.getPlanNo());
|
|
|
- }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
|
|
|
- record.setRecordTime(outInRecord.getRecordTime());
|
|
|
- record.setAttendanceStatus("迟到");
|
|
|
- record.setAttendanceMode(1);
|
|
|
- record.setCarNumber(outInRecord.getPlanNo());
|
|
|
- }
|
|
|
+ }else if(inStatus == 2){
|
|
|
+ CarOutInRecord outInRecord = list.get(0);
|
|
|
+ if(outInRecord != null && outInRecord.getRecordTime().isBefore(startTime)){
|
|
|
+ record.setRecordTime(outInRecord.getRecordTime());
|
|
|
+ record.setAttendanceStatus("到校");
|
|
|
+ record.setAttendanceMode(2);
|
|
|
+ record.setCarNumber(outInRecord.getPlanNo());
|
|
|
+ }else if(outInRecord != null && outInRecord.getRecordTime().isAfter(startTime)){
|
|
|
+ record.setRecordTime(outInRecord.getRecordTime());
|
|
|
+ record.setAttendanceStatus("迟到");
|
|
|
+ record.setAttendanceMode(1);
|
|
|
+ record.setCarNumber(outInRecord.getPlanNo());
|
|
|
}
|
|
|
}
|
|
|
|