Selaa lähdekoodia

出入记录同步程序调整

dzx 4 kuukautta sitten
vanhempi
commit
40e58a63c0

+ 41 - 19
src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java

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

+ 3 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/FaceImportMapper.java

@@ -33,5 +33,8 @@ public interface FaceImportMapper {
     String GetNameByPlanNum(@Param("id") String id);
 
     List<String> GetVisitIdList();
+
+
+    List<Long> getTeacherUserIds();
 }
 

+ 10 - 7
src/main/resources/mapper/teacher/TeacherFaceImportMapper.xml

@@ -53,12 +53,9 @@
     </select>
 
     <select id="IsStudentTypeByPersonId" parameterType="long" resultType="java.lang.String">
-        select t.nick_name
-        from xjr_user t
-        where t.delete_mark = 0
-        <if test="id != null">
-            and t.id = #{id}
-        </if>
+        select t.role_id
+        from xjr_user_role_relation t
+        where t.user_id = #{id}
     </select>
 
     <select id="GetTeacherIdByPersonId" parameterType="long" resultType="java.lang.Long">
@@ -111,7 +108,7 @@
     <select id="GetCarMessageApplyIdByCarNumber"  parameterType="string" resultType="java.lang.String">
         SELECT id
         FROM car_message_apply
-        WHERE delete_mark = 0
+        WHERE delete_mark = 0 and now() between start_time and end_time
         <if test="id != null">
             AND car_number = #{id}
         </if>
@@ -144,4 +141,10 @@
         FROM visitor_out_in_record
         where delete_mark = 0
     </select>
+
+    <select id="getTeacherUserIds" resultType="java.lang.Long">
+        SELECT t1.id FROM xjr_user t1
+        INNER JOIN base_teacher t2 ON t1.id = t2.user_id
+        WHERE t1.delete_mark = 0
+    </select>
 </mapper>