| | |
| | | @Autowired |
| | | private RetentionMapper retentionMapper; |
| | | @Autowired |
| | | private InoutRecordMapper inoutRecordMapper; |
| | | @Autowired |
| | | private PlatformMapper platformMapper; |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | |
| | | List<DeviceEvent> list = new ArrayList<>(); |
| | | List<Integer> delRetentionLis = new ArrayList<>(); |
| | | List<Retention> retentionList = new ArrayList<>(); |
| | | List<InoutRecord> inoutRecordList = new ArrayList<>(); |
| | | InoutDayCount inoutDayCount = new InoutDayCount(); |
| | | for(EventAcsInfoRequest request : events){ |
| | | EventDeviceDataRequest model = request.getData(); |
| | |
| | | continue; |
| | | } |
| | | //根据推送人员编码,处理在场、离场人员数据记录 |
| | | dealMemberDataByRequest(request,delRetentionLis,retentionList,inoutDayCount); |
| | | dealMemberDataByRequest(request,delRetentionLis,retentionList,inoutDayCount,inoutRecordList); |
| | | //封装门禁事件信息表对象 |
| | | list.add(getDeviceEventModelByRequest(request)); |
| | | } |
| | |
| | | if(retentionList.size()>0){ |
| | | //再插入最新的在厂人员 |
| | | retentionMapper.insert(retentionList); |
| | | } |
| | | if(inoutRecordList.size()>0){ |
| | | //再插入最新的在厂人员 |
| | | inoutRecordMapper.insert(inoutRecordList); |
| | | } |
| | | dealInoutDayCountBiz(inoutDayCount); |
| | | log.info("【海康门禁事件推送】========成功======="); |
| | |
| | | * @param delRetentionLis |
| | | * @param retentionList |
| | | */ |
| | | private void dealMemberDataByRequest(EventAcsInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList,InoutDayCount inoutDayCount) { |
| | | private void dealMemberDataByRequest(EventAcsInfoRequest request |
| | | , List<Integer> delRetentionLis |
| | | , List<Retention> retentionList |
| | | ,InoutDayCount inoutDayCount |
| | | ,List<InoutRecord> inoutRecordList) { |
| | | //海康人员编码 |
| | | String userNo = request.getData().getExtEventPersonNo(); |
| | | if(StringUtils.isNotBlank(userNo)){ |
| | | Member member = memberMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>() |
| | | .selectAll(Member.class) |
| | | .selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath) |
| | | .selectAs(Company::getType,Member::getCompanyType) |
| | | .leftJoin(Company.class,Company::getId,Member::getCompanyId) |
| | | .eq(Member::getHkId,userNo) |
| | |
| | | .eq(Device::getDoorId,request.getSrcIndex()) |
| | | .eq(Device::getIsdeleted,Constants.ZERO) |
| | | .last("limit 1" )); |
| | | InoutRecord record = new InoutRecord(); |
| | | record.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime())); |
| | | record.setType(Constants.ONE);//人员 |
| | | record.setMemberType(Constants.ZERO);//默认为未知人员(访客) |
| | | record.setIsdeleted(Constants.ZERO); |
| | | record.setInOrOut(Constants.ZERO); |
| | | record.setHkEventId(request.getEventId()); |
| | | record.setHkId(userNo); |
| | | if(d!=null && Constants.equalsInteger(d.getIsEntrance(),Constants.ONE)){ |
| | | if(Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE){ |
| | | //如果是进门,录入人员的在场数据记录 |
| | | inoutDayCount.setInMemberNum(Constants.formatIntegerNum(inoutDayCount.getInMemberNum())+1);//入场人次 |
| | | }else{ |
| | | //如果是出门 |
| | | record.setInOrOut(Constants.ONE); |
| | | inoutDayCount.setOutMemberNum(Constants.formatIntegerNum(inoutDayCount.getOutMemberNum())+1);//离场人次 |
| | | } |
| | | } |
| | | if(member !=null){ |
| | | record.setMemberName(member.getName()); |
| | | record.setObjId(member.getId()); |
| | | record.setObjType(Constants.ONE); |
| | | record.setMemberPhone(member.getPhone()); |
| | | record.setCompanyId(member.getCompanyId()); |
| | | record.setCompanyName(member.getCompanyNamePath()); |
| | | if(d!=null && Constants.equalsInteger(d.getIsEntrance(),Constants.ONE)){ |
| | | 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.ONE); |
| | | inoutDayCount.setInSelfMemberNum(Constants.formatIntegerNum(inoutDayCount.getInSelfMemberNum())+1);//内部人员入场人次 |
| | | }else{ |
| | | record.setMemberType(Constants.TWO); |
| | | inoutDayCount.setInOtherMemberNum(Constants.formatIntegerNum(inoutDayCount.getInOtherMemberNum())+1);//相关方入场人次 |
| | | } |
| | | }else{ |
| | |
| | | } |
| | | } |
| | | } |
| | | inoutRecordList.add(record); |
| | | } |
| | | } |
| | | |
| | |
| | | List<VisitEvent> list = new ArrayList<>(); |
| | | List<Integer> delRetentionLis = new ArrayList<>(); |
| | | List<Retention> retentionList = new ArrayList<>(); |
| | | List<InoutRecord> inoutRecordList = new ArrayList<>(); |
| | | InoutDayCount inoutDayCount = new InoutDayCount(); |
| | | for(EventVisitIccmInfoRequest request : events){ |
| | | if(request.getData() ==null || request.getData().getVisitorInvoices() ==null){ |
| | |
| | | continue; |
| | | } |
| | | //海康访客记录编码 |
| | | dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,inoutDayCount); |
| | | dealVisitDataByRequstIccm(request,delRetentionLis,retentionList,inoutDayCount,inoutRecordList); |
| | | list.add(getVisitEventModelByRequestIccm(request,request.getData().getVisitorInformationList().get(0))); |
| | | } |
| | | if(list.size()>0){ |
| | |
| | | //再插入最新的在厂人员 |
| | | retentionMapper.insert(retentionList); |
| | | } |
| | | if(inoutRecordList.size()>0){ |
| | | //批量插入人员出入记录 |
| | | inoutRecordMapper.insert(inoutRecordList); |
| | | } |
| | | dealInoutDayCountBiz(inoutDayCount); |
| | | log.info("【海康访客事件推送】========成功======="); |
| | | }catch (Exception e){ |
| | |
| | | /** |
| | | * 根据访客推送访客记录编码,处理访客记录、在场人员等信息 |
| | | */ |
| | | private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request, List<Integer> delRetentionLis, List<Retention> retentionList, InoutDayCount inoutDayCount) { |
| | | private void dealVisitDataByRequstIccm(EventVisitIccmInfoRequest request |
| | | , List<Integer> delRetentionLis |
| | | , List<Retention> retentionList |
| | | , InoutDayCount inoutDayCount |
| | | ,List<InoutRecord> inoutRecordList) { |
| | | EventVisitIccmDataRequest model = request.getData(); |
| | | EventVisitIccmInvoiceParamRequest data = request.getData().getVisitorInvoices(); |
| | | MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); |
| | |
| | | }else{ |
| | | //如果人员信息存在,切是访客通行,则删除之前的所有进场数据(无论此次推送是进厂还是出场推送事件) |
| | | delRetentionLis.add(visits.getMemberId()); |
| | | InoutRecord record = new InoutRecord(); |
| | | record.setCreateDate(DateUtil.getISO8601DateByStr2(request.getHappenTime())); |
| | | record.setType(Constants.ONE);//人员 |
| | | record.setMemberType(Constants.ZERO); |
| | | record.setIsdeleted(Constants.ZERO); |
| | | record.setMemberName(visits.getName()); |
| | | record.setObjId(visits.getId()); |
| | | record.setObjType(Constants.TWO); |
| | | record.setMemberPhone(visits.getPhone()); |
| | | record.setCompanyName(visits.getCompanyName()); |
| | | record.setInOrOut(Constants.ZERO); |
| | | record.setHkEventId(request.getEventId()); |
| | | record.setHkId(visits.getHkId()); |
| | | //如果是访客通行 |
| | | if(request.getData()!=null&&request.getData().getParamValues()!=null && |
| | | StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ |
| | |
| | | if(request.getData()!=null&&request.getData().getParamValues()!=null && |
| | | !StringUtils.equals(request.getData().getParamValues().getInOrOut(),"0")){ |
| | | inoutDayCount.setOutVisitorNum(Constants.formatIntegerNum(inoutDayCount.getOutVisitorNum())+1); |
| | | record.setInOrOut(Constants.ONE); |
| | | } |
| | | inoutRecordList.add(record); |
| | | } |
| | | updateVistis.setEditDate(new Date()); |
| | | //更新访客来访或者签离时间信息 |