package com.doumee.service.impl; 
 | 
  
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.haikang.model.HKConstants; 
 | 
import com.doumee.core.haikang.model.HKTools; 
 | 
import com.doumee.core.haikang.model.param.BaseResponse; 
 | 
import com.doumee.core.haikang.model.param.request.EventSubRequest; 
 | 
import com.doumee.core.haikang.model.param.respose.OrgInfoResponse; 
 | 
import com.doumee.core.haikang.service.HKService; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.dao.system.model.SystemDictData; 
 | 
import com.doumee.service.business.InterfaceLogService; 
 | 
import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl; 
 | 
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.Date; 
 | 
  
 | 
/** 
 | 
 * 海康事件订阅表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/11/30 15:33 
 | 
 */ 
 | 
@Service 
 | 
public class HkSyncEventServiceImpl extends HkSyncBaseServiceImpl { 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
    @Autowired 
 | 
    private InterfaceLogService interfaceLogService; 
 | 
  
 | 
    @PostConstruct 
 | 
    public  int  initHkConfig(){ 
 | 
        //获取根组织编码 
 | 
        initHkParamConfig(); 
 | 
        getRootOrgCode(); 
 | 
        //开始订阅门禁事件、访客事件、和停车场事件 
 | 
        startHkEventSub(); 
 | 
        return  0; 
 | 
    } 
 | 
  
 | 
    public  int  initHkParamConfig(){ 
 | 
        ArtemisConfig.host = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HOST).getCode(); 
 | 
        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(); 
 | 
        HKTools.interfaceLogService=interfaceLogService; 
 | 
        return  0; 
 | 
    } 
 | 
    /** 
 | 
     *    获取根组织编码 
 | 
     */ 
 | 
    private void getRootOrgCode() { 
 | 
        SystemDictData org =  systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_ROOTORG_CODE); 
 | 
        if(org!=null){ 
 | 
            SystemDictData orgName =  systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_ROOTORG_NAME); 
 | 
            String rootOrgId =org.getCode(); 
 | 
            if(StringUtils.isBlank(rootOrgId)){ 
 | 
                BaseResponse<OrgInfoResponse> 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); 
 | 
  
 | 
                    orgName.setCode(res.getData().getOrgName()); 
 | 
                    orgName.setUpdateTime(new Date()); 
 | 
                    systemDictDataBiz.updateById( orgName); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 订阅门禁事件、访客事件、和停车场事件 
 | 
     */ 
 | 
    public void startHkEventSub(){ 
 | 
        cancelEventSub(); 
 | 
        EventSubRequest param = new EventSubRequest(); 
 | 
        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() }); 
 | 
        HKService.cancelEventSub(param);////先取消 
 | 
        HKService.eventSub(param);//停车场事件 
 | 
  
 | 
        param.setEventDest(path+"/visit"); 
 | 
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.VISIT_SIGN_IN.getKey() 
 | 
                ,HKConstants.EventTypes.VISIT_SIGN_OUT.getKey()}); 
 | 
        HKService.cancelEventSub(param);//先取消 
 | 
        HKService.eventSub(param);//访客事件 
 | 
  
 | 
        param.setEventDest(path+"/acs"); 
 | 
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.DOOR_FACE_AUTH_FAIL.getKey(),HKConstants.EventTypes.DOOR_FACE_AUTH_SUCCESS.getKey()}); 
 | 
        HKService.cancelEventSub(param);//先取消 
 | 
        HKService.eventSub(param);//门禁事件 
 | 
  
 | 
        param.setEventDest(path+"/visitIccm"); 
 | 
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey() 
 | 
                ,HKConstants.EventTypes.VISIT_SIGN_ICCM_PASS.getKey() 
 | 
                ,HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey()}); 
 | 
        HKService.cancelEventSub(param);//先取消 
 | 
        HKService.eventSub(param);//访客事件 
 | 
  
 | 
        param.setEventDest(path+"/platform/workstatus"); 
 | 
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.PLATFORM_WORKSTATUS.getKey()}); 
 | 
        HKService.cancelEventSub(param);//先取消 
 | 
//        HKService.eventSub(param);//月台工作状态事件 
 | 
  
 | 
  
 | 
        param.setEventDest(path+"/platform/carstatus"); 
 | 
        param.setEventTypes(new Integer[]{HKConstants.EventTypes.PLATFORM_CAR_STATUS.getKey()}); 
 | 
        HKService.cancelEventSub(param);//先取消 
 | 
        HKService.eventSub(param);//月台车辆状态事件 
 | 
  
 | 
    } 
 | 
    /** 
 | 
     * 取消订阅门禁事件、访客事件、和停车场事件 
 | 
     */ 
 | 
    @Override 
 | 
    public void cancelEventSub(){ 
 | 
        EventSubRequest param = new EventSubRequest(); 
 | 
        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_IN.getKey() 
 | 
                ,HKConstants.EventTypes.VISIT_SIGN_OUT.getKey(), 
 | 
                HKConstants.EventTypes.DOOR_FACE_AUTH_SUCCESS.getKey()}); 
 | 
        String path =systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_PUSH_URL).getCode(); 
 | 
        param.setEventDest(path); 
 | 
        HKService.cancelEventSub(param);//停车场事件 
 | 
  
 | 
    } 
 | 
} 
 |