snihwxf il y a 3 jours
Parent
commit
9beb9638db

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AttendanceStatisticDto.java

@@ -34,4 +34,7 @@ public class AttendanceStatisticDto extends PageInput {
 
     @ApiModelProperty("考勤规则id")
     private Long ruleCategoryId;
+
+    @ApiModelProperty("是否毕业")
+    private Integer isGraduate;
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/attendance/service/impl/StudentStatisticsServiceImpl.java

@@ -170,7 +170,7 @@ public class StudentStatisticsServiceImpl  extends MPJBaseServiceImpl<StudentAtt
         dto.setDate(date);
         dto.setTimePeriod(timePeriod);
 //        dto.setClassId(567891198765111L);
-
+        dto.setIsGraduate(1);
         List<ClassStatisticsVo> attendanceList = classService.getAttendanceList(dto);
 
 

+ 15 - 4
src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java

@@ -228,8 +228,19 @@ public class OutInRecordUtil {
                 teacherInsertRecord(personId, recordTimeStr, ApiUtil.GetRedirectURL(uri), status, eventId, attendanceStatus);
             } else {
                 // 学生记录
+
+                String _sourceId = faceImportMapper.GetHikvisonSourceId(personId);
                 LocalDateTime recordTimeDate = LocalDateTime.parse(recordTimeStr, formatter);
-                String attendanceStatus = discernStudentStatus(recordTimeDate, status, sourceIdMap.get(personId));
+                String attendanceStatus = "";
+//                if(Objects.equals(_sourceId, "1919957901258592258")){
+//                    String a="a";
+//                }
+
+                if (_sourceId == null) {
+                    attendanceStatus = "无数据";
+                } else {
+                    attendanceStatus = discernStudentStatus(recordTimeDate, status, Long.parseLong(_sourceId));
+                }
                 studentInsertRecord(personId, faceImportMapper.GetTeacherIdByPersonId(personId),
                         faceImportMapper.GetClassIdByPersonId(personId), ApiUtil.GetRedirectURL(uri), recordTimeStr, status, eventId, attendanceStatus);
             }
@@ -242,7 +253,7 @@ public class OutInRecordUtil {
         String sql = "SELECT t2.* FROM attendance_rule_category t1" +
                 " INNER JOIN attendance_rule_details t2 ON t1.id = t2.attendance_rule_category_id" +
                 " INNER JOIN attendance_user_relation t3 ON t1.id = t3.attendance_rule_category_id" +
-                " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND NOW() BETWEEN start_date AND end_date" +
+                " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.delete_mark=0 AND NOW() BETWEEN start_date AND end_date" +
                 " AND t2.date_type = '" + dayOfWeek + "' and t3.user_id = " + userId +
                 " ORDER BY t1.end_date DESC";
         List<Map<String, Object>> ruleDetailsList = SqlRunnerAdapter.db().selectList(sql, AttendanceRuleDetails.class);
@@ -294,7 +305,7 @@ public class OutInRecordUtil {
         return attendanceStatus;
     }
 
-    String discernStudentStatus(LocalDateTime recordTime, int status, Long studentUserId) {
+    public  String discernStudentStatus(LocalDateTime recordTime, int status, Long studentUserId) {
         String attendanceStatus = "";
         String dayOfWeek = recordTime.getDayOfWeek().name();
         String sql = "SELECT t2.* FROM attendance_rule_category t1" +
@@ -302,7 +313,7 @@ public class OutInRecordUtil {
                 " INNER JOIN attendance_user_relation t3 ON t1.id = t3.attendance_rule_category_id" +
                 " INNER JOIN base_student_school_roll t4 ON t3.class_id = t4.class_id AND t1.stduy_status=t4.stduy_status" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND NOW() BETWEEN start_date AND end_date" +
-                " AND t4.delete_mark = 0 " +
+                " AND t4.delete_mark = 0 AND t3.delete_mark=0 " +
                 " AND t2.date_type = '" + dayOfWeek + "' and t4.user_id = " + studentUserId +
                 " ORDER BY t1.end_date DESC";
         List<Map<String, Object>> ruleDetailsList = SqlRunnerAdapter.db().selectList(sql, AttendanceRuleDetails.class);

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

@@ -44,5 +44,7 @@ public interface FaceImportMapper {
 
 
     List<String> getTeacherUserIds();
+
+    String GetHikvisonSourceId(@Param("id") String id);
 }
 

+ 3 - 0
src/main/resources/mapper/base/BaseClass.xml

@@ -138,6 +138,9 @@
         <if test="dto.gradeId != null">
             and t1.grade_id = #{dto.gradeId}
         </if>
+        <if test="dto.isGraduate != null">
+            and t1.is_graduate = #{dto.isGraduate}
+        </if>
     </select>
     <select id="getListByGrade" parameterType="com.xjrsoft.module.base.dto.BaseClassGradeDto" resultType="com.xjrsoft.module.base.vo.BaseClassGradeVo">
         SELECT a.id,a.name,a.grade_id,b.name grade_name from base_class a

+ 4 - 0
src/main/resources/mapper/teacher/TeacherFaceImportMapper.xml

@@ -147,4 +147,8 @@
     <select id="getTeacherUserIds" resultType="java.lang.String">
         SELECT hikvision_id FROM hikvision_data WHERE table_name = 'base_teacher'
     </select>
+
+    <select id="GetHikvisonSourceId" parameterType="string" resultType="java.lang.String">
+        SELECT source_id FROM hikvision_data where hikvision_id= #{id}
+    </select>
 </mapper>

+ 12 - 9
src/test/java/com/xjrsoft/module/job/InsertOutInRecordTaskTest.java

@@ -48,8 +48,8 @@ class InsertOutInRecordTaskTest {
     private IHikvisionDataService hkvisionDataService;
     @Test
     void test2() throws ParseException {
-        LocalDateTime startDateTime = LocalDateTime.of(2024,9,1,0,0,0);
-        LocalDateTime endDateTime = LocalDateTime.of(2024,9,30,23,59,59);
+        LocalDateTime startDateTime = LocalDateTime.of(2025,12,1,0,0,0);
+        LocalDateTime endDateTime = LocalDateTime.of(2025,12,1,23,59,59);
         Integer limit = 1;
         Integer size = 1000;
         ApiUtil apiUtil = new ApiUtil();
@@ -63,10 +63,7 @@ class InsertOutInRecordTaskTest {
         paramJson.add("eventTypes", eventList);
 
         JsonArray personIds = new JsonArray();
-        personIds.add("C137");
-        personIds.add("153310036502459");
-        personIds.add("C139");
-        personIds.add("14954809603013");
+        personIds.add("1827235568186601473");
 
         paramJson.add("personIds", personIds);
         paramJson.addProperty("sort", "eventTime");
@@ -84,7 +81,7 @@ class InsertOutInRecordTaskTest {
     @Test
     void test() throws ParseException {
         //获取时间,并计算出前一天的开始时间和结束时间
-        LocalDateTime now = LocalDateTime.of(2025, 9, 25, 0, 0, 0);
+        LocalDateTime now = LocalDateTime.of(2025, 12, 1, 0, 0, 0);
         for (int i = 0; i < 1; i ++){
             LocalDateTime startDateTime = now.plusDays(i).withHour(0).withMinute(0).withSecond(0).withNano(0);
             LocalDateTime endDateTime = startDateTime.plusDays(i).withHour(23).withMinute(59).withSecond(59);
@@ -102,11 +99,17 @@ class InsertOutInRecordTaskTest {
             //Map<String, String> userIdMap = hikvisionDataService.getUserIdMap();
 
             //教师&学生拉取数据
-//            out_in_recordUtil.GetTeacherAndStudentRecords(faceImportMapper, startDateTime, endDateTime);
+            out_in_recordUtil.GetTeacherAndStudentRecords(faceImportMapper, startDateTime, endDateTime);
             //拉取车辆数据
-            out_in_recordUtil.GetVehicleRecord(faceImportMapper, startDateTime, endDateTime);
+//            out_in_recordUtil.GetVehicleRecord(faceImportMapper, startDateTime, endDateTime);
             //拉取访客数据
 //            out_in_recordUtil.GetVisitRecord(faceImportMapper, startDateTime, endDateTime);
 
     }
+
+    @Test
+    public  void studentOutInRecord(){
+
+        out_in_recordUtil.discernStudentStatus(LocalDateTime.now(),0,1919957901258592258L);
+    }
 }