|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private InoutDayCountMapper inoutDayCountMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private InoutRecordMapper inoutRecordMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private CarEventMapper carEventMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | 
|---|
|  |  |  | if (erpVisitDTO.getEndtime().getTime() <= erpVisitDTO.getStarttime().getTime()) { | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约结束时间必须大于开始时间!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (Constants.equalsInteger(Constants.ZERO, erpVisitDTO.getIdcardType()) && erpVisitDTO.getIdcardNo().length() != 18 | 
|---|
|  |  |  | if (StringUtils.isNotBlank(erpVisitDTO.getIdcardNo()) && Constants.equalsInteger(Constants.ZERO, erpVisitDTO.getIdcardType()) && erpVisitDTO.getIdcardNo().length() != 18 | 
|---|
|  |  |  | //&&!IdcardUtil.isValidCard(visits.getIdcardNo()) | 
|---|
|  |  |  | ){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!"); | 
|---|
|  |  |  | 
|---|
|  |  |  | //检查是否必须答题,并且符合答题要求 | 
|---|
|  |  |  | ProblemLog problemLog = isValidProblemLog(visits,source); | 
|---|
|  |  |  | //获取申请的海康访问门禁组信息 | 
|---|
|  |  |  | getHkDeviceRoles(visits,isERP); | 
|---|
|  |  |  | //        getHkDeviceRoles(visits,isERP); | 
|---|
|  |  |  | //检验拜访人是否合法 | 
|---|
|  |  |  | Member visitMember = isValideVisitedUser(visits.getReceptMemberId()); | 
|---|
|  |  |  | if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) | 
|---|
|  |  |  | &&visits.getIdcardNo().length()!=18 | 
|---|
|  |  |  | ){ | 
|---|
|  |  |  | if(StringUtils.isNotBlank(visits.getIdcardNo()) && Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) | 
|---|
|  |  |  | &&visits.getIdcardNo().length()!=18 ){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Date date = new Date(); | 
|---|
|  |  |  | 
|---|
|  |  |  | //初始化访客信息 | 
|---|
|  |  |  | initVisitInfo(visits,date); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        if(StringUtils.isNotBlank(visits.getFaceImg())&&(Constants.equalsInteger(visits.getType(),Constants.ZERO)|| Constants.equalsInteger(visits.getType(),Constants.TWO))){ | 
|---|
|  |  |  | //            //人脸评分 | 
|---|
|  |  |  | //            FacePictureCheckRequest param = new FacePictureCheckRequest(); | 
|---|
|  |  |  | //            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() + | 
|---|
|  |  |  | //                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); | 
|---|
|  |  |  | //            param.setFacePicUrl(prefixUrl + visits.getFaceImg()); | 
|---|
|  |  |  | //            BaseResponse<FacePictureCheckResponse> response = HKService.facePictureCheck(param); | 
|---|
|  |  |  | //            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ | 
|---|
|  |  |  | //                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,人脸评分获取数据失败~"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //            FacePictureCheckResponse facePictureCheckResponse = response.getData(); | 
|---|
|  |  |  | //            if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){ | 
|---|
|  |  |  | //                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,人脸评分获取数据失败~"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //            if(!facePictureCheckResponse.getCheckResult()){ | 
|---|
|  |  |  | //                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage()); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | visits.setSendTimeOutNotice(Constants.ZERO); | 
|---|
|  |  |  | visitsMapper.insert(visits); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | WxPlatNotice wxPlatNotice = new WxPlatNotice(); | 
|---|
|  |  |  | wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz, | 
|---|
|  |  |  | wxNoticeConfigMapper,visits, | 
|---|
|  |  |  | Constants.equalsInteger(visits.getType(),Constants.TWO)?WxPlatConstants.visitReportContent.visitReportUpload:WxPlatConstants.visitContent.visitUpload, | 
|---|
|  |  |  | systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
|---|
|  |  |  | Constants.equalsInteger(visits.getType(),Constants.TWO)?WxPlatConstants.visitReportContent.visitReportUpload:WxPlatConstants.visitContent.visitUpload, | 
|---|
|  |  |  | Arrays.asList(visits.getOpenid().split(",")) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return visits.getId(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|---|
|  |  |  | 
|---|
|  |  |  | wxPlatNotice.sendVisitTemplateNotice(systemDictDataBiz, | 
|---|
|  |  |  | wxNoticeConfigMapper,visits, | 
|---|
|  |  |  | Constants.equalsInteger(visits.getType(),Constants.TWO)?WxPlatConstants.visitReportContent.visitReportUpload:WxPlatConstants.visitContent.visitUpload, | 
|---|
|  |  |  | systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), | 
|---|
|  |  |  | Arrays.asList(systemUser.getOpenid().split(",")) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if(Constants.equalsInteger(visits.getType(),Constants.ZERO) | 
|---|
|  |  |  | ||  Constants.equalsInteger(visits.getType(),Constants.ONE)){ | 
|---|
|  |  |  | if(  visits.getIdcardType() == null | 
|---|
|  |  |  | ||  StringUtils.isBlank( visits.getIdcardNo() ) || StringUtils.isBlank(visits.getFaceImg()) ){ | 
|---|
|  |  |  | || StringUtils.isBlank(visits.getFaceImg()) ){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,信息填写不正确!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | List<Member> addList = new ArrayList<>(); | 
|---|
|  |  |  | List<Member> editList = new ArrayList<>(); | 
|---|
|  |  |  | //申请人信息 | 
|---|
|  |  |  | Member m = getMemberListParam(visits.getIdcardNo(),visits,addList,editList); | 
|---|
|  |  |  | Member m = getMemberListParam(visits.getPhone(),visits.getIdcardNo(),visits,addList,editList); | 
|---|
|  |  |  | //随访人员信息处理 | 
|---|
|  |  |  | if(visits.getWithUserList()!= null && visits.getWithUserList().size()>0){ | 
|---|
|  |  |  | for(Visits model:visits.getWithUserList()){ | 
|---|
|  |  |  | model.setBirthday(Constants.getBirthdyByCardNo(model.getIdcardNo())); | 
|---|
|  |  |  | model.setStarttime(visits.getStarttime()); | 
|---|
|  |  |  | model.setEndtime(visits.getEndtime()); | 
|---|
|  |  |  | //校验随访人员填报数据合法性 | 
|---|
|  |  |  | isValidWithVisitParam(model,addList,editList); | 
|---|
|  |  |  | model.setCreateDate(visits.getCreateDate()); | 
|---|
|  |  |  | Member visitsMember = getMemberListParam(model.getIdcardNo(),model,addList,editList); | 
|---|
|  |  |  | model.setMemberId(visitsMember.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if(visits.getWithUserList()!= null && visits.getWithUserList().size()>0){ | 
|---|
|  |  |  | //            for(Visits model:visits.getWithUserList()){ | 
|---|
|  |  |  | //                model.setBirthday(Constants.getBirthdyByCardNo(model.getIdcardNo())); | 
|---|
|  |  |  | //                model.setStarttime(visits.getStarttime()); | 
|---|
|  |  |  | //                model.setEndtime(visits.getEndtime()); | 
|---|
|  |  |  | //                //校验随访人员填报数据合法性 | 
|---|
|  |  |  | //                isValidWithVisitParam(model,addList,editList); | 
|---|
|  |  |  | //                model.setCreateDate(visits.getCreateDate()); | 
|---|
|  |  |  | //                Member visitsMember = getMemberListParam(model.getIdcardNo(),model,addList,editList); | 
|---|
|  |  |  | //                model.setMemberId(visitsMember.getId()); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | return  m; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Member getMemberListParam(String cardno, Visits visits, List<Member> addList, List<Member> editList) { | 
|---|
|  |  |  | private Member getMemberListParam(String phone,String cardno, Visits visits, List<Member> addList, List<Member> editList) { | 
|---|
|  |  |  | if(StringUtils.isNotBlank(visits.getCarNos()) | 
|---|
|  |  |  | &&Objects.isNull(Constants.getVehiclePlateNo(visits.getCarNos())) | 
|---|
|  |  |  | ){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,车牌号【"+visits.getCarNos()+"】不合法,请核实后重试~"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&cardno.length()!=18 | 
|---|
|  |  |  | //&&!IdcardUtil.isValidCard(cardno) | 
|---|
|  |  |  | ){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证【"+cardno+"】号码有误,请核实后重试!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        if(StringUtils.isNotBlank(cardno)&&Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&cardno.length()!=18 | 
|---|
|  |  |  | //            //&&!IdcardUtil.isValidCard(cardno) | 
|---|
|  |  |  | //        ){ | 
|---|
|  |  |  | //            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证【"+cardno+"】号码有误,请核实后重试!"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() | 
|---|
|  |  |  | .eq(Member::getType,Constants.memberType.visitor) | 
|---|
|  |  |  | .eq(Member::getIdcardType,visits.getIdcardType()) | 
|---|
|  |  |  | .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, cardno)).last("limit 1" ) | 
|---|
|  |  |  | .eq(Member::getPhone,phone) | 
|---|
|  |  |  | //                .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, cardno)) | 
|---|
|  |  |  | .last("limit 1" ) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if(member == null){ | 
|---|
|  |  |  | member = new Member(); | 
|---|
|  |  |  | 
|---|
|  |  |  | member.setCreateDate(visits.getCreateDate()); | 
|---|
|  |  |  | member.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | member.setIdcardNo(visits.getIdcardNo()); | 
|---|
|  |  |  | member.setBirthday(Constants.getBirthdyByCardNo(cardno)); | 
|---|
|  |  |  | member.setIdcardDecode(visits.getIdcardDecode()); | 
|---|
|  |  |  | member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//身份证号加密 | 
|---|
|  |  |  | member.setIdcardDecode(Constants.getTuominStr(cardno));//脱敏手机号 | 
|---|
|  |  |  | if(StringUtils.isNotBlank(cardno)){ | 
|---|
|  |  |  | member.setBirthday(Constants.getBirthdyByCardNo(cardno)); | 
|---|
|  |  |  | member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//身份证号加密 | 
|---|
|  |  |  | member.setIdcardDecode(Constants.getTuominStr(cardno));//脱敏手机号 | 
|---|
|  |  |  | member.setSex(Constants.getSexByCardNo(cardno)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | member.setFaceImg(visits.getFaceImg()); | 
|---|
|  |  |  | member.setSex(Constants.getSexByCardNo(cardno)); | 
|---|
|  |  |  | member.setImgurl(StringUtils.isNotBlank(visits.getImgurl())?visits.getImgurl():null); | 
|---|
|  |  |  | member.setIdcardType(visits.getIdcardType()); | 
|---|
|  |  |  | member.setName(visits.getName()); | 
|---|
|  |  |  | 
|---|
|  |  |  | member.setOpenid(visits.getOpenid()); | 
|---|
|  |  |  | member.setType(Constants.memberType.visitor); | 
|---|
|  |  |  | member.setStatus(Constants.ZERO); | 
|---|
|  |  |  | member.setSex(Constants.getSexByCardNo(cardno)); | 
|---|
|  |  |  | member.setHkStatus(Constants.ZERO); | 
|---|
|  |  |  | member.setErpStatus(Constants.ZERO); | 
|---|
|  |  |  | member.setVisitCompanyName(visits.getCompanyName()); | 
|---|
|  |  |  | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | if(!Constants.equalsInteger(Constants.ZERO,member.getStatus() )){ | 
|---|
|  |  |  | //如果用户状态异常,则提示 | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,【"+member.getName()+"】身份证号【"+cardno+"】在黑名单内,无法申请进入园区"); | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,【"+member.getName()+"】在黑名单内,无法申请进入园区"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //核查预约用户是否存在未签离的预约记录 | 
|---|
|  |  |  | //            isExsitNoOutVisisRecord(member); | 
|---|
|  |  |  | 
|---|
|  |  |  | member.setImgurl(StringUtils.isNotBlank(visits.getImgurl())?visits.getImgurl():null); | 
|---|
|  |  |  | member.setEditDate(visits.getCreateDate()); | 
|---|
|  |  |  | member.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | member.setSex(Constants.getSexByCardNo(cardno)); | 
|---|
|  |  |  | member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//身份证号加密 | 
|---|
|  |  |  | member.setIdcardDecode(Constants.getTuominStr(cardno));//脱敏身份证号 | 
|---|
|  |  |  | if(StringUtils.isNotBlank(cardno)){ | 
|---|
|  |  |  | member.setBirthday(Constants.getBirthdyByCardNo(cardno)); | 
|---|
|  |  |  | member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, cardno));//身份证号加密 | 
|---|
|  |  |  | member.setIdcardDecode(Constants.getTuominStr(cardno));//脱敏手机号 | 
|---|
|  |  |  | member.setSex(Constants.getSexByCardNo(cardno)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | member.setName(visits.getName()); | 
|---|
|  |  |  | member.setPhone(visits.getPhone()); | 
|---|
|  |  |  | member.setOpenid(visits.getOpenid()); | 
|---|
|  |  |  | member.setSex(Constants.getSexByCardNo(cardno)); | 
|---|
|  |  |  | member.setHkStatus(Constants.ZERO); | 
|---|
|  |  |  | member.setErpStatus(Constants.ZERO); | 
|---|
|  |  |  | member.setVisitCompanyName(visits.getCompanyName()); | 
|---|
|  |  |  | 
|---|
|  |  |  | ,Constants.VisitStatus.xfFail | 
|---|
|  |  |  | ,Constants.VisitStatus.signout | 
|---|
|  |  |  | ,Constants.VisitStatus.invalid) | 
|---|
|  |  |  | .eq(Visits::getIdcardDecode, Constants.getTuominStr(cardno)) | 
|---|
|  |  |  | .and(ms -> ms.eq(Visits::getPhone, visits.getPhone()) | 
|---|
|  |  |  | .or().eq(Visits::getIdcardDecode, Constants.getTuominStr(cardno))) | 
|---|
|  |  |  | .and(ms -> ms.eq(Visits::getPhone, visits.getPhone())) | 
|---|
|  |  |  | .and(ms -> ms.apply(" visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' ") | 
|---|
|  |  |  | .or().apply(" visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' ") | 
|---|
|  |  |  | .or().apply(" visits.STARTTIME >= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.STARTTIME <= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' ") | 
|---|
|  |  |  | .or().apply(" visits.ENDTIME >= '" + DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm:ss") + "' and visits.ENDTIME <= '" + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm:ss") + "' ") | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | ) > Constants.ZERO) { | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,手机号【"+member.getPhone()+"】或身份证【"+ member.getIdcardDecode() +"】存在预约时间冲突,无法申请哦!"); | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,手机号【"+member.getPhone()+"】存在预约时间冲突,无法申请哦!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return  member; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | queryWrapper.selectAll(Visits.class); | 
|---|
|  |  |  | queryWrapper.select("  ( select count(distinct(v.CAR_NOS)) from visits v where v.PARENT_ID = t.ID and v.CAR_NOS is not null  and v.CAR_NOS != ''  and v.CAR_NOS != t.CAR_NOS ) as carNum  "); | 
|---|
|  |  |  | queryWrapper.select("  ( select count(distinct(v.id)) from retention v where v.member_id = t.member_id and v.type=1 )",Visits::getRetentionNum); | 
|---|
|  |  |  | queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName); | 
|---|
|  |  |  | queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment); | 
|---|
|  |  |  | queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId); | 
|---|
|  |  |  | 
|---|
|  |  |  | queryWrapper.isNull(Visits::getParentId); | 
|---|
|  |  |  | queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getMemberId()),Visits::getMemberId,pageWrap.getModel().getMemberId()); | 
|---|
|  |  |  | queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getReceptMemberId()),Visits::getReceptMemberId,pageWrap.getModel().getReceptMemberId()); | 
|---|
|  |  |  | queryWrapper.ge(Objects.nonNull(pageWrap.getModel().getQueryStarttime()),Visits::getStarttime,Utils.Date.getStart(pageWrap.getModel().getQueryStarttime())); | 
|---|
|  |  |  | queryWrapper.le(Objects.nonNull(pageWrap.getModel().getQueryEndtime()),Visits::getStarttime,Utils.Date.getEnd(pageWrap.getModel().getQueryEndtime())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(Objects.nonNull(pageWrap.getModel().getBusinessStatus())){ | 
|---|
|  |  |  | if(Constants.equalsInteger(pageWrap.getModel().getBusinessStatus(),Constants.TWO)){ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|---|
|  |  |  | public  void  visitLevelForCarOut(Visits visits){ | 
|---|
|  |  |  | visits.setRemark("跟随访客车辆离园自动签离"); | 
|---|
|  |  |  | visitLevelBiz(visits); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|---|
|  |  |  | public void  visitLevel(Integer visitId){ | 
|---|
|  |  |  | Visits visits = visitsMapper.selectById(visitId); | 
|---|
|  |  |  | visits.setRemark("平台管理员手动签离成功"); | 
|---|
|  |  |  | visitLevelBiz(visits); | 
|---|
|  |  |  | //产出在场人员信息 | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getType,Constants.memberType.visitor) | 
|---|
|  |  |  | .eq(Retention::getMemberId,visits.getMemberId())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void visitLevelBiz(Visits visits) { | 
|---|
|  |  |  | if(Objects.isNull(visits)){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | request.setOrderId(visits.getHkId()); | 
|---|
|  |  |  | //调用海康强制签离 | 
|---|
|  |  |  | BaseResponse response =  HKService.iccmSignoff(request); | 
|---|
|  |  |  | //        BaseResponse response =  HKService.outVisitAppiontment(request); | 
|---|
|  |  |  | visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.VisitStatus.signout) | 
|---|
|  |  |  | .eq(Visits::getId,visitId)); | 
|---|
|  |  |  | //产出在场人员信息 | 
|---|
|  |  |  | retentionMapper.delete(new UpdateWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getType,Constants.memberType.visitor) | 
|---|
|  |  |  | .eq(Retention::getMemberId,visits.getMemberId())); | 
|---|
|  |  |  | if(response!=null &&StringUtils.isNotBlank(response.getCode()) && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){ | 
|---|
|  |  |  | visitsMapper.update(null,new UpdateWrapper<Visits>().lambda() | 
|---|
|  |  |  | .set(Visits::getStatus,Constants.VisitStatus.signout) | 
|---|
|  |  |  | .set(Visits::getRemark,visits.getRemark()) | 
|---|
|  |  |  | .eq(Visits::getId,visits.getId())); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"访客签离失败,请刷新重试"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void  visitCancel(Integer visitId){ | 
|---|
|  |  |  | Visits visits = visitsMapper.selectById(visitId); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void  visitsSelfCancel(Integer visitId,Integer memberId){ | 
|---|
|  |  |  | public void  visitsSelfCancel(Integer visitId,Integer memberId,String openid){ | 
|---|
|  |  |  | Visits visits = visitsMapper.selectById(visitId); | 
|---|
|  |  |  | if(Objects.isNull(visits)){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!(Constants.equalsInteger(memberId,visits.getMemberId()))){ | 
|---|
|  |  |  | /*        if(!(Constants.equalsInteger(memberId,visits.getMemberId()))){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"无此操作权限"); | 
|---|
|  |  |  | }*/ | 
|---|
|  |  |  | if(!StringUtils.equals(openid,visits.getOpenid())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"无此操作权限"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.visitsCancelBiz(visits); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!( | 
|---|
|  |  |  | CollectionUtils.isNotEmpty(loginUserInfo.getPermissions()) && | 
|---|
|  |  |  | loginUserInfo.getPermissions().stream().filter(i->i.equals("business:visits:cancel")).collect(Collectors.toList()).size()>0)){ | 
|---|
|  |  |  | loginUserInfo.getPermissions().stream().filter(i->i.equals("business:visits:cancel")) | 
|---|
|  |  |  | .collect(Collectors.toList()).size()>0)){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"无此操作权限"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.visitsCancelBiz(visits); | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(Visits::getId,visits.getId()); | 
|---|
|  |  |  | //访客报备 | 
|---|
|  |  |  | if(Constants.equalsInteger(visits.getType(),Constants.TWO)){ | 
|---|
|  |  |  | if(!(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.waitCheck)||Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.submitCheck) | 
|---|
|  |  |  | if(!(Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.waitCheck) | 
|---|
|  |  |  | ||Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.submitCheck) | 
|---|
|  |  |  | || Constants.equalsInteger(visits.getStatus(),Constants.VisitStatus.pass))){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"访客记录状态错误,无法进行该操作"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(Notices::getStatus,Constants.ZERO) | 
|---|
|  |  |  | .eq(Notices::getParam2,Constants.ZERO)//待处理 | 
|---|
|  |  |  | .eq(Notices::getObjId,visits.getId()) | 
|---|
|  |  |  | .eq(Notices::getObjType,Constants.equalsInteger(visits.getType(),Constants.ZERO)?Constants.noticesObjectType.visit:Constants.noticesObjectType.visitReporting) | 
|---|
|  |  |  | .eq(Notices::getObjType,!Constants.equalsInteger(visits.getType(),Constants.TWO)? | 
|---|
|  |  |  | Constants.noticesObjectType.visit:Constants.noticesObjectType.visitReporting) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Approve approve = new Approve(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() | 
|---|
|  |  |  | .eq(DeviceRole::getType, Constants.ONE)); | 
|---|
|  |  |  | String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() | 
|---|
|  |  |  | String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() | 
|---|
|  |  |  | +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | HkSyncVisitServiceImpl.getUpdateModelByResponseIccm(visits,new Date(),roleList,path); | 
|---|
|  |  |  | 
|---|
|  |  |  | .apply(" DATE(TIME_INFO) = CURDATE()  ") | 
|---|
|  |  |  | .last(" limit 1 ") | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //今日在园人数 | 
|---|
|  |  |  | pcWorkPlatformDataVO.setTodayInParkUserNum( | 
|---|
|  |  |  | retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count() | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //在园长期相关方人数 | 
|---|
|  |  |  | pcWorkPlatformDataVO.setInParkLwUserNum( | 
|---|
|  |  |  | retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) | 
|---|
|  |  |  | && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count() | 
|---|
|  |  |  | retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FOUR)).count() | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | pcWorkPlatformDataVO.setLwUserInNum(Constants.ZERO); | 
|---|
|  |  |  | pcWorkPlatformDataVO.setLwUserOutNum(Constants.ZERO); | 
|---|
|  |  |  | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | pcWorkPlatformDataVO.setVisitUserNum(Constants.ZERO); | 
|---|
|  |  |  | pcWorkPlatformDataVO.setSignLevelNum(Constants.ZERO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //在园货运车辆司机 | 
|---|
|  |  |  | pcWorkPlatformDataVO.setInParkDriverUserNum( | 
|---|
|  |  |  | retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FIVE)&&Objects.isNull(i.getCompanyType())).count()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //在园车辆 | 
|---|
|  |  |  | pcWorkPlatformDataVO.setTodayInParkCarNum( | 
|---|
|  |  |  | 
|---|
|  |  |  | List<InterestedListVO> weekVisitList = new ArrayList<>(); | 
|---|
|  |  |  | List<InterestedListVO> weekCarList = new ArrayList<>(); | 
|---|
|  |  |  | List<InterestedListVO> lwList = new ArrayList<>(); | 
|---|
|  |  |  | List<InterestedListVO> internalList = new ArrayList<>(); | 
|---|
|  |  |  | //查询七天前的访客记录数量 | 
|---|
|  |  |  | List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda().in(Visits::getStatus, | 
|---|
|  |  |  | Constants.VisitStatus.signin,Constants.VisitStatus.signout) | 
|---|
|  |  |  | .apply(" STARTTIME >   CURDATE() - INTERVAL 7 DAY " ) | 
|---|
|  |  |  | //            List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda().in(Visits::getStatus, | 
|---|
|  |  |  | //                    Constants.VisitStatus.signin,Constants.VisitStatus.signout) | 
|---|
|  |  |  | //                    .apply(" STARTTIME >   CURDATE() - INTERVAL 7 DAY " ) | 
|---|
|  |  |  | //            ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<InoutRecord> inoutRecordList = inoutRecordMapper.selectList(new QueryWrapper<InoutRecord>().lambda() | 
|---|
|  |  |  | .eq(InoutRecord::getInOrOut,Constants.ZERO).eq(InoutRecord::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .apply(" TIME_INFO >   CURDATE() - INTERVAL 7 DAY " ) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<CarEvent> carEventList = carEventMapper.selectList(new QueryWrapper<CarEvent>().lambda() | 
|---|
|  |  |  | .in(CarEvent::getEventType,"771760131","771760130") | 
|---|
|  |  |  | .apply(" STR_TO_DATE(happen_time, '%Y-%m-%dT%H:%i:%s') > CURDATE() - INTERVAL 7 DAY  " ) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | //            List<CarEvent> carEventList = carEventMapper.selectList(new QueryWrapper<CarEvent>().lambda() | 
|---|
|  |  |  | //                    .in(CarEvent::getEventType,"771760131","771760130") | 
|---|
|  |  |  | //                    .apply(" STR_TO_DATE(happen_time, '%Y-%m-%dT%H:%i:%s') > CURDATE() - INTERVAL 7 DAY  " ) | 
|---|
|  |  |  | //            ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (String days:weekDays) { | 
|---|
|  |  |  | InterestedListVO visitVO = new InterestedListVO(); | 
|---|
|  |  |  | visitVO.setName(days); | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(visitsList)){ | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(inoutRecordList)){ | 
|---|
|  |  |  | //处理访客人员数量 | 
|---|
|  |  |  | List<Visits> daysList = visitsList.stream().filter(i->Objects.nonNull(i.getStarttime())&&DateUtil.dateToString(i.getStarttime(),"yyyy-MM-dd").equals(days)).collect(Collectors.toList()); | 
|---|
|  |  |  | List<String> memberIds = daysList.stream().map(i->i.getMemberId().toString()).collect(Collectors.toList()); | 
|---|
|  |  |  | //                    List<Visits> daysList = visitsList.stream().filter(i->Objects.nonNull(i.getStarttime())&&DateUtil.dateToString(i.getStarttime(),"yyyy-MM-dd").equals(days)).collect(Collectors.toList()); | 
|---|
|  |  |  | //                    List<String> memberIds = daysList.stream().map(i->i.getMemberId().toString()).collect(Collectors.toList()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<String> memberIds  = inoutRecordList.stream().filter(i-> | 
|---|
|  |  |  | Objects.isNull(i.getCarCode()) | 
|---|
|  |  |  | && Constants.equalsInteger(i.getMemberType(),Constants.ONE) | 
|---|
|  |  |  | && Constants.equalsInteger(i.getInOrOut(),Constants.ZERO) | 
|---|
|  |  |  | && Objects.nonNull(i.getMemberPhone())&&DateUtil.dateToString(i.getTimeInfo(),"yyyy-MM-dd").equals(days) | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | .map(i->i.getMemberPhone()) | 
|---|
|  |  |  | .collect(Collectors.toList()); | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(memberIds)){ | 
|---|
|  |  |  | visitVO.setNum(new HashSet<String>(memberIds).size()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | visitVO.setName(days); | 
|---|
|  |  |  | weekVisitList.add(visitVO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | InterestedListVO carVO = new InterestedListVO(); | 
|---|
|  |  |  | carVO.setNum(Constants.ZERO); | 
|---|
|  |  |  | carVO.setName(days); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(carEventList)){ | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(inoutRecordList)){ | 
|---|
|  |  |  | //处理访客人员数量 | 
|---|
|  |  |  | List<CarEvent> daysList = carEventList.stream().filter(i->StringUtils.isNotBlank(i.getHappenTime()) && i.getHappenTime().substring(0,10).equals(days)).collect(Collectors.toList()); | 
|---|
|  |  |  | List<String> carCodeList = daysList.stream().map(i->i.getPlateNos()).collect(Collectors.toList()); | 
|---|
|  |  |  | //                    List<CarEvent> daysList = carEventList.stream().filter(i->StringUtils.isNotBlank(i.getHappenTime()) && i.getHappenTime().substring(0,10).equals(days)).collect(Collectors.toList()); | 
|---|
|  |  |  | //                    List<String> carCodeList = daysList.stream().map(i->i.getPlateNos()).collect(Collectors.toList()); | 
|---|
|  |  |  | List<String> carCodeList  = inoutRecordList.stream().filter(i-> | 
|---|
|  |  |  | Objects.nonNull(i.getCarCode()) | 
|---|
|  |  |  | && Constants.equalsInteger(i.getInOrOut(),Constants.ZERO) | 
|---|
|  |  |  | &&DateUtil.dateToString(i.getTimeInfo(),"yyyy-MM-dd").equals(days) | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | .map(i->i.getCarCode()) | 
|---|
|  |  |  | .collect(Collectors.toList()); | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(carCodeList)){ | 
|---|
|  |  |  | carVO.setNum(new HashSet<String>(carCodeList).size()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Objects.isNull(carVO.getNum())){ | 
|---|
|  |  |  | visitVO.setNum(Constants.ZERO); | 
|---|
|  |  |  | carVO.setNum(Constants.ZERO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | weekVisitList.add(visitVO); | 
|---|
|  |  |  | weekCarList.add(carVO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | pcWorkPlatformDataVO.setWeekVisitList(weekVisitList ); | 
|---|
|  |  |  | pcWorkPlatformDataVO.setWeekCarList(weekCarList); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda() | 
|---|
|  |  |  | .eq(Company::getType,Constants.ZERO) | 
|---|
|  |  |  | .eq(Company::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .orderByAsc(Company::getSortnum) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(companyList)){ | 
|---|
|  |  |  | List<Integer> companyIds = companyList.stream().map(i->i.getId()).collect(Collectors.toList()); | 
|---|
|  |  |  | List<Retention> retentionList = retentionMapper.selectList( | 
|---|
|  |  |  | new QueryWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getType,Constants.TWO) | 
|---|
|  |  |  | .in(Retention::getCompanyId,companyIds) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | for (Company company:companyList) { | 
|---|
|  |  |  | Integer count = retentionList.stream().filter(i->Constants.equalsInteger(i.getCompanyId(),company.getId())).collect(Collectors.toList()).size(); | 
|---|
|  |  |  | if(count>0){ | 
|---|
|  |  |  | InterestedListVO lw = new InterestedListVO(); | 
|---|
|  |  |  | lw.setNum(count); | 
|---|
|  |  |  | lw.setName(company.getName()); | 
|---|
|  |  |  | lwList.add(lw); | 
|---|
|  |  |  | List<Company>  lwCompanyList  = companyList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(lwCompanyList)){ | 
|---|
|  |  |  | List<Integer> lwCompanyIds = lwCompanyList.stream().map(i->i.getId()).collect(Collectors.toList()); | 
|---|
|  |  |  | List<Retention> retentionList = retentionMapper.selectList( | 
|---|
|  |  |  | new QueryWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Retention::getType,Constants.FOUR) | 
|---|
|  |  |  | .in(Retention::getCompanyId,lwCompanyIds) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | for (Company company:lwCompanyList) { | 
|---|
|  |  |  | Integer count = retentionList.stream().filter(i->Constants.equalsInteger(i.getCompanyId(),company.getId())).collect(Collectors.toList()).size(); | 
|---|
|  |  |  | if(count>0){ | 
|---|
|  |  |  | InterestedListVO lw = new InterestedListVO(); | 
|---|
|  |  |  | lw.setNum(count); | 
|---|
|  |  |  | lw.setName(company.getName()); | 
|---|
|  |  |  | lwList.add(lw); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<Company>  internalCompanyList  = companyList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).collect(Collectors.toList()); | 
|---|
|  |  |  | if(CollectionUtils.isNotEmpty(internalCompanyList)){ | 
|---|
|  |  |  | List<Integer> internalCompanyIds = internalCompanyList.stream().map(i->i.getId()).collect(Collectors.toList()); | 
|---|
|  |  |  | List<Retention> retentionList = retentionMapper.selectList( | 
|---|
|  |  |  | new QueryWrapper<Retention>().lambda() | 
|---|
|  |  |  | .eq(Retention::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Retention::getType,Constants.TWO) | 
|---|
|  |  |  | .in(Retention::getCompanyId,internalCompanyIds) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | for (Company company:internalCompanyList) { | 
|---|
|  |  |  | Integer count = retentionList.stream().filter(i->Constants.equalsInteger(i.getCompanyId(),company.getId())).collect(Collectors.toList()).size(); | 
|---|
|  |  |  | if(count>0){ | 
|---|
|  |  |  | InterestedListVO lw = new InterestedListVO(); | 
|---|
|  |  |  | lw.setNum(count); | 
|---|
|  |  |  | lw.setName(company.getName()); | 
|---|
|  |  |  | internalList.add(lw); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | pcWorkPlatformDataVO.setLwList(lwList   ); | 
|---|
|  |  |  | pcWorkPlatformDataVO.setInternalList(internalList); | 
|---|
|  |  |  | pcWorkPlatformDataVO.setLwList(lwList); | 
|---|
|  |  |  | }else if(Constants.equalsInteger(queryType,Constants.THREE)) { | 
|---|
|  |  |  | if (Objects.isNull(loginUserInfo.getMemberId())) { | 
|---|
|  |  |  | pcWorkPlatformDataVO.setNoticesList(new ArrayList<>()); | 
|---|