|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private CarsMapper carsMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ParkBookMapper parkBookMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DeviceEventMapper deviceEventMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MemberMapper memberMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DataSyncConfig dataSyncConfig; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private CarEventMapper carEventMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | 
|---|
|  |  |  | 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()){ | 
|---|
|  |  |  | 
|---|
|  |  |  | //来访时间 | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | 
|---|
|  |  |  | * @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.setPlatePicUrl(getHkImgUrl(request.getData().getPicUrl().getPlatePicUrl())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotBlank(event.getPlateNos())){ | 
|---|
|  |  |  | Cars cars = carsMapper.selectOne(new QueryWrapper<Cars>().lambda() | 
|---|
|  |  |  | .eq(Cars::getCode,event.getPlateNos()) | 
|---|
|  |  |  | .eq(Cars::getIsdeleted,Constants.ONE ) | 
|---|
|  |  |  | ParkBook cars = parkBookMapper.selectOne(new QueryWrapper<ParkBook>().lambda() | 
|---|
|  |  |  | .eq(ParkBook::getCarCode,event.getPlateNos()) | 
|---|
|  |  |  | .eq(ParkBook::getIsdeleted,Constants.ONE ) | 
|---|
|  |  |  | .last("limit 1" )); | 
|---|
|  |  |  | if(cars!=null){ | 
|---|
|  |  |  | event.setMemberId(cars.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 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) { | 
|---|
|  |  |  | InterfaceLog hkMonitoryLogDO=new InterfaceLog(); | 
|---|
|  |  |  | hkMonitoryLogDO.setType(1); | 
|---|