Browse Source

海康出入记录查询

dzx 5 months ago
parent
commit
df3fd4b07b

+ 77 - 0
src/main/java/com/xjrsoft/module/hikvision/controller/OutInController.java

@@ -0,0 +1,77 @@
+package com.xjrsoft.module.hikvision.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.convert.Convert;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.module.hikvision.dto.HikvisionOutinPageDto;
+import com.xjrsoft.module.hikvision.service.IHikvisionDataService;
+import com.xjrsoft.module.hikvision.util.ApiUtil;
+import com.xjrsoft.module.hikvision.vo.HikvisionOutinPageVo;
+import com.xjrsoft.module.workflow.vo.PendingTaskVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+@RequestMapping("/hikvision/outin")
+@Api(value = "/hikvision/outin", tags = "海康出入记录")
+@AllArgsConstructor
+@Slf4j
+public class OutInController {
+
+    private final IHikvisionDataService hkvisionDataService;
+
+    @PostMapping("/page")
+    @ApiOperation(value="海康记录查询(分页)")
+    @SaCheckPermission("outin:detail")
+    public RT<PageOutput<HikvisionOutinPageVo>> page(@Valid HikvisionOutinPageDto dto){
+        ApiUtil apiUtil = new ApiUtil();
+        String apiPath = "/api/acs/v2/door/events";
+
+        JsonObject paramJson = new JsonObject();
+        JsonArray eventList = new JsonArray();
+        eventList.add(196893); // 只获取人脸通过的
+        paramJson.addProperty("pageNo", dto.getLimit());
+        paramJson.addProperty("pageSize", dto.getSize());
+        paramJson.add("eventTypes", eventList);
+        String hikvisionId = hkvisionDataService.getHikvisionIdBySourceId(dto.getUserId().toString());
+
+        JsonArray personIds = new JsonArray();
+        personIds.add(hikvisionId);
+        paramJson.add("personIds", personIds);
+        paramJson.addProperty("sort", "eventTime");
+        paramJson.addProperty("order", "desc");
+
+        String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null);
+        JsonParser parser = new JsonParser();
+        JsonObject data = parser.parse(doPost).getAsJsonObject().get("data").getAsJsonObject();
+        JsonArray list = data.get("list").getAsJsonArray();
+        List<HikvisionOutinPageVo> result = new ArrayList<>();
+        Gson gson = new Gson();
+        for (JsonElement jsonElement : list) {
+            result.add(gson.fromJson(jsonElement.getAsJsonObject(), HikvisionOutinPageVo.class));
+        }
+
+        PageOutput<HikvisionOutinPageVo> output = new PageOutput<>();
+        output.setCurrentPage(dto.getLimit());
+        output.setPageSize(dto.getSize());
+        output.setTotal(data.get("totalPage").getAsInt());
+        output.setList(result);
+        
+        return RT.ok(output);
+    }
+}

+ 20 - 0
src/main/java/com/xjrsoft/module/hikvision/dto/HikvisionOutinPageDto.java

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.hikvision.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author dzx
+ * @date 2024年9月19日
+ */
+@Data
+public class HikvisionOutinPageDto extends PageInput {
+
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+}

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

@@ -27,4 +27,10 @@ public interface HikvisionDataMapper extends MPJBaseMapper<HikvisionData> {
      * @return
      */
     String getStudentHikvisionId(Long sourceId);
+
+    /**
+     * 查询学生在海康中的id
+     * @param sourceId
+     */
+    String getHikvisionIdBySourceId(String sourceId);
 }

