package com.doumee.service.impl;
|
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.erp.ErpTool;
|
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(){
|
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;
|
ErpTool.interfaceLogService=interfaceLogService;
|
//获取根组织编码
|
getRootOrgCode();
|
//开始订阅门禁事件、访客事件、和停车场事件
|
startHkEventSub();
|
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+"/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+"/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);//门禁事件
|
}
|
/**
|
* 取消订阅门禁事件、访客事件、和停车场事件
|
*/
|
@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);//停车场事件
|
|
}
|
}
|