| 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);//停车场事件 | 
|   | 
|     } | 
| } |