+ 16 - 0
src/main/java/com/xjrsoft/module/hikvision/service/IHikvisionDataService.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.hikvision.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.hikvision.entity.HikvisionData;
+/**
+* @title: 海康基础数据对照
+* @Author dzx
+* @Date: 2024年9月19日
+* @Version 1.0
+*/
+
+public interface IHikvisionDataService extends MPJBaseService<HikvisionData> {
+
+    String getHikvisionIdBySourceId(String sourceId);
+
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/hikvision/service/impl/HikvisionDataServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.hikvision.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.hikvision.entity.HikvisionData;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
+import com.xjrsoft.module.hikvision.service.IHikvisionDataService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * @title: 海康基础数据对照
+ * @Author dzx
+ * @Date: 2024年9月19日
+ * @Version 1.0
+ */
+
+@Service
+@AllArgsConstructor
+public class HikvisionDataServiceImpl extends MPJBaseServiceImpl<HikvisionDataMapper, HikvisionData> implements IHikvisionDataService {
+
+    @Override
+    public String getHikvisionIdBySourceId(String sourceId) {
+        return this.baseMapper.getHikvisionIdBySourceId(sourceId);
+    }
+}

+ 87 - 0
src/main/java/com/xjrsoft/module/hikvision/vo/HikvisionOutinPageVo.java

@@ -0,0 +1,87 @@
+package com.xjrsoft.module.hikvision.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 查询海康门禁点事件返回结果对象
+ * @Author: dzx
+ * @Date: 2024年9月19日
+ */
+@Data
+public class HikvisionOutinPageVo {
+
+
+    @ApiModelProperty("事件ID")
+    private String eventId;
+
+    @ApiModelProperty("事件名称")
+    private String eventName;
+
+    @ApiModelProperty("事件产生时间")
+    private String eventTime;
+
+    @ApiModelProperty("卡号")
+    private String cardNo;
+
+    @ApiModelProperty("人员唯一编码")
+    private String personId;
+
+    @ApiModelProperty("人员名称")
+    private String personName;
+
+    @ApiModelProperty("人员所属组织编码")
+    private String orgIndexCode;
+
+    @ApiModelProperty("人员所属组织名称")
+    private String orgName;
+
+    @ApiModelProperty("门禁点编码")
+    private String doorIndexCode;
+
+    @ApiModelProperty("门禁点名称")
+    private String doorName;
+
+    @ApiModelProperty("门禁点所在区域编码")
+    private String doorRegionIndexCode;
+
+    @ApiModelProperty("抓拍图片地址")
+    private String picUri;
+
+    @ApiModelProperty("图片存储服务的唯一标识")
+    private String svrIndexCode;
+
+    @ApiModelProperty("事件类型")
+    private String eventType;
+
+    @ApiModelProperty("进出类型(1:进 0:出 1:未知)")
+    private Integer inAndOutType;
+
+    @ApiModelProperty("读卡器IndexCode")
+    private String readerDevIndexCode;
+
+    @ApiModelProperty("读卡器名称")
+    private String readerDevName;
+
+    @ApiModelProperty("控制器设备IndexCode")
+    private String devIndexCode;
+
+    @ApiModelProperty("控制器名称")
+    private String devName;
+
+    @ApiModelProperty("身份证图片uri")
+    private String identityCardUri;
+
+    @ApiModelProperty("证件号码")
+    private String certNo;
+
+    @ApiModelProperty("事件入库时间")
+    private String receiveTime;
+
+    @ApiModelProperty("工号")
+    private String jobNo;
+
+    @ApiModelProperty("学号")
+    private String studentId;
+}

+ 4 - 2
src/main/java/com/xjrsoft/module/job/HikvisionLeaveTask.java

@@ -112,8 +112,10 @@ public class HikvisionLeaveTask {
 
         //删除成功后,重新下载
         //1、创建任务
+        paramJson = new JsonObject();
+        paramJson.addProperty("taskType", 1);
         apiPath = "/api/acps/v1/download/configuration/task/add";
-        String doPost = apiUtil.doPost(apiPath, null, null, null);
+        String doPost = apiUtil.doPost(apiPath, paramJson.toString(), null, null);
 
         JsonParser jsonParser = new JsonParser();
         JsonObject resultJson = jsonParser.parse(doPost).getAsJsonObject();
@@ -121,7 +123,7 @@ public class HikvisionLeaveTask {
         if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
             String taskId = resultJson.get("data").getAsJsonObject().get("taskId").getAsString();
             //2、下载
-            apiPath = "/api/acps/v1/download/configuration/task/add";
+            apiPath = "/api/acps/v1/download/configuration/data/add";
             paramJson = new JsonObject();
             paramJson.add("resourceInfos", resourceInfos);
             paramJson.addProperty("taskId", taskId);

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

@@ -25,7 +25,7 @@ public class StudentLeaveNode extends NodeComponent {
         Long formId = Convert.toLong(value);
         if (formId != null) {
             // 数据处理
-            studentLeaveService.hikvisionLeave(formId);
+            // studentLeaveService.hikvisionLeave(formId);
             studentLeaveService.noticeParents(formId);
         }
     }

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

@@ -10,4 +10,8 @@
         SELECT hikvision_id FROM hikvision_data WHERE source_id = #{id} AND table_name = 'base_student'
     </select>
 
+    <select id="getHikvisionIdBySourceId" parameterType="java.lang.String" resultType="java.lang.String">
+        SELECT hikvision_id FROM hikvision_data WHERE source_id = #{id}
+    </select>
+
 </mapper>