jiangping
2023-12-08 1140f80aefef30b543c99aaed47bcbca731b24e2
海康接口对接开发
已添加12个文件
已删除4个文件
已复制2个文件
已修改14个文件
已重命名7个文件
908 ■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/DoorsListRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | 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/EventParkRlsRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | 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/acs/EventAcsInfoRequest.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventAcsParamRequest.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventAcsRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventDeviceDataRequest.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventCustomerNumInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventIdentityCardInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkDataRequest.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkInResultRequest.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkInfoRequest.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkParamRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkPicRequest.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitDataRequest.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitInfoRequest.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitParamRequest.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AcsDeviceInfoResponse.java 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/DoorsInfoResponse.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/DoorsListResponse.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/DateUtil.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
@@ -1,29 +1,24 @@
package com.doumee.api.business;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Device;
import com.doumee.service.business.DeviceService;
import com.doumee.service.business.HkSyncService;
import com.doumee.service.business.impl.hksync.HkSyncDeviceServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncPrivilegeServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
@@ -40,6 +35,8 @@
    private HkSyncParkServiceImpl hkSyncParkService;
    @Autowired
    private HkSyncPrivilegeServiceImpl hkSyncPrivilegeService;
    @Autowired
    private HkSyncPushServiceImpl hkSyncPushService;
    @PreventRepeat
    @ApiOperation("【海康】全量同步门禁设备接口")
@@ -58,19 +55,32 @@
        return ApiResponse.success(result);
    }
    @PreventRepeat
    @ApiOperation("【海康】全量同步停车库接口")
    @ApiOperation("【海康】全量同步访客权限组接口")
    @PostMapping("/getPrivilege")
