| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.doumee.config.DataSyncConfig; |
| | | import com.doumee.config.SpringContextUtil; |
| | | import com.doumee.core.haikang.model.HKConstants; |
| | | import com.doumee.core.haikang.model.param.request.event.acs.EventAcsInfoRequest; |
| | |
| | | import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.parks.EventParkInfoRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.visit.EventVisitDataRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.visit.EventVisitInfoRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest; |
| | | import com.doumee.core.haikang.model.param.request.event.visit.*; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DESUtil; |
| | | import com.doumee.core.utils.DateUtil; |
| | |
| | | import com.hikvision.artemis.sdk.config.ArtemisConfig; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.checkerframework.checker.units.qual.C; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | @Autowired |
| | | private InterfaceLogMapper interfaceLogMapper; |
| | | @Autowired |
| | | private CarsMapper carsMapper; |
| | | @Autowired |
| | | private ParkBookMapper parkBookMapper; |
| | | @Autowired |
| | | private DeviceEventMapper deviceEventMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private DeviceMapper deviceMapper; |
| | | @Autowired |
| | | private DataSyncConfig dataSyncConfig; |
| | | @Autowired |
| | | private CarEventMapper carEventMapper; |
| | | @Autowired |
| | |
| | | }catch (Exception e) { |
| | | log.error("【海康门禁事件推送】========失败=======:\n" + e.getMessage()); |
| | | }finally { |
| | | saveInterfaceLog(param,"/business/hksync/push/acs",result); |
| | | saveInterfaceLog(param,"/business/hksync/push/acs",result,false);//不计日志 |
| | | } |
| | | return null; |
| | | |
| | |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,userNo).last("limit 1")); |
| | | if(member !=null){ |
| | | //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) |
| | | Device d = deviceMapper.selectOne(new QueryWrapper<Device>().lambda() |
| | | .eq(Device::getDoorId,request.getSrcIndex()) |
| | | .eq(Device::getIsdeleted,Constants.ZERO) |
| | | .last("limit 1" )); |
| | | delRetentionLis.add(member.getId()); |
| | | if(Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){ |
| | | if(!(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){ |
| | | //如果是进门,录入人员的在场数据记录 |
| | | retentionList.add(getRetentionModelByRequest(member,request)); |
| | | } |
| | |
| | | event.setIsdeleted(Constants.ZERO); |
| | | event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); |
| | | event.setEventId(request.getEventId()); |
| | | event.setEventType( request.getData().getExtEventType()!=null?request.getData().getExtEventType()+"":null); |
| | | event.setEventType(request.getEventType()); |
| | | event.setAccessChannel(request.getData().getExtAccessChannel()); |
| | | event.setUserType(request.getData().getUserType()); |
| | | event.setSvrIndexCode(request.getData().getSvrIndexCode()); |
| | | event.setStatus(request.getStatus()); |
| | | event.setExtEventType(request.getData().getExtEventType()!=null?request.getData().getExtEventType():null); |
| | | event.setSrcType(request.getSrcType()); |
| | | event.setSrcName(request.getSrcName()); |
| | | event.setSrcIndex(request.getSrcIndex()); |
| | | event.setSrcParentIndex(request.getSrcParentIndex()); |
| | | event.setSeq(request.getData().getSeq()); |
| | | event.setTimeout(request.getTimeout()); |
| | | event.setExtEventType(request.getData().getExtEventType()); |
| | |
| | | private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) { |
| | | Retention retention = new Retention(); |
| | | retention.setIsdeleted(Constants.ZERO); |
| | | retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime())); |
| | | retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); |
| | | retention.setClasses(member.getClasses()); |
| | | retention.setCode(member.getCode()); |
| | | retention.setIdcardNo(member.getIdcardNo()); |
| | |
| | | retention.setCompanyId(member.getCompanyId()); |
| | | retention.setCompanyName(member.getCompanyName()); |
| | | retention.setEventCode(request.getData().getExtEventCode()+""); |
| | | retention.setEventDate(DateUtil.getISO8601DateByStr(request.getData().getExtReceiveTime())); |
| | | retention.setEventDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); |
| | | retention.setFaceImg(member.getFaceImg()); |
| | | retention.setImgurl(member.getImgurl()); |
| | | retention.setPhone(member.getPhone()); |
| | |
| | | return retention; |
| | | } |
| | | |
| | | /** |
| | | * 海康访客事件推送 |
| | | * @param param |
| | | * @param response |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String dealVisitEventIccm(EventVisitIccmRequest param, HttpServletResponse response){ |
| | | log.info("【海康访客事件推送】==========开始=======:\n"+JSONObject.toJSONString(param)); |
| | | String result = null; |
| | | try { |
| | | if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ |
| | | return null; |
| | | } |
| | | //门禁事件集合 |
| | | List<EventVisitIccmInfoRequest> events = param.getParams().getEvents(); |
| | | List<VisitEvent> list = new ArrayList<>(); |
| | | List<Integer> delRetentionLis = new ArrayList<>(); |
| | | List<Retention> retentionList = new ArrayList<>(); |
| | | for(EventVisitIccmInfoRequest request : events){ |
| | | if(request.getData() ==null || request.getData().getVisitorInvoices() ==null){ |
| | | continue; |
| | | } |
| | | if(request.getData().getVisitorInformationList() == null || request.getData().getVisitorInformationList().size() ==0){ |
| | | continue; |
| | | } |
| | | //海康访客记录编码 |
| | | dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,list); |
| | | } |
| | | if(list.size()>0){ |
| | | //插入门禁记录 |
| | | visitEventMapper.insertBatchSomeColumn(list); |
| | | } |
| | | if(delRetentionLis.size()>0){ |
| | | //先删除原有的在场人员(普通访客) |
| | | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() |
| | | .eq(Retention::getType,Constants.memberType.visitor) |
| | | .in(Retention::getMemberId,delRetentionLis)); |
| | | } |
| | | if(retentionList.size()>0){ |
| | | //再插入最新的在厂人员 |
| | | retentionMapper.insertBatchSomeColumn(retentionList); |
| | | } |
| | | log.error("【海康访客事件推送】========成功======="); |
| | | }catch (Exception e){ |
| | | |
| | | log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage()); |
| | | } |
| | | saveInterfaceLog(param,"/business/hksync/push/visitIccm",result,true); |
| | | return null; |
| | | |
| | | } |
| | | /** |
| | | * 海康访客事件推送 |
| | | * @param param |
| | |
| | | |
| | | log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage()); |
| | | } |
| | | saveInterfaceLog(param,"/business/hksync/push/visit",result); |
| | | saveInterfaceLog(param,"/business/hksync/push/visit",result,true); |
| | | return null; |
| | | |
| | | } |
| | |
| | | /** |
| | | * 根据访客推送访客记录编码,处理访客记录、在场人员等信息 |
| | | */ |
| | | private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,List<VisitEvent> list) { |
| | | EventVisitIccmInvoiceParamRequest data = request.getData().getVisitorInvoices(); |
| | | Integer memberId = null; |
| | | if(request.getData().getTargetPerson().getPersonId()!=null){ |
| | | Member m = memberMapper.selectOne(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getHkId,request.getData().getTargetPerson().getPersonId()) |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .last( "limit 1")); |
| | | if(m!=null){ |
| | | memberId = m.getId(); |
| | | } |
| | | } |
| | | for(EventVisitIccmDetailParamRequest model : request.getData().getVisitorInformationList()){ |
| | | |
| | | Visits updateVistis = new Visits(); |
| | | MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(Visits.class); |
| | | queryWrapper.selectAs(Member::getType,Visits::getMemberType); |
| | | queryWrapper.eq(Visits::getHkId,model.getVisitorId() ); |
| | | queryWrapper.leftJoin(Member.class,Member::getId,Visits::getMemberId ); |
| | | queryWrapper.last("limit 1"); |
| | | Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper); |
| | | if(visits !=null) { |
| | | //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) |
| | | delRetentionLis.add(visits.getMemberId()); |
| | | if (dataSyncConfig.getOrgUserDataOrigin() == DataSyncConfig.origin.hk) { |
| | | //如果是伊利大屏项目,不做处理 |
| | | return; |
| | | } |
| | | updateVistis.setId(visits.getId()); |
| | | if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_IN.getKey()) { |
| | | //如果是访客登记,录入人员的在场数据记录 |
| | | retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType())); |
| | | //来访时间 |
| | | updateVistis.setStatus(Constants.VisitIccmStatus.signin); |
| | | updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); |
| | | updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); |
| | | updateVistis.setEditDate(new Date()); |
| | | //更新访客来访或者签离时间信息 |
| | | visitsMapper.updateById(updateVistis); |
| | | //更新最新来访时间 |
| | | Member member = new Member(); |
| | | member.setLastVisitDate(updateVistis.getInDate()); |
| | | member.setId(visits.getMemberId()); |
| | | memberMapper.updateById(member); |
| | | } else if (Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_ICCM_OUT.getKey()) { |
| | | //如果是访客签离事件 |
| | | updateVistis.setStatus(Constants.VisitIccmStatus.signout); |
| | | updateVistis.setInDate(DateUtil.getISO8601DateByStr(data.getBeginTime())); |
| | | updateVistis.setOutDate(DateUtil.getISO8601DateByStr(data.getFinishTime())); |
| | | updateVistis.setOutType(Constants.ZERO); |
| | | updateVistis.setOutInfo("访客正常签离"); |
| | | updateVistis.setEditDate(new Date()); |
| | | //更新访客来访或者签离时间信息 |
| | | visitsMapper.updateById(updateVistis); |
| | | }else{ |
| | | updateVistis.setStatus(visits.getStatus()); |
| | | } |
| | | }else{ |
| | | //新增访客登记数据 |
| | | addNewVisitInfo(request,model,updateVistis.getStatus()); |
| | | } |
| | | //封装门禁事件信息表对象 |
| | | list.add(getVisitEventModelByRequest(request,model)); |
| | | } |
| | | } |
| | | |
| | | private void addNewVisitInfo(EventVisitIccmInfoRequest request, EventVisitIccmDetailParamRequest model,Integer status) { |
| | | try{ |
| | | Visits c = new Visits(); |
| | | c.setHkId(model.getVisitorId()); |
| | | c.setCode(model.getAppointmentCode()); |
| | | c.setName(model.getVisitorName()); |
| | | c.setHkStatus(Constants.ONE); |
| | | c.setHkDate(new Date()); |
| | | c.setIsdeleted(Constants.ZERO); |
| | | c.setCreateDate(c.getHkDate()); |
| | | c.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, model.getCertNo())); |
| | | c.setIdcardDecode(Constants.getTuominStr(model.getCertNo())); |
| | | c.setIdcardType( model.getCertType()); |
| | | c.setStarttime(DateUtil.getISO8601DateByStr2(request.getData().getVisitorInvoices().getBeginTime())); |
| | | c.setEndtime(DateUtil.getISO8601DateByStr2(request.getData().getVisitorInvoices().getFinishTime())); |
| | | c.setReason(request.getData().getVisitorInvoices().getVisitReason()); |
| | | c.setStatus(status); |
| | | c.setType(Constants.ONE); |
| | | if(StringUtils.isNotBlank(request.getData().getTargetPerson().getPersonId())){ |
| | | //被访问人 |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId |
| | | ,request.getData().getTargetPerson().getPersonId()).last("limit 1")); |
| | | c.setReceptMemberId(member!=null?member.getId():null); |
| | | } |
| | | c.setCompanyName(model.getUnit()); |
| | | c.setPhone(model.getPhone()); |
| | | c.setCarNos(model.getPlateNo()); |
| | | if(StringUtils.isNotBlank(model.getCertNo())){ |
| | | //被访问人 |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getType,Constants.ONE) |
| | | .eq(Member::getIdcardNo , c.getIdcardNo()) |
| | | .last("limit 1")); |
| | | if(member == null){ |
| | | member = new Member(); |
| | | member.setName(model.getVisitorName()); |
| | | member.setPhone(model.getPhone()); |
| | | member.setSex(model.getSex()); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setType(Constants.ONE); |
| | | member.setIdcardNo(c.getIdcardNo()); |
| | | member.setIdcardDecode(c.getIdcardDecode()); |
| | | member.setVisitCompanyName(model.getUnit()); |
| | | member.setCreateDate(new Date()); |
| | | if(StringUtils.isNotBlank(model.getFacePic())){ |
| | | member.setImgurl(HKConstants.IMG_INDEX+model.getFacePic()); |
| | | member.setFaceServerIndexCode(model.getFaceDeviceId()); |
| | | } |
| | | memberMapper.insert(member); |
| | | }else{ |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setEditDate(new Date()); |
| | | member.setName(model.getVisitorName()); |
| | | member.setPhone(model.getPhone()); |
| | | member.setSex(model.getSex()); |
| | | member.setVisitCompanyName(model.getUnit()); |
| | | if(StringUtils.isNotBlank(model.getFacePic())){ |
| | | member.setImgurl(HKConstants.IMG_INDEX+model.getFacePic()); |
| | | member.setFaceServerIndexCode(model.getFaceDeviceId()); |
| | | } |
| | | memberMapper.updateById(member); |
| | | } |
| | | c.setMemberId(member.getId()); |
| | | visitsMapper.insert(c); |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("====================访客推送新增访客记录失败:"+e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | private void dealVisitDataByRequst(EventVisitInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList) { |
| | | EventVisitDataRequest model = request.getData(); |
| | | MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(Visits.class); |
| | | queryWrapper.selectAs(Member::getType,Visits::getMemberType); |
| | | queryWrapper.eq(Visits::getHkId,model.getVisitorId() ); |
| | | queryWrapper.leftJoin(Member.class,Member::getId,Visits::getMemberId ); |
| | | queryWrapper.last("limit 1"); |
| | | Visits visits = visitsMapper.selectJoinOne(Visits.class,queryWrapper); |
| | | if(visits !=null){ |
| | | //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) |
| | | delRetentionLis.add(visits.getMemberId()); |
| | | if(dataSyncConfig.getOrgUserDataOrigin() == DataSyncConfig.origin.hk){ |
| | | //如果是伊利大屏项目,不做处理 |
| | | return; |
| | | } |
| | | Visits updateVistis = new Visits(); |
| | | updateVistis.setId(visits.getId()); |
| | | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.VISIT_SIGN_IN.getKey()){ |
| | | //如果是访客登记,录入人员的在场数据记录 |
| | | retentionList.add(getRetentionModelByVisitRequest(visits,request)); |
| | | retentionList.add(getRetentionModelByVisitRequest(visits, request.getHappenTime(),request.getSrcType())); |
| | | //来访时间 |
| | | updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getStartTime())); |
| | | updateVistis.setStatus(Constants.VisitStatus.signin); |
| | | updateVistis.setInDate(DateUtil.getISO8601DateByStr(model.getStartTime())); |
| | | updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getEndTime())); |
| | | //更新最新来访时间 |
| | | Member member = new Member(); |
| | | member.setLastVisitDate(updateVistis.getInDate()); |
| | | member.setId(visits.getMemberId()); |
| | | memberMapper.updateById(member); |
| | | }else { |
| | | //如果是访客签离事件 |
| | | updateVistis.setStatus(Constants.VisitStatus.signout); |
| | | updateVistis.setInDate(DateUtil.getISO8601DateByStr(model.getStartTime())); |
| | | updateVistis.setOutDate(DateUtil.getISO8601DateByStr(model.getEndTime())); |
| | | updateVistis.setOutType(Constants.ZERO); |
| | | updateVistis.setOutInfo("访客正常签离"); |
| | |
| | | } |
| | | } |
| | | |
| | | private VisitEvent getVisitEventModelByRequest(EventVisitIccmInfoRequest request,EventVisitIccmDetailParamRequest detail) { |
| | | if(request.getData().getTargetPerson() ==null){ |
| | | request.getData().setTargetPerson(new EventVisitIccmTargetParamRequest()); |
| | | } |
| | | VisitEvent event = new VisitEvent(); |
| | | event.setIsdeleted(Constants.ZERO); |
| | | event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); |
| | | event.setVisitorWorkUint(detail.getUnit()); |
| | | event.setVisitorId(detail.getVisitorId()); |
| | | event.setVisitorCode(detail.getAppointmentCode()); |
| | | event.setTimeout(request.getTimeout()); |
| | | event.setSvrIndexCode(request.getSrcIndex()); |
| | | event.setHappenTime(request.getHappenTime()); |
| | | event.setStatus(request.getStatus()); |
| | | event.setEndTime(request.getData().getVisitorInvoices().getFinishTime()); |
| | | event.setStartTime(request.getData().getVisitorInvoices().getBeginTime()); |
| | | event.setSrcType(request.getSrcType()); |
| | | event.setSrcParentIndex(request.getSrcParentIndex()); |
| | | event.setSrcName(request.getSrcName()); |
| | | event.setSrcIndex(request.getSrcIndex()); |
| | | event.setSex(detail.getSex()); |
| | | event.setPurpose(request.getData().getVisitorInvoices().getVisitReason()); |
| | | event.setPhone(detail.getPhone()); |
| | | event.setBeVisitedPersonId(request.getData().getVisitorInvoices().getVisitTargetId()); |
| | | event.setBeVisitedPersonName(request.getData().getTargetPerson().getName()); |
| | | event.setBeVisitedPersonOrg(request.getData().getTargetPerson().getOrgPathName()); |
| | | event.setBeVisitedPersonOrgId(request.getData().getTargetPerson().getName()); |
| | | event.setPhotoUrl(getHkImgUrl(detail.getFacePic())); |
| | | event.setPersonName(detail.getVisitorName()); |
| | | event.setCarNo(detail.getPlateNo()); |
| | | |
| | | event.setIdType(detail.getCertType()); |
| | | String idnum = detail.getCertNo(); |
| | | if(StringUtils.isNotBlank(idnum)){ |
| | | //身份证号存储密文 |
| | | event.setIdNo(DESUtil.encrypt(Constants.EDS_PWD,idnum));//身份证号加密 |
| | | //脱敏手机号显示n |
| | | event.setIdcardDecode(Constants.getTuominStr(idnum)); |
| | | } |
| | | event.setEventType(request.getEventType()); |
| | | event.setEventId(request.getEventId()); |
| | | return event; |
| | | } |
| | | private VisitEvent getVisitEventModelByRequest(EventVisitInfoRequest request) { |
| | | VisitEvent event = new VisitEvent(); |
| | | event.setIsdeleted(Constants.ZERO); |
| | |
| | | event.setVisitorCode(request.getData().getVisitorCode()); |
| | | event.setTimeout(request.getTimeout()); |
| | | event.setSvrIndexCode(request.getData().getSvrIndexCode()); |
| | | event.setHappenTime(request.getHappenTime()); |
| | | event.setStatus(request.getStatus()); |
| | | event.setEndTime(request.getData().getEndTime()); |
| | | event.setStartTime(request.getData().getStartTime()); |
| | | event.setSrcType(request.getSrcType()); |
| | | event.setSrcParentIndex(request.getSrcParentIndex()); |
| | |
| | | event.setSignOrg(request.getData().getSignOrg()); |
| | | event.setSex(request.getData().getSex()); |
| | | event.setPurpose(request.getData().getPurpose()); |
| | | event.setPhone(request.getData().getPhone()); |
| | | event.setBeVisitedPersonId(request.getData().getBeVisitedPersonId()); |
| | | event.setBeVisitedPersonName(request.getData().getBeVisitedPersonName()); |
| | | event.setBeVisitedPersonOrg(request.getData().getBeVisitedPersonOrg()); |
| | | event.setBeVisitedPersonOrgId(request.getData().getBeVisitedPersonOrgId()); |
| | | event.setVisitorWorkUint(request.getData().getVisitorWorkUint()); |
| | | event.setPhotoUrl(getHkImgUrl(request.getData().getPhotoUrl())); |
| | | event.setPersonName(request.getData().getPersonName()); |
| | | event.setCarNo(request.getData().getCarNo()); |
| | | event.setCaptureUrl(request.getData().getCaptureUrl()); |
| | | if(StringUtils.isNotBlank(request.getData().getCaptureUrl())){ |
| | | event.setCaptureUrl(HKConstants.IMG_INDEX+request.getData().getCaptureUrl()); |
| | | } |
| | | if(StringUtils.isNotBlank(request.getData().getPhotoUrl())){ |
| | | |
| | | event.setPhotoUrl(HKConstants.IMG_INDEX+request.getData().getPhotoUrl()); |
| | | } |
| | | event.setIdType(request.getData().getIdType()); |
| | | String idnum =request.getData().getIdNo(); |
| | | if(StringUtils.isNotBlank(idnum)){ |
| | |
| | | } |
| | | event.setEventType(request.getEventType()); |
| | | event.setEventId(request.getEventId()); |
| | | event.setHappenTime(event.getHappenTime()); |
| | | |
| | | return event; |
| | | } |
| | | |
| | | private Retention getRetentionModelByVisitRequest(Visits visits, EventVisitInfoRequest request) { |
| | | private Retention getRetentionModelByVisitRequest(Visits visits, String happentTime,String srcType) { |
| | | Retention retention = new Retention(); |
| | | retention.setIsdeleted(Constants.ZERO); |
| | | retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); |
| | | retention.setClasses(visits.getMemberClasses()); |
| | | retention.setCreateDate(DateUtil.getISO8601DateByStr(happentTime)); |
| | | retention.setClasses(visits.getClasses()); |
| | | retention.setCode(visits.getCode()); |
| | | retention.setIdcardNo(visits.getIdcardNo()); |
| | | retention.setIdcardDecode(visits.getIdcardDecode()); |
| | |
| | | retention.setType(visits.getMemberType()); |
| | | retention.setCompanyId(visits.getCompanyId()); |
| | | retention.setCompanyName(visits.getCompanyName()); |
| | | retention.setEventCode(request.getEventType()+""); |
| | | retention.setEventCode(srcType); |
| | | retention.setEventDate(retention.getCreateDate()); |
| | | retention.setFaceImg(visits.getFaceImg()); |
| | | retention.setImgurl(visits.getImgurl()); |
| | | retention.setPhone(visits.getPhone()); |
| | | retention.setMemberId(visits.getMemberId()); |
| | | retention.setDeviceName(request.getSrcName()); |
| | | retention.setDeviceIndex(request.getSrcIndex()); |
| | | // retention.setDeviceName(request.getSrcName()); |
| | | // retention.setDeviceIndex(request.getSrcIndex()); |
| | | |
| | | return retention; |
| | | } |
| | |
| | | //门禁事件集合 |
| | | List<EventParkInfoRequest> events = param.getParams().getEvents(); |
| | | List<CarEvent> list = new ArrayList<>(); |
| | | List<Retention> retentionList = new ArrayList<>(); |
| | | List<String> delRetentionList = new ArrayList<>(); |
| | | for(EventParkInfoRequest request : events){ |
| | | if(request.getData() ==null ||StringUtils.isBlank(request.getData().getPlateNo())){ |
| | | continue; |
| | | } |
| | | //封装事件信息表对象 |
| | | list.add(getParkEventModelByRequest(request)); |
| | | list.add(getParkEventModelByRequest(request,delRetentionList,retentionList)); |
| | | } |
| | | if(list.size()>0){ |
| | | //插入门禁记录 |
| | | carEventMapper.insertBatchSomeColumn(list); |
| | | } |
| | | log.error("【海康停车场事件推送】========成功======="); |
| | | if(delRetentionList.size()>0){ |
| | | //先删除原有的在场人员(内部人员) |
| | | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() |
| | | .eq(Retention::getType,Constants.THREE) |
| | | .in(Retention::getCarNo,delRetentionList)); |
| | | } |
| | | if(retentionList.size()>0){ |
| | | //再插入最新的在厂人员 |
| | | retentionMapper.insertBatchSomeColumn(retentionList); |
| | | } |
| | | log.info("【海康停车场事件推送】========成功======="); |
| | | }catch (Exception e){ |
| | | |
| | | log.error("【海康停车场事件推送】========失败=======:\n"+e.getMessage()); |
| | | } |
| | | saveInterfaceLog(param,"/business/hksync/push/parks",result); |
| | | saveInterfaceLog(param,"/business/hksync/push/parks",result,false); |
| | | return null; |
| | | } |
| | | |
| | |
| | | * @param request |
| | | * @return |
| | | */ |
| | | private CarEvent getParkEventModelByRequest(EventParkInfoRequest request) { |
| | | private CarEvent getParkEventModelByRequest(EventParkInfoRequest request, List<String> delRetentionList , List<Retention> retentionList ) { |
| | | CarEvent event = new CarEvent(); |
| | | event.setIsdeleted(Constants.ZERO); |
| | | event.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); |
| | |
| | | event.setVehicleColor(request.getData().getVehicleColor()); |
| | | event.setVehicleClass(request.getData().getVehicleClass()); |
| | | event.setTimestr(request.getData().getTime()); |
| | | event.setEventId(request.getEventId()); |
| | | event.setTimeout(request.getTimeout()); |
| | | event.setSvrIndex(request.getSrcIndex()); |
| | | event.setSvrIndex(request.getData().getSvrIndex()); |
| | | event.setSubModel(request.getData().getSubModel()); |
| | | event.setSubLogo(request.getData().getSubLogo()); |
| | | event.setStatus(request.getStatus()); |
| | |
| | | event.setEventCmd(request.getData().getEventCmd()); |
| | | event.setCardNo(request.getData().getCardNo()); |
| | | event.setCarAttributeName(request.getData().getCarAttributeName()); |
| | | |
| | | if(request.getData().getInResult()!=null && request.getData().getInResult().getRlsResult() !=null ){ |
| | | //放行方式 |
| | | event.setReleaseWay(request.getData().getInResult().getRlsResult().getReleaseWay()); |
| | |
| | | event.setVehiclePicUrl(getHkImgUrl(request.getData().getPicUrl().getVehiclePicUrl())); |
| | | event.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl())); |
| | | } |
| | | if(StringUtils.isNotBlank(event.getPlateNos())){ |
| | | ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda() |
| | | .eq(ParkBook::getCarCode,event.getPlateNos()) |
| | | .eq(ParkBook::getParkId,event.getParkIndex()) |
| | | .eq(ParkBook::getIsdeleted,Constants.ZERO ) |
| | | .last("limit 1" )); |
| | | Cars c = carsMapper.selectOne(new QueryWrapper<Cars>().lambda() |
| | | .eq(Cars::getCode,event.getPlateNos()) |
| | | .eq(Cars::getIsdeleted,Constants.ZERO) |
| | | .last("limit 1" )); |
| | | if(cars!=null || c!=null){ |
| | | //优先查询内部车辆信息 |
| | | event.setMemberId(cars!=null?cars.getMemberId():(c!=null?c.getMemberId():null)); |
| | | }else{ |
| | | //去访客信息中查询 |
| | | Visits visits = visitsMapper.selectOne(new QueryWrapper<Visits>().lambda() |
| | | .eq(Visits::getCarNos,event.getPlateNos()) |
| | | .eq(Visits::getIsdeleted,Constants.ZERO ) |
| | | .in(Visits::getStatus,Constants.VisitStatus.signin,Constants.VisitStatus.signout)//最近一个已到达或者已签离 |
| | | .isNull(Visits::getParentId) |
| | | .orderByDesc(Visits::getId) |
| | | .last("limit 1" )); |
| | | if(visits!=null){ |
| | | //最近使用该车的申请人(已到达) |
| | | event.setMemberId(visits.getMemberId()); |
| | | } |
| | | } |
| | | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ |
| | | //如果是入厂放行 |
| | | delRetentionList.add(event.getPlateNos()); |
| | | retentionList.add(getRetentionModelByParkRequest(request)); |
| | | }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ |
| | | //如果是出场放行 |
| | | delRetentionList.add(event.getPlateNos()); |
| | | } |
| | | } |
| | | |
| | | return event; |
| | | |
| | | } |
| | | |
| | | 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)); |
| | | private Retention getRetentionModelByParkRequest(EventParkInfoRequest request) { |
| | | Retention retention = new Retention(); |
| | | retention.setIsdeleted(Constants.ZERO); |
| | | retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); |
| | | retention.setCarNo(request.getData().getPlateNo()); |
| | | retention.setType(Constants.THREE); |
| | | // retention.setDeviceName(request.getSrcName()); |
| | | // retention.setDeviceIndex(request.getSrcIndex()); |
| | | |
| | | return retention; |
| | | } |
| | | |
| | | private void saveInterfaceLog(Object param, String path,String result,boolean need) { |
| | | if(!need){ |
| | | return; |
| | | } |
| | | hkMonitoryLogDO.setRepose(result); |
| | | hkMonitoryLogDO.setName(path); |
| | | hkMonitoryLogDO.setUrl(path); |
| | | interfaceLogMapper.insert(hkMonitoryLogDO); |
| | | try { |
| | | 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); |
| | | interfaceLogMapper.insert(hkMonitoryLogDO); |
| | | }catch (Exception e){ |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |