|
@@ -48,8 +48,8 @@ public class OutInRecordUtil {
|
|
|
String photoValue = (facePhoto != null && !facePhoto.equals("null")) ? facePhoto : "";
|
|
|
|
|
|
String sql = "INSERT INTO student_out_in_record(create_date, user_id, teacher_id, class_id, face_photo, record_time , eventId,status,delete_mark,enabled_mark, attendance_status) " +
|
|
|
- "select now(), '" + userId + "', '" + teacherId + "', '" +
|
|
|
- classId + "', '" + photoValue + "', '" + recordTime + "', '" + eventId + "', '" + status + "',0,1,'" + attendanceStatus + "'" +
|
|
|
+ "select now(), " + userId + ", " + teacherId + ", " +
|
|
|
+ classId + ", '" + photoValue + "', '" + recordTime + "', '" + eventId + "', '" + status + "',0,1,'" + attendanceStatus + "'" +
|
|
|
" WHERE NOT EXISTS (SELECT 1 FROM student_out_in_record WHERE eventId = '" + eventId + "')";
|
|
|
SqlRunnerAdapter.db().insert(sql);
|
|
|
|
|
@@ -63,10 +63,11 @@ public class OutInRecordUtil {
|
|
|
|
|
|
|
|
|
public void visitInsertRecord(Long reservation_school_people_id, String recordTime,String facePhoto, String status, String eventId){
|
|
|
+
|
|
|
String sql = "INSERT INTO visitor_out_in_record(create_date, reservation_school_people_id, record_time, face_photo, event_id, status,delete_mark,enabled_mark) " +
|
|
|
"select now(), '" + reservation_school_people_id + "', '" +
|
|
|
recordTime + "', '" + facePhoto + "', '" + eventId + "', '" + status + "',0,1" +
|
|
|
- " WHERE NOT EXISTS (SELECT 1 FROM visitor_out_in_record WHERE eventId = '" + eventId + "')";
|
|
|
+ " WHERE NOT EXISTS (SELECT 1 FROM visitor_out_in_record WHERE event_id = '" + eventId + "')";
|
|
|
SqlRunnerAdapter.db().insert(sql);
|
|
|
}
|
|
|
|
|
@@ -180,6 +181,7 @@ public class OutInRecordUtil {
|
|
|
List<String> teacherEventIdList = faceImportMapper.GetTeacherUrlList();
|
|
|
List<String> studentEventIdList = faceImportMapper.GetStudentUrlList();
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ List<Long> teacherUserIds = faceImportMapper.getTeacherUserIds();
|
|
|
for (JsonElement element : doorEventsResponse) {
|
|
|
JsonObject item = element.getAsJsonObject();
|
|
|
|
|
@@ -206,7 +208,7 @@ public class OutInRecordUtil {
|
|
|
String recordTime = item.get("eventTime").isJsonNull() ? null : item.get("eventTime").getAsString();
|
|
|
String eventId = item.get("eventId").isJsonNull() ? null : item.get("eventId").getAsString();
|
|
|
String recordTimeStr = ChangeTime(recordTime);
|
|
|
- if (!Objects.equals(faceImportMapper.IsStudentTypeByPersonId(personId), "学生")) {
|
|
|
+ if (teacherUserIds.contains(personId)) {
|
|
|
// 老师记录
|
|
|
if (teacherEventIdList.contains(eventId)) {
|
|
|
continue;
|
|
@@ -243,7 +245,8 @@ public class OutInRecordUtil {
|
|
|
attendanceStatus = "不考勤";
|
|
|
} else {
|
|
|
LocalDateTime amStartTime = null, amEndTime = null, pmStartTime = null, pmEndTime = null, eveningStartTime = null, eveningEndTime = null;
|
|
|
- if (ruleDetails.getAmStatus() != null && ruleDetails.getAmStatus() == 1) {
|
|
|
+ if (ruleDetails.getAmStatus() != null && ruleDetails.getAmStatus() == 1
|
|
|
+ && ruleDetails.getAmStartTime() != null && ruleDetails.getAmEndTime() != null) {
|
|
|
amStartTime = recordTime.withHour(ruleDetails.getAmStartTime().toLocalTime().getHour())
|
|
|
.withMinute(ruleDetails.getAmStartTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getAmStartTime().toLocalTime().getSecond());
|
|
@@ -251,7 +254,8 @@ public class OutInRecordUtil {
|
|
|
.withMinute(ruleDetails.getAmEndTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getAmEndTime().toLocalTime().getSecond());
|
|
|
}
|
|
|
- if (ruleDetails.getPmStatus() != null && ruleDetails.getPmStatus() == 1) {
|
|
|
+ if (ruleDetails.getPmStatus() != null && ruleDetails.getPmStatus() == 1
|
|
|
+ && ruleDetails.getPmEndTime() != null && ruleDetails.getPmStartTime() != null) {
|
|
|
pmStartTime = recordTime.withHour(ruleDetails.getPmStartTime().toLocalTime().getHour())
|
|
|
.withMinute(ruleDetails.getPmStartTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getPmStartTime().toLocalTime().getSecond());
|
|
@@ -297,7 +301,8 @@ public class OutInRecordUtil {
|
|
|
attendanceStatus = "不考勤";
|
|
|
}else{
|
|
|
LocalDateTime amStartTime = null, amEndTime = null, pmStartTime = null, pmEndTime = null, eveningStartTime = null, eveningEndTime = null;
|
|
|
- if(ruleDetails.getAmStatus() != null && ruleDetails.getAmStatus() == 1){
|
|
|
+ if(ruleDetails.getAmStatus() != null && ruleDetails.getAmStatus() == 1 && ruleDetails.getAmStartTime() != null
|
|
|
+ && ruleDetails.getAmEndTime() != null){
|
|
|
amStartTime = recordTime.withHour(ruleDetails.getAmStartTime().toLocalTime().getHour())
|
|
|
.withMinute(ruleDetails.getAmStartTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getAmStartTime().toLocalTime().getSecond());
|
|
@@ -305,7 +310,8 @@ public class OutInRecordUtil {
|
|
|
.withMinute(ruleDetails.getAmEndTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getAmEndTime().toLocalTime().getSecond());
|
|
|
}
|
|
|
- if(ruleDetails.getPmStatus() != null && ruleDetails.getPmStatus() == 1){
|
|
|
+ if(ruleDetails.getPmStatus() != null && ruleDetails.getPmStatus() == 1 && ruleDetails.getPmStartTime() != null
|
|
|
+ && ruleDetails.getPmEndTime() != null){
|
|
|
pmStartTime = recordTime.withHour(ruleDetails.getPmStartTime().toLocalTime().getHour())
|
|
|
.withMinute(ruleDetails.getPmStartTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getPmStartTime().toLocalTime().getSecond());
|
|
@@ -313,7 +319,9 @@ public class OutInRecordUtil {
|
|
|
.withMinute(ruleDetails.getPmEndTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getPmEndTime().toLocalTime().getSecond());
|
|
|
}
|
|
|
- if(ruleDetails.getEveningStatus() != null && ruleDetails.getEveningStatus() == 1){
|
|
|
+ if(ruleDetails.getEveningStatus() != null && ruleDetails.getEveningStatus() == 1
|
|
|
+ && ruleDetails.getEveningStartTime() != null
|
|
|
+ && ruleDetails.getEveningEndTime() != null){
|
|
|
eveningStartTime = recordTime.withHour(ruleDetails.getEveningStartTime().toLocalTime().getHour())
|
|
|
.withMinute(ruleDetails.getEveningStartTime().toLocalTime().getMinute())
|
|
|
.withSecond(ruleDetails.getEveningStartTime().toLocalTime().getSecond());
|
|
@@ -322,29 +330,41 @@ public class OutInRecordUtil {
|
|
|
.withSecond(ruleDetails.getEveningEndTime().toLocalTime().getSecond());
|
|
|
}
|
|
|
if(status == OutInStatusEnum.goOut.getCode()){//出
|
|
|
- if(recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)){
|
|
|
+ if(amEndTime != null && amStartTime != null && recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)){
|
|
|
attendanceStatus = "早退";
|
|
|
- }else if(recordTime.isBefore(pmEndTime) && recordTime.isAfter(pmStartTime)){
|
|
|
+ }else if(pmEndTime != null && pmStartTime != null && recordTime.isBefore(pmEndTime) && recordTime.isAfter(pmStartTime)){
|
|
|
attendanceStatus = "早退";
|
|
|
- }else if(recordTime.isBefore(eveningEndTime) && recordTime.isAfter(eveningStartTime)){
|
|
|
+ }else if(eveningEndTime != null && eveningStartTime != null && recordTime.isBefore(eveningEndTime) && recordTime.isAfter(eveningStartTime)){
|
|
|
attendanceStatus = "早退";
|
|
|
}else{
|
|
|
attendanceStatus = "离校";
|
|
|
}
|
|
|
}else{//进
|
|
|
- if(recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)){
|
|
|
+ if(amEndTime != null && amStartTime != null && recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)){
|
|
|
attendanceStatus = "迟到";
|
|
|
- if(recordTime.isAfter(amStartTime.plusMinutes(ruleDetails.getOverMinutes()))){
|
|
|
+ LocalDateTime localDateTime = amStartTime;
|
|
|
+ if(ruleDetails.getOverMinutes() != null){
|
|
|
+ localDateTime = amStartTime.plusMinutes(ruleDetails.getOverMinutes());
|
|
|
+ }
|
|
|
+ if(recordTime.isAfter(localDateTime)){
|
|
|
attendanceStatus = "旷课";
|
|
|
}
|
|
|
- }else if(recordTime.isBefore(pmEndTime) && recordTime.isAfter(pmStartTime)){
|
|
|
+ }else if(pmEndTime != null && pmStartTime != null && recordTime.isBefore(pmEndTime) && recordTime.isAfter(pmStartTime)){
|
|
|
attendanceStatus = "迟到";
|
|
|
- if(recordTime.isAfter(pmStartTime.plusMinutes(ruleDetails.getOverMinutes()))){
|
|
|
+ LocalDateTime localDateTime = pmStartTime;
|
|
|
+ if(ruleDetails.getOverMinutes() != null){
|
|
|
+ localDateTime = pmStartTime.plusMinutes(ruleDetails.getOverMinutes());
|
|
|
+ }
|
|
|
+ if(recordTime.isAfter(localDateTime)){
|
|
|
attendanceStatus = "旷课";
|
|
|
}
|
|
|
- }else if(recordTime.isBefore(eveningEndTime) && recordTime.isAfter(eveningStartTime)){
|
|
|
+ }else if(eveningEndTime != null && eveningStartTime != null && recordTime.isBefore(eveningEndTime) && recordTime.isAfter(eveningStartTime)){
|
|
|
attendanceStatus = "迟到";
|
|
|
- if(recordTime.isAfter(eveningStartTime.plusMinutes(ruleDetails.getOverMinutes()))){
|
|
|
+ LocalDateTime localDateTime = eveningStartTime;
|
|
|
+ if(ruleDetails.getOverMinutes() != null){
|
|
|
+ localDateTime = eveningStartTime.plusMinutes(ruleDetails.getOverMinutes());
|
|
|
+ }
|
|
|
+ if(recordTime.isAfter(localDateTime)){
|
|
|
attendanceStatus = "旷课";
|
|
|
}
|
|
|
}else{
|
|
@@ -421,7 +441,9 @@ public class OutInRecordUtil {
|
|
|
|
|
|
if (visit_id_list.contains(eventId)) continue;
|
|
|
|
|
|
- visitInsertRecord(Long.parseLong(reservationSchoolId), eventTime, picUri, deviceDesc, eventId);
|
|
|
+
|
|
|
+
|
|
|
+ visitInsertRecord(Long.parseLong(reservationSchoolId), eventTime, picUri, status + "", eventId);
|
|
|
}
|
|
|
|
|
|
}
|