| | |
| | | import com.doumee.core.haikang.model.param.BaseListPageResponse; |
| | | import com.doumee.core.haikang.model.param.BaseResponse; |
| | | import com.doumee.core.haikang.model.param.request.AppointmentListRequest; |
| | | import com.doumee.core.haikang.model.param.respose.AppointmentIccmInfoResponse; |
| | | import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse; |
| | | import com.doumee.core.haikang.model.param.respose.AppointmentVisitorInfoResponse; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DESUtil; |
| | |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | |
| | | /** |
| | | * 同步海康组织信息到业务系统 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public void syncVistAppointDataIccm(Date date){ |
| | | try { |
| | | if( Constants.formatIntegerNum(dataSyncConfig.getVisitorDataOrigin()) != DataSyncConfig.origin.hk){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,当前不支持海康数据同步操作~"); |
| | | } |
| | | AppointmentListRequest param = new AppointmentListRequest(); |
| | | //获取ERP组织信息(全量同步) |
| | | boolean hasNext = true; |
| | | int curTotal = 0; |
| | | int curPage = 1; |
| | | //查询今天的 |
| | | Date start =Utils.Date.getStart(date); |
| | | Date end = Utils.Date.getEnd(new Date()); |
| | | param.setVisitStartTimeBegin(DateUtil.getISO8601Timestamp2( start)); |
| | | param.setVisitStartTimeEnd(DateUtil.getISO8601Timestamp2( end)); |
| | | |
| | | List<Visits> allHkList = new ArrayList<>(); |
| | | while (hasNext){ |
| | | //分页遍历循环查询所有门禁设备数据 |
| | | param.setPageNo(curPage); |
| | | param.setPageSize(100); |
| | | BaseResponse<BaseListPageResponse<AppointmentIccmInfoResponse>> response = HKService.appointmentRecordsIccm(param); |
| | | if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) ){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); |
| | | } |
| | | if(response.getData() == null || response.getData().getTotal() ==0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未同步到任何信息!"); |
| | | } |
| | | BaseListPageResponse<AppointmentIccmInfoResponse> r = response.getData(); |
| | | curTotal += 100; |
| | | if(curTotal >= r.getTotal()){ |
| | | hasNext = false; |
| | | } |
| | | if(r.getList() == null || r.getList().size()==0){ |
| | | hasNext =false; |
| | | }else{ |
| | | allHkList.addAll(getNewVisitModelBYListIccm(r.getList())); |
| | | } |
| | | curPage++; |
| | | } |
| | | if(allHkList .size() == 0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未同步到任何信息!"); |
| | | } |
| | | //清空原有当天的数据 |
| | | visitsMapper.delete(new UpdateWrapper<Visits>().lambda() |
| | | .ge(Visits::getStarttime,start) |
| | | .eq(Visits::getType,Constants.ONE) |
| | | .le(Visits::getStarttime,end)); |
| | | visitsMapper.insertBatchSomeColumn(allHkList);//插入新数据 |
| | | }catch (BusinessException e){ |
| | | throw e; |
| | | } |
| | | } |
| | | /** |
| | | * 同步海康组织信息到业务系统 |
| | | */ |
| | |
| | | } |
| | | } |
| | | |
| | | private List<Visits> getNewVisitModelBYListIccm(List<AppointmentIccmInfoResponse> list ) { |
| | | List<Visits> newList = new ArrayList<>(); |
| | | if(list == null || list.size()==0){ |
| | | return newList; |
| | | } |
| | | for(AppointmentIccmInfoResponse data :list){ |
| | | if(data.getVisitorList()==null || data.getVisitorList().size() ==0){ |
| | | continue; |
| | | } |
| | | for(AppointmentVisitorInfoResponse model : data.getVisitorList()){ |
| | | Visits c = new Visits(); |
| | | c.setHkId(model.getVisitorId()); |
| | | c.setCode(model.getQrCode()); |
| | | c.setName(model.getVisitorName()); |
| | | c.setHkStatus(Constants.ONE); |
| | | c.setHkDate(new Date()); |
| | | c.setIsdeleted(Constants.ZERO); |
| | | c.setCreateDate(c.getHkDate()); |
| | | c.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, model.getCertificateNo())); |
| | | c.setIdcardDecode(Constants.getTuominStr(model.getCertificateNo())); |
| | | c.setIdcardType(Integer.parseInt(model.getCertificateType())); |
| | | c.setStarttime(DateUtil.getISO8601DateByStr2(data.getVisitStartTime())); |
| | | c.setEndtime(DateUtil.getISO8601DateByStr2(data.getVisitEndTime())); |
| | | c.setReason(data.getVisitPurpose()); |
| | | c.setStatus(model.getVisitorStatus()); |
| | | c.setType(Constants.ONE); |
| | | if(StringUtils.isNotBlank(data.getReceptionistId())){ |
| | | //被访问人 |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getHkId,data.getReceptionistId()).last("limit 1")); |
| | | c.setReceptMemberId(member!=null?member.getId():null); |
| | | } |
| | | c.setCompanyName(model.getVisitorWorkUnit()); |
| | | c.setPhone(model.getPhoneNo()); |
| | | c.setCarNos(model.getPlateNo()); |
| | | if(StringUtils.isNotBlank(model.getCertificateNo())){ |
| | | //被访问人 |
| | | Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getType,Constants.ONE) |
| | | .eq(Member::getIdcardNo , c.getIdcardNo()) |
| | | .last("limit 1")); |
| | | if(member == null){ |
| | | member = new Member(); |
| | | member.setName(model.getVisitorName()); |
| | | member.setPhone(model.getPhoneNo()); |
| | | member.setSex(model.getGender()); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setType(Constants.ONE); |
| | | member.setIdcardNo(c.getIdcardNo()); |
| | | member.setIdcardDecode(c.getIdcardDecode()); |
| | | member.setVisitCompanyName(model.getVisitorWorkUnit()); |
| | | member.setCreateDate(new Date()); |
| | | if(StringUtils.isNotBlank(model.getPicUri())){ |
| | | member.setImgurl(HKConstants.IMG_INDEX+model.getPicUri()); |
| | | member.setFaceServerIndexCode(model.getSvrIndexCode()); |
| | | } |
| | | memberMapper.insert(member); |
| | | }else{ |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setEditDate(new Date()); |
| | | member.setName(model.getVisitorName()); |
| | | member.setPhone(model.getPhoneNo()); |
| | | member.setSex(model.getGender()); |
| | | member.setVisitCompanyName(model.getVisitorWorkUnit()); |
| | | if(StringUtils.isNotBlank(model.getPicUri())){ |
| | | member.setFaceServerIndexCode(model.getSvrIndexCode()); |
| | | member.setImgurl(HKConstants.IMG_INDEX+model.getPicUri()); |
| | | } |
| | | memberMapper.updateById(member); |
| | | } |
| | | c.setMemberId(member.getId()); |
| | | |
| | | } |
| | | newList.add(c); |
| | | } |
| | | |
| | | } |
| | | return newList; |
| | | } |
| | | private List<Visits> getNewVisitModelBYList(List<AppointmentInfoResponse> list ) { |
| | | List<Visits> newList = new ArrayList<>(); |
| | | if(list == null || list.size()==0){ |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | } |