Browse Source

学生教师照片导出到海康

brealinxx 10 months ago
parent
commit
6ec979c089

+ 7 - 15
src/main/java/com/xjrsoft/module/hikvision/util/ApiUtil.java

@@ -1,6 +1,5 @@
 package com.xjrsoft.module.hikvision.util;
 
-import com.google.gson.JsonObject;
 import com.hikvision.artemis.sdk.ArtemisHttpUtil;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 
@@ -19,12 +18,11 @@ public class ApiUtil {
     /**
      * 调用海康接口(该方法内部实现了登入认证逻辑)
      * @param apiPath 接口地址
-     * @param body body参数
+     * @param paramJson body参数
      * @param querys 查询参数
-     * @param header header参数
      * @return 接口调用结果
      */
-    public String doPost(String apiPath, String body, Map<String, String> querys, Map<String, String> header){
+    public static String doPost(String apiPath, String paramJson, Map<String, String> querys){
         /**
          * STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数.
          */
@@ -52,17 +50,11 @@ public class ApiUtil {
          */
         String contentType = "application/json";
 
-        return ArtemisHttpUtil.doPostStringArtemis(path, body, querys, null, contentType , header);// post请求application/json类型参数
-    }
+        /**
+         * STEP5:组装请求参数
+         */
+        String body = paramJson;
 
-    /**
-     * 调用海康接口(该方法内部实现了登入认证逻辑)
-     * @param apiPath 接口地址
-     * @param body body参数
-     * @param querys 查询参数
-     * @return 接口调用结果
-     */
-    public String doPost(String apiPath, String body, Map<String, String> querys){
-        return doPost(apiPath, body, querys, null);
+        return ArtemisHttpUtil.doPostStringArtemis(path, body, querys, null, contentType , null);// post请求application/json类型参数
     }
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -44,7 +44,7 @@ public class DataUtil {
             idCodeMap.put(department.getCode(), department.getId());
         }
 
-        String result = apiUtil.doPost(apiPath, dataArray.toString(), null, null);
+        String result = apiUtil.doPost(apiPath, dataArray.toString(), null);
         JsonElement parse = jsonParser.parse(result);
         JsonObject resultJson = parse.getAsJsonObject();
         if(resultJson.get("code").getAsInt() == 0 && "success".equals(resultJson.get("msg").getAsString())){

+ 97 - 0
src/main/java/com/xjrsoft/module/hikvision/util/FaceImportUtil.java

@@ -0,0 +1,97 @@
+package com.xjrsoft.module.hikvision.util;
+
+import com.google.gson.JsonObject;
+import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.xjrsoft.module.hikvision.util.ApiUtil.doPost;
+
+public class FaceImportUtil {
+    private static FaceImportMapper faceImportMapper;
+
+    public static String ImportTeacherFace(Long id) {
+        JsonObject paramJson = new JsonObject();
+        paramJson.addProperty("personId", faceImportMapper.GetTeacherHikvisionIdById(id));
+        paramJson.addProperty("faceData", ImageToBase64(faceImportMapper.GetTeacherHikvisionImgById(id)));
+
+        Map<String, String> querys = new HashMap<>();
+        querys.put("tagId", "frs");
+
+        String apiPath = "/api/resource/v1/face/single/add";
+        String response = doPost(apiPath, String.valueOf(paramJson), querys);
+
+        return response;
+    }
+
+    public static String ImportStudentFace(Long id) {
+        JsonObject paramJson = new JsonObject();
+        paramJson.addProperty("personId", faceImportMapper.GetStudentHikvisionIdById(id));
+        paramJson.addProperty("faceData", ImageToBase64(faceImportMapper.GetStudentHikvisionImgById(id)));
+
+        Map<String, String> querys = new HashMap<>();
+        querys.put("tagId", "frs");
+
+        String apiPath = "/api/resource/v1/face/single/add";
+        String response = doPost(apiPath, String.valueOf(paramJson), querys);
+
+        return response;
+    }
+
+    public static String ImageToBase64(String imageUrl) {
+        String base64String = "";
+        try {
+            URL url = new URL(imageUrl);
+            InputStream inputStream = url.openStream();
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            byte[] buffer = new byte[4096];
+            int bytesRead;
+            while ((bytesRead = inputStream.read(buffer)) != -1) {
+                outputStream.write(buffer, 0, bytesRead);
+            }
+            byte[] imageBytes = outputStream.toByteArray();
+            base64String = Base64.getEncoder().encodeToString(imageBytes);
+            inputStream.close();
+            outputStream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return base64String;
+    }
+
+    //    public String AddFace(Long id){
+//        JsonObject paramJson = new JsonObject();
+//        paramJson.addProperty("name", teacherFaceImportMapper.GetHikvisionIdById(id));
+//        paramJson.addProperty("description", "none");
+//
+//        Map<String, String> querys = new HashMap<>();
+//
+//        String apiPath = "/api/frs/v1/face/group/single/addition";
+//        String response = ApiUtil.doPost(apiPath, String.valueOf(paramJson), querys);
+////        ObjectMapper mapper = new ObjectMapper();
+////        try {
+////            JsonNode rootNode = mapper.readTree(response);
+////            JsonNode dataNode = rootNode.path("data");
+////            JsonNode indexCodeNode = dataNode.path("indexCode");
+////
+////            if (indexCodeNode != null && !indexCodeNode.isNull()) {
+////                String indexCode = indexCodeNode.asText();
+////                return indexCode;
+////            } else {
+////                System.out.println("IndexCode is null or not present");
+////                return null;
+////            }
+////        } catch (JsonProcessingException e) {
+////            e.printStackTrace();
+////            return null;
+////        } catch (Exception e) {
+////            e.printStackTrace();
+////            return null;
+////        }
+//    }
+}

+ 27 - 0
src/main/java/com/xjrsoft/module/liteflow/node/ImportStudentFaceNode.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.yomahub.liteflow.core.NodeComponent;
+import com.xjrsoft.module.hikvision.util.FaceImportUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 导出学生照片到海康平台
+ */
+@Component("import_student_face_node")
+public class ImportStudentFaceNode extends NodeComponent {
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            FaceImportUtil.ImportStudentFace(formId);
+        }
+    }
+}
+

+ 26 - 0
src/main/java/com/xjrsoft/module/liteflow/node/ImportTeacherFaceNode.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.yomahub.liteflow.core.NodeComponent;
+import com.xjrsoft.module.hikvision.util.FaceImportUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 导出老师照片到海康平台
+ */
+@Component("import_teacher_face_node")
+public class ImportTeacherFaceNode extends NodeComponent {
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            FaceImportUtil.ImportTeacherFace(formId);
+        }
+    }
+}

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

@@ -0,0 +1,15 @@
+package com.xjrsoft.module.teacher.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+
+@Mapper
+public interface FaceImportMapper {
+    String GetTeacherHikvisionIdById(@Param("id") Long id);
+    String GetTeacherHikvisionImgById(@Param("id") Long id);
+
+    String GetStudentHikvisionIdById(@Param("id") Long id);
+    String GetStudentHikvisionImgById(@Param("id") Long id);
+}
+

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

@@ -0,0 +1,41 @@
+<?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.teacher.mapper.FaceImportMapper">
+    <select id="GetTeacherHikvisionIdById" parameterType="long" resultType="java.lang.String">
+        select t1.hikvision_id
+        from teacher_face_process t
+        left join hikvision_data t1 on t1.source_id = t.user_id
+        <if test="id != null">
+            where t.id = #{id}
+        </if>
+    </select>
+
+    <select id="GetTeacherHikvisionImgById" parameterType="long" resultType="java.lang.String">
+        select t1.file_url
+        from teacher_face_process t
+        left join xjr_file t1 on t1.folder_id = t.face_photo
+        <if test="id != null">
+            where t.id = #{id}
+        </if>
+    </select>
+
+    <select id="GetStudentHikvisionIdById" parameterType="long" resultType="java.lang.String">
+        select t1.hikvision_id
+        from stundent_face_process t
+        left join hikvision_data t1 on t1.source_id = t.user_id
+        <if test="id != null">
+            where t.id = #{id}
+        </if>
+    </select>
+
+    <select id="GetStudentHikvisionImgById" parameterType="long" resultType="java.lang.String">
+        select t1.file_url
+        from stundent_face_process t
+        left join xjr_file t1 on t1.folder_id = t.face_photo
+        <if test="id != null">
+            where t.id = #{id}
+        </if>
+    </select>
+</mapper>