| | |
| | | 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.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()); |
| | |
| | | |
| | | log.error("【海康访客事件推送】========失败=======:\n"+e.getMessage()); |
| | | } |
| | | saveInterfaceLog(param,"/business/hksync/push/visit",result); |
| | | saveInterfaceLog(param,"/business/hksync/push/visit",result,true); |
| | | return null; |
| | | |
| | | } |
| | |
| | | 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)); |
| | | //来访时间 |
| | | 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("访客正常签离"); |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | retention.setType(visits.getMemberType()); |
| | | retention.setCompanyId(visits.getCompanyId()); |
| | | retention.setCompanyName(visits.getCompanyName()); |
| | | retention.setEventCode(request.getEventType()+""); |
| | | retention.setEventCode(request.getSrcType()+""); |
| | | 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); |
| | | } |
| | | 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.error("【海康停车场事件推送】========成功======="); |
| | | }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::getIsdeleted,Constants.ZERO ) |
| | | .last("limit 1" )); |
| | | if(cars!=null){ |
| | | event.setMemberId(cars.getMemberId()); |
| | | }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) { |
| | | 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; |
| | | } |
| | | InterfaceLog hkMonitoryLogDO=new InterfaceLog(); |
| | | hkMonitoryLogDO.setType(1); |
| | | hkMonitoryLogDO.setCreateDate(new Date()); |