|  |  |  | 
|---|
|  |  |  | if(delRetentionLis.size()>0){ | 
|---|
|  |  |  | //先删除原有的在场人员(内部人员) | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getType,Constants.memberType.internal) | 
|---|
|  |  |  | //                        .eq(Retention::getType,Constants.memberType.internal) | 
|---|
|  |  |  | .in(Retention::getMemberId,delRetentionLis)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(retentionList.size()>0){ | 
|---|
|  |  |  | 
|---|
|  |  |  | delRetentionLis.add(member.getId()); | 
|---|
|  |  |  | if( Constants.formatIntegerNum(request.getData().getExtEventInOut()) == Constants.ONE){ | 
|---|
|  |  |  | //如果是进门,录入人员的在场数据记录 | 
|---|
|  |  |  | retentionList.add(getRetentionModelByRequest(member,request)); | 
|---|
|  |  |  | if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.internalMember); | 
|---|
|  |  |  | inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1);//内部人员入场人次 | 
|---|
|  |  |  | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.relMember); | 
|---|
|  |  |  | inoutDayCount.setInOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getInOtherMemberNum())+1);//相关方入场人次 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | retentionList.add(getRetentionModelByRequest(member,request,record.getMemberType())); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ | 
|---|
|  |  |  | record.setMemberType(Constants.RetentionMemberType.internalMember); | 
|---|
|  |  |  | 
|---|
|  |  |  | * @param request | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request) { | 
|---|
|  |  |  | private Retention getRetentionModelByRequest(Member member, EventAcsInfoRequest request,int memberType) { | 
|---|
|  |  |  | Retention retention = new Retention(); | 
|---|
|  |  |  | retention.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime())); | 
|---|
|  |  |  | 
|---|
|  |  |  | retention.setIdcardDecode(member.getIdcardDecode()); | 
|---|
|  |  |  | retention.setName(member.getName()); | 
|---|
|  |  |  | retention.setBirthday(member.getBirthday()); | 
|---|
|  |  |  | retention.setType(member.getType()); | 
|---|
|  |  |  | retention.setType(memberType); | 
|---|
|  |  |  | retention.setCompanyId(member.getCompanyId()); | 
|---|
|  |  |  | retention.setCompanyName(member.getCompanyName()); | 
|---|
|  |  |  | retention.setEventCode(request.getData().getExtEventCode()+""); | 
|---|
|  |  |  | 
|---|
|  |  |  | updateVistis.setOutInfo("访客正常签离"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | delRetentionLis.add(visits.getMemberId()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //如果人员信息存在,切是访客通行,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) | 
|---|
|  |  |  | }else  if(!(request.getData().getParamValues()!=null | 
|---|
|  |  |  | && StringUtils.isNotBlank(request.getData().getParamValues().getPlateNos()) | 
|---|
|  |  |  | && StringUtils.isNotBlank(request.getData().getParamValues().getParkIndex()))){ | 
|---|
|  |  |  | //只处理访客门禁通行通行, | 
|---|
|  |  |  | //如果人员信息存在,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) | 
|---|
|  |  |  | delRetentionLis.add(visits.getMemberId()); | 
|---|
|  |  |  | InoutRecord record = new InoutRecord(); | 
|---|
|  |  |  | record.setDeviceName((request.getData()!=null &&request.getData().getParamValues()!=null)? | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if( request.getData().getParamValues()!=null | 
|---|
|  |  |  | && StringUtils.isNotBlank(request.getData().getParamValues().getPlateNos()) | 
|---|
|  |  |  | && StringUtils.isNotBlank(request.getData().getParamValues().getParkIndex())){ | 
|---|
|  |  |  | && StringUtils.isNotBlank(request.getData().getParamValues().getParkIndex())) { | 
|---|
|  |  |  | //如果是停车场事件,记录车辆类型 | 
|---|
|  |  |  | Category category = null; | 
|---|
|  |  |  | record.setCarCode(request.getData().getParamValues().getPlateNos()); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(record.getCarCode())){ | 
|---|
|  |  |  | if (StringUtils.isNotBlank(record.getCarCode())) { | 
|---|
|  |  |  | category = categoryMapper.selectJoinOne(Category.class, new MPJLambdaWrapper<Category>() | 
|---|
|  |  |  | .selectAll(Category.class) | 
|---|
|  |  |  | .select("t4.name",Category::getParentName) | 
|---|
|  |  |  | .select("t4.name", Category::getParentName) | 
|---|
|  |  |  | .leftJoin("category t4 on t.parent_id=t4.id") | 
|---|
|  |  |  | .eq(Category::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Category::getBizType,Constants.RetentionCarType.fkCar) | 
|---|
|  |  |  | .eq(Category::getIsdeleted, Constants.ZERO) | 
|---|
|  |  |  | .eq(Category::getBizType, Constants.RetentionCarType.fkCar) | 
|---|
|  |  |  | .last("limit 1")); | 
|---|
|  |  |  | if(category ==null){ | 
|---|
|  |  |  | if (category == null) { | 
|---|
|  |  |  | category = new Category(); | 
|---|
|  |  |  | category.setName("访客车辆"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | category.setParentName(StringUtils.defaultString(category.getParentName(),"访客车辆")); | 
|---|
|  |  |  | category.setParentName(StringUtils.defaultString(category.getParentName(), "访客车辆")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | record.setCarBizType(Constants.RetentionCarType.fkCar); | 
|---|
|  |  |  | record.setCategoryId(category.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | record.setCategoryName(category.getName()); | 
|---|
|  |  |  | record.setCategoryParentId(category.getParentId()); | 
|---|
|  |  |  | record.setCategoryParentName(category.getParentName()); | 
|---|
|  |  |  | if(Constants.equalsInteger(record.getInOrOut(),Constants.ONE)){ | 
|---|
|  |  |  | if (Constants.equalsInteger(record.getInOrOut(), Constants.ONE)) { | 
|---|
|  |  |  | record.setRemark("访客跟随车辆离园并自动签离"); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //访客申请自动签离 | 
|---|
|  |  |  | visitsService.visitLevelForCarOut(visits); | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("访客跟随车辆出园自动签离失败:==========="+e.getMessage()); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("访客跟随车辆出园自动签离失败:===========" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | inoutRecordList.add(record); | 
|---|
|  |  |  | inoutRecordList.add(record);//进出记录 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | updateVistis.setEditDate(new Date()); | 
|---|
|  |  |  | //更新访客来访或者签离时间信息 | 
|---|
|  |  |  | 
|---|
|  |  |  | String result = null; | 
|---|
|  |  |  | log.info("【海康停车场事件推送】========开始=========:\n"+JSONObject.toJSONString(param)); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if(param == null || param.getParams() == null || param.getParams().getEvents()==null){ | 
|---|
|  |  |  | if(param == null | 
|---|
|  |  |  | || param.getParams() == null | 
|---|
|  |  |  | || param.getParams().getEvents()==null){ | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //门禁事件集合 | 
|---|
|  |  |  | 
|---|
|  |  |  | List<CarEvent> list = new ArrayList<>(); | 
|---|
|  |  |  | List<Retention> retentionList = new ArrayList<>(); | 
|---|
|  |  |  | List<String> delRetentionList = new ArrayList<>(); | 
|---|
|  |  |  | List<Integer> delMemberRetentionList = new ArrayList<>(); | 
|---|
|  |  |  | List<Retention> delMemberRetentionList = new ArrayList<>(); | 
|---|
|  |  |  | InoutDayCount inoutDayCount = new InoutDayCount(); | 
|---|
|  |  |  | List<InoutRecord> inoutRecordList = new ArrayList<>(); | 
|---|
|  |  |  | for(EventParkInfoRequest request : events){ | 
|---|
|  |  |  | 
|---|
|  |  |  | carEventMapper.insert(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(delRetentionList.size()>0){ | 
|---|
|  |  |  | //先删除原有的在场人员(内部人员) | 
|---|
|  |  |  | //先删除原有的在场车辆人员(内部人员) | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getType,Constants.THREE) | 
|---|
|  |  |  | .in(Retention::getCarNo,delRetentionList)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(delMemberRetentionList.size()>0){ | 
|---|
|  |  |  | //先删除原有的在场人员(内部人员、相关方和访客) | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .in(Retention::getType,Constants.RetentionMemberType.internalMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.relMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.fk) | 
|---|
|  |  |  | .in(Retention::getMemberId,delMemberRetentionList)); | 
|---|
|  |  |  | List<Integer> memberList = new ArrayList<>(); | 
|---|
|  |  |  | for(Retention m :delMemberRetentionList){ | 
|---|
|  |  |  | if(m.getMemberId()!=null){ | 
|---|
|  |  |  | //跟随车辆入场的member存在的数据立场 | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .in(Retention::getType,Constants.RetentionMemberType.internalMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.relMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.fk | 
|---|
|  |  |  | ,Constants.RetentionMemberType.driver) | 
|---|
|  |  |  | .eq(Retention::getMemberId,m.getMemberId())); | 
|---|
|  |  |  | }else  if(m.getCarNo()!=null){ | 
|---|
|  |  |  | //跟随车辆入场的用户信息 | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .in(Retention::getType,Constants.RetentionMemberType.internalMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.relMember | 
|---|
|  |  |  | ,Constants.RetentionMemberType.fk | 
|---|
|  |  |  | ,Constants.RetentionMemberType.driver) | 
|---|
|  |  |  | .eq(Retention::getCarNo,m.getCarNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(retentionList.size()>0){ | 
|---|
|  |  |  | //再插入最新的在厂人员 | 
|---|
|  |  |  | 
|---|
|  |  |  | private CarEvent getParkEventModelByRequest(EventParkInfoRequest request | 
|---|
|  |  |  | , List<String> delRetentionList | 
|---|
|  |  |  | , List<Retention> retentionList | 
|---|
|  |  |  | , List<Integer> delMemberRetentionList | 
|---|
|  |  |  | , List<Retention> delMemberRetentionList | 
|---|
|  |  |  | , InoutDayCount inoutDayCount | 
|---|
|  |  |  | , List<InoutRecord> inoutRecordList) { | 
|---|
|  |  |  | CarEvent event =initCarEventModelByRequest(request); | 
|---|
|  |  |  | 
|---|
|  |  |  | carrecord.setCategoryParentId(category.getParentId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //处理自有车自动签到业务 | 
|---|
|  |  |  | dealSelTruckAutoSignBiz(request,event); | 
|---|
|  |  |  | if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_IN.getKey()){ | 
|---|
|  |  |  | //处理自有车自动签到业务 | 
|---|
|  |  |  | dealSelTruckAutoSignBiz(request,event); | 
|---|
|  |  |  | //如果是入厂放行 | 
|---|
|  |  |  | delRetentionList.add(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(event.getMemberId()); | 
|---|
|  |  |  | Retention dm = new Retention(); | 
|---|
|  |  |  | dm.setMemberId(event.getMemberId()); | 
|---|
|  |  |  | dm.setPhone(carrecord.getMemberPhone()); | 
|---|
|  |  |  | dm.setCarNo(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(dm); | 
|---|
|  |  |  | retentionList.add(getRetentionModelByParkRequest(request,event,carrecord));//在厂车辆信息 | 
|---|
|  |  |  | inoutDayCount.setInCarNum(Constants.formatIntegerNum(inoutDayCount.getInCarNum())+1); | 
|---|
|  |  |  | carrecord.setInOrOut(Constants.ZERO); | 
|---|
|  |  |  | }else if(Constants.formatIntegerNum(request.getEventType()) == HKConstants.EventTypes.PARK_PASS_OUT.getKey()){ | 
|---|
|  |  |  | //如果是出场放行 | 
|---|
|  |  |  | delRetentionList.add(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(event.getMemberId()); | 
|---|
|  |  |  | Retention dm = new Retention(); | 
|---|
|  |  |  | dm.setMemberId(event.getMemberId()); | 
|---|
|  |  |  | dm.setPhone(carrecord.getMemberPhone()); | 
|---|
|  |  |  | dm.setCarNo(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(dm); | 
|---|
|  |  |  | inoutDayCount.setOutCarNum(Constants.formatIntegerNum(inoutDayCount.getOutCarNum())+1); | 
|---|
|  |  |  | carrecord.setInOrOut(Constants.ONE); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | event.setCarType(Constants.RetentionCarType.fkCar); | 
|---|
|  |  |  | int index =0; | 
|---|
|  |  |  | carrecord.setCarBizType(Constants.RetentionCarType.fkCar); | 
|---|
|  |  |  | if(1==2){ | 
|---|
|  |  |  | Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList); | 
|---|
|  |  |  | carrecord.setCategoryId(category.getId()); | 
|---|
|  |  |  | carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆")); | 
|---|
|  |  |  | carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆")); | 
|---|
|  |  |  | carrecord.setCategoryParentId(category.getParentId()); | 
|---|
|  |  |  | for(Visits v :visitsList){ | 
|---|
|  |  |  | delMemberRetentionList.add(event.getMemberId()); | 
|---|
|  |  |  | Category category =findCategoryByBizType(Constants.RetentionCarType.fkCar,"访客车辆","访客车辆",categoryList); | 
|---|
|  |  |  | carrecord.setCategoryId(category.getId()); | 
|---|
|  |  |  | carrecord.setCategoryName(StringUtils.defaultString(category.getName(),"访客车辆")); | 
|---|
|  |  |  | carrecord.setCategoryParentName(StringUtils.defaultString(category.getParentName(),"访客车辆")); | 
|---|
|  |  |  | carrecord.setCategoryParentId(category.getParentId()); | 
|---|
|  |  |  | for(Visits v :visitsList){ | 
|---|
|  |  |  | //                        if(v.getEndtime()!=null && v.getEndtime().getTime() < System.currentTimeMillis()){ | 
|---|
|  |  |  | Retention dm = new Retention(); | 
|---|
|  |  |  | dm.setMemberId(event.getMemberId()); | 
|---|
|  |  |  | dm.setPhone(carrecord.getMemberPhone()); | 
|---|
|  |  |  | dm.setCarNo(event.getPlateNos()); | 
|---|
|  |  |  | delMemberRetentionList.add(dm); | 
|---|
|  |  |  | //                            delMemberRetentionList.add(event.getMemberId()); | 
|---|
|  |  |  | InoutRecord copyObj = new InoutRecord(); | 
|---|
|  |  |  | BeanUtils.copyProperties(carrecord,copyObj); | 
|---|
|  |  |  | copyObj.setMemberId(v.getMemberId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | inoutDayCount.setInVisitorNum(Constants.formatIntegerNum(inoutDayCount.getInVisitorNum())+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(isCarInOrOutEvent(request) && event.getCarType() !=null && !event.getCarType().equals(Constants.RetentionCarType.fkCar)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | Category category  = new Category(); | 
|---|
|  |  |  | category.setName(tempname); | 
|---|
|  |  |  | category.setParentName(pName); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | return category; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void dealSelTruckAutoSignBiz(EventParkInfoRequest request, CarEvent event) { | 
|---|
|  |  |  | 
|---|
|  |  |  | .in(PlatformJob::getStatus, | 
|---|
|  |  |  | Constants.PlatformJobStatus.IN_WAIT.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.CALLED.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.WAIT_CALL.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.WORKING.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.TRANSFERING.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.OVER_NUMBER.getKey(), | 
|---|
|  |  |  | Constants.PlatformJobStatus.EXCEPTION.getKey() | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | )==Constants.ZERO){//如果没进行中任务 | 
|---|
|  |  |  | 
|---|
|  |  |  | retention.setMemberId(inoutRecord.getMemberId()); | 
|---|
|  |  |  | retention.setDeviceName(request.getSrcName()); | 
|---|
|  |  |  | retention.setDeviceIndex(request.getSrcIndex()); | 
|---|
|  |  |  | retention.setRemark("跟随车辆入园区"); | 
|---|
|  |  |  | retention.setCarNo(inoutRecord.getCarCode()); | 
|---|
|  |  |  | retention.setDeviceName(request.getData().getGateName()+request.getData().getRoadwayName()); | 
|---|
|  |  |  | retention.setRemark("跟随车辆【"+inoutRecord.getCarCode()+"】入园区"); | 
|---|
|  |  |  | return retention; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private Retention getRetentionModelByParkRequest(EventParkInfoRequest request,CarEvent event ,InoutRecord carrecord ) { | 
|---|
|  |  |  | 
|---|
|  |  |  | retention.setCategoryName(carrecord.getCategoryName()); | 
|---|
|  |  |  | retention.setCategoryParentId(carrecord.getCategoryParentId()); | 
|---|
|  |  |  | retention.setCategoryParentName(carrecord.getCategoryParentName()); | 
|---|
|  |  |  | retention.setDeviceName(request.getData().getGateName()+request.getData().getRoadwayName()); | 
|---|
|  |  |  | //        retention.setDeviceName(request.getSrcName()); | 
|---|
|  |  |  | //        retention.setDeviceIndex(request.getSrcIndex()); | 
|---|
|  |  |  |  | 
|---|