//    @RequiresPermissions("business:hksync:privilege")
    public ApiResponse getPrivilege(@RequestBody ParkListRequest param) {
        String result = hkSyncPrivilegeService.syncHkParks(param);
    public ApiResponse getPrivilege(@RequestBody PrivilegeGroupRequest param) {
        String result = hkSyncPrivilegeService.syncPrivilege(param);
        return ApiResponse.success(result);
    }
    @PreventRepeat
    @ApiOperation("【海康】事件订阅推送对接处理接口")
    @PostMapping("/push")
//    @RequiresPermissions("business:hksync:privilege")
    public ApiResponse push(@RequestBody ParkListRequest param) {
        String result = hkSyncPrivilegeService.syncHkParks(param);
    @ApiOperation("【海康】门禁事件订阅推送对接处理接口")
    @PostMapping("/push/acs")
    public ApiResponse pushAcs(@RequestBody EventAcsRequest param, HttpServletResponse response) {
        String result = hkSyncPushService.dealAcsEvent(param,response);
        return ApiResponse.success(result);
    }
    @PreventRepeat
    @ApiOperation("【海康】访客事件订阅推送对接处理接口")
    @PostMapping("/push/visit")
    public ApiResponse pushVisit(@RequestBody EventVisitRequest param, HttpServletResponse response) {
        String result = hkSyncPushService.dealVisitEvent(param,response);
        return ApiResponse.success(result);
    }
    @PreventRepeat
    @ApiOperation("【海康】停车场事件订阅推送对接处理接口")
    @PostMapping("/push/parks")
    public ApiResponse pushParks(@RequestBody EventParkRequest param, HttpServletResponse response) {
        String result = hkSyncPushService.dealParkEvent(param,response);
        return ApiResponse.success(result);
    }
}
server/dmvisit_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -4,6 +4,7 @@
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.util.ThreadContext;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.beans.factory.annotation.Autowired;
@@ -77,6 +78,7 @@
    @Bean
    public SecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        ThreadContext.bind(securityManager);//加上这句代码手动绑定
        securityManager.setRealm(shiroRealm);
        securityManager.setSessionManager(this.sessionManager());
        securityManager.setCacheManager(shiroCacheManager);
@@ -98,6 +100,7 @@
        map.put("/system/logout", "anon");
        map.put("/common/captcha", "anon");
        map.put("/statistics/**", "anon");
        map.put("/business/hksync/push/**", "anon");
        map.put("/dingding/push", "anon");
//        map.put("/ext/workorderExt/freshStatistics", "anon");
        map.put("/dingding/jsapiTicket", "anon");
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -49,6 +49,7 @@
        String facePicture= "/api/resource/v1/person/picture";//提取用户人脸照片
        String privilegeGroup= "/api/visitor/v1/privilege/group";//查询访客权限组
        String eventSub= "/api/eventService/v1/eventSubscriptionByEventTypes";//事件订阅
        String doorSearch= "/api/resource/v2/door/search";//查询门禁点列表v2
    }
    /**
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -13,8 +13,14 @@
import org.apache.tomcat.util.bcel.Const;
import org.yaml.snakeyaml.scanner.Constant;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -26,7 +32,23 @@
//    private static final Logger logger = LoggerFactory.getLogger(HKUtil.class);
    public static void main(String[] args) throws ParseException {
    public static void main(String[] args) throws Exception {
//            Proxy proxy = new Proxy(Proxy.Type.DIRECT, new InetSocketAddress("127.0.0.1",Integer.valueOf("1080")));
            URL realUrl = new URL("https://10.50.60.253/artemis/api/eventService/v1/eventSubscriptionByEventTypes");
            HttpURLConnection con = (HttpURLConnection) realUrl.openConnection();
        con.setRequestMethod("GET");
//        con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) ;Gecko/20100101 Firefox/57.0");
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer content = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            content.append(inputLine);
        }
        in.close();
        con.disconnect();
        System.out.println(content.toString());
    }
    private static void saveInterfaceLog(String s, String result,Map<String, String> path) {
@@ -37,7 +59,7 @@
            hkMonitoryLogDO.setCreateDate(new Date());
            hkMonitoryLogDO.setIsdeleted(0);
            hkMonitoryLogDO.setRequest(s);
            hkMonitoryLogDO.setRemark(result);
            hkMonitoryLogDO.setRepose(result);
            hkMonitoryLogDO.setName(path.get(HKConstants.https));
            hkMonitoryLogDO.setUrl(HKConstants.https + ArtemisConfig.host+path.get(HKConstants.https));
            bean.create(hkMonitoryLogDO);
@@ -269,6 +291,17 @@
        }
    }
    /**
     *    èŽ·å–é—¨ç¦ç‚¹åˆ—è¡¨
     * @param body
     * @return
     */
    public static String doorSearch(String body) {
        Map<String, String> path = getPath(HKConstants.InterfacePath.doorSearch);
        String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请求application/json类型参数
        saveInterfaceLog(body,result,path);
        return  result;
    }
    /**
     *    èŽ·å–é—¨ç¦è®¾å¤‡åˆ—è¡¨
     * @param body
     * @return
@@ -360,18 +393,5 @@
    /**
     * ä¼ å…¥Data类型日期,返回字符串类型时间(ISO8601标准时间)
     * @param date
     * @return
     */
    public static String getISO8601Timestamp(Date date){
        TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
        //TimeZone tz = TimeZone.getTimeZone("GMT-01");
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        df.setTimeZone(tz);
        String nowAsISO = df.format(date);
        return nowAsISO;
    }
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/DoorsListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class DoorsListRequest {
 private String   name    ;//string    False    åç§°ï¼Œæ¨¡ç³Šæœç´¢ï¼Œæœ€å¤§é•¿åº¦32,若包含中文,最大长度指不超过按照指定编码的字节长度,即getBytes(“utf-8”).length
    private String[]        regionIndexCodes    ;//string[]    False    åŒºåŸŸç¼–号,可以为空; String[],支持根据区域批量查询;区域编号个数<=1000个;单个长度<=64Byte;,可从查询区域列表v2接口获取返回参数indexCode
    private Boolean      isSubRegion;//    boolean    False    true时,搜索regionIndexCodes及其子孙区域的资源;  false时,只搜索 regionIndexCodes的资源
    private Integer      pageNo    ;//integer    True    å½“前页码
    private Integer      pageSize;//    integer    True    åˆ†é¡µå¤§å°
    private String[]     authCodes    ;//string[]    False    æƒé™ç é›†åˆï¼Œè¯¦è§é™„录A.3 èµ„源权限码中门禁设备对应的资源权限码
   private Integer   orderBy    ;//string    False    æŽ’序字段,注意:排序字段必须是查询条件,否则返回参数错误
   private Integer orderType;//    string    False    é™åºå‡åº,降序:desc å‡åºï¼šasc
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkInResultRequest.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkRlsRequest.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushRequest.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventVisitDataRequest.java
ÎļþÒÑɾ³ý
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventAcsInfoRequest.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushInfoRequest.java ÐÞ¸Ä
@@ -1,10 +1,9 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.acs;
import lombok.Data;
@Data
public class EventPushInfoRequest {
public class EventAcsInfoRequest {
    private String  eventId;//    String    äº‹ä»¶å”¯ä¸€æ ‡è¯†    æ˜¯    64
    private String  srcIndex;//    String    äº‹ä»¶æºç¼–号,物理设备是资源编号    æ˜¯    64
    private String  srcType;//    String    äº‹ä»¶æºç±»åž‹    æ˜¯    16
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventAcsParamRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.doumee.core.haikang.model.param.request.event.acs;
import lombok.Data;
import java.util.List;
@Data
public class EventAcsParamRequest {
    private String   sendTime;//    P    String    äº‹ä»¶ä»ŽæŽ¥æ”¶è€…(程序处理后)发出的时间    æ˜¯    32    äº‹ä»¶å‘送时间
    private String    ability;//    P    String    äº‹ä»¶ç±»åˆ«    æ˜¯    64    æ ‡è¯†åœè½¦åœºäº‹ä»¶
    private List<EventAcsInfoRequest> events;//    P    Events[]    äº‹ä»¶ä¿¡æ¯    æ˜¯    ä¸é™
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventAcsRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.request.event.acs;
import lombok.Data;
@Data
public class EventAcsRequest {
//    private String  parkIndexCodes    ;//    string    False    åœè½¦åº“唯一标识集合  å¤šä¸ªå€¼ä½¿ç”¨è‹±æ–‡é€—号分隔,不超过1000个
    private String   method    ;//    String    æ–¹æ³•名,用于标识报文用途    æ˜¯    16    äº‹ä»¶å›ºå®šOnEventNotify
    private EventAcsParamRequest params    ;//    Params    äº‹ä»¶å‚数信息    æ˜¯    ä¸é™    å…·ä½“参数信息
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/EventDeviceDataRequest.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventDeviceDataRequest.java ÐÞ¸Ä
@@ -1,9 +1,9 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.acs;
import lombok.Data;
@Data
public class EventDeviceDataRequest<T> {
public class EventDeviceDataRequest {
    private ExtEventIdentityCardInfo ExtEventIdentityCardInfo;//    äººå‘˜èº«ä»½è¯ä¿¡æ¯    å¦    ä¸é™
    private ExtEventIdentityCardInfo  ExtEventCustomerNumInfo;//        é€šé“事件信息    å¦    ä¸é™
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventCustomerNumInfo.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/ExtEventCustomerNumInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.acs;
import lombok.Data;
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/acs/ExtEventIdentityCardInfo.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/ExtEventIdentityCardInfo.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.acs;
import lombok.Data;
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkDataRequest.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkDataRequest.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.parks;
import lombok.Data;
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkInResultRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.doumee.core.haikang.model.param.request.event.parks;
import lombok.Data;
@Data
public class EventParkInResultRequest {
        private EventParkParamRequest.EventParkRlsRequest rlsResult    ;//    æ”¾è¡Œç»“果数据    æ˜¯
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkInfoRequest.java
copy from server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushInfoRequest.java copy to server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkInfoRequest.java
Îļþ´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushInfoRequest.java ¸´ÖÆ
@@ -1,10 +1,10 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.parks;
import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest;
import lombok.Data;
@Data
public class EventPushInfoRequest {
public class EventParkInfoRequest {
    private String  eventId;//    String    äº‹ä»¶å”¯ä¸€æ ‡è¯†    æ˜¯    64
    private String  srcIndex;//    String    äº‹ä»¶æºç¼–号,物理设备是资源编号    æ˜¯    64
    private String  srcType;//    String    äº‹ä»¶æºç±»åž‹    æ˜¯    16
@@ -14,5 +14,5 @@
    private Integer  timeout    ;//Number    è„‰å†²è¶…æ—¶æ—¶é—´    æ˜¯        å•位:秒
    private String  happenTime    ;//String    äº‹ä»¶å‘生时间(设备时间)    æ˜¯    64
    private String   srcParentIndex    ;//String    äº‹ä»¶å‘生的事件源父设备编号    å¦    64
    private EventDeviceDataRequest data;
    private EventParkDataRequest data;
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/parks/EventParkParamRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.core.haikang.model.param.request.event.parks;
import lombok.Data;
import java.util.List;
@Data
public class EventParkParamRequest {
    private String   sendTime;//    P    String    äº‹ä»¶ä»ŽæŽ¥æ”¶è€…(程序处理后)发出的时间    æ˜¯    32    äº‹ä»¶å‘送时间
    private String    ability;//    P    String    äº‹ä»¶ç±»åˆ«    æ˜¯    64    æ ‡è¯†åœè½¦åœºäº‹ä»¶
    private List<EventParkInfoRequest> events;//    P    Events[]    äº‹ä»¶ä¿¡æ¯    æ˜¯    ä¸é™
    @Data
    public static 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/parks/EventParkPicRequest.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventParkPicRequest.java ÐÞ¸Ä
@@ -1,11 +1,9 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.parks;
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/parks/EventParkRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.request.event.parks;
import lombok.Data;
@Data
public class EventParkRequest {
//    private String  parkIndexCodes    ;//    string    False    åœè½¦åº“唯一标识集合  å¤šä¸ªå€¼ä½¿ç”¨è‹±æ–‡é€—号分隔,不超过1000个
    private String   method    ;//    String    æ–¹æ³•名,用于标识报文用途    æ˜¯    16    äº‹ä»¶å›ºå®šOnEventNotify
    private EventParkParamRequest params    ;//    Params    äº‹ä»¶å‚数信息    æ˜¯    ä¸é™    å…·ä½“参数信息
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitDataRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.doumee.core.haikang.model.param.request.event.visit;
import lombok.Data;
import java.util.List;
@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/visit/EventVisitInfoRequest.java
copy from server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushInfoRequest.java copy to server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitInfoRequest.java
Îļþ´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushInfoRequest.java ¸´ÖÆ
@@ -1,10 +1,10 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.visit;
import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest;
import lombok.Data;
@Data
public class EventPushInfoRequest {
public class EventVisitInfoRequest {
    private String  eventId;//    String    äº‹ä»¶å”¯ä¸€æ ‡è¯†    æ˜¯    64
    private String  srcIndex;//    String    äº‹ä»¶æºç¼–号,物理设备是资源编号    æ˜¯    64
    private String  srcType;//    String    äº‹ä»¶æºç±»åž‹    æ˜¯    16
@@ -14,5 +14,5 @@
    private Integer  timeout    ;//Number    è„‰å†²è¶…æ—¶æ—¶é—´    æ˜¯        å•位:秒
    private String  happenTime    ;//String    äº‹ä»¶å‘生时间(设备时间)    æ˜¯    64
    private String   srcParentIndex    ;//String    äº‹ä»¶å‘生的事件源父设备编号    å¦    64
    private EventDeviceDataRequest data;
    private EventVisitDataRequest data;
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitParamRequest.java
ÎļþÃû´Ó server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/EventPushParamRequest.java ÐÞ¸Ä
@@ -1,17 +1,17 @@
package com.doumee.core.haikang.model.param.request.event;
package com.doumee.core.haikang.model.param.request.event.visit;
import lombok.Data;
import java.util.List;
@Data
public class EventPushParamRequest {
public class EventVisitParamRequest {
    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[]    äº‹ä»¶ä¿¡æ¯    æ˜¯    ä¸é™
    private List<EventVisitInfoRequest> events;//    P    Events[]    äº‹ä»¶ä¿¡æ¯    æ˜¯    ä¸é™
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/event/visit/EventVisitRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.request.event.visit;
import lombok.Data;
@Data
public class EventVisitRequest {
//    private String  parkIndexCodes    ;//    string    False    åœè½¦åº“唯一标识集合  å¤šä¸ªå€¼ä½¿ç”¨è‹±æ–‡é€—号分隔,不超过1000个
    private String   method    ;//    String    æ–¹æ³•名,用于标识报文用途    æ˜¯    16    äº‹ä»¶å›ºå®šOnEventNotify
    private EventVisitParamRequest params    ;//    Params    äº‹ä»¶å‚数信息    æ˜¯    ä¸é™    å…·ä½“参数信息
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AcsDeviceInfoResponse.java
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/DoorsInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
@Data
public class DoorsInfoResponse {
   private String   indexCode    ;//string    False    èµ„源唯一编码
private String   resourceType    ;//string    False    èµ„源类型,详见附录A.2 èµ„源类型
private String   name;//    string    False    èµ„源名称
private String   doorNo;//    string    False    é—¨ç¦ç‚¹ç¼–号
private String   channelNo    ;//string    False    é€šé“号
private String   parentIndexCode    ;//string    False    çˆ¶çº§èµ„源编号
private String   controlOneId    ;//string    False    ä¸€çº§æŽ§åˆ¶å™¨id
private String   controlTwoId;//    string    False    äºŒçº§æŽ§åˆ¶å™¨id
private String   readerInId    ;//string    False    è¯»å¡å™¨1
private String   readerOutId    ;//string    False    è¯»å¡å™¨2
private String   treatyType    ;//string    False    æŽ¥å…¥åè®®ï¼Œè¯¦è§é™„录A.6 ç¼–码设备接入协议
private String   doorSerial    ;//number    False    é—¨åºå·
private String   regionIndexCode;//    string    False    æ‰€å±žåŒºåŸŸ
private String   regionPath    ;//string    False    æ‰€å±žåŒºåŸŸè·¯å¾„,以@符号分割,包含本节点
private String   createTime    ;//string    False    åˆ›å»ºæ—¶é—´
private String   updateTime;//    string    False    æ›´æ–°æ—¶é—´
private String   description;//    string    False    æè¿°
private String   channelType;//    string    False    é€šé“类型,door:门禁点
private String   regionName    ;//string    False    åŒºåŸŸåç§°
private String   regionPathName    ;//string    False    æ‰€å±žåŒºåŸŸè·¯å¾„名,符号"/"进行分隔
private String   installLocation;//    string    False    å®‰è£…位置,详见附录附录A.81 å®‰è£…位置
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/DoorsListResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
import java.util.List;
@Data
public class DoorsListResponse {
   private int total;//    number    False    æŸ¥è¯¢æ•°æ®è®°å½•总数
   private int pageSize;//    number    False    æ¯é¡µè®°å½•总数
   private int pageNo    ;// number    False    å½“前页码
   private List<DoorsInfoResponse> list    ;// object[]    False
}
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -34,7 +34,7 @@
     * @return
     */
    public  static  BaseResponse<OrgListResponse>  getRootOrg(BaseRequst param){
        log.error("【海康获取根组织】================开始====");
        log.info("【海康获取根组织】================开始====");
        try {
            String res = HKTools.getRootOrg ();
            TypeReference typeReference =
@@ -52,7 +52,7 @@
     * @return
     */
    public  static  BaseResponse editOrg(OrgEditRequest param){
        log.error("【海康修改组织】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康修改组织】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.editOrg(JSONObject.toJSONString(param));
@@ -71,7 +71,7 @@
     * @return
     */
    public  static  BaseResponse<OrgOrUserAddResponse>  addBatchOrg(List<OrgAddRequest> param){
        log.error("【海康新增组织】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康新增组织】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.addBatchOrg(JSONObject.toJSONString(param));
@@ -90,7 +90,7 @@
     * @return
     */
    public  static  BaseResponse   delBatchOrg(OrgDelRequest param){
        log.error("【海康删除组织】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康删除组织】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.delOrg(JSONObject.toJSONString(param));
@@ -109,7 +109,7 @@
     * @return
     */
    public  static  BaseResponse<UserAddResponse>  addUser(UserAddRequest param){
        log.error("【海康新增人员】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康新增人员】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.addUser(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -127,7 +127,7 @@
     * @return
     */
    public  static  BaseResponse editUser(UserAddRequest param){
        log.error("【海康修改人员】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康修改人员】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.editUser(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -145,7 +145,7 @@
     * @return
     */
    public  static  BaseResponse<OrgOrUserAddResponse>  addBatchUser(List<UserAddRequest> param){
        log.error("【海康批量新增人员】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康批量新增人员】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.addBatchUser(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -163,7 +163,7 @@
     * @return
     */
    public  static  BaseResponse<OrgOrUserAddFailureResponse>  delBatchUser(List<UserAddRequest> param){
        log.error("【海康批量新增人员】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康批量新增人员】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.delBatchUser(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -181,7 +181,7 @@
     * @return
     */
    public  static  BaseResponse<FaceAddOrEditesponse>  addFace(List<FaceAddRequest> param){
        log.error("【海康添加人脸信息】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康添加人脸信息】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.addFace(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -199,7 +199,7 @@
     * @return
     */
    public  static  BaseResponse<FaceAddOrEditesponse>  editFace(List<FaceEditRequest> param){
        log.error("【海康编辑人脸信息】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康编辑人脸信息】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.editFace(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -217,7 +217,7 @@
     * @return
     */
    public  static  BaseResponse   delFace(List<FaceEditRequest> param){
        log.error("【海康删除人脸信息】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康删除人脸信息】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.editFace(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -235,7 +235,7 @@
     * @return
     */
    public static InputStream getFaceInputStream(FacePictureRequest param) {
        log.error("【海康人脸访问图片流】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康人脸访问图片流】================开始===="+JSONObject.toJSONString(param));
        try {
            InputStream res = HKTools.getFaceInputStream(JSONObject.toJSONString(param));
            log.error("【海康人脸访问图片流】================成功====\n");
@@ -251,7 +251,7 @@
     * @return
     */
    public  static  BaseResponse<List<ParkListResponse>>   parkList(ParkListRequest param){
        log.error("【海获取车库列表数据】================开始===="+JSONObject.toJSONString(param));
        log.info("【海获取车库列表数据】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.parkList(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -269,7 +269,7 @@
     * @return
     */
    public  static  BaseResponse<List<EntranceListResponse>>   entranceList(EntranceListRequest param){
        log.error("【海获取车库列表数据】================开始===="+JSONObject.toJSONString(param));
        log.info("【海获取车库列表数据】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.entranceList(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -287,7 +287,7 @@
     * @return
     */
    public  static  BaseResponse   carChargeAddtion(CarChargeAddRequest param){
        log.error("【海康固定车辆充值】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康固定车辆充值】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.carChargeAddtion(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -305,7 +305,7 @@
     * @return
     */
    public  static  BaseResponse   carChargeDeletion(CarChargeDelRequest param){
        log.error("【海康固定车辆取消包期】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康固定车辆取消包期】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.carChargeDeletion(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -323,7 +323,7 @@
     * @return
     */
    public  static  BaseResponse<ParkReservationAddResponse>   parkReservationAddition(ParkReservationAddRequest param){
        log.error("【海康车位预约】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康车位预约】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.parkAddition(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -341,7 +341,7 @@
     * @return
     */
    public  static  BaseResponse   parkReservationDeletion(ParkReservationDelRequest param){
        log.error("【海康车位取消预约】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康车位取消预约】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.carChargeDeletion(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -359,7 +359,7 @@
     * @return
     */
    public  static  BaseResponse<VisitAppointmentResponse>   visitAppiontment(VisitAppointmentRequest param){
        log.error("【海康访客预约】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康访客预约】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.visitAppiontment(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -377,7 +377,7 @@
     * @return
     */
    public  static  BaseResponse   cancelVisitAppiontment(VisitAppointmentCancelRequest param){
        log.error("【海康访客预约取消】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康访客预约取消】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.visitCancel(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -395,7 +395,7 @@
     * @return
     */
    public  static  BaseResponse  outVisitAppiontment(VisitAppointmentOutRequest param){
        log.error("【海康访客预约签离】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康访客预约签离】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.visitOut(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -413,7 +413,7 @@
     * @return
     */
    public  static  BaseResponse<VisitAppointmentVistorResponse>   visitAppiontmentMDJ(VisitAppointmentMDJRequest param){
        log.error("【海康访客免登记预约】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康访客免登记预约】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.visitAppiontmentMDJ(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -431,7 +431,7 @@
     * @return
     */
    public  static  BaseResponse<PrivilegeGroupListResponse>   privilegeGroup(PrivilegeGroupRequest param){
        log.error("【海康访客权限组列表查询】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康访客权限组列表查询】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.privilegeGroup(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -445,11 +445,29 @@
        return  null;
    }
    /**
     *海康门禁点查询(分页)
     * @return
     */
    public  static  BaseResponse<DoorsListResponse>   doorSearch(DoorsListRequest param){
        log.info("【海康门禁点查询】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.doorSearch(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<DoorsListResponse> >(){};
            BaseResponse<DoorsListResponse>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康门禁点查询");
            return  result;
        }catch (Exception e){
            log.error("【海康门禁点查询】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *门禁设备查询(分页)
     * @return
     */
    public  static  BaseResponse<AcsDeviceListResponse>   acsDeviceList(AcsDeviceListRequest param){
        log.error("【海康门禁设备查询】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康门禁设备查询】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.acsDeviceList(JSONObject.toJSONString(param));
            TypeReference typeReference =
@@ -467,7 +485,7 @@
     * @return
     */
    public  static  BaseResponse   eventSub(EventSubRequest param){
        log.error("【海康事件订阅】================开始===="+JSONObject.toJSONString(param));
        log.info("【海康事件订阅】================开始===="+JSONObject.toJSONString(param));
        String res = null;
        try {
            res = HKTools.eventSub(JSONObject.toJSONString(param));
server/dmvisit_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -41,6 +41,43 @@
    public DateUtil() {
    }
    /**
     * ä¼ å…¥Data类型日期,返回字符串类型时间(ISO8601标准时间)
     * @param date
     * @return
     */
    public static String getISO8601Timestamp(Date date){
        try {
            TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
            //TimeZone tz = TimeZone.getTimeZone("GMT-01");
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'+'z");
            df.setTimeZone(tz);
            String nowAsISO = df.format(date);
            return nowAsISO;
        }catch (Exception e){
        }
        return  null;
    }
    public static Date getISO8601DateByStr(String date)  {
        TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
        if(date!=null ){
            int i = date.indexOf("+");
            if(i >0){
                date = date.substring(0,i);
            }
        }
        //TimeZone tz = TimeZone.getTimeZone("GMT-01");
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
//        DateFormat df = new SimpleDateFormat("2023-12-08 T 09:25:54.698+08:00");
        df.setTimeZone(tz);
        Date nowAsISO = null;
        try {
            nowAsISO = df.parse(date);
        } catch (ParseException e) {
        }
        return nowAsISO;
    }
    public static Date StringToDate2(String DATE) {
        if(StringUtils.isBlank(DATE)){
            return null;
@@ -2751,6 +2788,8 @@
    public static void main(String[] args) {
        try {
            System.out.println(RandomStringUtils.randomNumeric(3));
            Date date = getISO8601DateByStr("2023-02-26T08:59:55.206+08:00");
            System.out.println(getISO8601Timestamp(date));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
@@ -1,8 +1,14 @@
package com.doumee.service.business;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.DoorsListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * åœè½¦åœºäº‹ä»¶æŽ¨é€è®°å½•表Service定义
@@ -26,9 +32,23 @@
    String syncHkParks(ParkListRequest param);
    /**
     * åŒæ­¥æµ·åº·é—¨ç¦ç‚¹åˆ—表信息(暂无用)
     * @param param
     * @return
     */
    String syncDoors(DoorsListRequest param);
    /**
     * åŒæ­¥æµ·åº·è®¿å®¢æƒé™ç»„
     * @param param
     * @return
     */
    String syncPrivilege(PrivilegeGroupRequest param);
    String dealAcsEvent(EventAcsRequest param, HttpServletResponse response);
    String dealVisitEvent(EventVisitRequest param, HttpServletResponse response);
    String dealParkEvent(EventParkRequest param, HttpServletResponse response);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -15,6 +15,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.MemberMapper;
@@ -81,14 +82,11 @@
        String[] hkIds = getHkDeviceRoles(visits);
        //检验拜访人是否合法
        isValideVisitedUser(visits.getReceptMemberId());
        //检查随访人员是否合法,生成随访人员新增集合
        List<Member> withUsers = isValideWithUsers(visits.getWithUserList());
        if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) &&!IdcardUtil.isValidCard(visits.getIdcardNo())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!");
        }
        Date date = new Date();
        //访客信息(使用身份证号查询是否已存在改普通访客,没有则新增,存在则更新openid等信息)
        //访客信息(使用身份证号查询是否已存在改普通访客,没有则新增,存在则更新openid等信息),包括随访人员校验和处理
        Member member =dealMemberAndVisits(visits);
        //初始化访客信息
        initVisitInfo(visits,date);
@@ -199,8 +197,8 @@
    private String visitAppiontment(Visits visits) {
        VisitAppointmentRequest param = new VisitAppointmentRequest();
        param.setVisitStartTime(HKTools.getISO8601Timestamp(visits.getStarttime()));
        param.setVisitEndTime(HKTools.getISO8601Timestamp(visits.getStarttime()));
        param.setVisitStartTime(DateUtil.getISO8601Timestamp(visits.getStarttime()));
        param.setVisitEndTime(DateUtil.getISO8601Timestamp(visits.getStarttime()));
        BaseResponse<VisitAppointmentResponse>  res = HKService.visitAppiontment(param);
        if(res==null || !StringUtils.equals(res.getCode(), HKConstants.RESPONSE_SUCCEE) || res.getData()==null){
          //如果发起预约失败
@@ -215,7 +213,7 @@
    }
    /**
     * æ ¡é©—申請人信息,有则修改,无则新增,并绑定最新openid数据
     * è®¿å®¢ä¿¡æ¯(使用身份证号查询是否已存在改普通访客,没有则新增,存在则更新openid等信息),包括随访人员校验和处理
     * @param visits
     * @return
     */
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -1,34 +1,16 @@
package com.doumee.service.business.impl.hksync;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.EventSubRequest;
import com.doumee.core.haikang.model.param.request.DoorsListRequest;
import com.doumee.core.haikang.model.param.request.ParkListRequest;
import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest;
import com.doumee.core.haikang.model.param.respose.AcsDeviceInfoResponse;
import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
import com.doumee.core.haikang.model.param.respose.ParkListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.model.Device;
import com.doumee.dao.business.model.Parks;
import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
import com.doumee.service.business.HkSyncService;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
 * è®¾å¤‡ä¿¡æ¯è¡¨Service实现
@@ -48,6 +30,11 @@
    public   String syncHkParks(ParkListRequest param){
        return null;
    }
    @Override
//    @Async
    public String syncDoors(DoorsListRequest param){
        return null;
    }
    /**
     * åŒæ­¥æµ·åº·é—¨ç¦è®¾å¤‡æ•°æ®
     * @param param
@@ -65,4 +52,19 @@
        return null;
    }
    @Override
    public String   dealAcsEvent(EventAcsRequest param, HttpServletResponse response){
        return  null;
    }
    @Override
    public String   dealVisitEvent(EventVisitRequest param, HttpServletResponse response){
        return  null;
    }
    @Override
    public String   dealParkEvent(EventParkRequest param, HttpServletResponse response){
        return  null;
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
@@ -1,5 +1,7 @@
package com.doumee.service.business.impl.hksync;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
@@ -57,13 +59,13 @@
            //分页遍历循环查询所有门禁设备数据
            param = new AcsDeviceListRequest();
            param.setPageNo(curPage);
            param.setPageSize(10000);
            param.setPageSize(100);
            BaseResponse<AcsDeviceListResponse> response = HKService.acsDeviceList(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            AcsDeviceListResponse r = response.getData();
            curTotal += 10000;
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
@@ -126,17 +128,21 @@
        model.setIsdeleted(Constants.ZERO);
        model.setIp(device.getIp());
        model.setHkDate(date);
        model.setCreateDate(DateUtil.StringToDate2(device.getCreateTime()));
        model.setEditDate(DateUtil.StringToDate2(device.getUpdateTime()));
        model.setNo(device.getDeviceCode());
        model.setCreateDate(DateUtil.getISO8601DateByStr(device.getCreateTime()));
        model.setEditDate(DateUtil.getISO8601DateByStr(device.getUpdateTime()));
        model.setNo(device.getDevSerialNum());
        model.setHkId(device.getIndexCode());
        model.setName(device.getName());
        model.setHkStatus(Constants.ONE);
        model.setManufature(device.getManufacturer());
        model.setType(Constants.ZERO);
//        model.setNo(device.getDevSerialNum());
//        model.setChannelNo(device);
        model.setResourceType(device.getResourceType());
        model.setDevTypeCode(device.getDevTypeCode());
        model.setManufature(device.getManufacturer());
        model.setPort(device.getPort());
        model.setRemark(JSONObject.toJSONString(device));
        return  model;
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
package com.doumee.service.business.impl.hksync;
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.DoorsListRequest;
import com.doumee.core.haikang.model.param.respose.DoorsInfoResponse;
import com.doumee.core.haikang.model.param.respose.AcsDeviceListResponse;
import com.doumee.core.haikang.model.param.respose.DoorsInfoResponse;
import com.doumee.core.haikang.model.param.respose.DoorsListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.model.Device;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * é—¨ç¦ç‚¹ä¿¡æ¯è¡¨Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
public class HkSyncDoorsServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private DeviceMapper deviceMapper;
    /**
     * åŒæ­¥æµ·åº·é—¨ç¦è®¾å¤‡æ•°æ®
     * @param param
     * @return
     */
    @Override
//    @Async
    public String syncDoors(DoorsListRequest param){
        List<Device> deleteList = new ArrayList<>();
        List<Device> addList = new ArrayList<>();
        List<Device> editList = new ArrayList<>();
        List<DoorsInfoResponse> allHkList = new ArrayList<>();
        Date date = new Date();
        //查询全部门禁设备数据
        List<Device> allList = deviceMapper.selectList(null);
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            param = new DoorsListRequest();
            param.setPageNo(curPage);
            param.setPageSize(100);
            BaseResponse<DoorsListResponse> response = HKService.doorSearch(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            DoorsListResponse r = response.getData();
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allHkList.addAll(r.getList());
            }
            curPage++;
        }
        /**
         * èŽ·å–å¢žåˆ æ”¹æ•°æ®é›†åˆ
         */
        getDataChangeList(allList,allHkList,addList,editList,deleteList,date);
        if(deleteList.size()>0){
            //逻辑删除
            for(Device d : deleteList){
                deviceMapper.updateById(d);
            }
        }
        if(addList.size()>0){
            deviceMapper.insertBatchSomeColumn(addList);
        }
        if(editList.size()>0){
            for(Device d : editList){
                deviceMapper.updateById(d);
            }
        }
        return "同步数据:新增【"+addList.size()+"】条,更新【"+editList.size()+"】条,删除【"+deleteList.size()+"】条";
    }
    private void getDataChangeList(List<Device> allList, List<DoorsInfoResponse> allHkList, List<Device> addList, List<Device> editList,List<Device> deleteList, Date date) {
        if(allHkList!=null && allHkList.size()>0){
            for(DoorsInfoResponse device : allHkList){
                Device model = getExistedDevice(device,allList);
                if(model !=null){
                    //如果已存在,则更新数据
                    model =  initDataByHkData(model,device,date);
                    editList.add(model);
                }else{
                    //如果不存在,则新增数据
                    model = new Device();
                    model =  initDataByHkData(model,device,date);
                    addList.add(model);
                }
            }
        }
        //判断获取删除的门禁设备,逻辑删除
        getDeleteList(allList,allHkList,deleteList,date);
    }
    /**
     * åˆå§‹åŒ–海康入库数据
     * @param model
     * @param device
     * @param date
     * @return
     */
    private Device initDataByHkData(Device model, DoorsInfoResponse device,Date date) {
        model.setIsdeleted(Constants.ZERO);
        model.setHkDate(date);
        model.setCreateDate(DateUtil.getISO8601DateByStr(device.getCreateTime()));
        model.setEditDate(DateUtil.getISO8601DateByStr(device.getUpdateTime()));
        model.setNo(device.getDoorSerial());
        model.setHkId(device.getIndexCode());
        model.setName(device.getName());
        model.setHkStatus(Constants.ONE);
        model.setType(Constants.ZERO);
        model.setChannelNo(device.getChannelNo());
        model.setResourceType(device.getResourceType());
        model.setRemark(JSONObject.toJSONString(device));
        return  model;
    }
    private Device getExistedDevice(DoorsInfoResponse device, List<Device> allList) {
        if(allList.size()>0){
            for(Device r : allList){
                if(StringUtils.equals(r.getHkId(), device.getIndexCode())){
                    //表示未删除
                    return  r;
                }
            }
        }
        return  null;
    }
    private void getDeleteList(List<Device> allList, List<DoorsInfoResponse> allHkList,List<Device> deleteList ,Date date) {
        if(allList!=null && allList.size()>0){
            for(Device device : allList){
                if(isDeletedDevice(device,allHkList)){
                    device.setIsdeleted(Constants.ONE);
                    device.setEditDate(date);
                    deleteList.add(device);
                }
            }
        }
    }
    private boolean isDeletedDevice(Device device, List<DoorsInfoResponse> allHkList) {
        if(allHkList.size()>0){
            for(DoorsInfoResponse r : allHkList){
                if(StringUtils.equals(device.getHkId(), r.getIndexCode())){
                    //表示未删除
                    return  false;
                }
            }
        }
        return  true;
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java
@@ -43,10 +43,10 @@
        ArtemisConfig.appKey = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_APPKEY).getCode();
        ArtemisConfig.appSecret = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_APPSECRET).getCode();
        HKConstants.https = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HTTPS).getCode();
        //开始订阅门禁事件、访客事件、和停车场事件
        startHkEventSub();
        //获取根组织编码
        getRootOrgCode();
        //开始订阅门禁事件、访客事件、和停车场事件
        startHkEventSub();
        return  0;
    }
    /**
@@ -72,15 +72,22 @@
     */
    public void startHkEventSub(){
        EventSubRequest param = new EventSubRequest();
        param.setEventDest(systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_PUSH_URL).getCode());
        String path =systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_PUSH_URL).getCode();
        param.setEventDest(path+"/parks");
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.PARK_LINE_IN.getKey()
                ,HKConstants.EventTypes.PARK_LINE_OUT.getKey()
                ,HKConstants.EventTypes.PARK_PASS_IN.getKey()
                ,HKConstants.EventTypes.PARK_PASS_OUT.getKey()
                ,HKConstants.EventTypes.VISIT_SIGN_OUT.getKey()
                ,HKConstants.EventTypes.VISIT_SIGN_OUT.getKey()
                ,HKConstants.EventTypes.DOOR_FACE_AUTH_SUCCESS.getKey()});
        HKService.eventSub(param);
                ,HKConstants.EventTypes.PARK_PASS_OUT.getKey() });
        HKService.eventSub(param);//停车场事件
        param.setEventDest(path+"/visit");
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.VISIT_SIGN_OUT.getKey()
                ,HKConstants.EventTypes.VISIT_SIGN_OUT.getKey()});
        HKService.eventSub(param);//访客事件
        param.setEventDest(path+"/acs");
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.DOOR_FACE_AUTH_SUCCESS.getKey()});
        HKService.eventSub(param);//门禁事件
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
@@ -105,8 +105,8 @@
        model.setIsdeleted(Constants.ZERO);
        model.setName(device.getParkName());
        model.setHkDate(date);
        model.setCreateDate(DateUtil.StringToDate2(device.getCreateTime()));
        model.setEditDate(DateUtil.StringToDate2(device.getUpdateTime()));
        model.setCreateDate(DateUtil.getISO8601DateByStr(device.getCreateTime()));
        model.setEditDate(DateUtil.getISO8601DateByStr(device.getUpdateTime()));
        model.setHkId(device.getParkIndexCode());
        model.setHkStatus(Constants.ONE);
        return  model;
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
@@ -55,13 +55,13 @@
            //分页遍历循环查询所有门禁设备数据
            param = new PrivilegeGroupRequest();
            param.setPageNo(curPage);
            param.setPageSize(10000);
            param.setPageSize(100);
            BaseResponse<PrivilegeGroupListResponse> response = HKService.privilegeGroup(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            PrivilegeGroupListResponse r = response.getData();
            curTotal += 10000;
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,112 @@
package com.doumee.service.business.impl.hksync;
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.SpringContextUtil;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
/**
 * è®¿å®¢æƒé™ç»„信息表Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class HkSyncPushServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private InterfaceLogService interfaceLogService;
    /**
     * æµ·åº·é—¨ç¦äº‹ä»¶æŽ¨é€
     * @param param
     * @param response
     * @return
     */
    @Override
    public String   dealAcsEvent(EventAcsRequest param, HttpServletResponse response){
        log.info("【海康门禁事件推送】========开始=========:\n"+JSONObject.toJSONString(param));
        String result = null;
        try {
            log.error("【海康门禁事件推送】========成功=======");
        }catch (Exception e) {
            log.error("【海康门禁事件推送】========失败=======:\n" + e.getMessage());
        }finally {
            saveInterfaceLog(param,"/business/hksync/push/acs",result);
        }
        return  null;
    }
    /**
     * æµ·åº·è®¿å®¢äº‹ä»¶æŽ¨é€
     * @param param
     * @param response
     * @return
     */
    @Override
    public String   dealVisitEvent(EventVisitRequest param, HttpServletResponse response){
        log.info("【海康访客事件推送】==========开始=======:\n"+JSONObject.toJSONString(param));
        String result = null;
        try {
            log.error("【海康访客事件推送】========成功=======");
        }catch (Exception e){
            log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage());
        }
        saveInterfaceLog(param,"/business/hksync/push/visit",result);
        return  null;
    }
    /**
     * æµ·åº·åœè½¦åœºäº‹ä»¶æŽ¨é€
     * @param param
     * @param response
     * @return
     */
    @Override
    public String   dealParkEvent(EventParkRequest param, HttpServletResponse response){
        String result = null;
        log.info("【海康停车场事件推送】========开始=========:\n"+JSONObject.toJSONString(param));
        try {
            log.error("【海康停车场事件推送】========成功=======");
        }catch (Exception e){
            log.error("【海康停车场事件推送】========失败=======:\n"+e.getMessage());
        }
        saveInterfaceLog(param,"/business/hksync/push/parks",result);
        return  null;
    }
    private void saveInterfaceLog(Object param, String path,String result) {
        InterfaceLog hkMonitoryLogDO=new InterfaceLog();
        hkMonitoryLogDO.setType(1);
        hkMonitoryLogDO.setCreateDate(new Date());
        hkMonitoryLogDO.setIsdeleted(0);
        if(param!=null){
            hkMonitoryLogDO.setRequest(JSONObject.toJSONString(param));
        }
        hkMonitoryLogDO.setRepose(result);
        hkMonitoryLogDO.setName(path);
        hkMonitoryLogDO.setUrl(path);
        interfaceLogService.create(hkMonitoryLogDO);
    }
}