jiangping
2023-12-07 47ccf3eef077536994ff3614bee10374a3150e05
海康接口对接开发
已添加12个文件
已修改7个文件
339 ■■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/config/SpringContextUtil.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventDeviceDataRequest.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkDataRequest.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkInResultRequest.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkPicRequest.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkRlsRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushInfoRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushParamRequest.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventVisitDataRequest.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/ExtEventCustomerNumInfo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/ExtEventIdentityCardInfo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/InterfaceLog.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
@@ -65,4 +65,12 @@
        String result = hkSyncPrivilegeService.syncHkParks(param);
        return ApiResponse.success(result);
    }
    @PreventRepeat
    @ApiOperation("【海康】事件订阅推送对接处理接口")
    @PostMapping("/push")
//    @RequiresPermissions("business:hksync:privilege")
    public ApiResponse push(@RequestBody ParkListRequest param) {
        String result = hkSyncPrivilegeService.syncHkParks(param);
        return ApiResponse.success(result);
    }
}
server/dmvisit_service/src/main/java/com/doumee/config/SpringContextUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.doumee.config;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringContextUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -1,10 +1,17 @@
package com.doumee.core.haikang.model;
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.SpringContextUtil;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.service.business.InterfaceLogService;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.tomcat.util.bcel.Const;
import org.yaml.snakeyaml.scanner.Constant;
import java.io.IOException;
import java.io.InputStream;
@@ -19,10 +26,24 @@
//    private static final Logger logger = LoggerFactory.getLogger(HKUtil.class);
    public static void main(String[] args) throws ParseException {
    }
    private static void saveInterfaceLog(String s, String result,Map<String, String> path) {
        InterfaceLogService bean = SpringContextUtil.getBean(InterfaceLogService.class);
        if(bean !=null){
            InterfaceLog hkMonitoryLogDO=new InterfaceLog();
            hkMonitoryLogDO.setType(0);
            hkMonitoryLogDO.setCreateDate(new Date());
            hkMonitoryLogDO.setIsdeleted(0);
            hkMonitoryLogDO.setRequest(s);
            hkMonitoryLogDO.setRemark(result);
            hkMonitoryLogDO.setName(path.get(HKConstants.https));
            hkMonitoryLogDO.setUrl(HKConstants.https + ArtemisConfig.host+path.get(HKConstants.https));
            bean.create(hkMonitoryLogDO);
        }
    }
    private static Map<String, String> getPath(String str) {
        final String getCamsApi = HKConstants.ARTEMIS_PATH  + str;
        Map<String, String> path = new HashMap<String, String>(2) {
@@ -40,8 +61,10 @@
    public static String getRootOrg() {
        Map<String, String> path = getPath(HKConstants.InterfacePath.rootOrg);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, "", null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog("",result,path);
        return  result;
    }
    /**
     * æ›´æ–°ç»„织信息
@@ -51,6 +74,7 @@
    public static String editOrg(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.editOrg);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
@@ -62,6 +86,7 @@
    public static String addBatchOrg(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.addBatchOrg);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -72,6 +97,7 @@
    public static String delOrg(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.delBatchOrg);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
@@ -83,6 +109,7 @@
    public static String addUser(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.addUser);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
@@ -95,6 +122,7 @@
    public static String addBatchUser(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.addBatchUser);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
@@ -106,6 +134,7 @@
    public static String delBatchUser(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.delBatchUser);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
@@ -117,6 +146,7 @@
    public static String editUser(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.editUser);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -127,6 +157,7 @@
    public static String addFace(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.addFace);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -137,6 +168,7 @@
    public static String editFace(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.editFace);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -147,6 +179,7 @@
    public static String delFace(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.delFace);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -157,6 +190,7 @@
    public static String parkList(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.getParkList);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -167,6 +201,7 @@
    public static String entranceList(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.getEntranceList);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -177,6 +212,7 @@
    public static String parkAddition(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.parkAddition);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -187,6 +223,7 @@
    public static String parkDeletion(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.parkDeletion);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -197,6 +234,7 @@
    public static String carChargeAddtion(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.carChargeAddtion);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -207,6 +245,7 @@
    public static String carChargeDeletion(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.carChargeDeletion);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
@@ -237,6 +276,7 @@
    public static String acsDeviceList(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.acsDeviceList);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -247,6 +287,7 @@
    public static String acsDeviceTimeRangeList(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.acsDeviceList);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -257,6 +298,7 @@
    public static String visitAppiontment(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.visitAppiontment);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -267,6 +309,7 @@
    public static String visitAppiontmentMDJ(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.visitAppiontmentMDJ);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
@@ -278,6 +321,7 @@
    public static String visitCancel(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.visitCancel);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -288,6 +332,7 @@
    public static String privilegeGroup(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.privilegeGroup);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
@@ -298,6 +343,7 @@
    public static String eventSub(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.eventSub);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventDeviceDataRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventDeviceDataRequest<T> {
    private ExtEventIdentityCardInfo ExtEventIdentityCardInfo;//    äººå‘˜èº«ä»½è¯ä¿¡æ¯    å¦    ä¸é™
    private ExtEventIdentityCardInfo  ExtEventCustomerNumInfo;//        é€šé“事件信息    å¦    ä¸é™
    private Integer  ExtAccessChannel    ;//Number    äººå‘˜é€šé“号    å¦    32
    private Integer  ExtEventAlarmInID;//    Number    æŠ¥è­¦è¾“å…¥/防区通道    å¦    32
    private Integer   ExtEventAlarmOutID    ;//Number    æŠ¥è­¦è¾“出通道    å¦    32
    private String   ExtEventCardNo;//String    å¡å·    å¦    32
    private Integer   ExtEventCaseID    ;//Number    äº‹ä»¶è¾“入通道    å¦    32
    private Integer ExtEventCode;//    Number    äº‹ä»¶ç±»åž‹ä»£ç     å¦    32    å‚见附录D.2.1.1 é—¨ç¦äº‹ä»¶ç±»åž‹
    private Integer   ExtEventDoorID;//    Number    é—¨ç¼–号    å¦    32
    private String   ExtEventIDCardPictureURL;//    String    èº«ä»½è¯å›¾ç‰‡URL    å¦    200
    private Integer   ExtEventInOut;//    Number    è¿›å‡ºæ–¹å‘    å¦    32    è¿›å‡ºç±»åž‹1:进0:出-1:未知    è¦æ±‚:进门读卡器拨码设置为1,出门读卡器拨码设置为2
    private Integer  ExtEventLocalControllerID;//    Number    å°±åœ°æŽ§åˆ¶å™¨id    å¦    32    å°±åœ°æŽ§åˆ¶å™¨ç¼–号,0-门禁主机,1-255代表就地控制器
    private Integer   ExtEventMainDevID;//    Number    ä¸»è®¾å¤‡æ‹¨ç     å¦    32
    private String    ExtEventPersonNo;//    String    äººå‘˜ç¼–号    å¦    32    ä»¥äººä¸ºä¸­å¿ƒè®¾å¤‡ä¼šä¸ŠæŠ¥
    private String    ExtEventPictureURL;//    String    å›¾ç‰‡çš„url    å¦    32
    private Integer   ExtEventReaderID;//    Number    è¯»å¡å™¨id    å¦    32
    private Integer     ExtEventReaderKind;//    Number    è¯»å¡å™¨ç±»åˆ«    å¦    32    0-无效1-IC读卡器2-身份证读卡器3-二维码读卡器4-指纹头
    private Integer ExtEventReportChannel;//    Number    æŠ¥å‘Šä¸Šä¼ é€šé“    å¦    32    1-布防上传2-中心组1上传3-中心组2上传0-无效
    private Integer ExtEventRoleID;//    Number    ç¾¤ç»„编号    å¦    32
    private Integer  ExtEventSubDevID;//    Number    åˆ†æŽ§åˆ¶å™¨ç¡¬ä»¶ID    å¦    32
    private Integer    ExtEventSwipNum;//    Number    åˆ·å¡æ¬¡æ•°    å¦    32
    private Integer ExtEventType;//    Number    äº‹ä»¶ç±»åž‹    å¦    32    äº‹ä»¶ç±»åž‹ï¼Œå¦‚普通门禁事件为0,身份证信息事件为1,客流量统计为2
    private Integer   ExtEventVerifyID;//    Number    å¤šé‡è®¤è¯åºå·    å¦    32
    private Integer   ExtEventWhiteListNo;//    Number    ç™½åå•单号    å¦    32    1-8,为0无效
    private String   ExtReceiveTime;//    String    äº‹ä»¶ä¸ŠæŠ¥é©±åŠ¨çš„æ—¶é—´    æ˜¯    32    ç”¨äºŽç»Ÿè®¡äº‹ä»¶ä¸ŠæŠ¥å»¶æ—¶ï¼ŒUnix时间戳,精确到微秒,例: "1558576265810000"代表 2019/5/23 9:51:5.000
    private Integer    Seq;//    Number    äº‹ä»¶æµæ°´å·    æ˜¯    32    äº‹ä»¶æµæ°´å·ï¼Œä¸º0无效
    private String     UserType;//    Number ç”¨æˆ·ç±»åž‹    å¦    32    äººå‘˜ç±»åž‹ï¼š0 æœªçŸ¥ï¼Œ1 æ™®é€šï¼Œ2 æ¥å®¾ï¼Œ3 é»‘名单,4 ç®¡ç†å‘˜
    private String    svrIndexCode    ;//String    å›¾ç‰‡æœåŠ¡å™¨å”¯ä¸€ç¼–ç     å¦    32
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkDataRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventParkDataRequest {
    private Integer    alarmCar    ;//    Number    æ˜¯å¦é»‘名单标识(1-黑名单 0-非黑名单)    å¦
    private String    cardNo    ;//    String    å¡å·    å¦    16
    private Integer      eventCmd;//        Number    äº‹ä»¶å·    æ˜¯        1:压线事件2:上传图片3:入场4:出场5:车牌矫正6:图片重传
    private String       eventIndex;//        String    äº‹ä»¶ç¼–号    æ˜¯    64
    private String      gateIndex;//        String    å‡ºå…¥å£ç¼–号    æ˜¯    64
    private String     gateName;//        String    å‡ºå…¥å£åç§°    æ˜¯    64
    private Integer      inoutType;//        Number    è¿›å‡ºåœºç±»åž‹ï¼Œ0:进场,1:出场    æ˜¯
    private Integer      mainLogo;//        Number    è½¦è¾†ä¸»å“ç‰Œ    å¦
    private String     parkIndex    ;//    String    åœè½¦åº“编号    æ˜¯    64
    private String      parkName    ;//    String    åœè½¦åº“名称    æ˜¯    64
    private EventParkPicRequest  picUrl    ;//Object        å¦
    private String     svrIndex;//    String    å›¾ç‰‡æœåŠ¡å™¨ç¼–å·    å¦    32
    private Integer      plateBelieve    ;//Number    è½¦ç‰Œç½®ä¿¡åº¦    æ˜¯    å–值范围:0—100
    private Integer     plateColor    ;//Number    è½¦ç‰Œé¢œè‰²    æ˜¯    å‚见附录A.15 è½¦ç‰Œé¢œè‰²
    private String      plateNo    ;//String    è½¦ç‰Œå·    æ˜¯    32
    private Integer      plateType;//    Number    è½¦ç‰Œç±»åž‹    æ˜¯    å‚见附录A.14 è½¦ç‰Œç±»åž‹
    private String      roadwayIndex;//    String    è½¦é“编号    æ˜¯    64
    private String     roadwayName;//    String    è½¦é“名称    æ˜¯    64
    private Integer       roadwayType;//    Number    è½¦é“类型    æ˜¯    1:入场车道 2:出场不收费车道 3:出场缴费车道 4:中央缴费车道
    private Integer       subLogo;//    Number    è½¦è¾†å­å“ç‰Œ    å¦
    private Integer      subModel;//    Number    å­å“ç‰Œå¹´æ¬¾    å¦
    private String        time;//    String    æ—¶é—´    æ˜¯    64    ISO格式
    private Integer      vehicleClass;//    Number    è½¦è¾†å±žæ€§    æ˜¯
    private Integer     vehicleColor;//    Number    è½¦è¾†é¢œè‰²    æ˜¯
    private Integer     vehicleType;//    Number    è½¦è¾†ç±»åž‹    æ˜¯
   private EventParkInResultRequest inResult;    //Object    æ”¾è¡Œç»“果数据
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkInResultRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventParkInResultRequest {
    private EventParkRlsRequest    rlsResult    ;//    æ”¾è¡Œç»“果数据    æ˜¯
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkPicRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventParkPicRequest {
    private String    platePicUrl;//    String    è½¦ç‰Œå›¾ç‰‡    å¦    256
    private String    vehiclePicUrl;//    String    è½¦è¾†å›¾ç‰‡    å¦    256
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkRlsRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventParkRlsRequest {
    private Integer   releaseAuth    ;//    Number    æ”¾è¡Œæƒé™    æ˜¯    64    å‚见附录A.65 æ”¾è¡Œæƒé™
    private Integer releaseReason    ;//    Number    æ”¾è¡ŒåŽŸå›     æ˜¯    64    å‚见参见附录A.67 æ”¾è¡ŒåŽŸå› 
    private Integer releaseResult    ;//    Number    æ”¾è¡Œç»“æžœ    æ˜¯    64    å‚见附录A.66 æ”¾è¡Œç»“æžœ
    private Integer releaseResultEx        ;//Number    æ–°ä½“系放行结果    æ˜¯    64    å‚见附录A.68 æ–°ä½“系放行结果
    private Integer releaseWay    ;//    Number    æ”¾è¡Œæ–¹å¼    æ˜¯    64    å‚见附录A.69 æ”¾è¡Œæ–¹å¼
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushInfoRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventPushInfoRequest {
    private String  eventId;//    String    äº‹ä»¶å”¯ä¸€æ ‡è¯†    æ˜¯    64
    private String  srcIndex;//    String    äº‹ä»¶æºç¼–号,物理设备是资源编号    æ˜¯    64
    private String  srcType;//    String    äº‹ä»¶æºç±»åž‹    æ˜¯    16
    private Integer  eventType    ;//Number    äº‹ä»¶ç±»åž‹    æ˜¯
    private String  srcName;//    String    äº‹ä»¶æºåç§°    å¦    64
    private Integer   status    ;//Number    äº‹ä»¶çŠ¶æ€    æ˜¯        0-瞬时1-开始2-停止3-事件脉冲4-事件联动结果更新5-异步图片上传
    private Integer  timeout    ;//Number    è„‰å†²è¶…æ—¶æ—¶é—´    æ˜¯        å•位:秒
    private String  happenTime    ;//String    äº‹ä»¶å‘生时间(设备时间)    æ˜¯    64
    private String   srcParentIndex    ;//String    äº‹ä»¶å‘生的事件源父设备编号    å¦    64
    private EventDeviceDataRequest data;
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushParamRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
import java.util.List;
@Data
public class EventPushParamRequest {
    private String   sendTime;//    P    String    äº‹ä»¶ä»ŽæŽ¥æ”¶è€…(程序处理后)发出的时间    æ˜¯    32    äº‹ä»¶å‘送时间
    private String    ability;//    P    String    äº‹ä»¶ç±»åˆ«    æ˜¯    64    æ ‡è¯†åœè½¦åœºäº‹ä»¶
    private String[] uids;//    String[]    ç”¨æˆ·id    å¦    ä¸é™
    private String[] clients    ;//String[]    ç»„件标识    å¦    ä¸é™
    private List<EventPushInfoRequest> events;//    P    Events[]    äº‹ä»¶ä¿¡æ¯    æ˜¯    ä¸é™
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventPushRequest {
//    private String  parkIndexCodes    ;//    string    False    åœè½¦åº“唯一标识集合  å¤šä¸ªå€¼ä½¿ç”¨è‹±æ–‡é€—号分隔,不超过1000个
    private String   method    ;//    String    æ–¹æ³•名,用于标识报文用途    æ˜¯    16    äº‹ä»¶å›ºå®šOnEventNotify
    private EventPushParamRequest   params    ;//    Params    äº‹ä»¶å‚数信息    æ˜¯    ä¸é™    å…·ä½“参数信息
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventVisitDataRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class EventVisitDataRequest {
    private String   visitorId    ;//String    è®¿å®¢id    æ˜¯    64    å¯¹åº”访客来访记录中的orderId字段
    private String   personName;//    String    å§“名    æ˜¯    32
    private Integer  sex;//    Number    æ€§åˆ«    æ˜¯        1-男2-女
    private Integer  idType;//    Number    è¯ä»¶ç±»åž‹    å¦        111:身份证
    private String   idNo;//    String    è¯ä»¶å·ç     å¦    64
    private String   beVisitedPersonName;//    String    è¢«è®¿é—®äººå§“名    æ˜¯    64
    private String   beVisitedPersonOrg    ;//String    è¢«è®¿é—®äººæ‰€å±žç»„织    æ˜¯    64
    private String   visitorWorkUint;//    String    æ¥è®¿å•位    å¦    64
    private String   visitorCode;//    String    è®¿å®¢éªŒè¯ç     å¦    64
    private String   purpose;//    String    æ¥è®¿äº‹ç”±    å¦    64
    private String   signOrg;//    String    è¯ä»¶ç­¾å‘机关    å¦    64
    private String   startTime    ;//String    æ¥è®¿æ—¶é—´    å¦        ISO8601格式:yyyy-MM-ddTHH:mm:ss+当前时区    ä¾‹å¦‚北京时间: 2018-07-26T15:00:00+08:00
    private String   endTime;//    String    ç¦»å¼€æ—¶é—´    å¦        ISO8601格式:yyyy-MM-ddTHH:mm:ss+当前时区    ä¾‹å¦‚北京时间: 2018-07-26T15:00:00+08:00
    private String   phone;//    String    æ‰‹æœºå·ç     æ˜¯    64
    private String   carNo;//    String    è½¦ç‰Œå·    å¦
    private String   photoUrl;//    String    ç…§ç‰‡uri    å¦
    private String   captureUrl;//    String    æŠ“拍图片uri    å¦
    private String   svrIndexCode;//    String    å›¾ç‰‡å­˜å‚¨æœåŠ¡å™¨å”¯ä¸€æ ‡è¯†    å¦
    private String   beVisitedPersonId;//    String    è¢«è®¿é—®äººId    æ˜¯
    private String   beVisitedPersonOrgId;//    String    è¢«è®¿é—®äººæ‰€å±žç»„织Id    æ˜¯
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/ExtEventCustomerNumInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class ExtEventCustomerNumInfo<T> {
    private Integer  AccessChannel;//    Number    é€šé“号    å¦    32
    private Integer  EntryTimes    ;//Number    è¿›äººæ•°    å¦    32
    private Integer  ExitTimes    ;//Number    å‡ºäººæ•°    å¦    32
    private Integer  TotalTimes    ;//Number    æ€»é€šè¡Œäººæ•°    å¦    32
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/ExtEventIdentityCardInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.core.haikang.model.param.request.event;
import lombok.Data;
@Data
public class ExtEventIdentityCardInfo {
    private  String Address;//    String    ä½å€    å¦    512
    private  String  Birth;//    String    å‡ºç”Ÿæ—¥æœŸ    å¦    32    ä¾‹ï¼š â€œ1999-6-30”
    private  String  EndDate;//    String    æœ‰æ•ˆæ—¥æœŸç»“束时间    å¦    32    ä¾‹ï¼š â€œ2028-10-12”
    private  String   IdNum    ;//String    èº«ä»½è¯id    å¦    32
    private  String   IssuingAuthority;//    String    ç­¾å‘机关    å¦    32
    private  String   Name;//    String    å§“名    å¦    32
    private Integer Nation    ;//Number        å¦    32    0-未知
    private Integer   Sex;//    Number    æ€§åˆ«    å¦    32    æ€§åˆ«0-未知1-男2-女
    private  String  StartDate;//    String    æœ‰æ•ˆæ—¥æœŸå¼€å§‹æ—¶é—´    å¦    32    ä¾‹ï¼š â€œ2018-10-12”
    private Integer TermOfValidity;//    Number    æ˜¯å¦é•¿æœŸæœ‰æ•ˆ    å¦    32    0-否(有效截止日期有效)            1-是(有效截止日期无效)
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -9,6 +9,8 @@
import com.doumee.core.haikang.model.HKTools;
import com.doumee.core.haikang.model.param.BaseRequst;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.service.business.InterfaceLogService;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -21,9 +23,9 @@
import com.alibaba.fastjson.TypeReference;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
//@Service
@Slf4j
public class HKService {
    private Logger logger = LoggerFactory.getLogger(HKService.class);
@@ -44,7 +46,6 @@
            log.error("【海康获取根组织】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     * ä¿®æ”¹ç»„织数据
@@ -431,8 +432,9 @@
     */
    public  static  BaseResponse   eventSub(EventSubRequest param){
        log.error("【海康事件订阅】================开始===="+JSONObject.toJSONString(param));
        String res = null;
        try {
            String res = HKTools.eventSub(JSONObject.toJSONString(param));
            res = HKTools.eventSub(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse >(){};
            BaseResponse   result = JSONObject.parseObject(res, typeReference.getType());
@@ -440,6 +442,8 @@
            return  result;
        }catch (Exception e){
            log.error("【海康事件订阅】================失败====:\n"+ e.getMessage());
        }finally {
           // saveInterfaceLog(param,res);
        }
        return  null;
    }
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -20,6 +20,7 @@
    public static final String HK_APPSECRET ="HK_APPSECRET" ;
    public static final String HK_HTTPS ="HK_HTTPS" ;
    public static final String HK_PUSH_URL = "HK_PUSH_URL";
    public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ;
    /**
     * mq tag
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/InterfaceLog.java
@@ -61,8 +61,7 @@
    @ApiModelProperty(value = "地址信息")
    @ExcelColumn(name="地址信息")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date url;
    private String url;
    @ApiModelProperty(value = "请求参数")
    @ExcelColumn(name="请求参数")
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java
@@ -119,8 +119,7 @@
            queryWrapper.lambda().eq(InterfaceLog::getName, pageWrap.getModel().getName());
        }
        if (pageWrap.getModel().getUrl() != null) {
            queryWrapper.lambda().ge(InterfaceLog::getUrl, Utils.Date.getStart(pageWrap.getModel().getUrl()));
            queryWrapper.lambda().le(InterfaceLog::getUrl, Utils.Date.getEnd(pageWrap.getModel().getUrl()));
            queryWrapper.lambda().like(InterfaceLog::getUrl, pageWrap.getModel().getUrl());
        }
        if (pageWrap.getModel().getRequest() != null) {
            queryWrapper.lambda().eq(InterfaceLog::getRequest, pageWrap.getModel().getRequest());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java
@@ -8,12 +8,14 @@
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.EventSubRequest;
import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
import com.doumee.core.haikang.model.param.respose.OrgListResponse;
import com.doumee.core.haikang.model.param.respose.PrivilegeGroupInfoResponse;
import com.doumee.core.haikang.model.param.respose.PrivilegeGroupListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.system.model.SystemDictData;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -43,8 +45,28 @@
        HKConstants.https = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HTTPS).getCode();
        //开始订阅门禁事件、访客事件、和停车场事件
        startHkEventSub();
        //获取根组织编码
        getRootOrgCode();
        return  0;
    }
    /**
     *    èŽ·å–æ ¹ç»„ç»‡ç¼–ç 
     */
    private void getRootOrgCode() {
        SystemDictData org =  systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_ROOTORG_CODE);
        if(org!=null){
            String rootOrgId =org.getCode();
            if(StringUtils.isBlank(rootOrgId)){
                BaseResponse<OrgListResponse> res = HKService.getRootOrg(null);
                if(res !=null && res.getData()!=null && StringUtils.isNotBlank(res.getData().getOrgIndexCode())){
                    org.setCode(res.getData().getOrgIndexCode());
                    org.setUpdateTime(new Date());
                    systemDictDataBiz.updateById( org);
                }
            }
        }
    }
    /**
     * è®¢é˜…门禁事件、访客事件、和停车场事件