/** 查询父节点列表, self=是否包含自身 **/ @Override public List<SimpleTreeBean> parents(SimpleTreeCode model, boolean self) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String code = model.getCode(); List<SimpleTreeBean> parents = new ArrayList<>(); if (VerifyTools.isBlank(code)) { return parents; } String root = String.valueOf(useScene.getCode()); if (!code.startsWith(root) || code.equals(root)) { return parents; } List<String> codes = tools.split(code, self); SimpleTreeWhere w = new SimpleTreeWhere(); w.setCodes(codes); PageList<SimpleTreeBean> temp = simpleTreeBasic.list(w, OrderPaging.NONE); for (String i : codes) { // 保证顺序 for (SimpleTreeBean bean : temp) { if (i.equals(bean.getCode())) { parents.add(bean); } } } return parents; }
/** 查询子节点列表 **/ @Override public PageList<SimpleTreeBean> children(SimpleTreeCode model, OrderPaging paging) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String parent = model.getCode(); String root = String.valueOf(useScene.getCode()); if (VerifyTools.isBlank(parent)) { parent = root; } if (!parent.startsWith(root)) { return PageList.of(new ArrayList<>()); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setParent(parent); return simpleTreeBasic.list(where, paging); }
/** 查询节点详情 **/ @Override public SimpleTreeBean find(SimpleTreeCode model) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String code = model.getCode(); if (VerifyTools.isBlank(code)) { log.error("params is null: code"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String root = String.valueOf(useScene.getCode()); if (!code.startsWith(root)) { return null; } SimpleTreeWhere where = new SimpleTreeWhere(); where.setCode(code); return simpleTreeBasic.find(where); }
/** 查询所有后代节点列表 **/ @Override public PageList<SimpleTreeBean> descendants(SimpleTreeCode model, OrderPaging paging) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String parent = model.getCode(); String root = String.valueOf(useScene.getCode()); if (VerifyTools.isBlank(parent)) { parent = root; } if (!parent.startsWith(root)) { return PageList.of(new ArrayList<>()); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setParentStarts(parent); where.setLevelIndexMin(tools.level(parent) + 1); // 不包含parent自身 return simpleTreeBasic.list(where, paging); }
/** * 检查节点是否存在, 不存在则报错 * * @param model 节点信息 * @throws ServiceException */ private SimpleTreeBean findByCodeThrowOnNotExists(SimpleTreeCode model, String msg) throws ServiceException { SimpleTreeWhere where = new SimpleTreeWhere(); where.setCode(model.getCode()); where.setFactoryCode(model.getFactory()); where.setParentStarts(String.valueOf(model.getUseScene().getCode())); SimpleTreeBean bean = simpleTreeBasic.find(where); if (bean == null) { log.warn(msg + "SimpleTree not found, nodeCode=" + model.getCode()); throw new ServiceException(ResultCode.RECORD_NOT_EXIST); } return bean; }