Parcourir la source

教职工人脸上传测试

dzx il y a 1 an
Parent
commit
b03cfe97b9

+ 10 - 6
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -11,8 +11,12 @@ import com.xjrsoft.module.attendance.vo.AttendanceRuleDetailsUserVo;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsVo;
 import com.xjrsoft.module.concat.service.IXjrUserService;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.outint.entity.StudentOutInRecord;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
+import com.xjrsoft.module.outint.service.IStudentOutInRecordService;
 import com.xjrsoft.module.outint.service.ITeacherOutInRecordService;
+import com.xjrsoft.module.student.entity.BaseStudent;
+import com.xjrsoft.module.student.entity.StudentLeave;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.service.IWfTeacherleaveService;
@@ -47,6 +51,7 @@ public class StatisticsController {
 
     private final IXjrUserService xjrUserService;
     private final ITeacherOutInRecordService teacherOutInRecordService;
+    private final IStudentOutInRecordService studentOutInRecordService;
     private final IAttendanceRuleCategoryService ruleCategoryService;
     private final IWfTeacherleaveService wfTeacherleaveService;
 
@@ -125,8 +130,7 @@ public class StatisticsController {
         //查询总人数
         MPJLambdaWrapper<XjrUser> queryWrapper = MPJWrappers.<XjrUser>lambdaJoin()
                 .disableSubLogicDel()
-                .innerJoin(BaseTeacher.class,BaseTeacher::getUserId,XjrUser::getId)
-                .innerJoin(UserDeptRelation.class, UserDeptRelation::getUserId, XjrUser::getId);
+                .innerJoin(BaseStudent.class, BaseStudent::getUserId, XjrUser::getId);
         long allCount = xjrUserService.count(queryWrapper);
         statisticsVo.setAllCount(allCount);
         if(dto.getDate() != null && !"".equals(dto.getDate())){
@@ -144,9 +148,9 @@ public class StatisticsController {
                 endTime = queryDate.atTime(23, 59, 59);
             }
 
-            List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.list(
-                    new QueryWrapper<TeacherOutInRecord>().lambda()
-                            .between(TeacherOutInRecord::getRecordTime, startTime, endTime)
+            List<StudentOutInRecord> outInRecords = studentOutInRecordService.list(
+                    new QueryWrapper<StudentOutInRecord>().lambda()
+                            .between(StudentOutInRecord::getRecordTime, startTime, endTime)
             );
             //实到人数
             statisticsVo.setActualCount(Long.valueOf(outInRecords.size()));
@@ -159,7 +163,7 @@ public class StatisticsController {
             Map<Long, AttendanceRuleDetailsUserVo> allTeacherTodyRule = ruleCategoryService.getAllTeacherTodyRule(queryDate.getDayOfWeek().name());
             //通过考勤规则和实到人数信息,计算迟到的
             Long lateCount = 0L;
-            for (TeacherOutInRecord outInRecord : outInRecords) {
+            for (StudentOutInRecord outInRecord : outInRecords) {
                 AttendanceRuleDetailsUserVo ruleDetails = allTeacherTodyRule.get(outInRecord.getUserId());
                 if(dto.getTimePeriod() == 1 && outInRecord.getRecordTime().toLocalTime().compareTo(ruleDetails.getAmStartTime()) > 0){
                     lateCount ++;

+ 14 - 0
src/main/java/com/xjrsoft/module/hikvision/mapper/HikvisionDataMapper.java

@@ -13,4 +13,18 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface HikvisionDataMapper extends MPJBaseMapper<HikvisionData> {
 
+    /**
+     * 查询教师在海康中的id
+     * @param sourceId
+     * @return
+     */
+    String getTeacherHikvisionId(Long sourceId);
+
+
+    /**
+     * 查询学生在海康中的id
+     * @param sourceId
+     * @return
+     */
+    String getStudentHikvisionId(Long sourceId);
 }

+ 9 - 8
src/main/java/com/xjrsoft/module/hikvision/util/FaceImportUtil.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.hikvision.util;
 
 import com.google.gson.JsonObject;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 
 import java.io.ByteArrayOutputStream;
@@ -13,13 +14,13 @@ import java.util.Map;
 
 
 public class FaceImportUtil {
-    private static FaceImportMapper faceImportMapper;
-    private static ApiUtil apiUtil;
 
-    public static String ImportTeacherFace(Long id) {
+    private static ApiUtil apiUtil = new ApiUtil();
+
+    public static String ImportTeacherFace(String personId, String fileUrl) {
         JsonObject paramJson = new JsonObject();
-        paramJson.addProperty("personId", faceImportMapper.GetTeacherUserIdById(id));
-        paramJson.addProperty("faceData", ImageToBase64(faceImportMapper.GetTeacherHikvisionImgById(id)));
+        paramJson.addProperty("personId", personId);
+        paramJson.addProperty("faceData", ImageToBase64(fileUrl));
 
         Map<String, String> querys = new HashMap<>();
         querys.put("tagId", "frs");
@@ -30,10 +31,10 @@ public class FaceImportUtil {
         return response;
     }
 
-    public static String ImportStudentFace(Long id) {
+    public static String ImportStudentFace(String personId, String fileUrl) {
         JsonObject paramJson = new JsonObject();
-        paramJson.addProperty("personId", faceImportMapper.GetStudentUserIdById(id));
-        paramJson.addProperty("faceData", ImageToBase64(faceImportMapper.GetStudentHikvisionImgById(id)));
+        paramJson.addProperty("personId", personId);
+        paramJson.addProperty("faceData", ImageToBase64(fileUrl));
 
         Map<String, String> querys = new HashMap<>();
         querys.put("tagId", "frs");

+ 13 - 2
src/main/java/com/xjrsoft/module/liteflow/node/ImportStudentFaceNode.java

@@ -1,9 +1,11 @@
 package com.xjrsoft.module.liteflow.node;
 
 import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.hikvision.util.FaceImportUtil;
 import com.xjrsoft.module.personnel.entity.StundentFaceProcess;
 import com.xjrsoft.module.personnel.service.IStundentFaceProcessService;
+import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import com.yomahub.liteflow.core.NodeComponent;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -17,6 +19,13 @@ import java.util.Map;
 public class ImportStudentFaceNode extends NodeComponent {
     @Autowired
     private IStundentFaceProcessService stundentFaceProcessService;
+
+    @Autowired
+    private HikvisionDataMapper hikvisionDataMapper;
+
+    @Autowired
+    private FaceImportMapper faceImportMapper;
+
     @Override
     public void process() throws Exception {
         // 获取表单中数据编号
@@ -24,14 +33,16 @@ public class ImportStudentFaceNode extends NodeComponent {
         Object value = util.getFormDatKey(params,"id");
         Long formId = Convert.toLong(value);
         if (formId != null) {
+            String fileUrl = faceImportMapper.GetStudentHikvisionImgById(formId);
             // 数据处理
             StundentFaceProcess dataObj = stundentFaceProcessService.getById(formId);
             dataObj.setStatus(1);
             dataObj.setExamStatus(1);
-
+            String result = FaceImportUtil.ImportStudentFace(hikvisionDataMapper.getStudentHikvisionId(dataObj.getUserId()), fileUrl);
+            dataObj.setHikvisionResult(result);
             stundentFaceProcessService.updateById(dataObj);
 
-            FaceImportUtil.ImportStudentFace(formId);
+
         }
     }
 }

+ 12 - 1
src/main/java/com/xjrsoft/module/liteflow/node/ImportTeacherFaceNode.java

@@ -1,8 +1,10 @@
 package com.xjrsoft.module.liteflow.node;
 
 import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
 import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
+import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import com.yomahub.liteflow.core.NodeComponent;
 import com.xjrsoft.module.hikvision.util.FaceImportUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +21,12 @@ public class ImportTeacherFaceNode extends NodeComponent {
     @Autowired
     private ITeacherFaceProcessService teacherFaceProcessService;
 
+    @Autowired
+    private HikvisionDataMapper hikvisionDataMapper;
+
+    @Autowired
+    private FaceImportMapper faceImportMapper;
+
     @Override
     public void process() throws Exception {
         // 获取表单中数据编号
@@ -26,11 +34,14 @@ public class ImportTeacherFaceNode extends NodeComponent {
         Object value = util.getFormDatKey(params,"id");
         Long formId = Convert.toLong(value);
         if (formId != null) {
+
+            String fileUrl = faceImportMapper.GetTeacherHikvisionImgById(formId);
+
             // 数据处理
             TeacherFaceProcess dataObj = teacherFaceProcessService.getById(formId);
             dataObj.setStatus(1);
             dataObj.setExamStatus(1);
-            String reslut = FaceImportUtil.ImportTeacherFace(formId);
+            String reslut = FaceImportUtil.ImportTeacherFace(hikvisionDataMapper.getTeacherHikvisionId(dataObj.getUserId()), fileUrl);
             dataObj.setHikvisionResult(reslut);
             teacherFaceProcessService.updateById(dataObj);
         }

+ 3 - 1
src/main/java/com/xjrsoft/module/outint/entity/StudentOutInRecord.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 
@@ -88,7 +89,8 @@ public class StudentOutInRecord implements Serializable {
     * 记录时间
     */
     @ApiModelProperty("记录时间")
-    private String recordTime;
+    private LocalDateTime recordTime;
+
     /**
     * 人脸照片
     */

+ 13 - 0
src/main/resources/mapper/hikvision/HikvisionDataMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper">
+    <select id="getTeacherHikvisionId" parameterType="long" resultType="java.lang.String">
+        SELECT hikvision_id FROM hikvision_data WHERE source_id = #{id} AND table_name = 'base_teacher'
+    </select>
+    <select id="getStudentHikvisionId" parameterType="long" resultType="java.lang.String">
+        SELECT hikvision_id FROM hikvision_data WHERE source_id = #{id} AND table_name = 'base_student'
+    </select>
+
+</mapper>

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

@@ -4,12 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xjrsoft.module.teacher.mapper.FaceImportMapper">
     <select id="GetTeacherUserIdById" parameterType="long" resultType="java.lang.String">
-        select t.user_id
-        from teacher_face_process t
-        <if test="id != null">
-            where t.id = #{id}
-        </if>
-        and t.status = 1
+        select t.user_id from teacher_face_process t where t.id = #{id}
     </select>
 
     <select id="GetTeacherHikvisionImgById" parameterType="long" resultType="java.lang.String">
@@ -19,7 +14,6 @@
         <if test="id != null">
             where t.id = #{id}
         </if>
-        and t.status = 1
     </select>
 
     <select id="GetStudentUserIdById" parameterType="long" resultType="java.lang.String">

+ 46 - 0
src/test/java/com/xjrsoft/module/liteflow/node/ImportTeacherFaceNodeTest.java

@@ -0,0 +1,46 @@
+package com.xjrsoft.module.liteflow.node;
+
+import com.xjrsoft.XjrSoftApplication;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
+import com.xjrsoft.module.hikvision.util.FaceImportUtil;
+import com.xjrsoft.module.personnel.entity.TeacherFaceProcess;
+import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
+import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author dzx
+ * @date 2024/5/27
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = XjrSoftApplication.class)
+class ImportTeacherFaceNodeTest {
+
+
+    @Autowired
+    private ITeacherFaceProcessService teacherFaceProcessService;
+    @Autowired
+    private FaceImportMapper faceImportMapper;
+
+    @Autowired
+    private HikvisionDataMapper hikvisionDataMapper;
+    @Test
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Long formId = 1793948095216664576L;
+        if (formId != null) {
+            String fileUrl = faceImportMapper.GetTeacherHikvisionImgById(formId);
+            // 数据处理
+            TeacherFaceProcess dataObj = teacherFaceProcessService.getById(formId);
+            dataObj.setStatus(1);
+            dataObj.setExamStatus(1);
+            String reslut = FaceImportUtil.ImportTeacherFace(hikvisionDataMapper.getTeacherHikvisionId(dataObj.getUserId()), fileUrl);
+            dataObj.setHikvisionResult(reslut);
+            teacherFaceProcessService.updateById(dataObj);
+        }
+    }
+}