问题描述:
批量新增, 保存传入List<VO>中只有自己的名称和上级的名称,需要根据上级pcompid,生成自身的compid
部分数据的上级已经存在,即存在pcompid,而部分数据的上级也是本次保存存入的,
所以需要按层级逐级保存(因为需要先保存上级,生成对应的COMPID,下级把上级的COMPID填入PCOMPID字段中,才能保存,即saveMultiBasicOrgnize只能根据PCOMPID生成自身COMPID)
public List<BasicOrganizationSetVO> saveMultiBasicOrgnizeList( List<BasicOrganizationSetVO> basicOrganizationSetVOs) { // 生成树结构 List<BasicOrganizationSetVO> orgtree = new ArrayList<BasicOrganizationSetVO>(); for (BasicOrganizationSetVO node : basicOrganizationSetVOs) { if (StringUtils.isNotEmpty(node.getPcompid())) { // 根节点,保存根节点并返回compid node = saveMultiBasicOrgnize(node); orgtree.add(node); build(node, basicOrganizationSetVOs);// 递归保存 } } return orgtree; } /** * 递归保存组织树结构 * @param node * @param nodes */ private void build(BasicOrganizationSetVO node, List<BasicOrganizationSetVO> nodes) { List<BasicOrganizationSetVO> children = getChildren(node, nodes); if (!children.isEmpty()) { for (BasicOrganizationSetVO child : children) { build(child, nodes); } } } /** * 查询子节点数据并保存 * @param node * @param nodes * @return */ private List<BasicOrganizationSetVO> getChildren(BasicOrganizationSetVO node, List<BasicOrganizationSetVO> nodes) { List<BasicOrganizationSetVO> children = new ArrayList<BasicOrganizationSetVO>(); for (BasicOrganizationSetVO org : nodes) { String pName = org.getParent(); if (StringUtil.isEquals(node.getCompname(), pName)) { // 获取上级节点的compid并set到子节点中 org.setPcompid(node.getCompid()); org.setPmanagecompid(node.getCompid()); org = saveMultiBasicOrgnize(org); children.add(org); } } return children; }
浙公网安备 33010602011771号